From 1c91736a6dbcd06b878acd660899ed240636994b Mon Sep 17 00:00:00 2001 From: Joel Date: Wed, 14 May 2025 16:01:35 +0800 Subject: [PATCH] fix: auto translate failed when there is a new file in english (#19671) --- web/i18n/auto-gen-i18n.js | 10 +- web/i18n/check-i18n.js | 11 +- web/i18n/de-DE/app.ts | 15 ++ web/i18n/de-DE/billing.ts | 82 ++++++++++ web/i18n/de-DE/common.ts | 30 ++++ web/i18n/de-DE/custom.ts | 2 + web/i18n/de-DE/dataset-creation.ts | 13 ++ web/i18n/de-DE/dataset-settings.ts | 1 + web/i18n/de-DE/dataset.ts | 48 ++++++ web/i18n/de-DE/education.ts | 47 ++++++ web/i18n/de-DE/explore.ts | 1 + web/i18n/de-DE/plugin.ts | 6 + web/i18n/de-DE/share-app.ts | 6 + web/i18n/de-DE/time.ts | 36 ++++- web/i18n/de-DE/workflow.ts | 139 +++++++++++++++++ web/i18n/es-ES/app.ts | 14 ++ web/i18n/es-ES/billing.ts | 82 ++++++++++ web/i18n/es-ES/common.ts | 29 ++++ web/i18n/es-ES/custom.ts | 2 + web/i18n/es-ES/dataset-creation.ts | 13 ++ web/i18n/es-ES/dataset-settings.ts | 1 + web/i18n/es-ES/dataset.ts | 46 ++++++ web/i18n/es-ES/education.ts | 47 ++++++ web/i18n/es-ES/explore.ts | 1 + web/i18n/es-ES/plugin.ts | 6 + web/i18n/es-ES/share-app.ts | 6 + web/i18n/es-ES/time.ts | 36 ++++- web/i18n/es-ES/workflow.ts | 134 +++++++++++++++++ web/i18n/fa-IR/app.ts | 15 ++ web/i18n/fa-IR/billing.ts | 82 ++++++++++ web/i18n/fa-IR/common.ts | 30 ++++ web/i18n/fa-IR/custom.ts | 2 + web/i18n/fa-IR/dataset-creation.ts | 13 ++ web/i18n/fa-IR/dataset-settings.ts | 1 + web/i18n/fa-IR/dataset.ts | 48 ++++++ web/i18n/fa-IR/education.ts | 47 ++++++ web/i18n/fa-IR/explore.ts | 1 + web/i18n/fa-IR/plugin.ts | 6 + web/i18n/fa-IR/share-app.ts | 6 + web/i18n/fa-IR/time.ts | 36 ++++- web/i18n/fa-IR/workflow.ts | 139 +++++++++++++++++ web/i18n/fr-FR/app.ts | 14 ++ web/i18n/fr-FR/billing.ts | 82 ++++++++++ web/i18n/fr-FR/common.ts | 30 ++++ web/i18n/fr-FR/custom.ts | 2 + web/i18n/fr-FR/dataset-creation.ts | 13 ++ web/i18n/fr-FR/dataset-settings.ts | 1 + web/i18n/fr-FR/dataset.ts | 47 ++++++ web/i18n/fr-FR/education.ts | 47 ++++++ web/i18n/fr-FR/explore.ts | 1 + web/i18n/fr-FR/plugin.ts | 6 + web/i18n/fr-FR/share-app.ts | 6 + web/i18n/fr-FR/time.ts | 36 ++++- web/i18n/fr-FR/workflow.ts | 138 +++++++++++++++++ web/i18n/hi-IN/app.ts | 15 ++ web/i18n/hi-IN/billing.ts | 82 ++++++++++ web/i18n/hi-IN/common.ts | 30 ++++ web/i18n/hi-IN/custom.ts | 2 + web/i18n/hi-IN/dataset-creation.ts | 13 ++ web/i18n/hi-IN/dataset-settings.ts | 1 + web/i18n/hi-IN/dataset.ts | 48 ++++++ web/i18n/hi-IN/education.ts | 47 ++++++ web/i18n/hi-IN/explore.ts | 1 + web/i18n/hi-IN/plugin.ts | 6 + web/i18n/hi-IN/share-app.ts | 6 + web/i18n/hi-IN/time.ts | 36 ++++- web/i18n/hi-IN/workflow.ts | 139 +++++++++++++++++ web/i18n/it-IT/app.ts | 14 ++ web/i18n/it-IT/billing.ts | 82 ++++++++++ web/i18n/it-IT/common.ts | 30 ++++ web/i18n/it-IT/custom.ts | 2 + web/i18n/it-IT/dataset-creation.ts | 13 ++ web/i18n/it-IT/dataset-settings.ts | 1 + web/i18n/it-IT/dataset.ts | 47 ++++++ web/i18n/it-IT/education.ts | 47 ++++++ web/i18n/it-IT/explore.ts | 1 + web/i18n/it-IT/plugin.ts | 6 + web/i18n/it-IT/share-app.ts | 6 + web/i18n/it-IT/time.ts | 36 ++++- web/i18n/it-IT/workflow.ts | 137 +++++++++++++++++ web/i18n/ja-JP/app.ts | 4 + web/i18n/ja-JP/billing.ts | 6 + web/i18n/ja-JP/common.ts | 7 + web/i18n/ja-JP/dataset-creation.ts | 11 ++ web/i18n/ja-JP/plugin.ts | 3 + web/i18n/ja-JP/time.ts | 36 ++++- web/i18n/ja-JP/workflow.ts | 7 + web/i18n/ko-KR/app.ts | 15 ++ web/i18n/ko-KR/billing.ts | 82 ++++++++++ web/i18n/ko-KR/common.ts | 30 ++++ web/i18n/ko-KR/custom.ts | 2 + web/i18n/ko-KR/dataset-creation.ts | 13 ++ web/i18n/ko-KR/dataset-settings.ts | 1 + web/i18n/ko-KR/dataset.ts | 48 ++++++ web/i18n/ko-KR/education.ts | 47 ++++++ web/i18n/ko-KR/explore.ts | 1 + web/i18n/ko-KR/plugin.ts | 6 + web/i18n/ko-KR/share-app.ts | 6 + web/i18n/ko-KR/time.ts | 36 ++++- web/i18n/ko-KR/workflow.ts | 139 +++++++++++++++++ web/i18n/pl-PL/app.ts | 15 ++ web/i18n/pl-PL/billing.ts | 82 ++++++++++ web/i18n/pl-PL/common.ts | 30 ++++ web/i18n/pl-PL/custom.ts | 2 + web/i18n/pl-PL/dataset-creation.ts | 13 ++ web/i18n/pl-PL/dataset-settings.ts | 1 + web/i18n/pl-PL/dataset.ts | 48 ++++++ web/i18n/pl-PL/education.ts | 47 ++++++ web/i18n/pl-PL/explore.ts | 1 + web/i18n/pl-PL/plugin.ts | 6 + web/i18n/pl-PL/share-app.ts | 6 + web/i18n/pl-PL/time.ts | 36 ++++- web/i18n/pl-PL/workflow.ts | 139 +++++++++++++++++ web/i18n/pt-BR/app.ts | 15 ++ web/i18n/pt-BR/billing.ts | 82 ++++++++++ web/i18n/pt-BR/common.ts | 30 ++++ web/i18n/pt-BR/custom.ts | 2 + web/i18n/pt-BR/dataset-creation.ts | 13 ++ web/i18n/pt-BR/dataset-settings.ts | 1 + web/i18n/pt-BR/dataset.ts | 48 ++++++ web/i18n/pt-BR/education.ts | 47 ++++++ web/i18n/pt-BR/explore.ts | 1 + web/i18n/pt-BR/plugin.ts | 6 + web/i18n/pt-BR/share-app.ts | 6 + web/i18n/pt-BR/time.ts | 36 ++++- web/i18n/pt-BR/workflow.ts | 139 +++++++++++++++++ web/i18n/ro-RO/app.ts | 15 ++ web/i18n/ro-RO/billing.ts | 82 ++++++++++ web/i18n/ro-RO/common.ts | 30 ++++ web/i18n/ro-RO/custom.ts | 2 + web/i18n/ro-RO/dataset-creation.ts | 13 ++ web/i18n/ro-RO/dataset-settings.ts | 1 + web/i18n/ro-RO/dataset.ts | 48 ++++++ web/i18n/ro-RO/education.ts | 47 ++++++ web/i18n/ro-RO/explore.ts | 1 + web/i18n/ro-RO/plugin.ts | 6 + web/i18n/ro-RO/share-app.ts | 6 + web/i18n/ro-RO/time.ts | 36 ++++- web/i18n/ro-RO/workflow.ts | 139 +++++++++++++++++ web/i18n/ru-RU/app.ts | 15 ++ web/i18n/ru-RU/billing.ts | 82 ++++++++++ web/i18n/ru-RU/common.ts | 30 ++++ web/i18n/ru-RU/custom.ts | 2 + web/i18n/ru-RU/dataset-creation.ts | 13 ++ web/i18n/ru-RU/dataset-settings.ts | 1 + web/i18n/ru-RU/dataset.ts | 48 ++++++ web/i18n/ru-RU/education.ts | 47 ++++++ web/i18n/ru-RU/explore.ts | 1 + web/i18n/ru-RU/plugin.ts | 6 + web/i18n/ru-RU/share-app.ts | 6 + web/i18n/ru-RU/time.ts | 36 ++++- web/i18n/ru-RU/workflow.ts | 139 +++++++++++++++++ web/i18n/sl-SI/app.ts | 15 ++ web/i18n/sl-SI/billing.ts | 82 ++++++++++ web/i18n/sl-SI/common.ts | 30 ++++ web/i18n/sl-SI/custom.ts | 2 + web/i18n/sl-SI/dataset-creation.ts | 13 ++ web/i18n/sl-SI/dataset-settings.ts | 1 + web/i18n/sl-SI/dataset.ts | 48 ++++++ web/i18n/sl-SI/education.ts | 47 ++++++ web/i18n/sl-SI/explore.ts | 1 + web/i18n/sl-SI/plugin-tags.ts | 25 ++++ web/i18n/sl-SI/plugin.ts | 215 +++++++++++++++++++++++++++ web/i18n/sl-SI/share-app.ts | 6 + web/i18n/sl-SI/time.ts | 36 ++++- web/i18n/sl-SI/workflow.ts | 139 +++++++++++++++++ web/i18n/th-TH/app-debug.ts | 4 + web/i18n/th-TH/app.ts | 15 ++ web/i18n/th-TH/billing.ts | 82 ++++++++++ web/i18n/th-TH/common.ts | 30 ++++ web/i18n/th-TH/custom.ts | 2 + web/i18n/th-TH/dataset-creation.ts | 13 ++ web/i18n/th-TH/dataset-settings.ts | 1 + web/i18n/th-TH/dataset.ts | 48 ++++++ web/i18n/th-TH/education.ts | 47 ++++++ web/i18n/th-TH/explore.ts | 1 + web/i18n/th-TH/plugin.ts | 6 + web/i18n/th-TH/share-app.ts | 6 + web/i18n/th-TH/time.ts | 36 ++++- web/i18n/th-TH/workflow.ts | 139 +++++++++++++++++ web/i18n/tr-TR/app.ts | 15 ++ web/i18n/tr-TR/billing.ts | 82 ++++++++++ web/i18n/tr-TR/common.ts | 30 ++++ web/i18n/tr-TR/custom.ts | 2 + web/i18n/tr-TR/dataset-creation.ts | 13 ++ web/i18n/tr-TR/dataset-settings.ts | 1 + web/i18n/tr-TR/dataset.ts | 48 ++++++ web/i18n/tr-TR/education.ts | 47 ++++++ web/i18n/tr-TR/explore.ts | 1 + web/i18n/tr-TR/plugin.ts | 6 + web/i18n/tr-TR/share-app.ts | 6 + web/i18n/tr-TR/time.ts | 36 ++++- web/i18n/tr-TR/workflow.ts | 139 +++++++++++++++++ web/i18n/uk-UA/app.ts | 15 ++ web/i18n/uk-UA/billing.ts | 82 ++++++++++ web/i18n/uk-UA/common.ts | 30 ++++ web/i18n/uk-UA/custom.ts | 2 + web/i18n/uk-UA/dataset-creation.ts | 13 ++ web/i18n/uk-UA/dataset-settings.ts | 1 + web/i18n/uk-UA/dataset.ts | 48 ++++++ web/i18n/uk-UA/education.ts | 47 ++++++ web/i18n/uk-UA/explore.ts | 1 + web/i18n/uk-UA/plugin.ts | 6 + web/i18n/uk-UA/share-app.ts | 6 + web/i18n/uk-UA/time.ts | 36 ++++- web/i18n/uk-UA/workflow.ts | 139 +++++++++++++++++ web/i18n/vi-VN/app.ts | 15 ++ web/i18n/vi-VN/billing.ts | 82 ++++++++++ web/i18n/vi-VN/common.ts | 30 ++++ web/i18n/vi-VN/custom.ts | 2 + web/i18n/vi-VN/dataset-creation.ts | 13 ++ web/i18n/vi-VN/dataset-settings.ts | 1 + web/i18n/vi-VN/dataset.ts | 48 ++++++ web/i18n/vi-VN/education.ts | 47 ++++++ web/i18n/vi-VN/explore.ts | 1 + web/i18n/vi-VN/plugin.ts | 6 + web/i18n/vi-VN/share-app.ts | 6 + web/i18n/vi-VN/time.ts | 36 ++++- web/i18n/vi-VN/workflow.ts | 139 +++++++++++++++++ web/i18n/zh-Hans/app.ts | 4 + web/i18n/zh-Hans/billing.ts | 1 + web/i18n/zh-Hans/dataset-creation.ts | 4 + web/i18n/zh-Hans/education.ts | 1 - web/i18n/zh-Hans/time.ts | 1 + web/i18n/zh-Hant/app.ts | 15 ++ web/i18n/zh-Hant/billing.ts | 82 ++++++++++ web/i18n/zh-Hant/common.ts | 30 ++++ web/i18n/zh-Hant/custom.ts | 2 + web/i18n/zh-Hant/dataset-creation.ts | 13 ++ web/i18n/zh-Hant/dataset-settings.ts | 1 + web/i18n/zh-Hant/dataset.ts | 48 ++++++ web/i18n/zh-Hant/education.ts | 47 ++++++ web/i18n/zh-Hant/explore.ts | 1 + web/i18n/zh-Hant/plugin.ts | 6 + web/i18n/zh-Hant/share-app.ts | 6 + web/i18n/zh-Hant/time.ts | 36 ++++- web/i18n/zh-Hant/workflow.ts | 135 +++++++++++++++++ 237 files changed, 7543 insertions(+), 23 deletions(-) create mode 100644 web/i18n/de-DE/education.ts create mode 100644 web/i18n/es-ES/education.ts create mode 100644 web/i18n/fa-IR/education.ts create mode 100644 web/i18n/fr-FR/education.ts create mode 100644 web/i18n/hi-IN/education.ts create mode 100644 web/i18n/it-IT/education.ts create mode 100644 web/i18n/ko-KR/education.ts create mode 100644 web/i18n/pl-PL/education.ts create mode 100644 web/i18n/pt-BR/education.ts create mode 100644 web/i18n/ro-RO/education.ts create mode 100644 web/i18n/ru-RU/education.ts create mode 100644 web/i18n/sl-SI/education.ts create mode 100644 web/i18n/th-TH/education.ts create mode 100644 web/i18n/tr-TR/education.ts create mode 100644 web/i18n/uk-UA/education.ts create mode 100644 web/i18n/vi-VN/education.ts create mode 100644 web/i18n/zh-Hant/education.ts diff --git a/web/i18n/auto-gen-i18n.js b/web/i18n/auto-gen-i18n.js index 7599a87f3e..a03b3aac24 100644 --- a/web/i18n/auto-gen-i18n.js +++ b/web/i18n/auto-gen-i18n.js @@ -43,7 +43,7 @@ async function translateMissingKeyDeeply(sourceObj, targetObject, toLanguage) { targetObject[key] = translation } catch { - console.error(`Error translating ${sourceObj[key]}(${key}) to ${toLanguage}`) + console.error(`Error translating "${sourceObj[key]}" to ${toLanguage}. Key: ${key}`) } } } @@ -59,6 +59,14 @@ async function autoGenTrans(fileName, toGenLanguage) { const toGenLanguageFilePath = path.join(__dirname, toGenLanguage, `${fileName}.ts`) // eslint-disable-next-line sonarjs/code-eval const fullKeyContent = eval(transpile(fs.readFileSync(fullKeyFilePath, 'utf8'))) + // if toGenLanguageFilePath is not exist, create it + if (!fs.existsSync(toGenLanguageFilePath)) { + fs.writeFileSync(toGenLanguageFilePath, `const translation = { +} + +export default translation +`) + } // 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) diff --git a/web/i18n/check-i18n.js b/web/i18n/check-i18n.js index ccd9741a60..55a2301ed8 100644 --- a/web/i18n/check-i18n.js +++ b/web/i18n/check-i18n.js @@ -27,9 +27,14 @@ async function getKeysFromLanuage(language) { // console.log(camelCaseFileName) const content = fs.readFileSync(filePath, 'utf8') // eslint-disable-next-line sonarjs/code-eval - const translation = eval(transpile(content)) + const translationObj = eval(transpile(content)) // console.log(translation) - const keys = Object.keys(translation) + if(!translationObj || typeof translationObj !== 'object') { + console.error(`Error parsing file: ${filePath}`) + reject(new Error(`Error parsing file: ${filePath}`)) + return + } + const keys = Object.keys(translationObj) const nestedKeys = [] const iterateKeys = (obj, prefix = '') => { for (const key in obj) { @@ -39,7 +44,7 @@ async function getKeysFromLanuage(language) { iterateKeys(obj[key], nestedKey) } } - iterateKeys(translation) + iterateKeys(translationObj) allKeys = [...keys, ...nestedKeys].map( key => `${camelCaseFileName}.${key}`, diff --git a/web/i18n/de-DE/app.ts b/web/i18n/de-DE/app.ts index 25fddf7a91..d9454a2a4c 100644 --- a/web/i18n/de-DE/app.ts +++ b/web/i18n/de-DE/app.ts @@ -161,6 +161,10 @@ const translation = { 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.', + }, }, answerIcon: { descriptionInExplore: 'Gibt an, ob das WebApp-Symbol zum Ersetzen 🤖 in Explore verwendet werden soll', @@ -201,6 +205,17 @@ const translation = { 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', + }, } export default translation diff --git a/web/i18n/de-DE/billing.ts b/web/i18n/de-DE/billing.ts index 7eae078ad2..f0a0f1990a 100644 --- a/web/i18n/de-DE/billing.ts +++ b/web/i18n/de-DE/billing.ts @@ -69,6 +69,7 @@ const translation = { 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', @@ -77,27 +78,94 @@ const translation = { 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}}/Tag', + 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.', }, plans: { sandbox: { name: 'Sandbox', description: '200 mal GPT kostenlos testen', includesTitle: 'Beinhaltet:', + for: 'Kostenlose Testversion der Kernfunktionen', }, professional: { name: 'Professionell', description: 'Für Einzelpersonen und kleine Teams, um mehr Leistung erschwinglich freizuschalten.', includesTitle: 'Alles im kostenlosen Tarif, plus:', + for: 'Für unabhängige Entwickler/kleine Teams', }, team: { name: 'Team', description: 'Zusammenarbeiten ohne Grenzen und Top-Leistung genießen.', includesTitle: 'Alles im Professionell-Tarif, plus:', + 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:', + features: { + 2: 'Exklusive Unternehmensfunktionen', + 8: 'Professioneller technischer Support', + 6: 'Erweiterte Sicherheits- und Kontrollsysteme', + 4: 'SSO', + 0: 'Enterprise-Grade Skalierbare Bereitstellungslösungen', + 3: 'Mehrere Arbeitsbereiche und Unternehmensverwaltung', + 1: 'Kommerzielle Lizenzgenehmigung', + 5: 'Verhandelte SLAs durch Dify-Partner', + 7: 'Updates und Wartung von Dify offiziell', + }, + btnText: 'Vertrieb kontaktieren', + price: 'Benutzerdefiniert', + priceTip: 'Jährliche Abrechnung nur', + for: 'Für große Teams', + }, + community: { + features: { + 2: 'Entspricht der Dify Open Source Lizenz', + 1: 'Einzelner Arbeitsbereich', + 0: 'Alle Kernfunktionen wurden im öffentlichen Repository veröffentlicht.', + }, + 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', + }, + premium: { + features: { + 2: 'WebApp-Logo und Branding-Anpassung', + 0: 'Selbstverwaltete Zuverlässigkeit durch verschiedene Cloud-Anbieter', + 3: 'Priorisierte E-Mail- und Chat-Unterstützung', + 1: 'Einzelner Arbeitsbereich', + }, + 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', }, }, vectorSpace: { @@ -107,12 +175,26 @@ const translation = { apps: { fullTipLine1: 'Upgraden Sie Ihren Tarif, um', fullTipLine2: 'mehr Apps zu bauen.', + 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.', + }, + teamMembers: 'Teammitglieder', } export default translation diff --git a/web/i18n/de-DE/common.ts b/web/i18n/de-DE/common.ts index 509f44708d..54bde0b67e 100644 --- a/web/i18n/de-DE/common.ts +++ b/web/i18n/de-DE/common.ts @@ -54,6 +54,10 @@ const translation = { viewDetails: 'Details anzeigen', in: 'in', copied: 'Kopiert', + downloadFailed: 'Download fehlgeschlagen. Bitte versuchen Sie es später erneut.', + downloadSuccess: 'Download abgeschlossen.', + more: 'Mehr', + format: 'Format', }, placeholder: { input: 'Bitte eingeben', @@ -153,6 +157,9 @@ const translation = { community: 'Gemeinschaft', about: 'Über', logout: 'Abmelden', + compliance: 'Einhaltung', + support: 'Unterstützung', + github: 'GitHub', }, settings: { accountGroup: 'KONTO', @@ -202,6 +209,9 @@ const translation = { 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', }, members: { team: 'Team', @@ -543,6 +553,7 @@ const translation = { inputPlaceholder: 'Sprechen Sie mit dem Bot', 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', @@ -637,6 +648,25 @@ const translation = { 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', + }, } export default translation diff --git a/web/i18n/de-DE/custom.ts b/web/i18n/de-DE/custom.ts index 2f4cabd67d..e86e0c2cd4 100644 --- a/web/i18n/de-DE/custom.ts +++ b/web/i18n/de-DE/custom.ts @@ -3,6 +3,8 @@ const translation = { 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: 'WebApp Marke anpassen', diff --git a/web/i18n/de-DE/dataset-creation.ts b/web/i18n/de-DE/dataset-creation.ts index 6e532794aa..9500c0cd68 100644 --- a/web/i18n/de-DE/dataset-creation.ts +++ b/web/i18n/de-DE/dataset-creation.ts @@ -82,6 +82,14 @@ const translation = { 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', + watercrawlDocLink: 'https://docs.dify.ai/de/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-website', + watercrawlTitle: 'Webinhalt mit Watercrawl extrahieren', + watercrawlDoc: 'Wasserkriechen-Dokumente', + configureFirecrawl: 'Firecrawl konfigurieren', + waterCrawlNotConfiguredDescription: 'Konfigurieren Sie Watercrawl mit dem API-Schlüssel, um es zu verwenden.', }, cancel: 'Abbrechen', }, @@ -200,6 +208,11 @@ const translation = { 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-settings.ts b/web/i18n/de-DE/dataset-settings.ts index 24cb1207b8..928da40d88 100644 --- a/web/i18n/de-DE/dataset-settings.ts +++ b/web/i18n/de-DE/dataset-settings.ts @@ -25,6 +25,7 @@ const translation = { learnMore: 'Mehr erfahren', description: ' über die Abrufmethode.', longDescription: ' über die Abrufmethode, dies kann jederzeit in den Wissenseinstellungen geändert werden.', + method: 'Abrufmethode', }, save: 'Speichern', permissionsInvitedMembers: 'Teilweise Teammitglieder', diff --git a/web/i18n/de-DE/dataset.ts b/web/i18n/de-DE/dataset.ts index 3d3535b32c..4d513aab1b 100644 --- a/web/i18n/de-DE/dataset.ts +++ b/web/i18n/de-DE/dataset.ts @@ -168,6 +168,54 @@ const translation = { 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.', + }, + 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.', } export default translation diff --git a/web/i18n/de-DE/education.ts b/web/i18n/de-DE/education.ts new file mode 100644 index 0000000000..aa6e3c75d0 --- /dev/null +++ b/web/i18n/de-DE/education.ts @@ -0,0 +1,47 @@ +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', +} + +export default translation diff --git a/web/i18n/de-DE/explore.ts b/web/i18n/de-DE/explore.ts index 366726d3d1..7a8e8e04bb 100644 --- a/web/i18n/de-DE/explore.ts +++ b/web/i18n/de-DE/explore.ts @@ -37,6 +37,7 @@ const translation = { HR: 'Personalwesen', Agent: 'Agent', Workflow: 'Arbeitsablauf', + Entertainment: 'Unterhaltung', }, } diff --git a/web/i18n/de-DE/plugin.ts b/web/i18n/de-DE/plugin.ts index 64c59fd79f..9202c224de 100644 --- a/web/i18n/de-DE/plugin.ts +++ b/web/i18n/de-DE/plugin.ts @@ -180,6 +180,8 @@ const translation = { 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', @@ -204,6 +206,10 @@ const translation = { 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}}', } export default translation diff --git a/web/i18n/de-DE/share-app.ts b/web/i18n/de-DE/share-app.ts index e32d80133a..462286fa23 100644 --- a/web/i18n/de-DE/share-app.ts +++ b/web/i18n/de-DE/share-app.ts @@ -32,6 +32,10 @@ const translation = { 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: { @@ -70,6 +74,8 @@ const translation = { moreThanMaxLengthLine: 'Zeile {{rowIndex}}: {{varName}} Wert darf nicht mehr als {{maxLength}} Zeichen sein', atLeastOne: 'Bitte geben Sie mindestens eine Zeile in die hochgeladene Datei ein.', }, + executions: '{{num}} HINRICHTUNGEN', + execution: 'AUSFÜHRUNG', }, } diff --git a/web/i18n/de-DE/time.ts b/web/i18n/de-DE/time.ts index e2410dd34b..16f5bc8475 100644 --- a/web/i18n/de-DE/time.ts +++ b/web/i18n/de-DE/time.ts @@ -1,3 +1,37 @@ -const translation = {} +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...', +} export default translation diff --git a/web/i18n/de-DE/workflow.ts b/web/i18n/de-DE/workflow.ts index 74bea2b85e..e229506706 100644 --- a/web/i18n/de-DE/workflow.ts +++ b/web/i18n/de-DE/workflow.ts @@ -106,6 +106,15 @@ const translation = { addFailureBranch: 'Fail-Branch hinzufügen', loadMore: 'Weitere Workflows laden', noHistory: 'Keine Geschichte', + exportSVG: 'Als SVG exportieren', + noExist: 'Keine solche Variable', + versionHistory: 'Versionsverlauf', + publishUpdate: 'Update veröffentlichen', + referenceVar: 'Referenzvariable', + exportImage: 'Bild exportieren', + exportJPEG: 'Als JPEG exportieren', + exitVersions: 'Ausgangsversionen', + exportPNG: 'Als PNG exportieren', }, env: { envPanelTitle: 'Umgebungsvariablen', @@ -205,6 +214,7 @@ const translation = { testRunIteration: 'Testlaufiteration', back: 'Zurück', iteration: 'Iteration', + loop: 'Schleife', }, tabs: { 'searchBlock': 'Block suchen', @@ -243,6 +253,9 @@ const translation = { 'list-operator': 'List-Operator', 'document-extractor': 'Doc Extraktor', 'agent': 'Agent', + 'loop': 'Schleife', + 'loop-start': 'Schleifenbeginn', + 'loop-end': 'Schleife beenden', }, blocksAbout: { 'start': 'Definieren Sie die Anfangsparameter zum Starten eines Workflows', @@ -263,6 +276,8 @@ const translation = { '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.', }, operator: { zoomIn: 'Vergrößern', @@ -404,6 +419,34 @@ const translation = { 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', + }, }, knowledgeRetrieval: { queryVariable: 'Abfragevariable', @@ -416,6 +459,33 @@ const translation = { url: 'Segmentierte URL', metadata: 'Weitere Metadaten', }, + 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', + }, }, http: { inputVars: 'Eingabevariablen', @@ -505,6 +575,8 @@ const translation = { 'all of': 'alle', 'exists': 'existiert', 'not in': 'nicht in', + 'after': 'nach', + 'before': 'vor', }, enterValue: 'Wert eingeben', addCondition: 'Bedingung hinzufügen', @@ -520,6 +592,7 @@ const translation = { }, select: 'Auswählen', addSubVariable: 'Untervariable', + condition: 'Bedingung', }, variableAssigner: { title: 'Variablen zuweisen', @@ -562,6 +635,8 @@ const translation = { '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', @@ -766,6 +841,38 @@ const translation = { configureModel: 'Modell konfigurieren', linkToPlugin: 'Link zu Plugins', }, + 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', + }, }, tracing: { stopBy: 'Gestoppt von {{user}}', @@ -777,6 +884,38 @@ const translation = { 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', + }, + 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.', + }, } export default translation diff --git a/web/i18n/es-ES/app.ts b/web/i18n/es-ES/app.ts index f6cc9d1735..3d2a39db97 100644 --- a/web/i18n/es-ES/app.ts +++ b/web/i18n/es-ES/app.ts @@ -159,6 +159,10 @@ const translation = { 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', + }, }, answerIcon: { title: 'Usar el icono de la aplicación web para reemplazar 🤖', @@ -194,6 +198,16 @@ const translation = { 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', + }, } export default translation diff --git a/web/i18n/es-ES/billing.ts b/web/i18n/es-ES/billing.ts index 8dcee420f5..3f83dafd01 100644 --- a/web/i18n/es-ES/billing.ts +++ b/web/i18n/es-ES/billing.ts @@ -70,6 +70,7 @@ const translation = { 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', @@ -77,27 +78,94 @@ const translation = { }, 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}}/día', + 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.', }, plans: { sandbox: { name: 'Sandbox', description: 'Prueba gratuita de 200 veces GPT', includesTitle: 'Incluye:', + 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.', includesTitle: 'Todo en el plan gratuito, más:', + for: 'Para desarrolladores independientes/equipos pequeños', }, team: { name: 'Equipo', description: 'Colabora sin límites y disfruta de un rendimiento de primera categoría.', includesTitle: 'Todo en el plan Profesional, más:', + 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:', + features: { + 0: 'Soluciones de implementación escalables de nivel empresarial', + 7: 'Actualizaciones y Mantenimiento por Dify Oficialmente', + 8: 'Soporte Técnico Profesional', + 3: 'Múltiples Espacios de Trabajo y Gestión Empresarial', + 1: 'Autorización de Licencia Comercial', + 2: 'Características Exclusivas de la Empresa', + 5: 'SLA negociados por Dify Partners', + 4: 'SSO', + 6: 'Seguridad y Controles Avanzados', + }, + btnText: 'Contactar ventas', + for: 'Para equipos de gran tamaño', + price: 'Personalizado', + priceTip: 'Facturación Anual Solo', + }, + community: { + features: { + 0: 'Todas las características principales se lanzaron bajo el repositorio público', + 2: 'Cumple con la Licencia de Código Abierto de Dify', + 1: 'Espacio de trabajo único', + }, + 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', + }, + premium: { + features: { + 0: 'Confiabilidad autogestionada por varios proveedores de nube', + 1: 'Espacio de trabajo único', + 3: 'Soporte prioritario por correo electrónico y chat', + 2: 'Personalización de logotipos y marcas de WebApp', + }, + 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', }, }, vectorSpace: { @@ -107,12 +175,26 @@ const translation = { apps: { fullTipLine1: 'Actualiza tu plan para', fullTipLine2: 'crear más aplicaciones.', + 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.', + }, + teamMembers: 'Miembros del equipo', } export default translation diff --git a/web/i18n/es-ES/common.ts b/web/i18n/es-ES/common.ts index 483949553e..2c9e69320a 100644 --- a/web/i18n/es-ES/common.ts +++ b/web/i18n/es-ES/common.ts @@ -54,6 +54,10 @@ const translation = { 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', }, errorMsg: { fieldRequired: '{{field}} es requerido', @@ -157,6 +161,9 @@ const translation = { community: 'Comunidad', about: 'Acerca de', logout: 'Cerrar sesión', + support: 'Apoyo', + compliance: 'Cumplimiento', + github: 'GitHub', }, settings: { accountGroup: 'CUENTA', @@ -206,6 +213,9 @@ const translation = { 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', }, members: { team: 'Equipo', @@ -547,6 +557,7 @@ const translation = { inputPlaceholder: 'Hablar con el bot', 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', @@ -637,6 +648,24 @@ const translation = { pagination: { perPage: 'Elementos por página', }, + theme: { + auto: 'sistema', + light: 'luz', + theme: 'Tema', + }, + 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', + }, } export default translation diff --git a/web/i18n/es-ES/custom.ts b/web/i18n/es-ES/custom.ts index 0dd6512589..a3dcddef08 100644 --- a/web/i18n/es-ES/custom.ts +++ b/web/i18n/es-ES/custom.ts @@ -3,6 +3,8 @@ const translation = { 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 WebApp', diff --git a/web/i18n/es-ES/dataset-creation.ts b/web/i18n/es-ES/dataset-creation.ts index 4fcccb0633..39846883d1 100644 --- a/web/i18n/es-ES/dataset-creation.ts +++ b/web/i18n/es-ES/dataset-creation.ts @@ -87,6 +87,14 @@ const translation = { 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', + watercrawlDocLink: 'https://docs.dify.ai/es/guías/base-de-conocimientos/crear-conocimientos-y-subir-documentos/importar-datos-de-contenido/sincronizar-desde-el-sitio-web', + configureWatercrawl: 'Configurar Watercrawl', + waterCrawlNotConfiguredDescription: 'Configura Watercrawl con la clave de API para usarlo.', }, cancel: 'Cancelar', }, @@ -200,6 +208,11 @@ const translation = { 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-settings.ts b/web/i18n/es-ES/dataset-settings.ts index ee8072e278..f1c87aa8d6 100644 --- a/web/i18n/es-ES/dataset-settings.ts +++ b/web/i18n/es-ES/dataset-settings.ts @@ -27,6 +27,7 @@ const translation = { 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', }, save: 'Guardar', retrievalSettings: 'Configuración de recuperación', diff --git a/web/i18n/es-ES/dataset.ts b/web/i18n/es-ES/dataset.ts index 3bfdd8f46c..b759f26ec8 100644 --- a/web/i18n/es-ES/dataset.ts +++ b/web/i18n/es-ES/dataset.ts @@ -168,6 +168,52 @@ const translation = { 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.', + }, + 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.', + }, + 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.', } export default translation diff --git a/web/i18n/es-ES/education.ts b/web/i18n/es-ES/education.ts new file mode 100644 index 0000000000..9382a2de98 --- /dev/null +++ b/web/i18n/es-ES/education.ts @@ -0,0 +1,47 @@ +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.', +} + +export default translation diff --git a/web/i18n/es-ES/explore.ts b/web/i18n/es-ES/explore.ts index 74274d4699..204f8da6c3 100644 --- a/web/i18n/es-ES/explore.ts +++ b/web/i18n/es-ES/explore.ts @@ -37,6 +37,7 @@ const translation = { HR: 'Recursos Humanos', Agent: 'Agente', Workflow: 'Flujo de trabajo', + Entertainment: 'Entretenimiento', }, } diff --git a/web/i18n/es-ES/plugin.ts b/web/i18n/es-ES/plugin.ts index 9453c20f97..3e62e185c3 100644 --- a/web/i18n/es-ES/plugin.ts +++ b/web/i18n/es-ES/plugin.ts @@ -180,6 +180,8 @@ const translation = { 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.', @@ -204,6 +206,10 @@ const translation = { 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}}', } export default translation diff --git a/web/i18n/es-ES/share-app.ts b/web/i18n/es-ES/share-app.ts index 5e29be4337..41aa35c43e 100644 --- a/web/i18n/es-ES/share-app.ts +++ b/web/i18n/es-ES/share-app.ts @@ -32,6 +32,10 @@ const translation = { 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: { @@ -70,6 +74,8 @@ const translation = { 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: 'EJECUCIÓN', + executions: '{{num}} EJECUCIONES', }, } diff --git a/web/i18n/es-ES/time.ts b/web/i18n/es-ES/time.ts index e2410dd34b..920c80eea3 100644 --- a/web/i18n/es-ES/time.ts +++ b/web/i18n/es-ES/time.ts @@ -1,3 +1,37 @@ -const translation = {} +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...', +} export default translation diff --git a/web/i18n/es-ES/workflow.ts b/web/i18n/es-ES/workflow.ts index 0ee1b0a223..5a2d02bc0d 100644 --- a/web/i18n/es-ES/workflow.ts +++ b/web/i18n/es-ES/workflow.ts @@ -106,6 +106,15 @@ const translation = { 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', + referenceVar: 'Variable de referencia', + publishUpdate: 'Publicar actualización', + noExist: 'No existe tal variable', + exportImage: 'Exportar imagen', }, env: { envPanelTitle: 'Variables de Entorno', @@ -205,6 +214,7 @@ const translation = { testRunIteration: 'Iteración de ejecución de prueba', back: 'Atrás', iteration: 'Iteración', + loop: 'Bucle', }, tabs: { 'searchBlock': 'Buscar bloque', @@ -243,6 +253,9 @@ const translation = { 'document-extractor': 'Extractor de documentos', 'list-operator': 'Operador de lista', 'agent': 'Agente', + 'loop-end': 'Salir del bucle', + 'loop': 'Bucle', + 'loop-start': 'Inicio del bucle', }, blocksAbout: { 'start': 'Define los parámetros iniciales para iniciar un flujo de trabajo', @@ -263,6 +276,8 @@ const translation = { '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.', }, operator: { zoomIn: 'Acercar', @@ -404,6 +419,34 @@ const translation = { 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', + }, }, knowledgeRetrieval: { queryVariable: 'Variable de consulta', @@ -416,6 +459,31 @@ const translation = { url: 'URL segmentada', metadata: 'Metadatos adicionales', }, + metadata: { + options: { + disabled: { + subTitle: 'No habilitar el filtrado de metadatos', + }, + 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', + }, + 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', + }, }, http: { inputVars: 'Variables de entrada', @@ -505,6 +573,8 @@ const translation = { 'exists': 'Existe', 'all of': 'Todos los', 'not exists': 'no existe', + 'after': 'después', + 'before': 'antes', }, enterValue: 'Ingresa un valor', addCondition: 'Agregar condición', @@ -520,6 +590,7 @@ const translation = { }, select: 'Escoger', addSubVariable: 'Sub Variable', + condition: 'Condición', }, variableAssigner: { title: 'Asignar variables', @@ -562,6 +633,8 @@ const translation = { 'overwrite': 'Sobrescribir', '/=': '/=', 'set': 'Poner', + 'remove-last': 'Eliminar último', + 'remove-first': 'Eliminar primero', }, 'variables': 'Variables', 'setParameter': 'Establecer parámetro...', @@ -769,6 +842,37 @@ const translation = { toolNotAuthorizedTooltip: '{{herramienta}} No autorizado', modelNotSelected: 'Modelo no seleccionado', }, + 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', + }, }, tracing: { stopBy: 'Pásate por {{usuario}}', @@ -780,6 +884,36 @@ const translation = { 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', + }, + 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', + }, + 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', + }, } export default translation diff --git a/web/i18n/fa-IR/app.ts b/web/i18n/fa-IR/app.ts index 70e7801810..5f10269e2a 100644 --- a/web/i18n/fa-IR/app.ts +++ b/web/i18n/fa-IR/app.ts @@ -163,6 +163,10 @@ const translation = { title: 'اوپیک', description: 'Opik یک پلت فرم منبع باز برای ارزیابی، آزمایش و نظارت بر برنامه های LLM است.', }, + weave: { + title: 'بافندگی', + description: 'ویو یک پلتفرم متن باز برای ارزیابی، آزمایش و نظارت بر برنامه‌های LLM است.', + }, }, answerIcon: { descriptionInExplore: 'آیا از نماد WebApp برای جایگزینی 🤖 در Explore استفاده کنیم یا خیر', @@ -194,6 +198,17 @@ const translation = { label: 'برنامه', placeholder: 'برنامه ای را انتخاب کنید...', }, + structOutput: { + required: 'ضروری', + modelNotSupported: 'مدل پشتیبانی نمی شود', + notConfiguredTip: 'خروجی ساختاری هنوز تنظیم نشده است', + structured: 'ساختار یافته', + configure: 'تنظیمات', + moreFillTip: 'نمایش حداکثر ۱۰ سطح تو در تو', + LLMResponse: 'پاسخ مدل زبان بزرگ', + modelNotSupportedTip: 'مدل فعلی این ویژگی را پشتیبانی نمی‌کند و به‌طور خودکار به تزریق درخواست تنزل پیدا می‌کند.', + structuredTip: 'خروجی‌های ساختاری یک ویژگی است که تضمین می‌کند مدل همیشه پاسخ‌هایی تولید می‌کند که به طرح JSON ارائه شده شما پایبند باشد.', + }, } export default translation diff --git a/web/i18n/fa-IR/billing.ts b/web/i18n/fa-IR/billing.ts index 480c31f742..e4de29ced5 100644 --- a/web/i18n/fa-IR/billing.ts +++ b/web/i18n/fa-IR/billing.ts @@ -70,6 +70,7 @@ const translation = { messageRequest: { title: 'اعتبارات پیام', tooltip: 'سهمیه‌های فراخوانی پیام برای طرح‌های مختلف با استفاده از مدل‌های OpenAI (به جز gpt4). پیام‌های بیش از حد محدودیت از کلید API OpenAI شما استفاده می‌کنند.', + titlePerMonth: '{{count,number}} پیام در ماه', }, annotatedResponse: { title: 'محدودیت‌های سهمیه حاشیه‌نویسی', @@ -77,27 +78,94 @@ const translation = { }, 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 آزمایش متوالی انجام دهد، فضای کاری او به طور موقت از انجام اقدامات زیر در دقیقه بعدی محدود خواهد شد: ایجاد مجموعه داده، حذف، به‌روزرسانی و بارگذاری یا تغییر مستندات.', }, plans: { sandbox: { name: 'محیط آزمایشی', description: '200 بار آزمایش رایگان GPT', includesTitle: 'شامل:', + for: 'دوره آزمایشی رایگان قابلیت‌های اصلی', }, professional: { name: 'حرفه‌ای', description: 'برای افراد و تیم‌های کوچک برای باز کردن قدرت بیشتر به طور مقرون به صرفه.', includesTitle: 'همه چیز در طرح رایگان، به علاوه:', + for: 'برای توسعه‌دهندگان مستقل/تیم‌های کوچک', }, team: { name: 'تیم', description: 'همکاری بدون محدودیت و لذت بردن از عملکرد برتر.', includesTitle: 'همه چیز در طرح حرفه‌ای، به علاوه:', + for: 'برای تیم‌های متوسط', }, enterprise: { name: 'سازمانی', description: 'دریافت کامل‌ترین قابلیت‌ها و پشتیبانی برای سیستم‌های بزرگ و بحرانی.', includesTitle: 'همه چیز در طرح تیم، به علاوه:', + features: { + 0: 'راهکارهای استقرار مقیاس‌پذیر در سطح سازمانی', + 8: 'پشتیبانی فنی حرفه‌ای', + 3: 'چندین فضای کاری و مدیریت سازمانی', + 5: 'SLA های توافق شده توسط شرکای Dify', + 4: 'SSO', + 2: 'ویژگی‌های انحصاری سازمانی', + 1: 'مجوز صدور مجوز تجاری', + 6: 'امنیت و کنترل‌های پیشرفته', + 7: 'به‌روزرسانی‌ها و نگهداری توسط دیفی به‌طور رسمی', + }, + price: 'سفارشی', + btnText: 'تماس با فروش', + for: 'برای تیم‌های بزرگ', + priceTip: 'فقط صورتحساب سالیانه', + }, + community: { + features: { + 0: 'تمام ویژگی‌های اصلی منتشر شده در مخزن عمومی', + 2: 'با رعایت مجوز منبع باز دیفی', + 1: 'فضای کاری واحد', + }, + btnText: 'شروع کنید با جامعه', + price: 'رایگان', + includesTitle: 'ویژگی‌های رایگان:', + description: 'برای کاربران فردی، تیم‌های کوچک یا پروژه‌های غیر تجاری', + name: 'جامعه', + for: 'برای کاربران فردی، تیم‌های کوچک یا پروژه‌های غیر تجاری', + }, + premium: { + features: { + 1: 'محل کار واحد', + 0: 'قابل اطمینان خودمدیریتی توسط ارائه‌دهندگان مختلف ابر', + 2: 'شعار و سفارشی‌سازی برند وب‌اپلیکیشن', + 3: 'پشتیبانی اولویت ایمیل و چت', + }, + btnText: 'گرفتن نسخه پریمیوم در', + description: 'برای سازمان‌ها و تیم‌های میان‌رده', + price: 'قابل گسترش', + includesTitle: 'همه چیز از جامعه، به علاوه:', + for: 'برای سازمان‌ها و تیم‌های میان‌رده', + name: 'پیشرفته', + priceTip: 'بر اساس بازار ابری', + comingSoon: 'پشتیبانی مایکروسافت آژور و گوگل کلود به زودی در دسترس خواهد بود', }, }, vectorSpace: { @@ -107,12 +175,26 @@ const translation = { apps: { fullTipLine1: 'طرح خود را ارتقاء دهید تا', fullTipLine2: 'اپلیکیشن‌های بیشتری بسازید.', + fullTip2: 'محدودیت طرح به پایان رسید', + contactUs: 'با ما تماس بگیرید', + fullTip1: 'به‌روزرسانی کنید تا برنامه‌های بیشتری ایجاد کنید', + fullTip1des: 'شما به محدودیت ساخت برنامه‌ها در این طرح رسیده‌اید', + fullTip2des: 'توصیه می‌شود برنامه‌های غیرفعال را پاک کنید تا فضای استفاده را آزاد کنید، یا با ما تماس بگیرید.', }, annotatedResponse: { fullTipLine1: 'طرح خود را ارتقاء دهید تا', fullTipLine2: 'مکالمات بیشتری را حاشیه‌نویسی کنید.', quotaTitle: 'سهمیه پاسخ حاشیه‌نویسی', }, + usagePage: { + documentsUploadQuota: 'حجم بارگذاری اسناد', + vectorSpace: 'ذخیره‌سازی داده‌های دانش', + teamMembers: 'اعضای تیم', + annotationQuota: 'سهام حاشیه', + buildApps: 'ساخت برنامه ها', + vectorSpaceTooltip: 'سندهایی که با حالت نمایه‌سازی با کیفیت بالا تهیه می‌شوند، منابع ذخیره‌سازی داده‌های دانش را مصرف خواهند کرد. زمانی که ذخیره‌سازی داده‌های دانش به حد خود برسد، اسناد جدید بارگزاری نخواهند شد.', + }, + teamMembers: 'اعضای تیم', } export default translation diff --git a/web/i18n/fa-IR/common.ts b/web/i18n/fa-IR/common.ts index 5ca55da25b..64a5c3b73d 100644 --- a/web/i18n/fa-IR/common.ts +++ b/web/i18n/fa-IR/common.ts @@ -54,6 +54,10 @@ const translation = { copied: 'کپی', viewDetails: 'دیدن جزئیات', in: 'در', + downloadFailed: 'دانلود ناموفق بود. لطفاً بعداً دوباره تلاش کنید.', + more: 'بیشتر', + format: 'قالب', + downloadSuccess: 'دانلود کامل شد.', }, errorMsg: { fieldRequired: '{{field}} الزامی است', @@ -157,6 +161,9 @@ const translation = { community: 'انجمن', about: 'درباره', logout: 'خروج', + github: 'گیت‌هاب', + compliance: 'انطباق', + support: 'پشتیبانی', }, settings: { accountGroup: 'حساب کاربری', @@ -206,6 +213,9 @@ const translation = { deleteSuccessTip: 'حساب شما برای پایان دادن به حذف به زمان نیاز دارد. وقتی همه چیز تمام شد به شما ایمیل خواهیم زد.', deletePrivacyLinkTip: 'برای کسب اطلاعات بیشتر در مورد نحوه مدیریت داده های شما، لطفا به ما مراجعه کنید', feedbackLabel: 'به ما بگویید چرا حساب خود را حذف کرده اید؟', + editWorkspaceInfo: 'ویرایش اطلاعات فضای کار', + workspaceName: 'نام فضای کاری', + workspaceIcon: 'آیکون محیط کار', }, members: { team: 'تیم', @@ -547,6 +557,7 @@ const translation = { inputPlaceholder: 'با ربات صحبت کنید', thought: 'فکر', thinking: 'تفکر...', + resend: 'دوباره ارسال کنید', }, promptEditor: { placeholder: 'دستور خود را اینجا بنویسید، «{» را وارد کنید تا یک متغیر درج کنید، «/» را وارد کنید تا یک بلوک محتوای دستور درج کنید', @@ -637,6 +648,25 @@ const translation = { 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: 'مرورگر', + }, } export default translation diff --git a/web/i18n/fa-IR/custom.ts b/web/i18n/fa-IR/custom.ts index bcf3f26150..d06f60e983 100644 --- a/web/i18n/fa-IR/custom.ts +++ b/web/i18n/fa-IR/custom.ts @@ -3,6 +3,8 @@ const translation = { upgradeTip: { prefix: 'طرح خود را ارتقا دهید به', suffix: 'تا برند خود را سفارشی کنید.', + title: 'طرح خود را ارتقا دهید', + des: 'طرح خود را ارتقا دهید تا برند خود را سفارشی کنید', }, webapp: { title: 'سفارشی سازی برند وب اپ', diff --git a/web/i18n/fa-IR/dataset-creation.ts b/web/i18n/fa-IR/dataset-creation.ts index 55eae67875..4d938bbafe 100644 --- a/web/i18n/fa-IR/dataset-creation.ts +++ b/web/i18n/fa-IR/dataset-creation.ts @@ -87,6 +87,14 @@ const translation = { useSitemap: 'از نقشه سایت استفاده کنید', jinaReaderNotConfiguredDescription: 'با وارد کردن کلید API رایگان خود برای دسترسی، Jina Reader را راه اندازی کنید.', useSitemapTooltip: 'نقشه سایت را دنبال کنید تا سایت را بخزید. در غیر این صورت، Jina Reader بر اساس ارتباط صفحه به صورت تکراری می خزد و صفحات کمتر اما با کیفیت بالاتر را به دست می آورد.', + watercrawlDoc: 'مستندات واتر کراول', + configureFirecrawl: 'تنظیم Firecrawl', + waterCrawlNotConfiguredDescription: 'برای استفاده از Watercrawl، آن را با کلید API پیکربندی کنید.', + waterCrawlNotConfigured: 'Watercrawl پیکربندی نشده است', + configureJinaReader: 'پیکربندی خواننده جینا', + watercrawlDocLink: 'https://docs.dify.ai/fa/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-website', + watercrawlTitle: 'محتوای وب را با واترکرال استخراج کنید', + configureWatercrawl: 'تنظیم واترکراول', }, cancel: 'لغو', }, @@ -200,6 +208,11 @@ const translation = { 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-settings.ts b/web/i18n/fa-IR/dataset-settings.ts index 0243929c36..457b784333 100644 --- a/web/i18n/fa-IR/dataset-settings.ts +++ b/web/i18n/fa-IR/dataset-settings.ts @@ -27,6 +27,7 @@ const translation = { learnMore: 'بیشتر بدانید', description: ' درباره روش بازیابی.', longDescription: ' درباره روش بازیابی، می‌توانید در هر زمانی در تنظیمات دانش این را تغییر دهید.', + method: 'روش بازیابی', }, save: 'ذخیره', externalKnowledgeAPI: 'API دانش خارجی', diff --git a/web/i18n/fa-IR/dataset.ts b/web/i18n/fa-IR/dataset.ts index 70012a0590..8ab2fb9179 100644 --- a/web/i18n/fa-IR/dataset.ts +++ b/web/i18n/fa-IR/dataset.ts @@ -168,6 +168,54 @@ const translation = { localDocs: 'اسناد محلی', allKnowledge: 'همه دانش ها', allKnowledgeDescription: 'برای نمایش تمام دانش در این فضای کاری انتخاب کنید. فقط مالک فضای کاری می تواند تمام دانش را مدیریت کند.', + metadata: { + createMetadata: { + name: 'نام', + title: 'متادیتای جدید', + namePlaceholder: 'افزودن نام متاداده', + back: 'عقب', + type: 'نوع', + }, + checkName: { + invalid: 'نام متاداده فقط می‌تواند شامل حروف کوچک، اعداد و زیرخط‌ها باشد و باید با یک حرف کوچک آغاز شود.', + empty: 'نام فراداده نمی‌تواند خالی باشد', + }, + 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: 'مدل جاسازی در دسترس نیست.', } export default translation diff --git a/web/i18n/fa-IR/education.ts b/web/i18n/fa-IR/education.ts new file mode 100644 index 0000000000..331c3a6408 --- /dev/null +++ b/web/i18n/fa-IR/education.ts @@ -0,0 +1,47 @@ +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: 'شما آموزش دیفی تأیید شده دارید', +} + +export default translation diff --git a/web/i18n/fa-IR/explore.ts b/web/i18n/fa-IR/explore.ts index f127e5cc62..b2c6708b54 100644 --- a/web/i18n/fa-IR/explore.ts +++ b/web/i18n/fa-IR/explore.ts @@ -37,6 +37,7 @@ const translation = { HR: 'منابع انسانی', Agent: 'عامل', Workflow: 'گردش', + Entertainment: 'سرگرمی', }, } diff --git a/web/i18n/fa-IR/plugin.ts b/web/i18n/fa-IR/plugin.ts index 5ecde0ed57..81aa61ae84 100644 --- a/web/i18n/fa-IR/plugin.ts +++ b/web/i18n/fa-IR/plugin.ts @@ -180,6 +180,8 @@ const translation = { difyMarketplace: 'بازار دیفی', empower: 'توسعه هوش مصنوعی خود را توانمند کنید', discover: 'کشف', + verifiedTip: 'تأیید شده توسط دیفی', + partnerTip: 'تأیید شده توسط یک شریک دیفی', }, task: { installing: 'نصب پلاگین های {{installingLength}}، 0 انجام شد.', @@ -204,6 +206,10 @@ const translation = { installAction: 'نصب', allCategories: 'همه دسته بندی ها', search: 'جستجو', + metadata: { + title: 'پلاگین ها', + }, + difyVersionNotCompatible: 'نسخه فعلی دیفی با این پلاگین سازگار نیست، لطفاً به نسخه حداقل مورد نیاز به‌روزرسانی کنید: {{minimalDifyVersion}}', } export default translation diff --git a/web/i18n/fa-IR/share-app.ts b/web/i18n/fa-IR/share-app.ts index 34fe3991b6..bf1c0dec50 100644 --- a/web/i18n/fa-IR/share-app.ts +++ b/web/i18n/fa-IR/share-app.ts @@ -28,6 +28,10 @@ const translation = { temporarySystemIssue: 'ببخشید، مشکل موقت سیستمی.', expand: 'باز کردن', collapse: 'بستن', + newChatTip: 'قبلاً در یک چت جدید', + viewChatSettings: 'تنظیمات چت را مشاهده کنید', + chatFormTip: 'تنظیمات چت پس از شروع چت قابل تغییر نیستند.', + chatSettingsTitle: 'راه‌اندازی چت جدید', }, generation: { tabs: { @@ -66,6 +70,8 @@ const translation = { moreThanMaxLengthLine: 'ردیف {{rowIndex}}: مقدار {{varName}} نمی‌تواند بیشتر از {{maxLength}} کاراکتر باشد', atLeastOne: 'لطفاً حداقل یک ردیف در فایل بارگذاری شده وارد کنید.', }, + executions: '{{num}} اعدام', + execution: 'اجرا', }, } diff --git a/web/i18n/fa-IR/time.ts b/web/i18n/fa-IR/time.ts index e2410dd34b..2e4ffea784 100644 --- a/web/i18n/fa-IR/time.ts +++ b/web/i18n/fa-IR/time.ts @@ -1,3 +1,37 @@ -const translation = {} +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: 'زمانی را انتخاب کنید...', +} export default translation diff --git a/web/i18n/fa-IR/workflow.ts b/web/i18n/fa-IR/workflow.ts index 71fd48d5c2..6b887b1739 100644 --- a/web/i18n/fa-IR/workflow.ts +++ b/web/i18n/fa-IR/workflow.ts @@ -106,6 +106,15 @@ const translation = { addFailureBranch: 'افزودن برنچ Fail', noHistory: 'بدون تاریخچه', loadMore: 'بارگذاری گردش کار بیشتر', + exportPNG: 'صادرات به فرمت PNG', + noExist: 'هیچگونه متغیری وجود ندارد', + exitVersions: 'نسخه‌های خروجی', + referenceVar: 'متغیر مرجع', + exportSVG: 'صادرات به فرمت SVG', + exportJPEG: 'صادرات به فرمت JPEG', + exportImage: 'تصویر را صادر کنید', + versionHistory: 'تاریخچه نسخه', + publishUpdate: 'به‌روزرسانی منتشر کنید', }, env: { envPanelTitle: 'متغیرهای محیطی', @@ -205,6 +214,7 @@ const translation = { testRunIteration: 'تکرار اجرای آزمایشی', back: 'بازگشت', iteration: 'تکرار', + loop: 'حلقه', }, tabs: { 'searchBlock': 'جستجوی بلوک', @@ -243,6 +253,9 @@ const translation = { 'list-operator': 'عملگر لیست', 'document-extractor': 'استخراج کننده سند', 'agent': 'عامل', + 'loop-start': 'شروع حلقه', + 'loop-end': 'خروج از حلقه', + 'loop': 'حلقه', }, blocksAbout: { 'start': 'پارامترهای اولیه برای راه‌اندازی جریان کار را تعریف کنید', @@ -263,6 +276,8 @@ const translation = { 'list-operator': 'برای فیلتر کردن یا مرتب سازی محتوای آرایه استفاده می شود.', 'document-extractor': 'برای تجزیه اسناد آپلود شده به محتوای متنی استفاده می شود که به راحتی توسط LLM قابل درک است.', 'agent': 'فراخوانی مدل های زبان بزرگ برای پاسخ به سوالات یا پردازش زبان طبیعی', + 'loop-end': 'معادل "شکستن". این گره هیچ مورد پیکربندی ندارد. هنگامی که بدنه حلقه به این گره می‌رسد، حلقه متوقف می‌شود.', + 'loop': 'یک حلقه منطقی را اجرا کنید تا زمانی که شرایط خاتمه برآورده شود یا حداکثر تعداد حلقه به پایان برسد.', }, operator: { zoomIn: 'بزرگ‌نمایی', @@ -404,6 +419,34 @@ const translation = { 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 استفاده کنید.', + }, }, knowledgeRetrieval: { queryVariable: 'متغیر جستجو', @@ -416,6 +459,33 @@ const translation = { url: 'URL تقسیم‌بندی شده', metadata: 'سایر متاداده‌ها', }, + metadata: { + options: { + disabled: { + title: 'متعادل', + subTitle: 'عدم فعال‌سازی فیلترهای متاداده', + }, + automatic: { + title: 'خودکار', + desc: 'شرایط فیلتر متاداده را بر اساس متغیر جستجو به صورت خودکار تولید کنید', + subTitle: 'شرایط فیلتر متادیتا را به طور خودکار بر اساس پرسش کاربر تولید کنید', + }, + manual: { + subTitle: 'به‌صورت دستی شرایط فیلتر کردن متادیتا را اضافه کنید', + title: 'دستوری', + }, + }, + panel: { + add: 'شرط اضافه کنید', + placeholder: 'مقدار را وارد کنید', + datePlaceholder: 'زمانی را انتخاب کنید...', + search: 'جستجوی متا داده', + select: 'متغیر را انتخاب کنید...', + title: 'شرایط فیلتر متادیتا', + conditions: 'شرایط', + }, + title: 'فیلتر کردن فراداده', + }, }, http: { inputVars: 'متغیرهای ورودی', @@ -505,6 +575,8 @@ const translation = { 'all of': 'همه از', 'not in': 'نه در', 'exists': 'موجود', + 'after': 'بعد از', + 'before': 'قبل از', }, enterValue: 'مقدار را وارد کنید', addCondition: 'افزودن شرط', @@ -520,6 +592,7 @@ const translation = { }, select: 'انتخاب', addSubVariable: 'متغیر فرعی', + condition: 'شرط', }, variableAssigner: { title: 'تخصیص متغیرها', @@ -562,6 +635,8 @@ const translation = { '-=': '-=', 'append': 'الحاق', '/=': '/=', + 'remove-first': 'حذف اول', + 'remove-last': 'آخرین را حذف کنید', }, 'noVarTip': 'برای افزودن متغیرها روی دکمه "+" کلیک کنید', 'selectAssignedVariable': 'متغیر اختصاص داده شده را انتخاب کنید...', @@ -766,6 +841,38 @@ const translation = { strategyNotFoundDescAndSwitchVersion: 'نسخه افزونه نصب شده این استراتژی را ارائه نمی دهد. برای تغییر نسخه کلیک کنید.', model: 'مدل', }, + 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: 'فقط متغیرهای داخل حلقه‌ها با شرایط خاتمه و متغیرهای گفتگو می‌توانند مورد ارجاع قرار گیرند.', + }, }, tracing: { stopBy: 'متوقف شده توسط {{user}}', @@ -777,6 +884,38 @@ const translation = { assignedVarsDescription: 'متغیرهای اختصاص داده شده باید متغیرهای قابل نوشتن باشند، مانند', noAssignedVars: 'هیچ متغیر اختصاص داده شده در دسترس نیست', }, + versionHistory: { + filter: { + reset: 'بازنشانی فیلتر', + onlyYours: 'فقط مال شماست', + onlyShowNamedVersions: 'فقط نسخه‌های نام‌گذاری شده را نمایش بدهید', + all: 'همه', + empty: 'هیچ تاریخچه نسخه‌ای مطابق پیدا نشد', + }, + editField: { + title: 'عنوان', + releaseNotes: 'یادداشت‌های نسخه', + titleLengthLimit: 'عنوان نمی‌تواند از {{limit}} کاراکتر بیشتر شود', + releaseNotesLengthLimit: 'یادداشت‌های انتشار نمی‌توانند از {{limit}} کاراکتر تجاوز کنند', + }, + action: { + updateSuccess: 'نسخه به‌روزرسانی شد', + deleteSuccess: 'نسخه حذف شد', + restoreSuccess: 'نسخه بازگردانی شده', + deleteFailure: 'حذف نسخه موفق نبود', + restoreFailure: 'بازگرداندن نسخه ناموفق بود', + updateFailure: 'به‌روزرسانی نسخه ناموفق بود', + }, + latest: 'آخرین', + editVersionInfo: 'ویرایش اطلاعات نسخه', + nameThisVersion: 'این نسخه را نامگذاری کنید', + currentDraft: 'پیش نویس فعلی', + defaultName: 'نسخه بدون عنوان', + title: 'نسخه‌ها', + releaseNotesPlaceholder: 'شرح دهید چه چیزی تغییر کرده است', + restorationTip: 'پس از بازیابی نسخه، پیش‌نویس فعلی بازنویسی خواهد شد.', + deletionTip: 'حذف غیرقابل برگشت است، لطفا تأیید کنید.', + }, } export default translation diff --git a/web/i18n/fr-FR/app.ts b/web/i18n/fr-FR/app.ts index 005418108a..16353d9962 100644 --- a/web/i18n/fr-FR/app.ts +++ b/web/i18n/fr-FR/app.ts @@ -159,6 +159,10 @@ const translation = { 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.', + }, }, answerIcon: { description: 'S’il faut utiliser l’icône WebApp pour remplacer 🤖 dans l’application partagée', @@ -194,6 +198,16 @@ const translation = { 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', + }, } export default translation diff --git a/web/i18n/fr-FR/billing.ts b/web/i18n/fr-FR/billing.ts index 2bcdfd5b23..879a067941 100644 --- a/web/i18n/fr-FR/billing.ts +++ b/web/i18n/fr-FR/billing.ts @@ -69,6 +69,7 @@ const translation = { 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', @@ -77,27 +78,94 @@ const translation = { 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}}/jour', + 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.', }, plans: { sandbox: { name: 'Bac à sable', description: '200 essais gratuits de GPT', includesTitle: 'Inclus :', + 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.', includesTitle: 'Tout ce qui est dans le plan gratuit, plus :', + for: 'Pour les développeurs indépendants / petites équipes', }, team: { name: 'Équipe', description: 'Collaborez sans limites et profitez d\'une performance de premier ordre.', includesTitle: 'Tout ce qui est inclus dans le plan Professionnel, plus :', + 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: { + 5: 'SLA négociés par Dify Partners', + 1: 'Autorisation de Licence Commerciale', + 2: 'Fonctionnalités exclusives pour les entreprises', + 4: 'SSO', + 8: 'Support Technique Professionnel', + 3: 'Gestion de plusieurs espaces de travail et d\'entreprise', + 6: 'Sécurité et contrôles avancés', + 7: 'Mises à jour et maintenance par Dify Officiellement', + 0: 'Solutions de déploiement évolutives de niveau entreprise', + }, + for: 'Pour les équipes de grande taille', + btnText: 'Contacter les ventes', + priceTip: 'Facturation Annuel Seulement', + price: 'Personnalisé', + }, + community: { + features: { + 2: 'Conforme à la licence open source de Dify', + 1: 'Espace de travail unique', + 0: 'Toutes les fonctionnalités principales publiées dans le référentiel public', + }, + 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: { + 3: 'Support par e-mail et chat prioritaire', + 1: 'Espace de travail unique', + 0: 'Fiabilité autogérée par divers fournisseurs de cloud', + 2: 'Personnalisation du logo et de la marque de l\'application Web', + }, + 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: { @@ -107,12 +175,26 @@ const translation = { apps: { fullTipLine1: 'Mettez à jour votre plan pour', fullTipLine2: 'construire plus d\'applications.', + 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', + }, + teamMembers: 'Membres de l\'équipe', } export default translation diff --git a/web/i18n/fr-FR/common.ts b/web/i18n/fr-FR/common.ts index a7fc9c671d..d26deb3a9f 100644 --- a/web/i18n/fr-FR/common.ts +++ b/web/i18n/fr-FR/common.ts @@ -54,6 +54,10 @@ const translation = { 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é.', }, placeholder: { input: 'Veuillez entrer', @@ -153,6 +157,9 @@ const translation = { community: 'Communauté', about: 'À propos', logout: 'Se déconnecter', + support: 'Soutien', + github: 'GitHub', + compliance: 'Conformité', }, settings: { accountGroup: 'COMPTE', @@ -202,6 +209,9 @@ const translation = { 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', }, members: { team: 'Équipe', @@ -543,6 +553,7 @@ const translation = { inputPlaceholder: 'Parler au bot', 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', @@ -637,6 +648,25 @@ const translation = { 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', + }, } export default translation diff --git a/web/i18n/fr-FR/custom.ts b/web/i18n/fr-FR/custom.ts index c0c651cdb7..d2c0b9d008 100644 --- a/web/i18n/fr-FR/custom.ts +++ b/web/i18n/fr-FR/custom.ts @@ -3,6 +3,8 @@ const translation = { 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 WebApp', diff --git a/web/i18n/fr-FR/dataset-creation.ts b/web/i18n/fr-FR/dataset-creation.ts index 50d750aa44..6339ceaac2 100644 --- a/web/i18n/fr-FR/dataset-creation.ts +++ b/web/i18n/fr-FR/dataset-creation.ts @@ -82,6 +82,14 @@ const translation = { 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é', + watercrawlDocLink: 'https://docs.dify.ai/fr/guide/base-de-connaissances/créer-des-connaissances-et-télécharger-des-documents/importer-des-données-de-contenu/synchroniser-depuis-un-site-web', + configureFirecrawl: 'Configurer Firecrawl', }, cancel: 'Annuler', }, @@ -200,6 +208,11 @@ const translation = { 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-settings.ts b/web/i18n/fr-FR/dataset-settings.ts index 20d8c47149..9e7529efae 100644 --- a/web/i18n/fr-FR/dataset-settings.ts +++ b/web/i18n/fr-FR/dataset-settings.ts @@ -25,6 +25,7 @@ const translation = { 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', }, save: 'Enregistrer', me: '(Vous)', diff --git a/web/i18n/fr-FR/dataset.ts b/web/i18n/fr-FR/dataset.ts index b288e513ef..ba2985ca2b 100644 --- a/web/i18n/fr-FR/dataset.ts +++ b/web/i18n/fr-FR/dataset.ts @@ -168,6 +168,53 @@ const translation = { 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.', + }, + 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', + }, + 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.', } export default translation diff --git a/web/i18n/fr-FR/education.ts b/web/i18n/fr-FR/education.ts new file mode 100644 index 0000000000..8dcb687a6d --- /dev/null +++ b/web/i18n/fr-FR/education.ts @@ -0,0 +1,47 @@ +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.', +} + +export default translation diff --git a/web/i18n/fr-FR/explore.ts b/web/i18n/fr-FR/explore.ts index 627ed03e88..d868ebd2df 100644 --- a/web/i18n/fr-FR/explore.ts +++ b/web/i18n/fr-FR/explore.ts @@ -37,6 +37,7 @@ const translation = { HR: 'RH', Agent: 'Agent', Workflow: 'Flux de travail', + Entertainment: 'Divertissement', }, } diff --git a/web/i18n/fr-FR/plugin.ts b/web/i18n/fr-FR/plugin.ts index 39fef6e91f..04269e75ed 100644 --- a/web/i18n/fr-FR/plugin.ts +++ b/web/i18n/fr-FR/plugin.ts @@ -180,6 +180,8 @@ const translation = { 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', @@ -204,6 +206,10 @@ const translation = { 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}}', } export default translation diff --git a/web/i18n/fr-FR/share-app.ts b/web/i18n/fr-FR/share-app.ts index 4508606c76..d0b3a5047e 100644 --- a/web/i18n/fr-FR/share-app.ts +++ b/web/i18n/fr-FR/share-app.ts @@ -32,6 +32,10 @@ const translation = { 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: { @@ -70,6 +74,8 @@ const translation = { 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é.', }, + executions: '{{num}} EXÉCUTIONS', + execution: 'EXÉCUTION', }, } diff --git a/web/i18n/fr-FR/time.ts b/web/i18n/fr-FR/time.ts index e2410dd34b..e05e6dc6b3 100644 --- a/web/i18n/fr-FR/time.ts +++ b/web/i18n/fr-FR/time.ts @@ -1,3 +1,37 @@ -const translation = {} +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...', +} export default translation diff --git a/web/i18n/fr-FR/workflow.ts b/web/i18n/fr-FR/workflow.ts index c345eb32b9..f6ae2a9ee2 100644 --- a/web/i18n/fr-FR/workflow.ts +++ b/web/i18n/fr-FR/workflow.ts @@ -106,6 +106,15 @@ const translation = { 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', + noExist: 'Aucune variable de ce type', + versionHistory: 'Historique des versions', + referenceVar: 'Variable de référence', + exportImage: 'Exporter l\'image', + exportJPEG: 'Exporter en JPEG', }, env: { envPanelTitle: 'Variables d\'Environnement', @@ -205,6 +214,7 @@ const translation = { testRunIteration: 'Itération de l\'exécution de test', back: 'Retour', iteration: 'Itération', + loop: 'Boucle', }, tabs: { 'searchBlock': 'Rechercher un bloc', @@ -243,6 +253,9 @@ const translation = { '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', }, blocksAbout: { 'start': 'Définir les paramètres initiaux pour lancer un flux de travail', @@ -263,6 +276,8 @@ const translation = { '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.', }, operator: { zoomIn: 'Zoomer', @@ -404,6 +419,34 @@ const translation = { 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.', + }, }, knowledgeRetrieval: { queryVariable: 'Variable de requête', @@ -416,6 +459,32 @@ const translation = { url: 'URL segmentée', metadata: 'Autres métadonnées', }, + metadata: { + options: { + disabled: { + subTitle: 'Ne pas activer le filtrage des métadonnées', + }, + 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', + }, }, http: { inputVars: 'Variables de saisie', @@ -505,6 +574,8 @@ const translation = { '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', @@ -520,6 +591,7 @@ const translation = { }, select: 'Choisir', addSubVariable: 'Sous-variable', + condition: 'Condition', }, variableAssigner: { title: 'Attribuer des variables', @@ -562,6 +634,8 @@ const translation = { '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', @@ -766,6 +840,38 @@ const translation = { maxIterations: 'Nombre maximal d’itérations', toolNotAuthorizedTooltip: '{{outil}} Non autorisé', }, + 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 ?', + }, }, tracing: { stopBy: 'Arrêté par {{user}}', @@ -777,6 +883,38 @@ const translation = { 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', + }, + 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', + }, } export default translation diff --git a/web/i18n/hi-IN/app.ts b/web/i18n/hi-IN/app.ts index c9b035568b..aef667ec89 100644 --- a/web/i18n/hi-IN/app.ts +++ b/web/i18n/hi-IN/app.ts @@ -159,6 +159,10 @@ const translation = { title: 'ओपिक', description: 'ओपिक एलएलएम अनुप्रयोगों के मूल्यांकन, परीक्षण और निगरानी के लिए एक ओपन-सोर्स प्लेटफॉर्म है।', }, + weave: { + title: 'बुनना', + description: 'वीव एक ओपन-सोर्स प्लेटफ़ॉर्म है जो LLM अनुप्रयोगों का मूल्यांकन, परीक्षण और निगरानी करने के लिए है।', + }, }, answerIcon: { title: 'बदलने 🤖 के लिए WebApp चिह्न का उपयोग करें', @@ -194,6 +198,17 @@ const translation = { placeholder: 'एक ऐप चुनें...', label: 'ऐप', }, + structOutput: { + structured: 'संरचित', + required: 'आवश्यक', + LLMResponse: 'LLM प्रतिक्रिया', + moreFillTip: 'अधिकतम 10 स्तरों की नेस्टिंग दिखाना', + modelNotSupported: 'मॉडल का समर्थन नहीं किया गया', + configure: 'कॉन्फ़िगर करें', + notConfiguredTip: 'संरचित आउटपुट को अभी तक कॉन्फ़िगर नहीं किया गया है', + structuredTip: 'संरचित आउटपुट एक विशेषता है जो यह सुनिश्चित करती है कि मॉडल हमेशा आपके प्रदान किए गए JSON स्कीमा के अनुसार प्रतिक्रियाएँ生成 करेगा।', + modelNotSupportedTip: 'वर्तमान मॉडल इस सुविधा का समर्थन नहीं करता है और स्वचालित रूप से प्रॉम्प्ट इंजेक्शन में डाउनग्रेड किया जाता है।', + }, } export default translation diff --git a/web/i18n/hi-IN/billing.ts b/web/i18n/hi-IN/billing.ts index b5ac02f635..1f8b29587c 100644 --- a/web/i18n/hi-IN/billing.ts +++ b/web/i18n/hi-IN/billing.ts @@ -77,6 +77,7 @@ const translation = { title: 'संदेश क्रेडिट्स', tooltip: 'विभिन्न योजनाओं के लिए संदेश आह्वान कोटा OpenAI मॉडलों का उपयोग करके (gpt4 को छोड़कर)। सीमा से अधिक संदेश आपके OpenAI API कुंजी का उपयोग करेंगे।', + titlePerMonth: '{{count,number}} संदेश/महीना', }, annotatedResponse: { title: 'एनोटेशन कोटा सीमाएं', @@ -87,30 +88,97 @@ const translation = { '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 लगातार हिट परीक्षण करता है, तो उनके कार्यक्षेत्र को अगले मिनट के लिए निम्नलिखित कार्यों को करने से अस्थायी रूप से प्रतिबंधित किया जाएगा: डेटासेट बनाना, हटाना, अपडेट करना और दस्तावेज़ अपलोड या संशोधन करना।', }, plans: { sandbox: { name: 'सैंडबॉक्स', description: '200 बार GPT मुफ्त ट्रायल', includesTitle: 'शामिल हैं:', + for: 'कोर क्षमताओं का मुफ्त परीक्षण', }, professional: { name: 'प्रोफेशनल', description: 'व्यक्तियों और छोटे टीमों के लिए अधिक शक्ति सस्ती दर पर खोलें।', includesTitle: 'मुफ्त योजना में सब कुछ, साथ में:', + for: 'स्वतंत्र डेवलपर्स/छोटे टीमों के लिए', }, team: { name: 'टीम', description: 'बिना सीमा के सहयोग करें और शीर्ष स्तरीय प्रदर्शन का आनंद लें।', includesTitle: 'प्रोफेशनल योजना में सब कुछ, साथ में:', + for: 'मध्यम आकार की टीमों के लिए', }, enterprise: { name: 'एंटरप्राइज़', description: 'बड़े पैमाने पर मिशन-क्रिटिकल सिस्टम के लिए पूर्ण क्षमताएं और समर्थन प्राप्त करें।', includesTitle: 'टीम योजना में सब कुछ, साथ में:', + features: { + 0: 'उद्योग स्तर के बड़े पैमाने पर वितरण समाधान', + 3: 'अनेक कार्यक्षेत्र और उद्यम प्रबंधक', + 8: 'प्रोफेशनल तकनीकी समर्थन', + 6: 'उन्नत सुरक्षा और नियंत्रण', + 2: 'विशेष उद्यम सुविधाएँ', + 1: 'Commercial License Authorization', + 4: 'SSO', + 5: 'डिफाई पार्टनर्स द्वारा बातचीत किए गए एसएलए', + 7: 'डीफाई द्वारा आधिकारिक रूप से अपडेट और रखरखाव', + }, + price: 'कस्टम', + btnText: 'बिक्री से संपर्क करें', + priceTip: 'वार्षिक बिलिंग केवल', + for: 'बड़े आकार की टीमों के लिए', + }, + community: { + features: { + 2: 'डिफी ओपन सोर्स लाइसेंस के अनुपालन में', + 0: 'सभी मुख्य सुविधाएं सार्वजनिक संग्रह के तहत जारी की गई हैं।', + 1: 'एकल कार्यक्षेत्र', + }, + description: 'व्यक्तिगत उपयोगकर्ताओं, छोटे टीमों, या गैर-व्यावसायिक परियोजनाओं के लिए', + for: 'व्यक्तिगत उपयोगकर्ताओं, छोटे टीमों, या गैर-व्यावसायिक परियोजनाओं के लिए', + includesTitle: 'निःशुल्क सुविधाएँ:', + btnText: 'समुदाय के साथ आरंभ करें', + name: 'समुदाय', + price: 'मुक्त', + }, + premium: { + features: { + 2: 'वेब ऐप लोगो और ब्रांडिंग कस्टमाइजेशन', + 3: 'प्राथमिकता ईमेल और चैट समर्थन', + 1: 'एकल कार्यक्षेत्र', + 0: 'विभिन्न क्लाउड प्रदाताओं द्वारा आत्म-प्रबंधित विश्वसनीयता', + }, + priceTip: 'क्लाउड मार्केटप्लेस के आधार पर', + name: 'प्रीमियम', + btnText: 'प्रीमियम प्राप्त करें', + price: 'स्केलेबल', + includesTitle: 'समुदाय से सब कुछ, इसके अलावा:', + for: 'मध्यम आकार के संगठनों और टीमों के लिए', + description: 'मध्यम आकार के संगठनों और टीमों के लिए', + comingSoon: 'माइक्रोसॉफ्ट एज़्योर और गूगल क्लाउड समर्थन जल्द ही आ रहा है', }, }, vectorSpace: { @@ -120,12 +188,26 @@ const translation = { apps: { fullTipLine1: 'अधिक ऐप्स बनाने के लिए', fullTipLine2: 'अपनी योजना अपग्रेड करें।', + fullTip1: 'अधिक ऐप्स बनाने के लिए अपग्रेड करें', + fullTip2: 'योजना की सीमा पहुँच गई', + contactUs: 'हमसे संपर्क करें', + fullTip1des: 'आप इस योजना पर ऐप्स बनाने की सीमा तक पहुँच चुके हैं।', + fullTip2des: 'अचल अनुप्रयोगों को साफ करने की सिफारिश की जाती है ताकि उपयोग को मुक्त किया जा सके, या हमसे संपर्क करें।', }, annotatedResponse: { fullTipLine1: 'अधिक बातचीत को एनोटेट करने के लिए', fullTipLine2: 'अपनी योजना अपग्रेड करें।', quotaTitle: 'एनोटेशन उत्तर कोटा', }, + usagePage: { + annotationQuota: 'एनोटेशन कोटा', + buildApps: 'ऐप बनाएं', + documentsUploadQuota: 'दस्तावेज़ अपलोड कोटा', + vectorSpace: 'ज्ञान डेटा भंडारण', + teamMembers: 'टीम के सदस्य', + vectorSpaceTooltip: 'उच्च गुणवत्ता वाले अनुक्रमण मोड के साथ दस्तावेज़ों के लिए ज्ञान डेटा स्टोरेज संसाधनों का उपभोग होगा। जब ज्ञान डेटा स्टोरेज सीमा तक पहुँच जाएगा, तो नए दस्तावेज़ नहीं अपलोड किए जाएंगे।', + }, + teamMembers: 'टीम के सदस्य', } export default translation diff --git a/web/i18n/hi-IN/common.ts b/web/i18n/hi-IN/common.ts index dab3229fe2..4964bcbcc4 100644 --- a/web/i18n/hi-IN/common.ts +++ b/web/i18n/hi-IN/common.ts @@ -54,6 +54,10 @@ const translation = { in: 'में', copied: 'कॉपी किया गया', viewDetails: 'विवरण देखें', + more: 'अधिक', + downloadSuccess: 'डाउनलोड पूरा हुआ।', + downloadFailed: 'डाउनलोड विफल। कृपया बाद में पुनः प्रयास करें।', + format: 'फॉर्मेट', }, errorMsg: { fieldRequired: '{{field}} आवश्यक है', @@ -162,6 +166,9 @@ const translation = { community: 'समुदाय', about: 'के बारे में', logout: 'लॉग आउट', + compliance: 'अनुपालन', + github: 'गिटहब', + support: 'समर्थन', }, settings: { accountGroup: 'खाता', @@ -212,6 +219,9 @@ const translation = { permanentlyDeleteButton: 'खाता स्थायी रूप से हटाएं', verificationPlaceholder: '6-अंकीय कोड पेस्ट करें', deleteSuccessTip: 'आपके खाते को हटाने का काम पूरा करने के लिए समय चाहिए. जब यह सब हो जाएगा तो हम आपको ईमेल करेंगे।', + workspaceIcon: 'कार्यस्थल आइकन', + editWorkspaceInfo: 'कार्यक्षेत्र की जानकारी संपादित करें', + workspaceName: 'कार्यस्थल का नाम', }, members: { team: 'टीम', @@ -565,6 +575,7 @@ const translation = { inputPlaceholder: 'बॉट से बात करें', thought: 'विचार', thinking: 'सोचते हुए...', + resend: 'फिर से भेजें', }, promptEditor: { placeholder: @@ -659,6 +670,25 @@ const translation = { 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: 'अपनी छवि यहाँ छोड़ें, या', + }, } export default translation diff --git a/web/i18n/hi-IN/custom.ts b/web/i18n/hi-IN/custom.ts index ea281d776a..a654fce942 100644 --- a/web/i18n/hi-IN/custom.ts +++ b/web/i18n/hi-IN/custom.ts @@ -3,6 +3,8 @@ const translation = { upgradeTip: { prefix: 'अपग्रेड करें अपने प्लान को', suffix: 'स्वयं अपना ब्रांड चुनना।', + title: 'अपने योजना को अपग्रेड करें', + des: 'अपने ब्रांड को कस्टमाइज़ करने के लिए अपने योजना को अपग्रेड करें', }, webapp: { title: 'WebApp का ब्रांड व्यक्तिकरण करें', diff --git a/web/i18n/hi-IN/dataset-creation.ts b/web/i18n/hi-IN/dataset-creation.ts index 6e397e398e..1f8384354d 100644 --- a/web/i18n/hi-IN/dataset-creation.ts +++ b/web/i18n/hi-IN/dataset-creation.ts @@ -92,6 +92,14 @@ const translation = { chooseProvider: 'एक प्रदाता का चयन करें', jinaReaderTitle: 'पूरी साइट को मार्कडाउन में बदलें', jinaReaderNotConfiguredDescription: 'एक्सेस के लिए अपनी मुफ्त एपीआई कुंजी दर्ज करके जीना रीडर सेट करें।', + watercrawlTitle: 'Watercrawl के साथ वेब सामग्री निकालें', + waterCrawlNotConfigured: 'Watercrawl को कॉन्फ़िगर नहीं किया गया है', + configureFirecrawl: 'फायरक्रॉल को कॉन्फ़िगर करें', + watercrawlDoc: 'वाटरक्रॉल दस्तावेज़', + waterCrawlNotConfiguredDescription: 'इसे उपयोग करने के लिए वॉटरक्रॉल को एपीआई कुंजी के साथ कॉन्फ़िगर करें।', + watercrawlDocLink: 'https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-website', + configureJinaReader: 'जिना रीडर कॉन्फ़िगर करें', + configureWatercrawl: 'वाटरक्रॉल कॉन्फ़िगर करें', }, cancel: 'रद्द करना', }, @@ -220,6 +228,11 @@ const translation = { learnMore: 'और जानो', description: 'वर्तमान में, Dify के ज्ञानकोष में केवल सीमित डेटा स्रोत हैं। Dify नॉलेज बेस में डेटा स्रोत का योगदान करना सभी उपयोगकर्ताओं के लिए प्लेटफॉर्म के लचीलेपन और शक्ति को बढ़ाने में मदद करने का एक शानदार तरीका है। हमारी योगदान मार्गदर्शिका आरंभ करना आसान बनाती है। अधिक जानने के लिए कृपया नीचे दिए गए लिंक पर क्लिक करें।', }, + watercrawl: { + apiKeyPlaceholder: 'watercrawl.dev से API कुंजी', + configWatercrawl: 'वाटरक्रॉल कॉन्फ़िगर करें', + getApiKeyLinkText: 'watercrawl.dev से अपना एपीआई कुंजी प्राप्त करें', + }, } export default translation diff --git a/web/i18n/hi-IN/dataset-settings.ts b/web/i18n/hi-IN/dataset-settings.ts index e7a383690c..c89097d89e 100644 --- a/web/i18n/hi-IN/dataset-settings.ts +++ b/web/i18n/hi-IN/dataset-settings.ts @@ -30,6 +30,7 @@ const translation = { description: 'प्राप्ति पद्धति के बारे में。', longDescription: 'प्राप्ति पद्धति के बारे में, आप इसे किसी भी समय ज्ञान सेटिंग्ज में बदल सकते हैं।', + method: 'प्राप्ति विधि', }, save: 'सेवना', me: '(आप)', diff --git a/web/i18n/hi-IN/dataset.ts b/web/i18n/hi-IN/dataset.ts index b95f13088c..9be333cdec 100644 --- a/web/i18n/hi-IN/dataset.ts +++ b/web/i18n/hi-IN/dataset.ts @@ -175,6 +175,54 @@ const translation = { documentsDisabled: '{{num}} दस्तावेज़ अक्षम - 30 दिनों से अधिक समय से निष्क्रिय', allKnowledge: 'सर्व ज्ञान', allKnowledgeDescription: 'इस कार्यस्थान में सभी ज्ञान प्रदर्शित करने के लिए चयन करें. केवल कार्यस्थान स्वामी ही सभी ज्ञान का प्रबंधन कर सकता है.', + metadata: { + createMetadata: { + type: 'टाइप करें', + name: 'नाम', + namePlaceholder: 'ध्यानक का नाम जोड़ें', + title: 'नया मेटाडेटा', + back: 'पीछे', + }, + checkName: { + empty: 'मेटाडाटा का नाम खाली नहीं हो सकता', + invalid: 'मेटाडेटा नाम में केवल छोटे अक्षर, संख्या और अंडरस्कोर शामिल हो सकते हैं और इसे छोटे अक्षर से शुरू होना चाहिए।', + }, + 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: 'एम्बेडिंग मॉडल उपलब्ध नहीं है।', } export default translation diff --git a/web/i18n/hi-IN/education.ts b/web/i18n/hi-IN/education.ts new file mode 100644 index 0000000000..0577fa14b3 --- /dev/null +++ b/web/i18n/hi-IN/education.ts @@ -0,0 +1,47 @@ +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% कूपन प्राप्त नहीं कर सकते।', +} + +export default translation diff --git a/web/i18n/hi-IN/explore.ts b/web/i18n/hi-IN/explore.ts index 145c4e0e4f..a9e850cb3b 100644 --- a/web/i18n/hi-IN/explore.ts +++ b/web/i18n/hi-IN/explore.ts @@ -38,6 +38,7 @@ const translation = { HR: 'मानव संसाधन', Workflow: 'कार्यप्रवाह', Agent: 'आढ़तिया', + Entertainment: 'मनोरंजन', }, } diff --git a/web/i18n/hi-IN/plugin.ts b/web/i18n/hi-IN/plugin.ts index 36b7588319..075e9a1da4 100644 --- a/web/i18n/hi-IN/plugin.ts +++ b/web/i18n/hi-IN/plugin.ts @@ -180,6 +180,8 @@ const translation = { difyMarketplace: 'डिफाई मार्केटप्लेस', sortBy: 'काला शहर', discover: 'खोजें', + partnerTip: 'Dify भागीदार द्वारा सत्यापित', + verifiedTip: 'डिफाई द्वारा सत्यापित', }, task: { clearAll: 'सभी साफ करें', @@ -204,6 +206,10 @@ const translation = { findMoreInMarketplace: 'मार्केटप्लेस में और खोजें', endpointsEnabled: '{{num}} एंडपॉइंट्स के सेट सक्षम किए गए', from: 'से', + metadata: { + title: 'प्लगइन्स', + }, + difyVersionNotCompatible: 'वर्तमान डिफाई संस्करण इस प्लगइन के साथ संगत नहीं है, कृपया आवश्यक न्यूनतम संस्करण में अपग्रेड करें: {{minimalDifyVersion}}', } export default translation diff --git a/web/i18n/hi-IN/share-app.ts b/web/i18n/hi-IN/share-app.ts index f343ca8cf4..e0296fda83 100644 --- a/web/i18n/hi-IN/share-app.ts +++ b/web/i18n/hi-IN/share-app.ts @@ -32,6 +32,10 @@ const translation = { temporarySystemIssue: 'अभी सिस्टम में समस्या है, कृपया पुनः प्रयास करें।', expand: 'विस्तार करें', collapse: 'संकुचित करें', + viewChatSettings: 'चैट सेटिंग्स देखें', + chatSettingsTitle: 'नया चैट सेटअप', + chatFormTip: 'चैट शुरू होने के बाद चैट सेटिंग्स को संशोधित नहीं किया जा सकता।', + newChatTip: 'पहले से ही एक नए चैट में', }, generation: { tabs: { @@ -73,6 +77,8 @@ const translation = { 'रॉ {{rowIndex}}: {{varName}} मान {{maxLength}} वर्णों से अधिक नहीं हो सकता', atLeastOne: 'कृपया अपलोड की गई फ़ाइल में कम से कम एक पंक्ति भरें।', }, + execution: 'अनु执行', + executions: '{{num}} फाँसी', }, } diff --git a/web/i18n/hi-IN/time.ts b/web/i18n/hi-IN/time.ts index e2410dd34b..72f6cd56c4 100644 --- a/web/i18n/hi-IN/time.ts +++ b/web/i18n/hi-IN/time.ts @@ -1,3 +1,37 @@ -const translation = {} +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: 'एक समय चुनें...', +} export default translation diff --git a/web/i18n/hi-IN/workflow.ts b/web/i18n/hi-IN/workflow.ts index c0e679ab8c..17d33a0325 100644 --- a/web/i18n/hi-IN/workflow.ts +++ b/web/i18n/hi-IN/workflow.ts @@ -109,6 +109,15 @@ const translation = { addFailureBranch: 'असफल शाखा जोड़ें', noHistory: 'कोई इतिहास नहीं', loadMore: 'अधिक वर्कफ़्लोज़ लोड करें', + exitVersions: 'निकलने के संस्करण', + exportPNG: 'PNG के रूप में निर्यात करें', + exportJPEG: 'JPEG के रूप में निर्यात करें', + referenceVar: 'संदर्भ चर', + noExist: 'कोई ऐसा चर नहीं है', + exportImage: 'छवि निर्यात करें', + publishUpdate: 'अपडेट प्रकाशित करें', + exportSVG: 'SVG के रूप में निर्यात करें', + versionHistory: 'संस्करण इतिहास', }, env: { envPanelTitle: 'पर्यावरण चर', @@ -208,6 +217,7 @@ const translation = { testRunIteration: 'परीक्षण रन पुनरावृत्ति', back: 'वापस', iteration: 'पुनरावृत्ति', + loop: 'लूप', }, tabs: { 'searchBlock': 'ब्लॉक खोजें', @@ -246,6 +256,9 @@ const translation = { 'list-operator': 'सूची ऑपरेटर', 'document-extractor': 'डॉक्टर एक्सट्रैक्टर', 'agent': 'एजेंट', + 'loop-end': 'लूप से बाहर निकलें', + 'loop': 'लूप', + 'loop-start': 'लूप प्रारंभ', }, blocksAbout: { 'start': 'वर्कफ़्लो लॉन्च करने के लिए प्रारंभिक पैरामीटर को परिभाषित करें', @@ -274,6 +287,8 @@ const translation = { 'document-extractor': 'अपलोड किए गए दस्तावेज़ों को पाठ सामग्री में पार्स करने के लिए उपयोग किया जाता है जो एलएलएम द्वारा आसानी से समझा जा सकता है।', 'list-operator': 'सरणी सामग्री फ़िल्टर या सॉर्ट करने के लिए उपयोग किया जाता है.', 'agent': 'प्रश्नों का उत्तर देने या प्राकृतिक भाषा को संसाधित करने के लिए बड़े भाषा मॉडलों को आमंत्रित करना', + 'loop': 'एक लूप को निष्पादित करें जब तक समाप्ति की शर्त पूरी न हो जाए या अधिकतम लूप संख्या प्राप्त न हो जाए।', + 'loop-end': '"ब्रेक" के समान। इस नोड में कोई विन्यास आइटम नहीं हैं। जब लूप का शरीर इस नोड पर पहुँचता है, तो लूप समाप्त होता है।', }, operator: { zoomIn: 'ज़ूम इन', @@ -417,6 +432,34 @@ const translation = { 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: 'बच्चे का क्षेत्र जोड़ें', + }, }, knowledgeRetrieval: { queryVariable: 'प्रश्न वेरिएबल', @@ -429,6 +472,33 @@ const translation = { url: 'विभाजित URL', metadata: 'अन्य मेटाडेटा', }, + metadata: { + options: { + disabled: { + title: 'अक्षम', + subTitle: 'मेटाडेटा फ़िल्टरिंग को सक्षम नहीं करना', + }, + automatic: { + title: 'स्वचालित', + subTitle: 'उपयोगकर्ता प्रश्न के आधार पर स्वचालित रूप से मेटाडेटा फिल्टरिंग शर्तें उत्पन्न करें।', + desc: 'क्वेरी वेरिएबल के आधार पर स्वचालित रूप से मेटाडेटा फ़िल्टरिंग शर्तें उत्पन्न करें', + }, + manual: { + subTitle: 'हाथ से मेटाडेटा फ़िल्टरिंग स्थितियाँ जोड़ें', + title: 'मैनुअल', + }, + }, + panel: { + placeholder: 'मान डालें', + add: 'शर्त जोड़ें', + title: 'मेटाडेटा फ़िल्टर स्थितियाँ', + select: 'परिवर्तनशील को चुनें...', + datePlaceholder: 'एक समय चुनें...', + conditions: 'शर्तें', + search: 'खोज मेटाडेटा', + }, + title: 'मेटाडेटा फ़िल्टरिंग', + }, }, http: { inputVars: 'इनपुट वेरिएबल्स', @@ -520,6 +590,8 @@ const translation = { 'not exists': 'मौजूद नहीं है', 'exists': 'मौजूद है', 'not in': 'नहीं है', + 'before': 'पहले', + 'after': 'बाद में', }, enterValue: 'मान दर्ज करें', addCondition: 'शर्त जोड़ें', @@ -535,6 +607,7 @@ const translation = { }, select: 'चुनना', addSubVariable: 'उप चर', + condition: 'स्थिति', }, variableAssigner: { title: 'वेरिएबल्स असाइन करें', @@ -578,6 +651,8 @@ const translation = { 'extend': 'पसार', '-=': '-=', 'append': 'संलग्न', + 'remove-first': 'पहला हटाओ', + 'remove-last': 'अंतिम हटाएँ', }, 'setParameter': 'पैरामीटर सेट करें...', 'noVarTip': 'चर जोड़ने के लिए "+" बटन पर क्लिक करें', @@ -786,6 +861,38 @@ const translation = { strategyNotSet: 'एजेंटिक रणनीति सेट नहीं की गई', strategyNotFoundDescAndSwitchVersion: 'स्थापित प्लगइन संस्करण इस रणनीति को प्रदान नहीं करता है। संस्करण बदलने के लिए क्लिक करें।', }, + 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: 'सिर्फ उन चर को संदर्भित किया जा सकता है जो लूप के भीतर हैं जिनमें समाप्ति की शर्तें और बातचीत के चर हैं।', + }, }, tracing: { stopBy: '{{user}} द्वारा रोका गया', @@ -797,6 +904,38 @@ const translation = { noVarsForOperation: 'चयनित कार्रवाई के साथ असाइनमेंट के लिए कोई चर उपलब्ध नहीं हैं.', noAssignedVars: 'कोई उपलब्ध असाइन किए गए चर नहीं', }, + versionHistory: { + filter: { + reset: 'फिल्टर रीसेट करें', + all: 'सब', + onlyShowNamedVersions: 'केवल नामित संस्करण दिखाएँ', + onlyYours: 'बस तुम्हारा', + empty: 'कोई मेल खाता हुआ संस्करण इतिहास नहीं मिला', + }, + editField: { + title: 'शीर्षक', + releaseNotesLengthLimit: 'रिलीज नोट्स {{limit}} अक्षरों से अधिक नहीं हो सकते हैं', + titleLengthLimit: 'शीर्षक {{limit}} अक्षरों से अधिक नहीं होना चाहिए', + releaseNotes: 'रिलीज़ नोट्स', + }, + action: { + deleteFailure: 'संस्करण को हटाने में विफल', + deleteSuccess: 'संस्करण हटाया गया', + restoreSuccess: 'संस्करण पुनर्स्थापित किया गया', + updateSuccess: 'संस्करण अपडेट किया गया', + updateFailure: 'संस्करण अपडेट करने में विफल', + restoreFailure: 'संस्करण को पुनर्स्थापित करने में विफल', + }, + latest: 'लेटेस्ट', + editVersionInfo: 'संस्करण की जानकारी संपादित करें', + nameThisVersion: 'इस संस्करण का नाम दें', + title: 'संस्करण', + releaseNotesPlaceholder: 'बताइए कि क्या बदला', + currentDraft: 'वर्तमान मसौदा', + restorationTip: 'संस्करण पुनर्स्थापन के बाद, वर्तमान ड्राफ्ट अधिलेखित किया जाएगा।', + defaultName: 'अविभाजित संस्करण', + deletionTip: 'हटाना अप्रतिबंधी है, कृपया पुष्टि करें।', + }, } export default translation diff --git a/web/i18n/it-IT/app.ts b/web/i18n/it-IT/app.ts index a33dd5c571..43fe626405 100644 --- a/web/i18n/it-IT/app.ts +++ b/web/i18n/it-IT/app.ts @@ -171,6 +171,10 @@ const translation = { 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.', + }, }, answerIcon: { description: 'Se utilizzare l\'icona WebApp per la sostituzione 🤖 nell\'applicazione condivisa', @@ -206,6 +210,16 @@ const translation = { 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.', + }, } export default translation diff --git a/web/i18n/it-IT/billing.ts b/web/i18n/it-IT/billing.ts index 24f5772941..69adc34569 100644 --- a/web/i18n/it-IT/billing.ts +++ b/web/i18n/it-IT/billing.ts @@ -77,6 +77,7 @@ const translation = { 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', @@ -87,30 +88,97 @@ const translation = { '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}}/giorno', + 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.', }, plans: { sandbox: { name: 'Sandbox', description: '200 prove gratuite di GPT', includesTitle: 'Include:', + for: 'Prova gratuita delle capacità principali', }, professional: { name: 'Professional', description: 'Per individui e piccoli team per sbloccare più potenza a prezzi accessibili.', includesTitle: 'Tutto nel piano gratuito, più:', + for: 'Per sviluppatori indipendenti / piccoli team', }, team: { name: 'Team', description: 'Collabora senza limiti e goditi prestazioni di alto livello.', includesTitle: 'Tutto nel piano Professional, più:', + 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: { + 6: 'Sicurezza e Controlli Avanzati', + 2: 'Funzionalità esclusive per le imprese', + 4: 'SSO', + 8: 'Supporto Tecnico Professionale', + 5: 'SLA negoziati da Dify Partners', + 0: 'Soluzioni di distribuzione scalabili di livello enterprise', + 7: 'Aggiornamenti e manutenzione di Dify ufficialmente', + 1: 'Autorizzazione alla Licenza Commerciale', + 3: 'Gestione di più spazi di lavoro e imprese', + }, + price: 'Personalizzato', + for: 'Per team di grandi dimensioni', + btnText: 'Contatta le vendite', + priceTip: 'Solo fatturazione annuale', + }, + community: { + features: { + 1: 'Spazio di Lavoro Unico', + 2: 'Rispetta la Licenza Open Source di Dify', + 0: 'Tutte le funzionalità principali rilasciate sotto il repository pubblico', + }, + 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: { + 0: 'Affidabilità autogestita da vari fornitori di cloud', + 3: 'Supporto prioritario via Email e Chat', + 2: 'Personalizzazione del logo e del marchio dell\'app web', + 1: 'Spazio di Lavoro Unico', + }, + 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: { @@ -120,12 +188,26 @@ const translation = { apps: { fullTipLine1: 'Aggiorna il tuo piano per', fullTipLine2: 'creare più app.', + 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.', + }, + teamMembers: 'Membri del team', } export default translation diff --git a/web/i18n/it-IT/common.ts b/web/i18n/it-IT/common.ts index a413a9ef68..f337990aab 100644 --- a/web/i18n/it-IT/common.ts +++ b/web/i18n/it-IT/common.ts @@ -54,6 +54,10 @@ const translation = { in: 'in', viewDetails: 'Visualizza dettagli', copied: 'Copiato', + downloadSuccess: 'Download completato.', + downloadFailed: 'Download non riuscito. Per favore riprova più tardi.', + more: 'Di più', + format: 'Formato', }, errorMsg: { fieldRequired: '{{field}} è obbligatorio', @@ -162,6 +166,9 @@ const translation = { community: 'Comunità', about: 'Informazioni', logout: 'Esci', + support: 'Supporto', + compliance: 'Conformità', + github: 'GitHub', }, settings: { accountGroup: 'ACCOUNT', @@ -214,6 +221,9 @@ const translation = { 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', }, members: { team: 'Team', @@ -574,6 +584,7 @@ const translation = { inputPlaceholder: 'Parla con il bot', thinking: 'Pensante...', thought: 'Pensiero', + resend: 'Reinvia', }, promptEditor: { placeholder: @@ -668,6 +679,25 @@ const translation = { 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', + }, } export default translation diff --git a/web/i18n/it-IT/custom.ts b/web/i18n/it-IT/custom.ts index 7eb2efcf36..b83769654c 100644 --- a/web/i18n/it-IT/custom.ts +++ b/web/i18n/it-IT/custom.ts @@ -3,6 +3,8 @@ const translation = { 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 WebApp', diff --git a/web/i18n/it-IT/dataset-creation.ts b/web/i18n/it-IT/dataset-creation.ts index eaa5cdf16c..ec9b5e3138 100644 --- a/web/i18n/it-IT/dataset-creation.ts +++ b/web/i18n/it-IT/dataset-creation.ts @@ -94,6 +94,14 @@ const translation = { 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', + watercrawlDocLink: 'https://docs.dify.ai/it/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-website', }, cancel: 'Annulla', }, @@ -223,6 +231,11 @@ const translation = { 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-settings.ts b/web/i18n/it-IT/dataset-settings.ts index c799872975..a03bfbcd74 100644 --- a/web/i18n/it-IT/dataset-settings.ts +++ b/web/i18n/it-IT/dataset-settings.ts @@ -32,6 +32,7 @@ const translation = { description: ' sul metodo di recupero.', longDescription: ' sul metodo di recupero, puoi cambiare questo in qualsiasi momento nelle impostazioni della Conoscenza.', + method: 'Metodo di recupero', }, save: 'Salva', retrievalSettings: 'Impostazioni di recupero', diff --git a/web/i18n/it-IT/dataset.ts b/web/i18n/it-IT/dataset.ts index dec41bec42..c2c4963371 100644 --- a/web/i18n/it-IT/dataset.ts +++ b/web/i18n/it-IT/dataset.ts @@ -175,6 +175,53 @@ const translation = { 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', + }, + 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.', + }, + 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.', } export default translation diff --git a/web/i18n/it-IT/education.ts b/web/i18n/it-IT/education.ts new file mode 100644 index 0000000000..1abb22280e --- /dev/null +++ b/web/i18n/it-IT/education.ts @@ -0,0 +1,47 @@ +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.', +} + +export default translation diff --git a/web/i18n/it-IT/explore.ts b/web/i18n/it-IT/explore.ts index 60508028a1..d94df45d54 100644 --- a/web/i18n/it-IT/explore.ts +++ b/web/i18n/it-IT/explore.ts @@ -38,6 +38,7 @@ const translation = { HR: 'Risorse Umane', Workflow: 'Flusso di lavoro', Agent: 'Agente', + Entertainment: 'Intrattenimento', }, } diff --git a/web/i18n/it-IT/plugin.ts b/web/i18n/it-IT/plugin.ts index 2c57e5b7af..2832776b9d 100644 --- a/web/i18n/it-IT/plugin.ts +++ b/web/i18n/it-IT/plugin.ts @@ -180,6 +180,8 @@ const translation = { sortBy: 'Città nera', and: 'e', viewMore: 'Vedi di più', + verifiedTip: 'Verificato da Dify', + partnerTip: 'Verificato da un partner Dify', }, task: { clearAll: 'Cancella tutto', @@ -204,6 +206,10 @@ const translation = { 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}}', } export default translation diff --git a/web/i18n/it-IT/share-app.ts b/web/i18n/it-IT/share-app.ts index 8b277704d2..2e1c96a396 100644 --- a/web/i18n/it-IT/share-app.ts +++ b/web/i18n/it-IT/share-app.ts @@ -30,6 +30,10 @@ const translation = { 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: { @@ -72,6 +76,8 @@ const translation = { 'Riga {{rowIndex}}: il valore di {{varName}} non può essere superiore a {{maxLength}} caratteri', atLeastOne: 'Per favore inserisci almeno una riga nel file caricato.', }, + execution: 'ESECUZIONE', + executions: '{{num}} ESECUZIONI', }, } diff --git a/web/i18n/it-IT/time.ts b/web/i18n/it-IT/time.ts index e2410dd34b..f330e8fd6c 100644 --- a/web/i18n/it-IT/time.ts +++ b/web/i18n/it-IT/time.ts @@ -1,3 +1,37 @@ -const translation = {} +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...', +} export default translation diff --git a/web/i18n/it-IT/workflow.ts b/web/i18n/it-IT/workflow.ts index 58d3455cd0..35d3ba1267 100644 --- a/web/i18n/it-IT/workflow.ts +++ b/web/i18n/it-IT/workflow.ts @@ -110,6 +110,15 @@ const translation = { addFailureBranch: 'Aggiungi ramo non riuscito', noHistory: 'Nessuna storia', loadMore: 'Carica più flussi di lavoro', + publishUpdate: 'Pubblica aggiornamento', + versionHistory: 'Cronologia delle versioni', + exitVersions: 'Uscita Versioni', + referenceVar: 'Variabile di riferimento', + exportSVG: 'Esporta come SVG', + exportImage: 'Esporta immagine', + exportJPEG: 'Esporta come JPEG', + noExist: 'Nessuna variabile del genere', + exportPNG: 'Esporta come PNG', }, env: { envPanelTitle: 'Variabili d\'Ambiente', @@ -210,6 +219,7 @@ const translation = { testRunIteration: 'Iterazione Esecuzione Test', back: 'Indietro', iteration: 'Iterazione', + loop: 'Anello', }, tabs: { 'searchBlock': 'Cerca blocco', @@ -248,6 +258,9 @@ const translation = { 'document-extractor': 'Estrattore di documenti', 'list-operator': 'Operatore di elenco', 'agent': 'Agente', + 'loop-end': 'Uscire dal ciclo', + 'loop-start': 'Inizio ciclo', + 'loop': 'Anello', }, blocksAbout: { 'start': 'Definisci i parametri iniziali per l\'avvio di un flusso di lavoro', @@ -277,6 +290,8 @@ const translation = { '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.', }, operator: { zoomIn: 'Zoom In', @@ -421,6 +436,34 @@ const translation = { 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', + }, }, knowledgeRetrieval: { queryVariable: 'Variabile Query', @@ -433,6 +476,32 @@ const translation = { url: 'URL segmentato', metadata: 'Altri metadati', }, + 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', + }, + 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', + }, }, http: { inputVars: 'Variabili di Input', @@ -524,6 +593,7 @@ const translation = { 'not in': 'non in', 'exists': 'Esiste', 'not exists': 'non esiste', + 'after': 'dopo', }, enterValue: 'Inserisci valore', addCondition: 'Aggiungi Condizione', @@ -539,6 +609,7 @@ const translation = { }, addSubVariable: 'Variabile secondaria', select: 'Selezionare', + condition: 'Condizione', }, variableAssigner: { title: 'Assegna variabili', @@ -582,6 +653,8 @@ const translation = { 'over-write': 'Sovrascrivere', 'extend': 'Estendere', 'clear': 'Chiaro', + 'remove-last': 'Rimuovi ultimo', + 'remove-first': 'Rimuovi primo', }, 'setParameter': 'Imposta parametro...', 'variables': 'Variabili', @@ -793,6 +866,38 @@ const translation = { pluginNotInstalled: 'Questo plugin non è installato', pluginNotFoundDesc: 'Questo plugin viene installato da GitHub. Vai su Plugin per reinstallare', }, + 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', + }, }, tracing: { stopBy: 'Interrotto da {{user}}', @@ -804,6 +909,38 @@ const translation = { 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', + }, + 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', + }, } export default translation diff --git a/web/i18n/ja-JP/app.ts b/web/i18n/ja-JP/app.ts index 6602d55c9a..d68768661e 100644 --- a/web/i18n/ja-JP/app.ts +++ b/web/i18n/ja-JP/app.ts @@ -164,6 +164,10 @@ const translation = { title: 'オピック', description: 'Opik は、LLM アプリケーションを評価、テスト、監視するためのオープンソース プラットフォームです。', }, + weave: { + description: 'Weaveは、LLMアプリケーションを評価、テスト、および監視するためのオープンソースプラットフォームです。', + title: '織る', + }, }, answerIcon: { title: 'Webアプリアイコンを使用して🤖を置き換える', diff --git a/web/i18n/ja-JP/billing.ts b/web/i18n/ja-JP/billing.ts index bcb509b85b..1b85449b33 100644 --- a/web/i18n/ja-JP/billing.ts +++ b/web/i18n/ja-JP/billing.ts @@ -175,12 +175,18 @@ const translation = { apps: { fullTipLine1: 'より多くのアプリを作成するには、', fullTipLine2: 'プランをアップグレードしてください。', + fullTip1: 'アプリをもっと作成するためにアップグレードする', + contactUs: 'お問い合わせ', + fullTip2: 'プランの制限に達しました', + fullTip2des: '使用状況を解放するために非アクティブなアプリケーションを整理することをお勧めします。または、お問い合わせください。', + fullTip1des: 'このプランでのアプリ構築の制限に達しました', }, annotatedResponse: { fullTipLine1: 'より多くの会話を注釈するには、', fullTipLine2: 'プランをアップグレードしてください。', quotaTitle: '注釈返信クォータ', }, + teamMembers: 'チームメンバー', } export default translation diff --git a/web/i18n/ja-JP/common.ts b/web/i18n/ja-JP/common.ts index a962eefa2b..e85f8d2228 100644 --- a/web/i18n/ja-JP/common.ts +++ b/web/i18n/ja-JP/common.ts @@ -169,6 +169,7 @@ const translation = { community: 'コミュニティ', about: 'Difyについて', logout: 'ログアウト', + github: 'ギットハブ', }, compliance: { soc2Type1: 'SOC 2 Type I 報告書', @@ -570,6 +571,7 @@ const translation = { inputPlaceholder: 'ボットと話す', thought: '思考', thinking: '考え中...', + resend: '再送信してください', }, promptEditor: { placeholder: 'ここにプロンプトワードを入力してください。変数を挿入するには「{」を、プロンプトコンテンツブロックを挿入するには「/」を入力します。', @@ -660,6 +662,11 @@ const translation = { pagination: { perPage: 'ページあたりのアイテム数', }, + imageInput: { + browse: 'ブラウズする', + supportedFormats: 'PNG、JPG、JPEG、WEBP、およびGIFをサポートしています。', + dropImageHere: 'ここに画像をドロップするか、', + }, } export default translation diff --git a/web/i18n/ja-JP/dataset-creation.ts b/web/i18n/ja-JP/dataset-creation.ts index 3cd856d134..a3f573cab1 100644 --- a/web/i18n/ja-JP/dataset-creation.ts +++ b/web/i18n/ja-JP/dataset-creation.ts @@ -93,6 +93,12 @@ const translation = { scrapTimeInfo: '{{time}} 秒以内に合計 {{total}} ページをスクレイピングしました', preview: 'プレビュー', maxDepthTooltip: '入力されたURLを基にしたクローリング作業での設定可能な最大深度について説明します。深度0は入力されたURL自体のページを対象としたスクレイピングを意味します。深度1では、元のURLの直下にあるページ(URLに続く最初の"/"以降の内容)もスクレイピングの対象になります。この深度は指定した数値まで増加させることができ、それに応じてスクレイピングの範囲も広がっていきます。', + waterCrawlNotConfiguredDescription: 'APIキーを使ってWatercrawlを設定します。', + configureWatercrawl: 'ウォータークローラーを設定する', + watercrawlDoc: 'ウォータークローリングの文書', + watercrawlTitle: 'Watercrawlを使用してウェブコンテンツを抽出する', + waterCrawlNotConfigured: 'Watercrawlは設定されていません', + watercrawlDocLink: 'https://docs.dify.ai/ja/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-website', }, }, stepTwo: { @@ -200,6 +206,11 @@ const translation = { description: '現在、Difyのナレッジベースには利用できるデータソースが限られています。Difyのナレッジベースにデータソースを提供いただくことは、プラットフォームの柔軟性と能力を向上させる上で非常に有益です。貢献ガイドをご用意していますので、ぜひご協力ください。詳細については、以下のリンクをクリックしてください。', learnMore: '詳細はこちら', }, + watercrawl: { + getApiKeyLinkText: 'watercrawl.devからAPIキーを取得してください。', + configWatercrawl: 'ウォータークローラーを設定する', + apiKeyPlaceholder: 'watercrawl.devからのAPIキー', + }, } export default translation diff --git a/web/i18n/ja-JP/plugin.ts b/web/i18n/ja-JP/plugin.ts index 1d2f1a2fb5..6a27048797 100644 --- a/web/i18n/ja-JP/plugin.ts +++ b/web/i18n/ja-JP/plugin.ts @@ -207,6 +207,9 @@ const translation = { searchInMarketplace: 'マーケットプレイスで検索', submitPlugin: 'プラグインを提出する', difyVersionNotCompatible: '現在のDifyバージョンはこのプラグインと互換性がありません。最小バージョンは{{minimalDifyVersion}}です。', + metadata: { + title: 'プラグイン', + }, } export default translation diff --git a/web/i18n/ja-JP/time.ts b/web/i18n/ja-JP/time.ts index e2410dd34b..36d4c699bb 100644 --- a/web/i18n/ja-JP/time.ts +++ b/web/i18n/ja-JP/time.ts @@ -1,3 +1,37 @@ -const translation = {} +const translation = { + daysInWeek: { + Tue: '火曜日', + Sat: '土曜日', + Mon: 'モン', + Thu: '木曜日', + Fri: '自由', + Wed: '水曜日', + Sun: '太陽', + }, + months: { + November: '11月', + December: '12月', + March: '3月', + September: '9月', + July: '7月', + April: '四月', + February: '2月', + June: '6月', + January: '1月', + May: '5月', + August: '八月', + October: '十月', + }, + operation: { + now: '今', + cancel: 'キャンセル', + ok: 'はい', + pickDate: '日付を選択', + }, + title: { + pickTime: 'ピックタイム', + }, + defaultPlaceholder: '時間を選んでください...', +} export default translation diff --git a/web/i18n/ja-JP/workflow.ts b/web/i18n/ja-JP/workflow.ts index 46a20efa26..10d76f50a8 100644 --- a/web/i18n/ja-JP/workflow.ts +++ b/web/i18n/ja-JP/workflow.ts @@ -583,6 +583,8 @@ const translation = { 'all of': 'すべての', 'exists': '存在します', 'not exists': '存在しません', + 'before': '前に', + 'after': '後', }, enterValue: '値を入力', addCondition: '条件を追加', @@ -642,6 +644,8 @@ const translation = { 'over-write': '上書き', 'extend': '延ばす', '*=': '*=', + 'remove-last': '最後を削除する', + 'remove-first': '最初を削除する', }, 'setParameter': 'パラメータを設定...', 'selectAssignedVariable': '代入変数を選択...', @@ -760,6 +764,9 @@ const translation = { loopNode: 'ループノード', currentLoopCount: '現在のループ回数: {{count}}', totalLoopCount: '総ループ回数: {{count}}', + error_other: '{{count}} エラー', + error_one: '{{count}} エラー', + comma: ',', }, note: { addNote: 'コメントを追加', diff --git a/web/i18n/ko-KR/app.ts b/web/i18n/ko-KR/app.ts index 89cd274647..aac1cb2e62 100644 --- a/web/i18n/ko-KR/app.ts +++ b/web/i18n/ko-KR/app.ts @@ -155,6 +155,10 @@ const translation = { title: '오픽', description: 'Opik은 LLM 애플리케이션을 평가, 테스트 및 모니터링하기 위한 오픈 소스 플랫폼입니다.', }, + weave: { + title: '직조하다', + description: 'Weave는 LLM 애플리케이션을 평가하고 테스트하며 모니터링하기 위한 오픈 소스 플랫폼입니다.', + }, }, answerIcon: { description: 'WebApp 아이콘을 사용하여 공유 응용 프로그램에서 바꿀🤖지 여부', @@ -190,6 +194,17 @@ const translation = { label: '앱', placeholder: '앱 선택...', }, + structOutput: { + required: '필수', + LLMResponse: 'LLM 응답', + modelNotSupported: '모델이 지원되지 않습니다.', + notConfiguredTip: '구성이 아직 설정되지 않았습니다.', + structured: '구조화된', + configure: '설정하다', + moreFillTip: '최대 10단계 중첩을 표시합니다.', + modelNotSupportedTip: '현재 모델은 이 기능을 지원하지 않으며 자동으로 프롬프트 주입으로 다운그레이드됩니다.', + structuredTip: '구조화된 출력은 모델이 제공한 JSON 스키마를 항상 준수하는 응답을 생성하도록 보장하는 기능입니다.', + }, } export default translation diff --git a/web/i18n/ko-KR/billing.ts b/web/i18n/ko-KR/billing.ts index 94d557fd4b..dfb9f6abb2 100644 --- a/web/i18n/ko-KR/billing.ts +++ b/web/i18n/ko-KR/billing.ts @@ -68,6 +68,7 @@ const translation = { messageRequest: { title: '메시지 크레딧', tooltip: 'GPT 제외 다양한 요금제에서의 메시지 호출 쿼터 (gpt4 제외). 제한을 초과하는 메시지는 OpenAI API 키를 사용합니다.', + titlePerMonth: '{{count,number}} 메시지/월', }, annotatedResponse: { title: '주석 응답 쿼터', @@ -77,27 +78,94 @@ const translation = { receiptInfo: '팀 소유자 및 팀 관리자만 구독 및 청구 정보를 볼 수 있습니다', annotationQuota: 'Annotation Quota(주석 할당량)', documentsUploadQuota: '문서 업로드 할당량', + 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분 동안 데이터 세트 생성, 삭제, 업데이트 및 문서 업로드 또는 수정과 같은 작업을 수행하는 것이 일시적으로 제한됩니다.', }, plans: { sandbox: { name: '샌드박스', description: 'GPT 무료 체험 200회', includesTitle: '포함된 항목:', + for: '핵심 기능 무료 체험', }, professional: { name: '프로페셔널', description: '개인 및 소규모 팀을 위해 더 많은 파워를 저렴한 가격에 제공합니다.', includesTitle: '무료 플랜에 추가로 포함된 항목:', + for: '독립 개발자/소규모 팀을 위한', }, team: { name: '팀', description: '제한 없이 협업하고 최고의 성능을 누리세요.', includesTitle: '프로페셔널 플랜에 추가로 포함된 항목:', + for: '중간 규모 팀을 위한', }, enterprise: { name: '엔터프라이즈', description: '대규모 미션 크리티컬 시스템을 위한 완전한 기능과 지원을 제공합니다.', includesTitle: '팀 플랜에 추가로 포함된 항목:', + features: { + 2: '독점 기업 기능', + 1: '상업적 라이선스 승인', + 3: '다중 작업 공간 및 기업 관리', + 4: 'SSO', + 5: 'Dify 파트너에 의해 협상된 SLA', + 6: '고급 보안 및 제어', + 0: '기업급 확장 가능한 배포 솔루션', + 7: '디피 공식 업데이트 및 유지 관리', + 8: '전문 기술 지원', + }, + price: '맞춤형', + btnText: '판매 문의하기', + for: '대규모 팀을 위해', + priceTip: '연간 청구 전용', + }, + community: { + features: { + 0: '모든 핵심 기능이 공개 저장소에 릴리스됨', + 2: 'Dify 오픈 소스 라이선스를 준수합니다.', + 1: '단일 작업 공간', + }, + btnText: '커뮤니티 시작하기', + description: '개인 사용자, 소규모 팀 또는 비상업적 프로젝트를 위한', + name: '커뮤니티', + price: '무료', + includesTitle: '무료 기능:', + for: '개인 사용자, 소규모 팀 또는 비상업적 프로젝트를 위한', + }, + premium: { + features: { + 1: '단일 작업 공간', + 2: '웹앱 로고 및 브랜딩 맞춤화', + 3: '우선 이메일 및 채팅 지원', + 0: '다양한 클라우드 제공업체에 의한 자율 관리 신뢰성', + }, + btnText: '프리미엄 받기', + priceTip: '클라우드 마켓플레이스를 기반으로', + name: '프리미엄', + description: '중규모 조직 및 팀을 위한', + comingSoon: '마이크로소프트 애저 및 구글 클라우드 지원 곧 제공됩니다.', + price: '확장 가능', + for: '중규모 조직 및 팀을 위한', + includesTitle: '커뮤니티의 모든 것, 여기에 추가로:', }, }, vectorSpace: { @@ -107,12 +175,26 @@ const translation = { apps: { fullTipLine1: '더 많은 앱을 생성하려면,', fullTipLine2: '요금제를 업그레이드하세요.', + contactUs: '문의하기', + fullTip1: '업그레이드하여 더 많은 앱을 만들기', + fullTip2: '계획 한도에 도달했습니다.', + fullTip2des: '비활성 애플리케이션을 정리하여 사용량을 줄이거나 저희에게 문의하는 것이 좋습니다.', + fullTip1des: '이 계획에서 앱을 구축할 수 있는 한계에 도달했습니다.', }, annotatedResponse: { fullTipLine1: '더 많은 대화를 주석 처리하려면,', fullTipLine2: '요금제를 업그레이드하세요.', quotaTitle: '주석 응답 쿼터', }, + usagePage: { + vectorSpace: '지식 데이터 저장소', + annotationQuota: '주석 할당량', + teamMembers: '팀원들', + buildApps: '앱 만들기', + documentsUploadQuota: '문서 업로드 한도', + vectorSpaceTooltip: '고품질 색인 모드를 사용하는 문서는 지식 데이터 저장소 자원을 소모합니다. 지식 데이터 저장소가 한도에 도달하면 새 문서를 업로드할 수 없습니다.', + }, + teamMembers: '팀원들', } export default translation diff --git a/web/i18n/ko-KR/common.ts b/web/i18n/ko-KR/common.ts index aff00be97a..4809eb9a2d 100644 --- a/web/i18n/ko-KR/common.ts +++ b/web/i18n/ko-KR/common.ts @@ -54,6 +54,10 @@ const translation = { copied: '복사', viewDetails: '세부 정보보기', in: '안으로', + downloadFailed: '다운로드 실패했습니다. 나중에 다시 시도하십시오.', + format: '형식', + more: '더 많은', + downloadSuccess: '다운로드 완료.', }, placeholder: { input: '입력해주세요', @@ -149,6 +153,9 @@ const translation = { community: '커뮤니티', about: 'Dify 소개', logout: '로그아웃', + github: '깃허브', + compliance: '컴플라이언스', + support: '지원', }, settings: { accountGroup: '계정', @@ -198,6 +205,9 @@ const translation = { feedbackLabel: '계정을 삭제한 이유를 알려주시겠습니까?', feedbackPlaceholder: '선택적', deletePrivacyLinkTip: '당사가 귀하의 데이터를 처리하는 방법에 대한 자세한 내용은 다음을 참조하십시오.', + workspaceIcon: '작업 공간 아이콘', + editWorkspaceInfo: '작업 공간 정보 편집', + workspaceName: '작업 공간 이름', }, members: { team: '팀', @@ -539,6 +549,7 @@ const translation = { inputPlaceholder: '봇과 대화', thought: '생각', thinking: '생각...', + resend: '재전송', }, promptEditor: { placeholder: '여기에 프롬프트 단어를 입력하세요. 변수를 삽입하려면 "{{"를 입력하고, 프롬프트 컨텐츠 블록을 삽입하려면 "/"를 입력하세요.', @@ -633,6 +644,25 @@ const translation = { 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: '여기에 이미지를 드롭하거나', + }, } export default translation diff --git a/web/i18n/ko-KR/custom.ts b/web/i18n/ko-KR/custom.ts index 6205a67275..8b4954993f 100644 --- a/web/i18n/ko-KR/custom.ts +++ b/web/i18n/ko-KR/custom.ts @@ -3,6 +3,8 @@ const translation = { upgradeTip: { prefix: '플랜을 업그레이드하여', suffix: '브랜드를 사용자 정의하세요.', + des: '계획을 업그레이드하여 브랜드를 맞춤화하세요.', + title: '플랜을 업그레이드하세요', }, webapp: { title: 'WebApp 브랜드 사용자 정의', diff --git a/web/i18n/ko-KR/dataset-creation.ts b/web/i18n/ko-KR/dataset-creation.ts index 10385bbb71..4b5ee3f03f 100644 --- a/web/i18n/ko-KR/dataset-creation.ts +++ b/web/i18n/ko-KR/dataset-creation.ts @@ -82,6 +82,14 @@ const translation = { jinaReaderTitle: '전체 사이트를 Markdown으로 변환', jinaReaderNotConfigured: 'Jina Reader가 구성되지 않았습니다.', useSitemapTooltip: '사이트맵을 따라 사이트를 크롤링합니다. 그렇지 않은 경우 Jina Reader는 페이지 관련성에 따라 반복적으로 크롤링하여 더 적지만 더 높은 품질의 페이지를 생성합니다.', + watercrawlDoc: '워터크롤 문서', + waterCrawlNotConfiguredDescription: 'API 키로 Watercrawl을 구성하여 사용하십시오.', + watercrawlTitle: 'Watercrawl로 웹 콘텐츠 추출하기', + configureFirecrawl: '파이어크롤 구성하기', + watercrawlDocLink: '웹사이트에서 동기화하기', + configureJinaReader: '지나 리더 설정하기', + waterCrawlNotConfigured: 'Watercrawl이 설정되어 있지 않습니다.', + configureWatercrawl: '워터크롤 구성하기', }, cancel: '취소', }, @@ -201,6 +209,11 @@ const translation = { 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-settings.ts b/web/i18n/ko-KR/dataset-settings.ts index c15fff8db6..b008e37ccd 100644 --- a/web/i18n/ko-KR/dataset-settings.ts +++ b/web/i18n/ko-KR/dataset-settings.ts @@ -25,6 +25,7 @@ const translation = { learnMore: '자세히 알아보기', description: ' 검색 방법에 대한 자세한 정보', longDescription: ' 검색 방법에 대한 자세한 내용은 언제든지 지식 설정에서 변경할 수 있습니다.', + method: '검색 방법', }, save: '저장', permissionsInvitedMembers: '부분 팀 구성원', diff --git a/web/i18n/ko-KR/dataset.ts b/web/i18n/ko-KR/dataset.ts index 4d622cf7f2..6be4dcc8b6 100644 --- a/web/i18n/ko-KR/dataset.ts +++ b/web/i18n/ko-KR/dataset.ts @@ -167,6 +167,54 @@ const translation = { documentsDisabled: '{{num}} 문서 사용 안 함 - 30일 이상 비활성 상태', allKnowledge: '모든 지식', allKnowledgeDescription: '이 작업 영역의 모든 정보를 표시하려면 선택합니다. 워크스페이스 소유자만 모든 기술 자료를 관리할 수 있습니다.', + metadata: { + createMetadata: { + namePlaceholder: '메타데이터 이름 추가', + name: '이름', + type: '유형', + back: '뒤', + title: '새 메타데이터', + }, + checkName: { + empty: '메타데이터 이름은 비어 있을 수 없습니다.', + invalid: '메타데이터 이름은 소문자, 숫자 및 밑줄만 포함할 수 있으며 소문자로 시작해야 합니다.', + }, + 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: '임베딩 모델을 사용할 수 없습니다.', } export default translation diff --git a/web/i18n/ko-KR/education.ts b/web/i18n/ko-KR/education.ts new file mode 100644 index 0000000000..78e4be7052 --- /dev/null +++ b/web/i18n/ko-KR/education.ts @@ -0,0 +1,47 @@ +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: '현재 이메일', +} + +export default translation diff --git a/web/i18n/ko-KR/explore.ts b/web/i18n/ko-KR/explore.ts index 6a6522fd1a..5ae1a34643 100644 --- a/web/i18n/ko-KR/explore.ts +++ b/web/i18n/ko-KR/explore.ts @@ -37,6 +37,7 @@ const translation = { Agent: '에이전트', Workflow: '워크플로우', HR: '인사', + Entertainment: '오락', }, } diff --git a/web/i18n/ko-KR/plugin.ts b/web/i18n/ko-KR/plugin.ts index 06445f3fb7..923f9d5248 100644 --- a/web/i18n/ko-KR/plugin.ts +++ b/web/i18n/ko-KR/plugin.ts @@ -180,6 +180,8 @@ const translation = { moreFrom: 'Marketplace에서 더 보기', sortBy: '정렬', and: '그리고', + verifiedTip: 'Dify에 의해 확인됨', + partnerTip: 'Dify 파트너에 의해 확인됨', }, task: { installingWithSuccess: '{{installingLength}} 플러그인 설치, {{successLength}} 성공.', @@ -204,6 +206,10 @@ const translation = { searchPlugins: '검색 플러그인', install: '{{num}} 설치', fromMarketplace: 'Marketplace에서', + metadata: { + title: '플러그인', + }, + difyVersionNotCompatible: '현재 Dify 버전이 이 플러그인과 호환되지 않습니다. 필요한 최소 버전으로 업그레이드하십시오: {{minimalDifyVersion}}', } export default translation diff --git a/web/i18n/ko-KR/share-app.ts b/web/i18n/ko-KR/share-app.ts index f57a9e8705..8474bc554e 100644 --- a/web/i18n/ko-KR/share-app.ts +++ b/web/i18n/ko-KR/share-app.ts @@ -28,6 +28,10 @@ const translation = { temporarySystemIssue: '죄송합니다. 일시적인 시스템 문제가 발생했습니다.', expand: '확장', collapse: '축소', + viewChatSettings: '채팅 설정 보기', + newChatTip: '이미 새로운 채팅 중입니다.', + chatFormTip: '채팅이 시작된 후에는 채팅 설정을 수정할 수 없습니다.', + chatSettingsTitle: '새 채팅 설정', }, generation: { tabs: { @@ -66,6 +70,8 @@ const translation = { moreThanMaxLengthLine: '줄 {{rowIndex}}: {{varName}}의 값은 {{maxLength}}자를 초과할 수 없습니다.', atLeastOne: '업로드된 파일에는 적어도 한 줄의 입력이 필요합니다.', }, + execution: '실행', + executions: '{{num}} 처형', }, } diff --git a/web/i18n/ko-KR/time.ts b/web/i18n/ko-KR/time.ts index e2410dd34b..78e825d1ba 100644 --- a/web/i18n/ko-KR/time.ts +++ b/web/i18n/ko-KR/time.ts @@ -1,3 +1,37 @@ -const translation = {} +const translation = { + daysInWeek: { + Wed: '수요일', + Thu: '목요일', + Fri: '자유', + Sat: '토요일', + Sun: '태양', + Tue: '화요일', + Mon: '몬', + }, + 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: '시간을 선택하세요...', +} export default translation diff --git a/web/i18n/ko-KR/workflow.ts b/web/i18n/ko-KR/workflow.ts index 17297f1273..a3496b7a23 100644 --- a/web/i18n/ko-KR/workflow.ts +++ b/web/i18n/ko-KR/workflow.ts @@ -106,6 +106,15 @@ const translation = { addFailureBranch: '실패 분기 추가', noHistory: '이력 없음', loadMore: '더 많은 워크플로우 로드', + publishUpdate: '업데이트 게시', + exportJPEG: 'JPEG로 내보내기', + exitVersions: '종료 버전', + exportImage: '이미지 내보내기', + noExist: '해당 변수가 없습니다.', + exportSVG: 'SVG로 내보내기', + versionHistory: '버전 기록', + exportPNG: 'PNG로 내보내기', + referenceVar: '참조 변수', }, env: { envPanelTitle: '환경 변수', @@ -205,6 +214,7 @@ const translation = { testRunIteration: '테스트 실행 반복', back: '뒤로', iteration: '반복', + loop: '루프', }, tabs: { 'searchBlock': '블록 검색', @@ -243,6 +253,9 @@ const translation = { 'document-extractor': 'Doc 추출기', 'list-operator': 'List 연산자', 'agent': '대리인', + 'loop-start': '루프 시작', + 'loop-end': '루프 종료', + 'loop': '루프', }, blocksAbout: { 'start': '워크플로우를 시작하기 위한 초기 매개변수를 정의합니다', @@ -263,6 +276,8 @@ const translation = { 'document-extractor': '업로드된 문서를 LLM에서 쉽게 이해할 수 있는 텍스트 콘텐츠로 구문 분석하는 데 사용됩니다.', 'list-operator': '배열 내용을 필터링하거나 정렬하는 데 사용됩니다.', 'agent': '질문에 답하거나 자연어를 처리하기 위해 대규모 언어 모델을 호출하는 경우', + 'loop': '종료 조건이 충족되거나 최대 반복 횟수에 도달할 때까지 논리 루프를 실행합니다.', + 'loop-end': '"break"와 동일합니다. 이 노드는 구성 항목이 없습니다. 루프 본문이 이 노드에 도달하면 루프가 종료됩니다.', }, operator: { zoomIn: '확대', @@ -404,6 +419,34 @@ const translation = { 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에서 가져오기', + }, }, knowledgeRetrieval: { queryVariable: '쿼리 변수', @@ -416,6 +459,33 @@ const translation = { url: '세그먼트 URL', metadata: '기타 메타데이터', }, + metadata: { + options: { + disabled: { + title: '장애인', + subTitle: '메타데이터 필터링을 활성화하지 않음', + }, + automatic: { + desc: '쿼리 변수를 기반으로 메타데이터 필터링 조건을 자동으로 생성합니다.', + subTitle: '사용자 쿼리를 기반으로 메타데이터 필터링 조건을 자동으로 생성합니다.', + title: '자동', + }, + manual: { + subTitle: '메타데이터 필터링 조건을 수동으로 추가합니다.', + title: '수동', + }, + }, + panel: { + title: '메타데이터 필터 조건', + placeholder: '값을 입력하세요', + add: '조건 추가', + search: '메타데이터 검색', + datePlaceholder: '시간을 선택하세요...', + select: '변수 선택...', + conditions: '조건', + }, + title: '메타데이터 필터링', + }, }, http: { inputVars: '입력 변수', @@ -505,6 +575,8 @@ const translation = { 'all of': '모두의', 'not in': '에 없음', 'not exists': '존재하지 않음', + 'after': '후에', + 'before': '전에', }, enterValue: '값 입력', addCondition: '조건 추가', @@ -520,6 +592,7 @@ const translation = { }, select: '고르다', addSubVariable: '하위 변수', + condition: '조건', }, variableAssigner: { title: '변수 할당', @@ -562,6 +635,8 @@ const translation = { 'clear': '초기화', '/=': '/=', 'set': '설정', + 'remove-first': '첫 번째 제거', + 'remove-last': '마지막 제거', }, 'variables': '변수', 'noAssignedVars': '사용 가능한 할당된 변수가 없습니다.', @@ -766,6 +841,38 @@ const translation = { toolbox: '도구', linkToPlugin: '플러그인에 대한 링크', }, + 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: '입력 모드', + }, }, tracing: { stopBy: '{{user}}에 의해 중지됨', @@ -777,6 +884,38 @@ const translation = { noAssignedVars: '사용 가능한 할당된 변수가 없습니다.', assignedVarsDescription: '할당된 변수는 다음과 같이 쓰기 가능한 변수여야 합니다.', }, + versionHistory: { + filter: { + onlyYours: '오직 너의 것만', + all: '모든', + reset: '필터 재설정', + onlyShowNamedVersions: '이름이 붙은 버전만 표시', + empty: '일치하는 버전 기록이 없습니다.', + }, + editField: { + titleLengthLimit: '제목은 {{limit}}자를 초과할 수 없습니다.', + title: '제목', + releaseNotes: '릴리스 노트', + releaseNotesLengthLimit: '릴리스 노트는 {{limit}}자를 초과할 수 없습니다.', + }, + action: { + updateFailure: '버전 업데이트에 실패했습니다.', + restoreSuccess: '복원된 버전', + deleteSuccess: '버전 삭제됨', + restoreFailure: '버전을 복원하지 못했습니다.', + deleteFailure: '버전을 삭제하지 못했습니다.', + updateSuccess: '버전이 업데이트되었습니다.', + }, + editVersionInfo: '버전 정보 편집', + latest: '최신', + currentDraft: '현재 초안', + releaseNotesPlaceholder: '변경된 내용을 설명하세요.', + defaultName: '제목 없는 버전', + nameThisVersion: '이 버전의 이름을 지어주세요', + title: '버전들', + deletionTip: '삭제는 되돌릴 수 없으니, 확인해 주시기 바랍니다.', + restorationTip: '버전 복원 후 현재 초안이 덮어쓰여질 것입니다.', + }, } export default translation diff --git a/web/i18n/pl-PL/app.ts b/web/i18n/pl-PL/app.ts index 562962bf38..137fdebeae 100644 --- a/web/i18n/pl-PL/app.ts +++ b/web/i18n/pl-PL/app.ts @@ -166,6 +166,10 @@ const translation = { 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.', + }, }, answerIcon: { description: 'Czy w aplikacji udostępnionej ma być używana ikona aplikacji internetowej do zamiany 🤖.', @@ -201,6 +205,17 @@ const translation = { 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.', + }, } export default translation diff --git a/web/i18n/pl-PL/billing.ts b/web/i18n/pl-PL/billing.ts index cff567e162..00284109e8 100644 --- a/web/i18n/pl-PL/billing.ts +++ b/web/i18n/pl-PL/billing.ts @@ -75,6 +75,7 @@ const translation = { 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', @@ -86,30 +87,97 @@ const translation = { 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}}/dzień', + 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.', }, plans: { sandbox: { name: 'Sandbox', description: '200 razy darmowa próba GPT', includesTitle: 'Zawiera:', + 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.', includesTitle: 'Wszystko w darmowym planie, plus:', + 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ą.', includesTitle: 'Wszystko w planie Profesjonalnym, plus:', + 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: { + 3: 'Wiele przestrzeni roboczych i zarządzanie przedsiębiorstwem', + 5: 'Wynegocjowane SLA przez Dify Partners', + 0: 'Rozwiązania do wdrożeń na dużą skalę klasy przedsiębiorstw', + 8: 'Profesjonalne wsparcie techniczne', + 2: 'Ekskluzywne funkcje przedsiębiorstwa', + 6: 'Zaawansowane zabezpieczenia i kontrola', + 7: 'Aktualizacje i konserwacja przez Dify Oficjalnie', + 4: 'SSO', + 1: 'Autoryzacja licencji komercyjnej', + }, + 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: { + 0: 'Wszystkie funkcje podstawowe wydane w publicznym repozytorium', + 1: 'Jedno Miejsce Pracy', + 2: '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: { + 0: 'Samozarządzana niezawodność różnych dostawców chmury', + 1: 'Jedno miejsce pracy', + 3: 'Priorytetowe wsparcie przez e-mail i czat', + 2: 'Logo aplikacji internetowej i dostosowanie marki', + }, + 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: { @@ -119,12 +187,26 @@ const translation = { apps: { fullTipLine1: 'Ulepsz swój plan, aby', fullTipLine2: 'tworzyć więcej aplikacji.', + 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.', + }, + teamMembers: 'Członkowie zespołu', } export default translation diff --git a/web/i18n/pl-PL/common.ts b/web/i18n/pl-PL/common.ts index b0ef026f5e..fb94c8caaf 100644 --- a/web/i18n/pl-PL/common.ts +++ b/web/i18n/pl-PL/common.ts @@ -54,6 +54,10 @@ const translation = { 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.', }, placeholder: { input: 'Proszę wprowadzić', @@ -158,6 +162,9 @@ const translation = { community: 'Społeczność', about: 'O', logout: 'Wyloguj się', + support: 'Wsparcie', + github: 'GitHub', + compliance: 'Zgodność', }, settings: { accountGroup: 'KONTO', @@ -208,6 +215,9 @@ const translation = { 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', }, members: { team: 'Zespół', @@ -558,6 +568,7 @@ const translation = { inputPlaceholder: 'Porozmawiaj z botem', thought: 'Myśl', thinking: 'Myślenie...', + resend: 'Prześlij ponownie', }, promptEditor: { placeholder: @@ -655,6 +666,25 @@ const translation = { 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', + }, } export default translation diff --git a/web/i18n/pl-PL/custom.ts b/web/i18n/pl-PL/custom.ts index 15d71cceea..8703ebb817 100644 --- a/web/i18n/pl-PL/custom.ts +++ b/web/i18n/pl-PL/custom.ts @@ -3,6 +3,8 @@ const translation = { 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', diff --git a/web/i18n/pl-PL/dataset-creation.ts b/web/i18n/pl-PL/dataset-creation.ts index 4073fdd681..236202d867 100644 --- a/web/i18n/pl-PL/dataset-creation.ts +++ b/web/i18n/pl-PL/dataset-creation.ts @@ -83,6 +83,14 @@ const translation = { 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', + watercrawlDocLink: 'https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-website', + 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', }, cancel: 'Anuluj', }, @@ -216,6 +224,11 @@ const translation = { 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-settings.ts b/web/i18n/pl-PL/dataset-settings.ts index 94099708b7..03462ada05 100644 --- a/web/i18n/pl-PL/dataset-settings.ts +++ b/web/i18n/pl-PL/dataset-settings.ts @@ -30,6 +30,7 @@ const translation = { description: ' dotyczące metody doboru.', longDescription: ' dotyczące metody doboru, możesz to zmienić w dowolnym momencie w ustawieniach wiedzy.', + method: 'Metoda pozyskiwania', }, save: 'Zapisz', permissionsInvitedMembers: 'Częściowi członkowie zespołu', diff --git a/web/i18n/pl-PL/dataset.ts b/web/i18n/pl-PL/dataset.ts index 9a5ed10a5a..3006c46c97 100644 --- a/web/i18n/pl-PL/dataset.ts +++ b/web/i18n/pl-PL/dataset.ts @@ -174,6 +174,54 @@ const translation = { 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', + }, + 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.', } export default translation diff --git a/web/i18n/pl-PL/education.ts b/web/i18n/pl-PL/education.ts new file mode 100644 index 0000000000..a7684c2ae8 --- /dev/null +++ b/web/i18n/pl-PL/education.ts @@ -0,0 +1,47 @@ +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.', +} + +export default translation diff --git a/web/i18n/pl-PL/explore.ts b/web/i18n/pl-PL/explore.ts index 58c691119c..f9e8b30f8b 100644 --- a/web/i18n/pl-PL/explore.ts +++ b/web/i18n/pl-PL/explore.ts @@ -38,6 +38,7 @@ const translation = { HR: 'HR', Agent: 'Agent', Workflow: 'Przepływ pracy', + Entertainment: 'Rozrywka', }, } diff --git a/web/i18n/pl-PL/plugin.ts b/web/i18n/pl-PL/plugin.ts index e04068e59d..0883a98e07 100644 --- a/web/i18n/pl-PL/plugin.ts +++ b/web/i18n/pl-PL/plugin.ts @@ -180,6 +180,8 @@ const translation = { 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ć', @@ -204,6 +206,10 @@ const translation = { searchPlugins: 'Wtyczki wyszukiwania', searchTools: 'Narzędzia wyszukiwania...', submitPlugin: 'Prześlij wtyczkę', + metadata: { + title: 'Wtyczki', + }, + difyVersionNotCompatible: 'Obecna wersja Dify nie jest kompatybilna z tym wtyczką, proszę zaktualizować do minimalnej wymaganej wersji: {{minimalDifyVersion}}', } export default translation diff --git a/web/i18n/pl-PL/share-app.ts b/web/i18n/pl-PL/share-app.ts index a826350666..80619cf4fc 100644 --- a/web/i18n/pl-PL/share-app.ts +++ b/web/i18n/pl-PL/share-app.ts @@ -29,6 +29,10 @@ const translation = { 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: { @@ -71,6 +75,8 @@ const translation = { atLeastOne: 'Proszę wprowadź co najmniej jeden wiersz w załadowanym pliku.', }, + executions: '{{num}} EGZEKUCJI', + execution: 'WYKONANIE', }, } diff --git a/web/i18n/pl-PL/time.ts b/web/i18n/pl-PL/time.ts index e2410dd34b..e98ebddfcd 100644 --- a/web/i18n/pl-PL/time.ts +++ b/web/i18n/pl-PL/time.ts @@ -1,3 +1,37 @@ -const translation = {} +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...', +} export default translation diff --git a/web/i18n/pl-PL/workflow.ts b/web/i18n/pl-PL/workflow.ts index c47f4ea7d0..ebf1f47d2b 100644 --- a/web/i18n/pl-PL/workflow.ts +++ b/web/i18n/pl-PL/workflow.ts @@ -106,6 +106,15 @@ const translation = { 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', + noExist: 'Nie ma takiej zmiennej', + exportPNG: 'Eksportuj jako PNG', + publishUpdate: 'Opublikuj aktualizację', + referenceVar: 'Zmienna odniesienia', }, env: { envPanelTitle: 'Zmienne Środowiskowe', @@ -205,6 +214,7 @@ const translation = { testRunIteration: 'Iteracja testowego uruchomienia', back: 'Wstecz', iteration: 'Iteracja', + loop: 'Pętla', }, tabs: { 'searchBlock': 'Szukaj bloku', @@ -243,6 +253,9 @@ const translation = { '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', }, blocksAbout: { 'start': 'Zdefiniuj początkowe parametry uruchamiania przepływu pracy', @@ -263,6 +276,8 @@ const translation = { '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.', }, operator: { zoomIn: 'Powiększ', @@ -404,6 +419,34 @@ const translation = { 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', + }, }, knowledgeRetrieval: { queryVariable: 'Zmienna zapytania', @@ -416,6 +459,33 @@ const translation = { url: 'URL segmentowany', metadata: 'Inne metadane', }, + 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', + }, }, http: { inputVars: 'Zmienne wejściowe', @@ -505,6 +575,8 @@ const translation = { 'exists': 'Istnieje', 'all of': 'wszystkie z nich', 'not in': 'nie w', + 'before': 'przed', + 'after': 'po', }, enterValue: 'Wpisz wartość', addCondition: 'Dodaj warunek', @@ -520,6 +592,7 @@ const translation = { }, addSubVariable: 'Zmienna podrzędna', select: 'Wybrać', + condition: 'Stan', }, variableAssigner: { title: 'Przypisz zmienne', @@ -562,6 +635,8 @@ const translation = { '+=': '+=', 'clear': 'Jasny', 'append': 'Dołączyć', + 'remove-first': 'Usuń pierwszy', + 'remove-last': 'Usuń ostatni', }, 'variables': 'Zmiennych', 'selectAssignedVariable': 'Wybierz przypisaną zmienną...', @@ -766,6 +841,38 @@ const translation = { strategyNotSet: 'Nie ustawiono strategii agentalnej', model: 'model', }, + 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?', + }, }, tracing: { stopBy: 'Zatrzymane przez {{user}}', @@ -777,6 +884,38 @@ const translation = { 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', + }, + 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.', + }, } export default translation diff --git a/web/i18n/pt-BR/app.ts b/web/i18n/pt-BR/app.ts index 8f920e4280..c09c2dea7b 100644 --- a/web/i18n/pt-BR/app.ts +++ b/web/i18n/pt-BR/app.ts @@ -159,6 +159,10 @@ const translation = { 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', + }, }, answerIcon: { descriptionInExplore: 'Se o ícone do WebApp deve ser usado para substituir 🤖 no Explore', @@ -194,6 +198,17 @@ const translation = { 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.', + }, } export default translation diff --git a/web/i18n/pt-BR/billing.ts b/web/i18n/pt-BR/billing.ts index 0a7a964376..f26008c718 100644 --- a/web/i18n/pt-BR/billing.ts +++ b/web/i18n/pt-BR/billing.ts @@ -66,6 +66,7 @@ const translation = { 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', @@ -78,27 +79,94 @@ const translation = { 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}}/dia', + 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.', }, plans: { sandbox: { name: 'Sandbox', description: '200 vezes GPT de teste gratuito', includesTitle: 'Inclui:', + for: 'Teste gratuito das capacidades principais', }, professional: { name: 'Profissional', description: 'Para indivíduos e pequenas equipes desbloquearem mais poder de forma acessível.', includesTitle: 'Tudo no plano gratuito, além de:', + for: 'Para Desenvolvedores Independentes/Pequenas Equipes', }, team: { name: 'Equipe', description: 'Colabore sem limites e aproveite o desempenho de primeira linha.', includesTitle: 'Tudo no plano Profissional, além de:', + 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: { + 6: 'Segurança e Controles Avançados', + 7: 'Atualizações e Manutenção por Dify Oficialmente', + 5: 'Acordos de Nível de Serviço negociados pelos Parceiros Dify', + 1: 'Autorização de Licença Comercial', + 8: 'Suporte Técnico Profissional', + 4: 'SSO', + 2: 'Recursos Exclusivos da Empresa', + 3: 'Múltiplos Espaços de Trabalho e Gestão Empresarial', + 0: 'Soluções de Implantação Escaláveis de Nível Empresarial', + }, + btnText: 'Contate Vendas', + priceTip: 'Faturamento Anual Apenas', + price: 'Custom', + for: 'Para equipes de grande porte', + }, + community: { + features: { + 1: 'Espaço de Trabalho Único', + 0: 'Todos os recursos principais lançados sob o repositório público', + 2: 'Cumpre 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: { + 1: 'Espaço de Trabalho Único', + 3: 'Suporte prioritário por e-mail e chat', + 2: 'Customização de Logo e Branding do WebApp', + 0: 'Confiabilidade autogerenciada por vários provedores de nuvem', + }, + 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: { @@ -108,12 +176,26 @@ const translation = { apps: { fullTipLine1: 'Faça o upgrade do seu plano para', fullTipLine2: 'construir mais aplicativos.', + 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', + }, + teamMembers: 'Membros da equipe', } export default translation diff --git a/web/i18n/pt-BR/common.ts b/web/i18n/pt-BR/common.ts index eb92d9ab1d..7b7eeafbe7 100644 --- a/web/i18n/pt-BR/common.ts +++ b/web/i18n/pt-BR/common.ts @@ -54,6 +54,10 @@ const translation = { copied: 'Copiado', in: 'em', viewDetails: 'Ver detalhes', + downloadFailed: 'Download falhou. Por favor, tente novamente mais tarde.', + more: 'Mais', + downloadSuccess: 'Download concluído.', + format: 'Formato', }, placeholder: { input: 'Por favor, insira', @@ -153,6 +157,9 @@ const translation = { community: 'Comunidade', about: 'Sobre', logout: 'Sair', + github: 'GitHub', + support: 'Suporte', + compliance: 'Conformidade', }, settings: { accountGroup: 'CONTA', @@ -202,6 +209,9 @@ const translation = { 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', }, members: { team: 'Equipe', @@ -543,6 +553,7 @@ const translation = { inputPlaceholder: 'Fale com o bot', 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', @@ -637,6 +648,25 @@ const translation = { 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', + }, } export default translation diff --git a/web/i18n/pt-BR/custom.ts b/web/i18n/pt-BR/custom.ts index 940316e7bb..c1c7251f48 100644 --- a/web/i18n/pt-BR/custom.ts +++ b/web/i18n/pt-BR/custom.ts @@ -3,6 +3,8 @@ const translation = { 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 WebApp', diff --git a/web/i18n/pt-BR/dataset-creation.ts b/web/i18n/pt-BR/dataset-creation.ts index d4315e6866..9023d1a6dc 100644 --- a/web/i18n/pt-BR/dataset-creation.ts +++ b/web/i18n/pt-BR/dataset-creation.ts @@ -82,6 +82,14 @@ const translation = { 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.', + watercrawlDocLink: 'https://docs.dify.ai/pt/guias/base-de-conhecimentos/criar-conhecimento-e-enviar-documentos/importar-dados-de-conteudo/sincronizar-a-partir-do-site', + watercrawlDoc: 'Documentos do Watercrawl', + configureWatercrawl: 'Configurar Watercrawl', }, cancel: 'Cancelar', }, @@ -200,6 +208,11 @@ const translation = { 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-settings.ts b/web/i18n/pt-BR/dataset-settings.ts index a9346c4dd0..e959fa0a12 100644 --- a/web/i18n/pt-BR/dataset-settings.ts +++ b/web/i18n/pt-BR/dataset-settings.ts @@ -25,6 +25,7 @@ const translation = { 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', }, save: 'Salvar', permissionsInvitedMembers: 'Membros parciais da equipe', diff --git a/web/i18n/pt-BR/dataset.ts b/web/i18n/pt-BR/dataset.ts index c8214e1645..7d5f75aae6 100644 --- a/web/i18n/pt-BR/dataset.ts +++ b/web/i18n/pt-BR/dataset.ts @@ -168,6 +168,54 @@ const translation = { 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.', + }, + 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.', } export default translation diff --git a/web/i18n/pt-BR/education.ts b/web/i18n/pt-BR/education.ts new file mode 100644 index 0000000000..af0cd1523a --- /dev/null +++ b/web/i18n/pt-BR/education.ts @@ -0,0 +1,47 @@ +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.', +} + +export default translation diff --git a/web/i18n/pt-BR/explore.ts b/web/i18n/pt-BR/explore.ts index f77827b4ed..2a15d07f95 100644 --- a/web/i18n/pt-BR/explore.ts +++ b/web/i18n/pt-BR/explore.ts @@ -37,6 +37,7 @@ const translation = { HR: 'RH', Workflow: 'Fluxo de trabalho', Agent: 'Agente', + Entertainment: 'Entretenimento', }, } diff --git a/web/i18n/pt-BR/plugin.ts b/web/i18n/pt-BR/plugin.ts index 3528407a1b..c02f9cb7e3 100644 --- a/web/i18n/pt-BR/plugin.ts +++ b/web/i18n/pt-BR/plugin.ts @@ -180,6 +180,8 @@ const translation = { 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}}', @@ -204,6 +206,10 @@ const translation = { 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}}', } export default translation diff --git a/web/i18n/pt-BR/share-app.ts b/web/i18n/pt-BR/share-app.ts index d6e8856cc1..d8bca03089 100644 --- a/web/i18n/pt-BR/share-app.ts +++ b/web/i18n/pt-BR/share-app.ts @@ -32,6 +32,10 @@ const translation = { 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: { @@ -70,6 +74,8 @@ const translation = { 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.', }, + executions: '{{num}} EXECUÇÕES', + execution: 'EXECUÇÃO', }, } diff --git a/web/i18n/pt-BR/time.ts b/web/i18n/pt-BR/time.ts index e2410dd34b..fcf25cab1e 100644 --- a/web/i18n/pt-BR/time.ts +++ b/web/i18n/pt-BR/time.ts @@ -1,3 +1,37 @@ -const translation = {} +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...', +} export default translation diff --git a/web/i18n/pt-BR/workflow.ts b/web/i18n/pt-BR/workflow.ts index 3d2b3fe8f0..e64240a06d 100644 --- a/web/i18n/pt-BR/workflow.ts +++ b/web/i18n/pt-BR/workflow.ts @@ -106,6 +106,15 @@ const translation = { 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', + referenceVar: 'Variável de Referência', + noExist: 'Nenhuma variável desse tipo', + exitVersions: 'Versões de Sair', + exportSVG: 'Exportar como SVG', + exportJPEG: 'Exportar como JPEG', }, env: { envPanelTitle: 'Variáveis de Ambiente', @@ -205,6 +214,7 @@ const translation = { testRunIteration: 'Iteração de execução de teste', back: 'Voltar', iteration: 'Iteração', + loop: 'Laço', }, tabs: { 'searchBlock': 'Buscar bloco', @@ -243,6 +253,9 @@ const translation = { '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', }, blocksAbout: { 'start': 'Definir os parâmetros iniciais para iniciar um fluxo de trabalho', @@ -263,6 +276,8 @@ const translation = { '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.', }, operator: { zoomIn: 'Aproximar', @@ -404,6 +419,34 @@ const translation = { 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', + }, }, knowledgeRetrieval: { queryVariable: 'Variável de consulta', @@ -416,6 +459,33 @@ const translation = { url: 'URL segmentado', metadata: 'Outros metadados', }, + 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', + }, }, http: { inputVars: 'Variáveis de entrada', @@ -505,6 +575,8 @@ const translation = { 'exists': 'Existe', 'not exists': 'não existe', 'all of': 'todos os', + 'after': 'depois', + 'before': 'antes', }, enterValue: 'Digite o valor', addCondition: 'Adicionar condição', @@ -520,6 +592,7 @@ const translation = { }, addSubVariable: 'Subvariável', select: 'Selecionar', + condition: 'Condição', }, variableAssigner: { title: 'Atribuir variáveis', @@ -562,6 +635,8 @@ const translation = { '+=': '+=', 'set': 'Pôr', 'overwrite': 'Sobrescrever', + 'remove-last': 'Remover Último', + 'remove-first': 'Remover Primeiro', }, 'selectAssignedVariable': 'Selecione a variável atribuída...', 'setParameter': 'Definir parâmetro...', @@ -766,6 +841,38 @@ const translation = { toolNotAuthorizedTooltip: '{{ferramenta}} Não autorizado', toolbox: 'caixa de ferramentas', }, + 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', + }, }, tracing: { stopBy: 'Parado por {{user}}', @@ -777,6 +884,38 @@ const translation = { 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', + }, + 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.', + }, } export default translation diff --git a/web/i18n/ro-RO/app.ts b/web/i18n/ro-RO/app.ts index 3f288c1396..1b1cd6c25d 100644 --- a/web/i18n/ro-RO/app.ts +++ b/web/i18n/ro-RO/app.ts @@ -159,6 +159,10 @@ const translation = { 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.', + }, }, answerIcon: { descriptionInExplore: 'Dacă să utilizați pictograma WebApp pentru a înlocui 🤖 în Explore', @@ -194,6 +198,17 @@ const translation = { 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.', + }, } export default translation diff --git a/web/i18n/ro-RO/billing.ts b/web/i18n/ro-RO/billing.ts index 707d892047..682641372d 100644 --- a/web/i18n/ro-RO/billing.ts +++ b/web/i18n/ro-RO/billing.ts @@ -69,6 +69,7 @@ const translation = { 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', @@ -77,27 +78,94 @@ const translation = { 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}}/zi', + 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.', }, plans: { sandbox: { name: 'Sandbox', description: '200 de încercări gratuite GPT', includesTitle: 'Include:', + 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.', includesTitle: 'Tot ce este în planul gratuit, plus:', + 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.', includesTitle: 'Tot ce este în planul Professional, plus:', + 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: { + 3: 'Multiple Spații de lucru și Management Enterprise', + 6: 'Securitate avansată și control', + 2: 'Funcții exclusive pentru întreprinderi', + 8: 'Asistență tehnică profesională', + 4: 'SSO', + 7: 'Actualizări și întreținere de către Dify Oficial', + 1: 'Autorizare pentru licență comercială', + 5: 'SLA-uri negociate de partenerii Dify', + 0: 'Soluții de desfășurare scalabile de nivel enterprise', + }, + for: 'Pentru echipe de mari dimensiuni', + price: 'Personalizat', + priceTip: 'Facturare anuală doar', + btnText: 'Contactați Vânzări', + }, + community: { + features: { + 2: 'Se conformează Licenței Open Source Dify', + 1: 'Spațiu de lucru unic', + 0: 'Toate funcțiile de bază lansate sub depozitul public', + }, + 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: { + 1: 'Spațiu de lucru unic', + 0: 'Fiabilitate autogestionată de diferiți furnizori de cloud', + 2: 'Personalizarea logo-ului și branding-ului aplicației web', + 3: 'Suport prioritar prin email ș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: { @@ -107,12 +175,26 @@ const translation = { apps: { fullTipLine1: 'Actualizați-vă planul pentru a', fullTipLine2: 'construi mai multe aplicații.', + 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', + }, + teamMembers: 'Membrii echipei', } export default translation diff --git a/web/i18n/ro-RO/common.ts b/web/i18n/ro-RO/common.ts index e755d59354..13243404bd 100644 --- a/web/i18n/ro-RO/common.ts +++ b/web/i18n/ro-RO/common.ts @@ -54,6 +54,10 @@ const translation = { 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', }, placeholder: { input: 'Vă rugăm să introduceți', @@ -153,6 +157,9 @@ const translation = { community: 'Comunitate', about: 'Despre', logout: 'Deconectare', + github: 'GitHub', + support: 'Suport', + compliance: 'Conformitate', }, settings: { accountGroup: 'CONT', @@ -202,6 +209,9 @@ const translation = { 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', }, members: { team: 'Echipă', @@ -543,6 +553,7 @@ const translation = { inputPlaceholder: 'Vorbește cu Bot', 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', @@ -637,6 +648,25 @@ const translation = { 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', + }, } export default translation diff --git a/web/i18n/ro-RO/custom.ts b/web/i18n/ro-RO/custom.ts index 0e10d59ec0..923ec39759 100644 --- a/web/i18n/ro-RO/custom.ts +++ b/web/i18n/ro-RO/custom.ts @@ -3,6 +3,8 @@ const translation = { 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 WebApp', diff --git a/web/i18n/ro-RO/dataset-creation.ts b/web/i18n/ro-RO/dataset-creation.ts index 2c92d8417c..ce6872c654 100644 --- a/web/i18n/ro-RO/dataset-creation.ts +++ b/web/i18n/ro-RO/dataset-creation.ts @@ -82,6 +82,14 @@ const translation = { 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.', + watercrawlDocLink: 'https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-website', + configureFirecrawl: 'Configurează Firecrawl', + watercrawlDoc: 'Documentele Watercrawl', + configureWatercrawl: 'Configurează Watercrawl', }, cancel: 'Anula', }, @@ -200,6 +208,11 @@ const translation = { 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-settings.ts b/web/i18n/ro-RO/dataset-settings.ts index 0627b08b79..9d39f8ad95 100644 --- a/web/i18n/ro-RO/dataset-settings.ts +++ b/web/i18n/ro-RO/dataset-settings.ts @@ -25,6 +25,7 @@ const translation = { 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', }, save: 'Salvare', permissionsInvitedMembers: 'Membri parțiali ai echipei', diff --git a/web/i18n/ro-RO/dataset.ts b/web/i18n/ro-RO/dataset.ts index 2feff67596..dd7b2d6900 100644 --- a/web/i18n/ro-RO/dataset.ts +++ b/web/i18n/ro-RO/dataset.ts @@ -168,6 +168,54 @@ const translation = { 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', + }, + 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.', } export default translation diff --git a/web/i18n/ro-RO/education.ts b/web/i18n/ro-RO/education.ts new file mode 100644 index 0000000000..cda09528aa --- /dev/null +++ b/web/i18n/ro-RO/education.ts @@ -0,0 +1,47 @@ +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.', +} + +export default translation diff --git a/web/i18n/ro-RO/explore.ts b/web/i18n/ro-RO/explore.ts index 75fc97b8a2..153b236200 100644 --- a/web/i18n/ro-RO/explore.ts +++ b/web/i18n/ro-RO/explore.ts @@ -37,6 +37,7 @@ const translation = { HR: 'Resurse Umane', Agent: 'Agent', Workflow: 'Flux de lucru', + Entertainment: 'Divertisment', }, } diff --git a/web/i18n/ro-RO/plugin.ts b/web/i18n/ro-RO/plugin.ts index db21cbc40a..4fe0782496 100644 --- a/web/i18n/ro-RO/plugin.ts +++ b/web/i18n/ro-RO/plugin.ts @@ -180,6 +180,8 @@ const translation = { 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', @@ -204,6 +206,10 @@ const translation = { 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}}', } export default translation diff --git a/web/i18n/ro-RO/share-app.ts b/web/i18n/ro-RO/share-app.ts index a33b668174..2cb39a0485 100644 --- a/web/i18n/ro-RO/share-app.ts +++ b/web/i18n/ro-RO/share-app.ts @@ -32,6 +32,10 @@ const translation = { 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: { @@ -70,6 +74,8 @@ const translation = { 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: 'EXECUȚIE', + executions: '{{num}} EXECUȚII', }, } diff --git a/web/i18n/ro-RO/time.ts b/web/i18n/ro-RO/time.ts index e2410dd34b..2b40803081 100644 --- a/web/i18n/ro-RO/time.ts +++ b/web/i18n/ro-RO/time.ts @@ -1,3 +1,37 @@ -const translation = {} +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ă...', +} export default translation diff --git a/web/i18n/ro-RO/workflow.ts b/web/i18n/ro-RO/workflow.ts index b4aa035274..2978565bfc 100644 --- a/web/i18n/ro-RO/workflow.ts +++ b/web/i18n/ro-RO/workflow.ts @@ -106,6 +106,15 @@ const translation = { 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', + noExist: 'Nu există o astfel de variabilă', + exitVersions: 'Ieșire Versiuni', + versionHistory: 'Istoricul versiunilor', + publishUpdate: 'Publicați actualizarea', + referenceVar: 'Variabilă de referință', + exportJPEG: 'Exportă ca JPEG', }, env: { envPanelTitle: 'Variabile de Mediu', @@ -205,6 +214,7 @@ const translation = { testRunIteration: 'Iterație rulare de test', back: 'Înapoi', iteration: 'Iterație', + loop: 'Loop', }, tabs: { 'searchBlock': 'Caută bloc', @@ -243,6 +253,9 @@ const translation = { '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ă', }, blocksAbout: { 'start': 'Definiți parametrii inițiali pentru lansarea unui flux de lucru', @@ -263,6 +276,8 @@ const translation = { '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ă.', }, operator: { zoomIn: 'Mărește', @@ -404,6 +419,34 @@ const translation = { 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...', + }, }, knowledgeRetrieval: { queryVariable: 'Variabilă de interogare', @@ -416,6 +459,33 @@ const translation = { url: 'URL segmentat', metadata: 'Alte metadate', }, + 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', + }, }, http: { inputVars: 'Variabile de intrare', @@ -505,6 +575,8 @@ const translation = { 'exists': 'Există', 'all of': 'Toate', 'not exists': 'nu există', + 'before': 'înainte', + 'after': 'după', }, enterValue: 'Introduceți valoarea', addCondition: 'Adăugați condiție', @@ -520,6 +592,7 @@ const translation = { }, select: 'Alege', addSubVariable: 'Subvariabilă', + condition: 'Condiție', }, variableAssigner: { title: 'Atribuie variabile', @@ -562,6 +635,8 @@ const translation = { 'over-write': 'Suprascrie', '/=': '/=', '-=': '-=', + 'remove-first': 'Îndepărtează primul', + 'remove-last': 'Îndepărtează ultimul', }, 'selectAssignedVariable': 'Selectați variabila atribuită...', 'varNotSet': 'Variabila NU este setată', @@ -766,6 +841,38 @@ const translation = { linkToPlugin: 'Link către pluginuri', model: 'model', }, + 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', + }, }, tracing: { stopBy: 'Oprit de {{user}}', @@ -777,6 +884,38 @@ const translation = { 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', + }, + 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', + }, } export default translation diff --git a/web/i18n/ru-RU/app.ts b/web/i18n/ru-RU/app.ts index a5b543c867..990457b950 100644 --- a/web/i18n/ru-RU/app.ts +++ b/web/i18n/ru-RU/app.ts @@ -163,6 +163,10 @@ const translation = { title: 'Опик', description: 'Opik — это платформа с открытым исходным кодом для оценки, тестирования и мониторинга LLM-приложений.', }, + weave: { + description: 'Weave — это открытая платформа для оценки, тестирования и мониторинга приложений LLM.', + title: 'Ткать', + }, }, answerIcon: { title: 'Использование значка WebApp для замены 🤖', @@ -194,6 +198,17 @@ const translation = { placeholder: 'Выберите приложение...', params: 'ПАРАМЕТРЫ ПРИЛОЖЕНИЯ', }, + structOutput: { + notConfiguredTip: 'Структурированный вывод еще не был настроен.', + LLMResponse: 'Ответ LLM', + structured: 'Структурированный', + moreFillTip: 'Показано максимум 10 уровней вложенности', + required: 'Необходимо', + configure: 'Настроить', + modelNotSupported: 'Модель не поддерживается', + modelNotSupportedTip: 'Текущая модель не поддерживает эту функцию и автоматически понижается до инъекции подсказок.', + structuredTip: 'Структурированные выходные данные — это функция, которая гарантирует, что модель всегда будет генерировать ответы, соответствующие вашей предоставленной JSON-схеме.', + }, } export default translation diff --git a/web/i18n/ru-RU/billing.ts b/web/i18n/ru-RU/billing.ts index e7760d9ac6..7a0560334c 100644 --- a/web/i18n/ru-RU/billing.ts +++ b/web/i18n/ru-RU/billing.ts @@ -70,6 +70,7 @@ const translation = { messageRequest: { title: 'Кредиты на сообщения', tooltip: 'Квоты вызова сообщений для различных тарифных планов, использующих модели OpenAI (кроме gpt4). Сообщения, превышающие лимит, будут использовать ваш ключ API OpenAI.', + titlePerMonth: '{{count,number}} сообщений/месяц', }, annotatedResponse: { title: 'Ограничения квоты аннотаций', @@ -77,27 +78,94 @@ const translation = { }, 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: 'Квота на количество документов, импортируемых из источника знаний.', }, plans: { sandbox: { name: 'Песочница', description: '200 бесплатных пробных использований GPT', includesTitle: 'Включает:', + for: 'Бесплатная пробная версия основных возможностей', }, professional: { name: 'Профессиональный', description: 'Для частных лиц и небольших команд, чтобы разблокировать больше возможностей по доступной цене.', includesTitle: 'Все в бесплатном плане, плюс:', + for: 'Для независимых разработчиков/малых команд', }, team: { name: 'Команда', description: 'Сотрудничайте без ограничений и наслаждайтесь высочайшей производительностью.', includesTitle: 'Все в профессиональном плане, плюс:', + for: 'Для команд среднего размера', }, enterprise: { name: 'Корпоративный', description: 'Получите полный набор возможностей и поддержку для крупномасштабных критически важных систем.', includesTitle: 'Все в командном плане, плюс:', + features: { + 7: 'Обновления и обслуживание от Dify официально', + 4: 'ССО', + 8: 'Профессиональная техническая поддержка', + 6: 'Современная безопасность и контроль', + 2: 'Эксклюзивные функции для предприятий', + 1: 'Коммерческая лицензия', + 3: 'Множественные рабочие области и управление предприятием', + 0: 'Решения для масштабируемого развертывания корпоративного уровня', + 5: 'Согласованные Соглашения об Уровне Услуг от Dify Partners', + }, + price: 'Пользовательский', + priceTip: 'Только годовая подписка', + for: 'Для команд большого размера', + btnText: 'Связаться с отделом продаж', + }, + community: { + features: { + 0: 'Все основные функции выпущены в публичном репозитории', + 1: 'Единое рабочее пространство', + 2: 'Соблюдает Лицензию на открытое программное обеспечение Dify', + }, + name: 'Сообщество', + btnText: 'Начните с сообщества', + price: 'Свободно', + includesTitle: 'Бесплатные функции:', + description: 'Для отдельных пользователей, малых команд или некоммерческих проектов', + for: 'Для отдельных пользователей, малых команд или некоммерческих проектов', + }, + premium: { + features: { + 3: 'Приоритетная поддержка по электронной почте и чату', + 1: 'Единое рабочее пространство', + 2: 'Настройка логотипа и брендинга веб-приложения', + 0: 'Самостоятельное управление надежностью различными облачными провайдерами', + }, + description: 'Для средних организаций и команд', + includesTitle: 'Всё из Сообщества, плюс:', + priceTip: 'На основе облачного маркетплейса', + btnText: 'Получите Премиум в', + comingSoon: 'Поддержка Microsoft Azure и Google Cloud скоро появится', + price: 'Масштабируемый', + for: 'Для средних организаций и команд', + name: 'Премиум', }, }, vectorSpace: { @@ -107,12 +175,26 @@ const translation = { apps: { fullTipLine1: 'Обновите свой тарифный план, чтобы', fullTipLine2: 'создавать больше приложений.', + fullTip2des: 'Рекомендуется удалить неактивные приложения, чтобы освободить место, или свяжитесь с нами.', + fullTip2: 'Достигнут лимит плана', + contactUs: 'Свяжитесь с нами', + fullTip1des: 'Вы достигли предела создания приложений по этому плану', + fullTip1: 'Обновите, чтобы создать больше приложений', }, annotatedResponse: { fullTipLine1: 'Обновите свой тарифный план, чтобы', fullTipLine2: 'аннотировать больше разговоров.', quotaTitle: 'Квота ответов аннотаций', }, + usagePage: { + buildApps: 'Создавайте приложения', + teamMembers: 'Члены команды', + vectorSpaceTooltip: 'Документы с режимом индексирования высокого качества будут потреблять ресурсы Хранилища Знаний. Когда Хранилище Знаний достигнет предела, новые документы не будут загружены.', + annotationQuota: 'Квота аннотации', + vectorSpace: 'Хранилище данных знаний', + documentsUploadQuota: 'Квота на загрузку документов', + }, + teamMembers: 'Члены команды', } export default translation diff --git a/web/i18n/ru-RU/common.ts b/web/i18n/ru-RU/common.ts index de925d1742..1c7b41169b 100644 --- a/web/i18n/ru-RU/common.ts +++ b/web/i18n/ru-RU/common.ts @@ -54,6 +54,10 @@ const translation = { copied: 'Скопированы', in: 'в', viewDetails: 'Подробнее', + format: 'Формат', + more: 'Больше', + downloadFailed: 'Скачивание не удалось. Пожалуйста, попробуйте еще раз позже.', + downloadSuccess: 'Загрузка завершена.', }, errorMsg: { fieldRequired: '{{field}} обязательно', @@ -157,6 +161,9 @@ const translation = { community: 'Сообщество', about: 'О нас', logout: 'Выйти', + github: 'ГитХаб', + compliance: 'Соблюдение', + support: 'Поддержка', }, settings: { accountGroup: 'АККАУНТ', @@ -206,6 +213,9 @@ const translation = { deleteLabel: 'Для подтверждения, пожалуйста, введите свой адрес электронной почты ниже', deleteSuccessTip: 'Вашему аккаунту требуется время, чтобы завершить удаление. Мы свяжемся с вами по электронной почте, когда все будет готово.', deletePrivacyLinkTip: 'Для получения дополнительной информации о том, как мы обрабатываем ваши данные, ознакомьтесь с нашим', + workspaceIcon: 'Иконка рабочего пространства', + workspaceName: 'Название рабочего пространства', + editWorkspaceInfo: 'Редактировать информацию о рабочем пространстве', }, members: { team: 'Команда', @@ -547,6 +557,7 @@ const translation = { inputPlaceholder: 'Поговорить с ботом', thinking: 'Мыслящий...', thought: 'Мысль', + resend: 'Переслать', }, promptEditor: { placeholder: 'Напишите здесь свое ключевое слово подсказки, введите \'{\', чтобы вставить переменную, введите \'/\', чтобы вставить блок содержимого подсказки', @@ -637,6 +648,25 @@ const translation = { 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', + }, } export default translation diff --git a/web/i18n/ru-RU/custom.ts b/web/i18n/ru-RU/custom.ts index 8725c83577..bba1d28c1a 100644 --- a/web/i18n/ru-RU/custom.ts +++ b/web/i18n/ru-RU/custom.ts @@ -3,6 +3,8 @@ const translation = { upgradeTip: { prefix: 'Обновите свой тарифный план, чтобы', suffix: 'настроить свой бренд.', + des: 'Обновите свой план, чтобы настроить свой бренд', + title: 'Обновите свой план', }, webapp: { title: 'Настроить бренд веб-приложения', diff --git a/web/i18n/ru-RU/dataset-creation.ts b/web/i18n/ru-RU/dataset-creation.ts index 0b7b203a28..7e44306512 100644 --- a/web/i18n/ru-RU/dataset-creation.ts +++ b/web/i18n/ru-RU/dataset-creation.ts @@ -87,6 +87,14 @@ const translation = { jinaReaderDoc: 'Узнайте больше о Jina Reader', jinaReaderTitle: 'Конвертируйте весь сайт в Markdown', useSitemapTooltip: 'Следуйте карте сайта, чтобы просканировать сайт. Если нет, Jina Reader будет сканировать итеративно в зависимости от релевантности страницы, выдавая меньшее количество страниц, но более высокого качества.', + watercrawlTitle: 'Извлечение веб-контента с помощью Watercrawl', + watercrawlDocLink: 'https://docs.dify.ai/ru/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-website', + configureWatercrawl: 'Настроить Watercrawl', + waterCrawlNotConfigured: 'Watercrawl не настроен', + configureFirecrawl: 'Настроить Firecrawl', + waterCrawlNotConfiguredDescription: 'Настройте Watercrawl с помощью ключа API для его использования.', + configureJinaReader: 'Настройте Jina Reader', + watercrawlDoc: 'Документация Watercrawl', }, cancel: 'Отмена', }, @@ -200,6 +208,11 @@ const translation = { 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-settings.ts b/web/i18n/ru-RU/dataset-settings.ts index b3b8347dd2..b91a59e50d 100644 --- a/web/i18n/ru-RU/dataset-settings.ts +++ b/web/i18n/ru-RU/dataset-settings.ts @@ -27,6 +27,7 @@ const translation = { learnMore: 'Узнать больше', description: ' о методе поиска.', longDescription: ' о методе поиска, вы можете изменить это в любое время в настройках базы знаний.', + method: 'Метод извлечения', }, save: 'Сохранить', externalKnowledgeAPI: 'API внешних знаний', diff --git a/web/i18n/ru-RU/dataset.ts b/web/i18n/ru-RU/dataset.ts index 41da4333f4..33a4cdf851 100644 --- a/web/i18n/ru-RU/dataset.ts +++ b/web/i18n/ru-RU/dataset.ts @@ -168,6 +168,54 @@ const translation = { enable: 'Давать возможность', allKnowledge: 'Все знания', allKnowledgeDescription: 'Выберите, чтобы отобразить все знания в этой рабочей области. Только владелец рабочего пространства может управлять всеми знаниями.', + metadata: { + createMetadata: { + type: 'Тип', + namePlaceholder: 'Добавьте имя метаданных', + back: 'назад', + name: 'Имя', + title: 'Новые метаданные', + }, + checkName: { + empty: 'Имя метаданных не может быть пустым', + invalid: 'Имя метаданных может содержать только строчные буквы, цифры и знаки нижнего подчеркивания и должно начинаться со строчной буквы.', + }, + 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: 'Модель встраивания недоступна.', } export default translation diff --git a/web/i18n/ru-RU/education.ts b/web/i18n/ru-RU/education.ts new file mode 100644 index 0000000000..b614f04824 --- /dev/null +++ b/web/i18n/ru-RU/education.ts @@ -0,0 +1,47 @@ +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 для вашего аккаунта. Купон действителен в течение одного года, пожалуйста, используйте его в течение срока действия.', +} + +export default translation diff --git a/web/i18n/ru-RU/explore.ts b/web/i18n/ru-RU/explore.ts index 97fad96244..919d1e49d8 100644 --- a/web/i18n/ru-RU/explore.ts +++ b/web/i18n/ru-RU/explore.ts @@ -37,6 +37,7 @@ const translation = { HR: 'HR', Agent: 'Агент', Workflow: 'Рабочий процесс', + Entertainment: 'Развлечение', }, } diff --git a/web/i18n/ru-RU/plugin.ts b/web/i18n/ru-RU/plugin.ts index 4fc042f5ec..9d99bc11d9 100644 --- a/web/i18n/ru-RU/plugin.ts +++ b/web/i18n/ru-RU/plugin.ts @@ -180,6 +180,8 @@ const translation = { viewMore: 'Подробнее', and: 'и', discover: 'Обнаруживать', + verifiedTip: 'Подтверждено Dify', + partnerTip: 'Подтверждено партнером Dify', }, task: { installing: 'Установка плагинов {{installingLength}}, 0 готово.', @@ -204,6 +206,10 @@ const translation = { installPlugin: 'Установка плагина', searchPlugins: 'Плагины поиска', fromMarketplace: 'Из маркетплейса', + metadata: { + title: 'Плагины', + }, + difyVersionNotCompatible: 'Текущая версия Dify не совместима с этим плагином, пожалуйста, обновите до минимально необходимой версии: {{minimalDifyVersion}}', } export default translation diff --git a/web/i18n/ru-RU/share-app.ts b/web/i18n/ru-RU/share-app.ts index 9d4d3d081d..b2850fa276 100644 --- a/web/i18n/ru-RU/share-app.ts +++ b/web/i18n/ru-RU/share-app.ts @@ -32,6 +32,10 @@ const translation = { temporarySystemIssue: 'Извините, временная проблема с системой.', expand: 'Развернуть', collapse: 'Свернуть', + viewChatSettings: 'Посмотреть настройки чата', + chatSettingsTitle: 'Новая настройка чата', + newChatTip: 'Уже в новом чате', + chatFormTip: 'Настройки чата не могут быть изменены после его начала.', }, generation: { tabs: { @@ -70,6 +74,8 @@ const translation = { moreThanMaxLengthLine: 'Строка {{rowIndex}}: значение {{varName}} не может превышать {{maxLength}} символов', atLeastOne: 'Пожалуйста, введите хотя бы одну строку в загруженный файл.', }, + execution: 'ИСПОЛНЕНИЕ', + executions: '{{num}} ВЫПОЛНЕНИЯ', }, } diff --git a/web/i18n/ru-RU/time.ts b/web/i18n/ru-RU/time.ts index e2410dd34b..be9e38f4db 100644 --- a/web/i18n/ru-RU/time.ts +++ b/web/i18n/ru-RU/time.ts @@ -1,3 +1,37 @@ -const translation = {} +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: 'Выберите время...', +} export default translation diff --git a/web/i18n/ru-RU/workflow.ts b/web/i18n/ru-RU/workflow.ts index d22ae7bf4f..8a292ff0a9 100644 --- a/web/i18n/ru-RU/workflow.ts +++ b/web/i18n/ru-RU/workflow.ts @@ -106,6 +106,15 @@ const translation = { addFailureBranch: 'Добавить ветвь Fail', noHistory: 'Без истории', loadMore: 'Загрузите больше рабочих процессов', + noExist: 'Такой переменной не существует', + versionHistory: 'История версий', + exportPNG: 'Экспортировать как PNG', + exportImage: 'Экспортировать изображение', + exportJPEG: 'Экспортировать как JPEG', + referenceVar: 'Ссылочная переменная', + exitVersions: 'Выходные версии', + exportSVG: 'Экспортировать как SVG', + publishUpdate: 'Опубликовать обновление', }, env: { envPanelTitle: 'Переменные среды', @@ -205,6 +214,7 @@ const translation = { testRunIteration: 'Итерация тестового запуска', back: 'Назад', iteration: 'Итерация', + loop: 'Цикл', }, tabs: { 'searchBlock': 'Поиск блока', @@ -243,6 +253,9 @@ const translation = { 'document-extractor': 'Экстрактор документов', 'list-operator': 'Оператор списка', 'agent': 'Агент', + 'loop': 'Цикл', + 'loop-start': 'Начало цикла', + 'loop-end': 'Выйти из цикла', }, blocksAbout: { 'start': 'Определите начальные параметры для запуска рабочего процесса', @@ -263,6 +276,8 @@ const translation = { 'list-operator': 'Используется для фильтрации или сортировки содержимого массива.', 'document-extractor': 'Используется для разбора загруженных документов в текстовый контент, который легко воспринимается LLM.', 'agent': 'Вызов больших языковых моделей для ответа на вопросы или обработки естественного языка', + 'loop-end': 'Эквивалентно "break". Этот узел не имеет конфигурационных элементов. Когда тело цикла достигает этого узла, цикл завершается.', + 'loop': 'Выполните цикл логики до тех пор, пока не будет достигнуто условие завершения или максимальное количество итераций цикла.', }, operator: { zoomIn: 'Увеличить', @@ -404,6 +419,34 @@ const translation = { 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.', + }, }, knowledgeRetrieval: { queryVariable: 'Переменная запроса', @@ -416,6 +459,33 @@ const translation = { url: 'Сегментированный URL', metadata: 'Другие метаданные', }, + metadata: { + options: { + disabled: { + title: 'Отключено', + subTitle: 'Не включение фильтрации метаданных', + }, + automatic: { + desc: 'Автоматически генерировать условия фильтрации метаданных на основе переменной запроса', + title: 'Автоматический', + subTitle: 'Автоматически генерировать условия фильтрации метаданных на основе запроса пользователя', + }, + manual: { + title: 'Руководство', + subTitle: 'Вручную добавьте условия фильтрации метаданных', + }, + }, + panel: { + conditions: 'Условия', + placeholder: 'Введите значение', + datePlaceholder: 'Выберите время...', + select: 'Выберите переменную...', + add: 'Добавить условие', + title: 'Условия фильтрации метаданных', + search: 'Поиск метаданных', + }, + title: 'Фильтрация метаданных', + }, }, http: { inputVars: 'Входные переменные', @@ -505,6 +575,8 @@ const translation = { 'not exists': 'не существует', 'in': 'в', 'exists': 'Существует', + 'before': 'до', + 'after': 'после', }, enterValue: 'Введите значение', addCondition: 'Добавить условие', @@ -520,6 +592,7 @@ const translation = { }, select: 'Выбирать', addSubVariable: 'Подпеременная', + condition: 'Условие', }, variableAssigner: { title: 'Назначить переменные', @@ -562,6 +635,8 @@ const translation = { 'title': 'Операция', 'over-write': 'Перезаписать', 'append': 'Прибавлять', + 'remove-first': 'Удалить первый', + 'remove-last': 'Удалить последний', }, 'variables': 'Переменные', 'noAssignedVars': 'Нет доступных назначенных переменных', @@ -766,6 +841,38 @@ const translation = { configureModel: 'Сконфигурировать модель', maxIterations: 'Максимальное количество итераций', }, + 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: 'Циклические переменные', + }, }, tracing: { stopBy: 'Остановлено {{user}}', @@ -777,6 +884,38 @@ const translation = { conversationVars: 'Переменные беседы', noAvailableVars: 'Нет доступных переменных', }, + versionHistory: { + filter: { + onlyShowNamedVersions: 'Показывать только именованные версии', + all: 'Все', + reset: 'Сбросить фильтр', + onlyYours: 'Только твой', + empty: 'История версий не найдена', + }, + editField: { + titleLengthLimit: 'Заголовок не может превышать {{limit}} символов', + releaseNotesLengthLimit: 'Примечания к версии не могут превышать {{limit}} символов', + releaseNotes: 'Новости релиза', + title: 'Заголовок', + }, + action: { + restoreSuccess: 'Версия восстановлена', + updateSuccess: 'Версия обновлена', + deleteFailure: 'Не удалось удалить версию', + deleteSuccess: 'Версия удалена', + updateFailure: 'Не удалось обновить версию', + restoreFailure: 'Не удалось восстановить версию', + }, + latest: 'Последний', + restorationTip: 'После восстановления версии текущий черновик будет перезаписан.', + deletionTip: 'Удаление необратимо, пожалуйста, подтвердите.', + nameThisVersion: 'Назовите эту версию', + editVersionInfo: 'Редактировать информацию о версии', + title: 'Версии', + currentDraft: 'Текущий проект', + releaseNotesPlaceholder: 'Опишите, что изменилось', + defaultName: 'Без названия версия', + }, } export default translation diff --git a/web/i18n/sl-SI/app.ts b/web/i18n/sl-SI/app.ts index e4ba29094b..bff7f2aea1 100644 --- a/web/i18n/sl-SI/app.ts +++ b/web/i18n/sl-SI/app.ts @@ -168,6 +168,10 @@ const translation = { 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.', + }, }, mermaid: { handDrawn: 'Ročno narisano', @@ -194,6 +198,17 @@ const translation = { 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.', + }, } export default translation diff --git a/web/i18n/sl-SI/billing.ts b/web/i18n/sl-SI/billing.ts index edbf03ee9a..9b7987293f 100644 --- a/web/i18n/sl-SI/billing.ts +++ b/web/i18n/sl-SI/billing.ts @@ -70,6 +70,7 @@ const translation = { 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', @@ -77,27 +78,94 @@ const translation = { }, 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}}/dan', + 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.', }, plans: { sandbox: { name: 'Peskovnik', description: '200 brezplačnih poskusov GPT', includesTitle: 'Vključuje:', + for: 'Brezplačno preizkušanje osnovnih zmogljivosti', }, professional: { name: 'Profesionalni', description: 'Za posameznike in male ekipe, da odklenete več zmogljivosti po ugodni ceni.', includesTitle: 'Vse v brezplačnem načrtu, plus:', + for: 'Za neodvisne razvijalce/male ekipe', }, team: { name: 'Ekipa', description: 'Sodelujte brez omejitev in uživajte v vrhunski zmogljivosti.', includesTitle: 'Vse v profesionalnem načrtu, plus:', + 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: { + 5: 'Pogajali smo se o SLAs s partnerji Dify', + 4: 'SSO', + 0: 'Rešitve za razširljivo uvedbo na ravni podjetij', + 1: 'Avtorizacija za komercialno licenco', + 2: 'Ekskluzivne funkcije za podjetja', + 7: 'Posodobitve in vzdrževanje s strani Dify uradno', + 3: 'Več delovnih prostorov in upravljanje podjetij', + 6: 'Napredna varnost in nadzor', + 8: 'Profesionalna tehnična podpora', + }, + priceTip: 'Letno zaračunavanje samo', + price: 'Po meri', + btnText: 'Kontaktirajte prodajo', + for: 'Za velike ekipe', + }, + community: { + features: { + 2: 'Upošteva Dify odprtokodno licenco', + 0: 'Vse ključne funkcije so bile objavljene v javnem repozitoriju', + 1: 'Enotno delovno okolje', + }, + 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: { + 2: 'Prilagoditev logotipa in blagovne znamke spletne aplikacije', + 1: 'Enotno delovno okolje', + 0: 'Samoobvladovana zanesljivost različnih ponudnikov oblačnih storitev', + 3: 'Prednostna e-pošta in podpora za klepet', + }, + 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: { @@ -107,12 +175,26 @@ const translation = { apps: { fullTipLine1: 'Nadgradite svoj načrt, da', fullTipLine2: 'gradite več aplikacij.', + 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', + }, + teamMembers: 'Člani ekipe', } export default translation diff --git a/web/i18n/sl-SI/common.ts b/web/i18n/sl-SI/common.ts index ce80c8a086..d4b78d41e5 100644 --- a/web/i18n/sl-SI/common.ts +++ b/web/i18n/sl-SI/common.ts @@ -54,6 +54,10 @@ const translation = { viewDetails: 'Poglej podrobnosti', copied: 'Kopirati', in: 'v', + downloadFailed: 'Prenos ni uspel. Prosim, poskusite znova pozneje.', + more: 'Več', + downloadSuccess: 'Prenos končan.', + format: 'Format', }, errorMsg: { fieldRequired: '{{field}} je obvezno', @@ -157,6 +161,9 @@ const translation = { community: 'Skupnost', about: 'O nas', logout: 'Odjava', + support: 'Podpora', + github: 'GitHub', + compliance: 'Skladnost', }, settings: { accountGroup: 'SPLOŠNO', @@ -206,6 +213,9 @@ const translation = { 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', }, members: { team: 'Ekipa', @@ -746,6 +756,7 @@ const translation = { conversationNamePlaceholder: 'Prosimo, vnesite ime pogovora', thinking: 'Razmišljanje...', thought: 'Misel', + resend: 'Ponovno pošlji', }, promptEditor: { context: { @@ -836,6 +847,25 @@ const translation = { 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', + }, } export default translation diff --git a/web/i18n/sl-SI/custom.ts b/web/i18n/sl-SI/custom.ts index 6c2f3f4f93..59f0a6baf9 100644 --- a/web/i18n/sl-SI/custom.ts +++ b/web/i18n/sl-SI/custom.ts @@ -3,6 +3,8 @@ const translation = { 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', diff --git a/web/i18n/sl-SI/dataset-creation.ts b/web/i18n/sl-SI/dataset-creation.ts index 8f3a67d7d1..72e71049ac 100644 --- a/web/i18n/sl-SI/dataset-creation.ts +++ b/web/i18n/sl-SI/dataset-creation.ts @@ -92,6 +92,14 @@ const translation = { 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', + watercrawlDocLink: 'https://docs.dify.ai/sl/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-website', + configureFirecrawl: 'Konfigurirajte Firecrawl', + watercrawlTitle: 'Izvleci vsebino z interneta z Watercrawl', }, cancel: 'Odpovedati', }, @@ -200,6 +208,11 @@ const translation = { 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-settings.ts b/web/i18n/sl-SI/dataset-settings.ts index dc131c154e..9ea30f3e61 100644 --- a/web/i18n/sl-SI/dataset-settings.ts +++ b/web/i18n/sl-SI/dataset-settings.ts @@ -27,6 +27,7 @@ const translation = { learnMore: 'Izvedite več', description: ' o metodi pridobivanja.', longDescription: ' o metodi pridobivanja, to lahko kadar koli spremenite v nastavitvah znanja.', + method: 'Metoda pridobivanja', }, externalKnowledgeAPI: 'Zunanji API za znanje', externalKnowledgeID: 'ID zunanjega znanja', diff --git a/web/i18n/sl-SI/dataset.ts b/web/i18n/sl-SI/dataset.ts index 0161a0ad8d..a9f9ccbad7 100644 --- a/web/i18n/sl-SI/dataset.ts +++ b/web/i18n/sl-SI/dataset.ts @@ -168,6 +168,54 @@ const translation = { 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.', + }, + 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.', } export default translation diff --git a/web/i18n/sl-SI/education.ts b/web/i18n/sl-SI/education.ts new file mode 100644 index 0000000000..6a78a0472e --- /dev/null +++ b/web/i18n/sl-SI/education.ts @@ -0,0 +1,47 @@ +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.', +} + +export default translation diff --git a/web/i18n/sl-SI/explore.ts b/web/i18n/sl-SI/explore.ts index 5ed9519044..add905631d 100644 --- a/web/i18n/sl-SI/explore.ts +++ b/web/i18n/sl-SI/explore.ts @@ -37,6 +37,7 @@ const translation = { HR: 'Kadri', Workflow: 'Potek dela', Agent: 'Agent', + Entertainment: 'Zabava', }, } diff --git a/web/i18n/sl-SI/plugin-tags.ts b/web/i18n/sl-SI/plugin-tags.ts index e69de29bb2..62e6aa11de 100644 --- a/web/i18n/sl-SI/plugin-tags.ts +++ b/web/i18n/sl-SI/plugin-tags.ts @@ -0,0 +1,25 @@ +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', + }, + searchTags: 'Iskalne oznake', + allTags: 'Vse nalepke', +} + +export default translation diff --git a/web/i18n/sl-SI/plugin.ts b/web/i18n/sl-SI/plugin.ts index e69de29bb2..848ef39170 100644 --- a/web/i18n/sl-SI/plugin.ts +++ b/web/i18n/sl-SI/plugin.ts @@ -0,0 +1,215 @@ +const translation = { + metadata: { + title: 'Vtičniki', + }, + category: { + bundles: 'Paketi', + all: 'Vse', + extensions: 'Razširitve', + models: 'Modeli', + agents: 'Strategije agenta', + tools: 'Orodja', + }, + categorySingle: { + extension: 'Razširitev', + bundle: 'Paket', + agent: 'Agentska strategija', + tool: 'Orodje', + model: 'Model', + }, + 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', + }, + 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.', + }, + 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', + }, + 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', + }, + 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', + }, + 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', + submitPlugin: 'Oddajte vtičnik', + difyVersionNotCompatible: 'Trenutna različica Dify ni združljiva s to vtičnico, prosimo, posodobite na minimalno zahtevano različico: {{minimalDifyVersion}}', +} + +export default translation diff --git a/web/i18n/sl-SI/share-app.ts b/web/i18n/sl-SI/share-app.ts index 05e631fb0b..28d62b2336 100644 --- a/web/i18n/sl-SI/share-app.ts +++ b/web/i18n/sl-SI/share-app.ts @@ -29,6 +29,10 @@ const translation = { 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: { @@ -67,6 +71,8 @@ const translation = { moreThanMaxLengthLine: 'Vrstica {{rowIndex}}: vrednost {{varName}} ne sme biti daljša od {{maxLength}} znakov', atLeastOne: 'Prosimo, vnesite vsaj eno vrstico v naloženo datoteko.', }, + execution: 'IZVEDBA', + executions: '{{num}} IZVRŠITEV', }, } diff --git a/web/i18n/sl-SI/time.ts b/web/i18n/sl-SI/time.ts index e2410dd34b..b88a33b675 100644 --- a/web/i18n/sl-SI/time.ts +++ b/web/i18n/sl-SI/time.ts @@ -1,3 +1,37 @@ -const translation = {} +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...', +} export default translation diff --git a/web/i18n/sl-SI/workflow.ts b/web/i18n/sl-SI/workflow.ts index e4a71ddac3..1376bc833f 100644 --- a/web/i18n/sl-SI/workflow.ts +++ b/web/i18n/sl-SI/workflow.ts @@ -106,6 +106,15 @@ const translation = { onFailure: 'O neuspehu', noHistory: 'Brez zgodovine', loadMore: 'Nalaganje več potekov dela', + exportJPEG: 'Izvozi kot JPEG', + exportPNG: 'Izvozi kot PNG', + noExist: 'Nobena takšna spremenljivka ne obstaja.', + exitVersions: 'Izhodne različice', + versionHistory: 'Zgodovina različic', + publishUpdate: 'Objavi posodobitev', + exportSVG: 'Izvozi kot SVG', + referenceVar: 'Referenčna spremenljivka', + exportImage: 'Izvozi sliko', }, env: { envPanelTitle: 'Spremenljivke okolja', @@ -642,6 +651,7 @@ const translation = { iteration: 'Ponovitev', back: 'Hrbet', testRun: 'Preskusni zagon', + loop: 'Zanka', }, tabs: { 'blocks': 'Bloki', @@ -680,6 +690,9 @@ const translation = { 'variable-assigner': 'Spremenljivi agregator', 'question-classifier': 'Klasifikator vprašanj', 'agent': 'Agent', + 'loop-end': 'Izhod iz zanke', + 'loop': 'Zanka', + 'loop-start': 'Začetek zanke', }, blocksAbout: { 'document-extractor': 'Uporablja se za razčlenjevanje naloženih dokumentov v besedilno vsebino, ki je zlahka razumljiva LLM.', @@ -700,6 +713,8 @@ const translation = { 'assigner': 'Vozlišče za dodeljevanje spremenljivk se uporablja za dodeljevanje vrednosti zapisljivim spremenljivkam (kot so spremenljivke pogovora).', 'llm': 'Sklicevanje na velike jezikovne modele za odgovarjanje na vprašanja ali obdelavo naravnega jezika', 'agent': 'Sklicevanje na velike jezikovne modele 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.', + 'loop-end': 'Enakovredno „prekini“. Ta vozlišče nima konfiguracijskih elementov. Ko telo zanke doseže to vozlišče, zanka preneha.', }, operator: { zoomOut: 'Pomanjšanje', @@ -841,6 +856,34 @@ const translation = { prompt: 'Uren', vision: 'vid', contextTooltip: 'Znanje lahko uvozite kot kontekst', + jsonSchema: { + warningTips: { + saveSchema: 'Prosimo, da dokončate urejanje trenutnega polja, preden shranite shemo.', + }, + addChildField: 'Dodaj polje za otroka', + instruction: 'Navodilo', + regenerate: 'Ponovno generiranje', + back: 'Nazaj', + generationTip: 'Lahko uporabite naravni jezik za hitro ustvarjanje JSON sheme.', + title: 'Strukturirana izhodna shema', + generating: 'Generiranje JSON sheme...', + showAdvancedOptions: 'Prikaži napredne možnosti', + promptTooltip: 'Pretvorite besedilni opis v standardizirano strukturo JSON sheme.', + generateJsonSchema: 'Generiraj JSON shemo', + fieldNamePlaceholder: 'Ime polja', + apply: 'Prijavi se', + doc: 'Izvedite več o strukturiranem izhodu', + promptPlaceholder: 'Opiši svoj JSON shemo...', + generatedResult: 'Generiran rezultat', + import: 'Uvoz iz JSON', + generate: 'Generirati', + resultTip: 'Tukaj je generiran rezultat. Če niste zadovoljni, se lahko vrnete in spremenite svoj poziv.', + stringValidations: 'Preverjanje nizov', + descriptionPlaceholder: 'Dodajte opis', + required: 'zahtevano', + addField: 'Dodaj polje', + resetDefaults: 'Ponastavi', + }, }, knowledgeRetrieval: { outputVars: { @@ -853,6 +896,33 @@ const translation = { }, queryVariable: 'Spremenljivka poizvedbe', knowledge: 'Znanje', + metadata: { + options: { + disabled: { + title: 'Onemogočeno', + subTitle: 'Ne omogočanje filtriranja metapodatkov', + }, + automatic: { + desc: 'Samodejno ustvarite filtrirne pogoje za metapodatke na podlagi spremenljivke poizvedbe', + subTitle: 'Samodejno ustvarite filtrirne pogoje za metapodatke na podlagi uporabniškega poizvedovanja.', + title: 'Samodejno', + }, + manual: { + title: 'Ročno', + subTitle: 'Ročno dodajte pogoje za filtriranje metapodatkov', + }, + }, + panel: { + title: 'Pogoji za filtriranje metapodatkov', + search: 'Išči metapodatke', + placeholder: 'Vnesite vrednost', + select: 'Izberi spremenljivko...', + conditions: 'Pogoji', + datePlaceholder: 'Izberi čas...', + add: 'Dodaj pogoj', + }, + title: 'Filtriranje metapodatkov', + }, }, http: { outputVars: { @@ -934,6 +1004,8 @@ const translation = { 'end with': 'Končaj z', 'not in': 'ni v', 'not null': 'ni nična', + 'after': 'po', + 'before': 'pred', }, optionName: { video: 'Video', @@ -956,6 +1028,7 @@ const translation = { notSetVariable: 'Prosimo, najprej nastavite spremenljivko', operator: 'Operaterja', or: 'ali', + condition: 'Pogoji', }, variableAssigner: { type: { @@ -998,6 +1071,8 @@ const translation = { 'set': 'Nastaviti', 'clear': 'Jasen', 'over-write': 'Prepisati', + 'remove-last': 'Odstrani zadnje', + 'remove-first': 'Odstrani prvi', }, 'variables': 'Spremenljivke', 'selectAssignedVariable': 'Izberite dodeljeno spremenljivko ...', @@ -1202,6 +1277,38 @@ const translation = { pluginNotInstalledDesc: 'Ta vtičnik je nameščen iz GitHuba. Prosimo, pojdite na Vtičniki za ponovno namestitev', linkToPlugin: 'Povezava do vtičnikov', }, + loop: { + ErrorMethod: { + operationTerminated: 'Prekinjeno', + continueOnError: 'Nadaljuj ob napaki', + removeAbnormalOutput: 'Odstrani nenavadne izhode', + }, + input: 'Vnos', + inputMode: 'Vnosni način', + errorResponseMethod: 'Metoda odziva napake', + setLoopVariables: 'Nastavite spremenljivke znotraj obsega zanke', + output: 'Izhodna spremenljivka', + loop_one: '{{count}} Zanka', + exitConditionTip: 'Vozić potrebuje vsaj eno izhodno pogoj.', + loopMaxCount: 'Maksimalno število zank', + deleteDesc: 'Izbris vozlišča zanke bo odstranil vse otroške vozlišča.', + comma: ',', + loop_other: '{{count}} Zavoji', + currentLoop: 'Trenutni obrat', + variableName: 'Spremenljivka Ime', + deleteTitle: 'Izbriši vozlišče zanke?', + error_one: '{{count}} Napaka', + totalLoopCount: 'Skupno število zank: {{count}}', + initialLoopVariables: 'Začetne spremenljivke zanke', + currentLoopCount: 'Trenutno število zank: {{count}}', + loopNode: 'Ciklični vozlišče', + loopVariables: 'Zanke Spremenljivke', + breakConditionTip: 'Lahko se sklicujete le na spremenljivke znotraj zank z zaključnimi pogoji in pogovorne spremenljivke.', + breakCondition: 'Pogoji za prekinitev zanke', + finalLoopVariables: 'Končne zanke spremenljivke', + error_other: '{{count}} Napak', + loopMaxCountError: 'Prosimo, vnesite veljavno največje število ponovitev, ki mora biti med 1 in {{maxCount}}', + }, }, variableReference: { noVarsForOperation: 'Spremenljivk ni na voljo za dodelitev z izbrano operacijo.', @@ -1210,6 +1317,38 @@ const translation = { noAvailableVars: 'Ni spremenljivk, ki so na voljo', assignedVarsDescription: 'Dodeljene spremenljivke morajo biti zapisljive, kot so:', }, + versionHistory: { + filter: { + all: 'Vse', + empty: 'Ni najdene zgodovine različic, ki bi se ujemala.', + onlyShowNamedVersions: 'Prikaži samo poimenovane različice', + reset: 'Ponastavi filter', + onlyYours: 'Samo tvoje', + }, + editField: { + titleLengthLimit: 'Naslov ne sme presegati {{limit}} znakov', + title: 'Naslov', + releaseNotesLengthLimit: 'Opombe o različici ne smejo presegati {{limit}} znakov.', + releaseNotes: 'Opombe o izdaji', + }, + action: { + updateFailure: 'Posodobitev različice ni uspela', + restoreFailure: 'Obnovitev različice ni uspela', + updateSuccess: 'Različica posodobljena', + restoreSuccess: 'Obnovljena različica', + deleteSuccess: 'Različica izbrisana', + deleteFailure: 'Brisanje različice ni uspelo', + }, + releaseNotesPlaceholder: 'Opisujte, kaj se je spremenilo.', + latest: 'Najnovejši', + deletionTip: 'Izbris je nepovraten, prosim potrdite.', + defaultName: 'Nepodpisana različica', + nameThisVersion: 'Poimenujte to različico', + restorationTip: 'Po obnovitvi različice bo trenutni osnutek prepisan.', + currentDraft: 'Trenutni osnutek', + editVersionInfo: 'Uredi informacije o različici', + title: 'Različice', + }, } export default translation diff --git a/web/i18n/th-TH/app-debug.ts b/web/i18n/th-TH/app-debug.ts index e69de29bb2..928649474b 100644 --- a/web/i18n/th-TH/app-debug.ts +++ b/web/i18n/th-TH/app-debug.ts @@ -0,0 +1,4 @@ +const translation = { +} + +export default translation diff --git a/web/i18n/th-TH/app.ts b/web/i18n/th-TH/app.ts index 061e3a8076..b58812bf9d 100644 --- a/web/i18n/th-TH/app.ts +++ b/web/i18n/th-TH/app.ts @@ -164,6 +164,10 @@ const translation = { title: 'โอปิก', description: 'Opik เป็นแพลตฟอร์มโอเพ่นซอร์สสําหรับการประเมิน ทดสอบ และตรวจสอบแอปพลิเคชัน LLM', }, + weave: { + title: 'ทอ', + description: 'Weave เป็นแพลตฟอร์มโอเพนซอร์สสำหรับการประเมินผล ทดสอบ และตรวจสอบแอปพลิเคชัน LLM', + }, }, mermaid: { handDrawn: 'วาดด้วยมือ', @@ -190,6 +194,17 @@ const translation = { noParams: 'ไม่จําเป็นต้องใช้พารามิเตอร์', label: 'แอพ', }, + structOutput: { + notConfiguredTip: 'ยังไม่ได้กำหนดผลลัพธ์ที่มีโครงสร้าง', + moreFillTip: 'แสดงระดับการซ้อนสูงสุด 10 ระดับ', + structuredTip: 'Structured Outputs เป็นฟีเจอร์ที่ทำให้มั่นใจว่าโมเดลจะสร้างคำตอบที่สอดคล้องกับ JSON Schema ที่คุณกำหนดไว้เสมอ', + configure: 'กำหนดค่า', + required: 'ที่จำเป็น', + LLMResponse: 'LLM ตอบสนอง', + structured: 'มีระเบียบ', + modelNotSupported: 'โมเดลไม่ได้รับการสนับสนุน', + modelNotSupportedTip: 'โมเดลปัจจุบันไม่รองรับฟีเจอร์นี้และจะถูกลดระดับเป็นการฉีดคำสั่งโดยอัตโนมัติ.', + }, } export default translation diff --git a/web/i18n/th-TH/billing.ts b/web/i18n/th-TH/billing.ts index abe82754b4..c58d61c112 100644 --- a/web/i18n/th-TH/billing.ts +++ b/web/i18n/th-TH/billing.ts @@ -70,6 +70,7 @@ const translation = { messageRequest: { title: 'เครดิตข้อความ', tooltip: 'โควต้าการเรียกใช้ข้อความสําหรับแผนต่างๆ โดยใช้โมเดล OpenAI (ยกเว้น gpt4) ข้อความที่เกินขีดจํากัดจะใช้คีย์ OpenAI API ของคุณ', + titlePerMonth: '{{count,number}} ข้อความ/เดือน', }, annotatedResponse: { title: 'ขีดจํากัดโควต้าคําอธิบายประกอบ', @@ -77,27 +78,94 @@ const translation = { }, 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 ครั้งต่อเนื่องภายในหนึ่งนาที เวิร์กสเปซของพวกเขาจะถูกจำกัดชั่วคราวในการดำเนินการต่อไปนี้ในนาทีถัดไป: การสร้างชุดข้อมูล การลบ การอัปเดต หรือการอัปโหลดหรือปรับเปลี่ยนเอกสาร.', }, plans: { sandbox: { name: 'กระบะทราย', description: 'ทดลองใช้ GPT ฟรี 200 ครั้ง', includesTitle: 'มี:', + for: 'ทดลองใช้ฟรีของความสามารถหลัก', }, professional: { name: 'มืออาชีพ', description: 'สําหรับบุคคลและทีมขนาดเล็กเพื่อปลดล็อกพลังงานมากขึ้นในราคาย่อมเยา', includesTitle: 'ทุกอย่างในแผนฟรี รวมถึง:', + for: 'สำหรับนักพัฒนาที่เป็นอิสระ/ทีมขนาดเล็ก', }, team: { name: 'ทีม', description: 'ทํางานร่วมกันอย่างไร้ขีดจํากัดและเพลิดเพลินไปกับประสิทธิภาพระดับสูงสุด', includesTitle: 'ทุกอย่างในแผน Professional รวมถึง:', + for: 'สำหรับทีมขนาดกลาง', }, enterprise: { name: 'กิจการ', description: 'รับความสามารถและการสนับสนุนเต็มรูปแบบสําหรับระบบที่สําคัญต่อภารกิจขนาดใหญ่', includesTitle: 'ทุกอย่างในแผนทีม รวมถึง:', + features: { + 8: 'การสนับสนุนทางเทคนิคระดับมืออาชีพ', + 2: 'คุณสมบัติพิเศษขององค์กร', + 3: 'หลายพื้นที่ทำงานและการบริหารจัดการองค์กร', + 4: 'SSO', + 6: 'ความปลอดภัยและการควบคุมขั้นสูง', + 5: 'เจรจาข้อตกลงบริการ (SLA) โดย Dify Partners', + 7: 'การอัปเดตและการบำรุงรักษาโดย Dify อย่างเป็นทางการ', + 1: 'ใบอนุญาตการใช้เชิงพาณิชย์', + 0: 'โซลูชันการปรับใช้ที่มีขนาดใหญ่และมีคุณภาพระดับองค์กร', + }, + btnText: 'ติดต่อฝ่ายขาย', + price: 'ที่กำหนดเอง', + for: 'สำหรับทีมขนาดใหญ่', + priceTip: 'การเรียกเก็บเงินประจำปีเท่านั้น', + }, + community: { + features: { + 2: 'ปฏิบัติตามใบอนุญาตโอเพ่นซอร์สของ Dify', + 0: 'ฟีเจอร์หลักทั้งหมดถูกปล่อยออกภายใต้ที่เก็บสาธารณะ', + 1: 'พื้นที่ทำงานเดียว', + }, + name: 'ชุมชน', + price: 'ฟรี', + includesTitle: 'คุณสมบัติเสรี:', + description: 'สำหรับผู้ใช้ส่วนบุคคล ทีมขนาดเล็ก หรือโครงการที่ไม่ใช่เชิงพาณิชย์', + btnText: 'เริ่มต้นกับชุมชน', + for: 'สำหรับผู้ใช้ส่วนบุคคล ทีมขนาดเล็ก หรือโครงการที่ไม่ใช่เชิงพาณิชย์', + }, + premium: { + features: { + 3: 'การสนับสนุนทางอีเมลและแชทที่มีความสำคัญ', + 1: 'พื้นที่ทำงานเดียว', + 2: 'การปรับแต่งโลโก้และแบรนดิ้งของเว็บแอป', + 0: 'การจัดการความน่าเชื่อถือด้วยตนเองโดยผู้ให้บริการคลาวด์ต่าง ๆ', + }, + priceTip: 'อิงตามตลาดคลาวด์', + for: 'สำหรับองค์กรและทีมขนาดกลาง', + btnText: 'รับพรีเมียมใน', + includesTitle: 'ทุกอย่างจากชุมชน รวมถึง:', + description: 'สำหรับองค์กรและทีมขนาดกลาง', + name: 'พรีเมียม', + comingSoon: 'การสนับสนุน Microsoft Azure และ Google Cloud กำลังมาเร็วๆ นี้', + price: 'ขยายได้', }, }, vectorSpace: { @@ -107,12 +175,26 @@ const translation = { apps: { fullTipLine1: 'อัปเกรดแผนของคุณเป็น', fullTipLine2: 'สร้างแอปเพิ่มเติม', + contactUs: 'ติดต่อเรา', + fullTip2: 'ถึงขีดจำกัดของแผนแล้ว', + fullTip1: 'อัปเกรดเพื่อสร้างแอปเพิ่มเติม', + fullTip1des: 'คุณได้ถึงขีด จำกัด ของการสร้างแอปในแผนนี้แล้ว', + fullTip2des: 'แนะนำให้ทำความสะอาดแอปพลิเคชันที่ไม่ใช้งานเพื่อเพิ่มการใช้งาน หรือติดต่อเรา', }, annotatedResponse: { fullTipLine1: 'อัปเกรดแผนของคุณเป็น', fullTipLine2: 'ใส่คําอธิบายประกอบการสนทนาเพิ่มเติม', quotaTitle: 'โควต้าตอบกลับคําอธิบายประกอบ', }, + usagePage: { + buildApps: 'สร้างแอป', + annotationQuota: 'โควตาการประกาศ', + documentsUploadQuota: 'โควต้าการอัปโหลดเอกสาร', + teamMembers: 'สมาชิกในทีม', + vectorSpace: 'การจัดเก็บข้อมูลความรู้', + vectorSpaceTooltip: 'เอกสารที่ใช้โหมดการจัดทำดัชนีคุณภาพสูงจะใช้ทรัพยากรเก็บข้อมูลความรู้ เมื่อการเก็บข้อมูลความรู้ถึงขีดจำกัด เอกสารใหม่จะไม่สามารถอัปโหลดได้.', + }, + teamMembers: 'สมาชิกในทีม', } export default translation diff --git a/web/i18n/th-TH/common.ts b/web/i18n/th-TH/common.ts index fca1dc428c..9b72257a1f 100644 --- a/web/i18n/th-TH/common.ts +++ b/web/i18n/th-TH/common.ts @@ -54,6 +54,10 @@ const translation = { copied: 'คัด ลอก', viewDetails: 'ดูรายละเอียด', in: 'ใน', + format: 'รูปแบบ', + downloadFailed: 'ดาวน์โหลดล้มเหลว กรุณาลองอีกครั้งในภายหลัง.', + more: 'มากขึ้น', + downloadSuccess: 'ดาวน์โหลดเสร็จสิ้นแล้ว.', }, errorMsg: { fieldRequired: '{{field}} เป็นสิ่งจําเป็น', @@ -152,6 +156,9 @@ const translation = { community: 'ชุมชน', about: 'ประมาณ', logout: 'ออกจากระบบ', + github: 'GitHub', + compliance: 'การปฏิบัติตามข้อกำหนด', + support: 'การสนับสนุน', }, settings: { accountGroup: 'ทั่วไป', @@ -201,6 +208,9 @@ const translation = { feedbackLabel: 'บอกเราว่าทําไมคุณถึงลบบัญชีของคุณ', feedbackPlaceholder: 'เสริม', deleteSuccessTip: 'บัญชีของคุณต้องใช้เวลาในการลบให้เสร็จสิ้น เราจะส่งอีเมลถึงคุณเมื่อทุกอย่างเสร็จสิ้น', + workspaceIcon: 'ไอคอนพื้นที่ทำงาน', + editWorkspaceInfo: 'แก้ไขข้อมูลเวิร์กสเปซ', + workspaceName: 'ชื่อพื้นที่ทำงาน', }, members: { team: 'ทีม', @@ -542,6 +552,7 @@ const translation = { inputPlaceholder: 'พูดคุยกับบอท', thought: 'ความคิด', thinking: 'ความคิด ', + resend: 'ส่งอีกครั้ง', }, promptEditor: { placeholder: 'เขียนคําพร้อมท์ของคุณที่นี่ ป้อน \'{\' เพื่อแทรกตัวแปร ป้อน \'/\' เพื่อแทรกบล็อกเนื้อหาพร้อมท์', @@ -632,6 +643,25 @@ const translation = { 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', + }, } export default translation diff --git a/web/i18n/th-TH/custom.ts b/web/i18n/th-TH/custom.ts index dfed65c9a0..c5ae3e79db 100644 --- a/web/i18n/th-TH/custom.ts +++ b/web/i18n/th-TH/custom.ts @@ -3,6 +3,8 @@ const translation = { upgradeTip: { prefix: 'อัปเกรดแผนของคุณเป็น', suffix: 'ปรับแต่งแบรนด์ของคุณ', + des: 'อัปเกรดแผนของคุณเพื่อปรับแต่งแบรนด์ของคุณ', + title: 'อัปเกรดแผนของคุณ', }, webapp: { title: 'ปรับแต่งแบรนด์ WebApp', diff --git a/web/i18n/th-TH/dataset-creation.ts b/web/i18n/th-TH/dataset-creation.ts index dd33e65e47..e6081a9618 100644 --- a/web/i18n/th-TH/dataset-creation.ts +++ b/web/i18n/th-TH/dataset-creation.ts @@ -92,6 +92,14 @@ const translation = { scrapTimeInfo: 'ขูด {{total}} หน้าทั้งหมดภายใน {{time}}s', preview: 'ดูตัวอย่าง', maxDepthTooltip: 'ความลึกสูงสุดในการรวบรวมข้อมูลเมื่อเทียบกับ URL ที่ป้อน ความลึก 0 เพียงแค่ขูดหน้าของ URL ที่ป้อนความลึก 1 ขูด url และทุกอย่างหลังจาก enteredURL + หนึ่ง / เป็นต้น', + watercrawlTitle: 'ดึงเนื้อหาจากเว็บด้วย Watercrawl', + configureJinaReader: 'ตั้งค่า Jina Reader', + watercrawlDocLink: 'https://docs.dify.ai/th/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-website', + configureFirecrawl: 'กำหนดค่า Firecrawl', + configureWatercrawl: 'กำหนดค่าการเข้าถึงน้ำ', + waterCrawlNotConfiguredDescription: 'กำหนดค่า Watercrawl ด้วย API key เพื่อใช้งาน.', + watercrawlDoc: 'เอกสาร Watercrawl', + waterCrawlNotConfigured: 'Watercrawl ยังไม่ได้ตั้งค่า', }, cancel: 'ยกเลิก', }, @@ -200,6 +208,11 @@ const translation = { 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-settings.ts b/web/i18n/th-TH/dataset-settings.ts index e91834ced2..7ddbbc3787 100644 --- a/web/i18n/th-TH/dataset-settings.ts +++ b/web/i18n/th-TH/dataset-settings.ts @@ -27,6 +27,7 @@ const translation = { learnMore: 'ศึกษาเพิ่มเติม', description: 'เกี่ยวกับวิธีการดึงข้อมูล', longDescription: 'เกี่ยวกับวิธีการดึงข้อมูล คุณสามารถเปลี่ยนแปลงได้ตลอดเวลาในการตั้งค่าความรู้', + method: 'วิธีการค้นคืน', }, externalKnowledgeAPI: 'API ความรู้ภายนอก', externalKnowledgeID: 'ID ความรู้ภายนอก', diff --git a/web/i18n/th-TH/dataset.ts b/web/i18n/th-TH/dataset.ts index 1877226dc4..15ef381605 100644 --- a/web/i18n/th-TH/dataset.ts +++ b/web/i18n/th-TH/dataset.ts @@ -167,6 +167,54 @@ const translation = { enable: 'เปิด', allKnowledge: 'ความรู้ทั้งหมด', allKnowledgeDescription: 'เลือกเพื่อแสดงความรู้ทั้งหมดในพื้นที่ทํางานนี้ เฉพาะเจ้าของพื้นที่ทํางานเท่านั้นที่สามารถจัดการความรู้ทั้งหมดได้', + metadata: { + createMetadata: { + back: 'กลับ', + title: 'ข้อมูลเมตาใหม่', + namePlaceholder: 'เพิ่มชื่อข้อมูลเมตา', + name: 'ชื่อ', + type: 'ประเภท', + }, + checkName: { + invalid: 'ชื่อเมตาดาต้าต้องประกอบด้วยตัวอักษรตัวเล็กเท่านั้น เลข และขีดล่าง และต้องเริ่มต้นด้วยตัวอักษรตัวเล็ก', + empty: 'ชื่อข้อมูลเมตาไม่สามารถเป็นค่าแEmpty', + }, + 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: 'โมเดลฝังตัวไม่สามารถใช้งานได้.', } export default translation diff --git a/web/i18n/th-TH/education.ts b/web/i18n/th-TH/education.ts new file mode 100644 index 0000000000..5d19cbebae --- /dev/null +++ b/web/i18n/th-TH/education.ts @@ -0,0 +1,47 @@ +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 หากคุณใช้ที่อยู่อีเมลนี้.', +} + +export default translation diff --git a/web/i18n/th-TH/explore.ts b/web/i18n/th-TH/explore.ts index aaed249194..d8eb53d194 100644 --- a/web/i18n/th-TH/explore.ts +++ b/web/i18n/th-TH/explore.ts @@ -37,6 +37,7 @@ const translation = { HR: 'ชั่วโมง', Workflow: 'เวิร์กโฟลว์', Agent: 'ตัวแทน', + Entertainment: 'ความบันเทิง', }, } diff --git a/web/i18n/th-TH/plugin.ts b/web/i18n/th-TH/plugin.ts index 962df3b912..eb42371fbe 100644 --- a/web/i18n/th-TH/plugin.ts +++ b/web/i18n/th-TH/plugin.ts @@ -180,6 +180,8 @@ const translation = { noPluginFound: 'ไม่พบปลั๊กอิน', empower: 'เพิ่มศักยภาพในการพัฒนา AI ของคุณ', difyMarketplace: 'ตลาด Dify', + partnerTip: 'ได้รับการตรวจสอบโดยพันธมิตรของ Dify', + verifiedTip: 'ได้รับการตรวจสอบโดย Dify', }, task: { installing: 'การติดตั้งปลั๊กอิน {{installingLength}} 0 เสร็จแล้ว', @@ -204,6 +206,10 @@ const translation = { fromMarketplace: 'จาก Marketplace', submitPlugin: 'ส่งปลั๊กอิน', allCategories: 'หมวดหมู่ทั้งหมด', + metadata: { + title: 'ปลั๊กอิน', + }, + difyVersionNotCompatible: 'เวอร์ชั่นปัจจุบันของ Dify ไม่สามารถใช้งานร่วมกับปลั๊กอินนี้ได้ กรุณาอัปเกรดไปยังเวอร์ชั่นขั้นต่ำที่ต้องการ: {{minimalDifyVersion}}', } export default translation diff --git a/web/i18n/th-TH/share-app.ts b/web/i18n/th-TH/share-app.ts index c23b2c38aa..fd4a8f386c 100644 --- a/web/i18n/th-TH/share-app.ts +++ b/web/i18n/th-TH/share-app.ts @@ -28,6 +28,10 @@ const translation = { temporarySystemIssue: 'ขออภัย ปัญหาระบบชั่วคราว', expand: 'ขยาย', collapse: 'ย่อ', + newChatTip: 'อยู่ในแชทใหม่แล้ว', + chatSettingsTitle: 'การตั้งค่าการสนทนาใหม่', + viewChatSettings: 'ดูการตั้งค่าการแชท', + chatFormTip: 'การตั้งค่าแชทไม่สามารถเปลี่ยนแปลงได้หลังจากที่แชทเริ่มต้นขึ้นแล้ว.', }, generation: { tabs: { @@ -66,6 +70,8 @@ const translation = { moreThanMaxLengthLine: 'แถว {{rowIndex}}: ค่า {{varName}} ต้องไม่เกิน {{maxLength}} อักขระ', atLeastOne: 'โปรดป้อนอย่างน้อยหนึ่งแถวในไฟล์ที่อัปโหลด', }, + execution: 'การดำเนินการ', + executions: '{{num}} การประหารชีวิต', }, } diff --git a/web/i18n/th-TH/time.ts b/web/i18n/th-TH/time.ts index e2410dd34b..03897dd863 100644 --- a/web/i18n/th-TH/time.ts +++ b/web/i18n/th-TH/time.ts @@ -1,3 +1,37 @@ -const translation = {} +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: 'เลือกเวลา...', +} export default translation diff --git a/web/i18n/th-TH/workflow.ts b/web/i18n/th-TH/workflow.ts index 5cf4ad9e16..6b91a03a41 100644 --- a/web/i18n/th-TH/workflow.ts +++ b/web/i18n/th-TH/workflow.ts @@ -106,6 +106,15 @@ const translation = { addFailureBranch: 'เพิ่มสาขา Fail', loadMore: 'โหลดเวิร์กโฟลว์เพิ่มเติม', noHistory: 'ไม่มีประวัติ', + versionHistory: 'ประวัติรุ่น', + exportPNG: 'ส่งออกเป็น PNG', + noExist: 'ไม่มีตัวแปรดังกล่าว', + exportJPEG: 'ส่งออกเป็น JPEG', + referenceVar: 'ตัวแปรอ้างอิง', + publishUpdate: 'เผยแพร่การอัปเดต', + exitVersions: 'ออกเวอร์ชัน', + exportImage: 'ส่งออกภาพ', + exportSVG: 'ส่งออกเป็น SVG', }, env: { envPanelTitle: 'ตัวแปรสภาพแวดล้อม', @@ -205,6 +214,7 @@ const translation = { testRunIteration: 'การทดสอบการทําซ้ํา', back: 'ย้อนกลับ', iteration: 'เกิด ซ้ำ', + loop: 'ลูป', }, tabs: { 'searchBlock': 'บล็อกการค้นหา', @@ -243,6 +253,9 @@ const translation = { 'document-extractor': 'ตัวแยกเอกสาร', 'list-operator': 'ตัวดําเนินการรายการ', 'agent': 'ตัวแทน', + 'loop': 'ลูป', + 'loop-start': 'เริ่มลูป', + 'loop-end': 'ออกจากลูป', }, blocksAbout: { 'start': 'กําหนดพารามิเตอร์เริ่มต้นสําหรับการเปิดใช้เวิร์กโฟลว์', @@ -263,6 +276,8 @@ const translation = { 'document-extractor': 'ใช้เพื่อแยกวิเคราะห์เอกสารที่อัปโหลดเป็นเนื้อหาข้อความที่ LLM เข้าใจได้ง่าย', 'list-operator': 'ใช้เพื่อกรองหรือจัดเรียงเนื้อหาอาร์เรย์', 'agent': 'การเรียกใช้โมเดลภาษาขนาดใหญ่เพื่อตอบคําถามหรือประมวลผลภาษาธรรมชาติ', + 'loop': 'ดำเนินการลูปของตรรกะจนกว่าจะถึงเงื่อนไขการสิ้นสุดหรือตรงตามจำนวนลูปสูงสุดที่กำหนด.', + 'loop-end': 'เทียบเท่ากับ "break" โหนดนี้ไม่มีรายการการกำหนดค่า เมื่อร่างกายของลูปถึงโหนดนี้ ลูปจะสิ้นสุดลง.', }, operator: { zoomIn: 'ซูมเข้า', @@ -404,6 +419,34 @@ const translation = { 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: 'จำเป็นต้องใช้', + }, }, knowledgeRetrieval: { queryVariable: 'ตัวแปรแบบสอบถาม', @@ -416,6 +459,33 @@ const translation = { url: 'URL ที่แบ่งกลุ่ม', metadata: 'ข้อมูลเมตาอื่นๆ', }, + metadata: { + options: { + disabled: { + title: 'คนพิการ', + subTitle: 'ไม่ได้เปิดใช้งานการกรองข้อมูลเมตา', + }, + automatic: { + desc: 'สร้างเงื่อนไขการกรองข้อมูลเมตาโดยอัตโนมัติตามตัวแปรค้นหา', + title: 'อัตโนมัติ', + subTitle: 'สร้างเงื่อนไขการกรองข้อมูลเมตาโดยอัตโนมัติตามการค้นหาของผู้ใช้', + }, + manual: { + subTitle: 'เพิ่มเงื่อนไขการกรองข้อมูลเมตาด้วยตนเอง', + title: 'คู่มือ', + }, + }, + panel: { + conditions: 'เงื่อนไข', + search: 'ค้นหาข้อมูลเมตา', + add: 'เพิ่มเงื่อนไข', + datePlaceholder: 'เลือกเวลา...', + title: 'เงื่อนไขการกรองข้อมูลเมตา', + select: 'เลือกตัวแปร...', + placeholder: 'ใส่ค่า', + }, + title: 'การกรองข้อมูลเมตา', + }, }, http: { inputVars: 'ตัวแปรอินพุต', @@ -504,6 +574,8 @@ const translation = { 'all of': 'ทั้งหมด', 'exists': 'อยู่', 'not exists': 'ไม่มีอยู่จริง', + 'before': 'ก่อน', + 'after': 'หลังจากนั้น', }, optionName: { image: 'ภาพ', @@ -519,6 +591,7 @@ const translation = { selectVariable: 'เลือกตัวแปร...', addSubVariable: 'ตัวแปรย่อย', select: 'เลือก', + condition: 'เงื่อนไข', }, variableAssigner: { title: 'กําหนดตัวแปร', @@ -561,6 +634,8 @@ const translation = { 'over-write': 'เขียน ทับ', '+=': '+=', '/=': '/=', + 'remove-last': 'ลบสุดท้าย', + 'remove-first': 'ลบอันดับแรก', }, 'noAssignedVars': 'ไม่มีตัวแปรที่กําหนด', 'selectAssignedVariable': 'เลือกตัวแปรที่กําหนด...', @@ -765,6 +840,38 @@ const translation = { modelNotSelected: 'ไม่ได้เลือกรุ่น', linkToPlugin: 'ลิงก์ไปยังปลั๊กอิน', }, + 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: 'แค่ตัวแปรภายในลูปที่มีเงื่อนไขการสิ้นสุดและตัวแปรสำหรับการสนทนาเท่านั้นที่สามารถอ้างอิงได้.', + }, }, tracing: { stopBy: 'แวะที่ {{user}}', @@ -776,6 +883,38 @@ const translation = { assignedVarsDescription: 'ตัวแปรที่กําหนดต้องเป็นตัวแปรที่เขียนได้ เช่น', noAssignedVars: 'ไม่มีตัวแปรที่กําหนด', }, + versionHistory: { + filter: { + onlyYours: 'เพียงของคุณเท่านั้น', + empty: 'ไม่พบประวัติการเวอร์ชันที่ตรงกัน', + onlyShowNamedVersions: 'แสดงเฉพาะรุ่นที่ตั้งชื่อ', + all: 'ทั้งหมด', + reset: 'รีเซ็ตตัวกรอง', + }, + editField: { + releaseNotes: 'บันทึกการเปิดตัว', + releaseNotesLengthLimit: 'หมายเหตุการปล่อยไม่สามารถเกิน {{limit}} ตัวอักษร', + titleLengthLimit: 'ชื่อเรื่องต้องไม่เกิน {{limit}} ตัวอักษร', + title: 'ชื่อเรื่อง', + }, + action: { + updateFailure: 'ไม่สามารถอัปเดตเวอร์ชันได้', + deleteFailure: 'ลบเวอร์ชันไม่สำเร็จ', + deleteSuccess: 'เวอร์ชันถูกลบ', + restoreSuccess: 'เวอร์ชันที่กู้คืน', + restoreFailure: 'ไม่สามารถกู้คืนเวอร์ชันได้', + updateSuccess: 'อัปเดตเวอร์ชัน', + }, + releaseNotesPlaceholder: 'อธิบายว่าสิ่งที่เปลี่ยนแปลงไปคืออะไร', + currentDraft: 'ร่างปัจจุบัน', + editVersionInfo: 'แก้ไขข้อมูลเวอร์ชัน', + restorationTip: 'หลังจากการกู้คืนเวอร์ชันแล้ว ร่างปัจจุบันจะถูกเขียนทับ.', + defaultName: 'เวอร์ชันที่ไม่มีชื่อ', + deletionTip: 'การลบไม่สามารถย้อนกลับได้ กรุณายืนยัน.', + nameThisVersion: 'ชื่อเวอร์ชันนี้', + title: 'เวอร์ชัน', + latest: 'ล่าสุด', + }, } export default translation diff --git a/web/i18n/tr-TR/app.ts b/web/i18n/tr-TR/app.ts index f205bd8ae4..0e27f84582 100644 --- a/web/i18n/tr-TR/app.ts +++ b/web/i18n/tr-TR/app.ts @@ -159,6 +159,10 @@ const translation = { 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.', + }, }, answerIcon: { descriptionInExplore: 'Keşfet\'te değiştirilecek 🤖 WebApp simgesinin kullanılıp kullanılmayacağı', @@ -190,6 +194,17 @@ const translation = { 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.', + }, } export default translation diff --git a/web/i18n/tr-TR/billing.ts b/web/i18n/tr-TR/billing.ts index 1db14bb149..fd51bae648 100644 --- a/web/i18n/tr-TR/billing.ts +++ b/web/i18n/tr-TR/billing.ts @@ -70,6 +70,7 @@ const translation = { 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ı', @@ -77,27 +78,94 @@ const translation = { }, 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}}/gün', + 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.', }, plans: { sandbox: { name: 'Sandbox', description: '200 kez GPT ücretsiz deneme', includesTitle: 'İçerdikleri:', + for: 'Temel Yeteneklerin Ücretsiz Denemesi', }, professional: { name: 'Profesyonel', description: 'Bireyler ve küçük takımlar için daha fazla güç açın.', includesTitle: 'Ücretsiz plandaki her şey, artı:', + 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.', includesTitle: 'Profesyonel plandaki her şey, artı:', + 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: { + 3: 'Birden Fazla Çalışma Alanı ve Kurumsal Yönetim', + 8: 'Profesyonel Teknik Destek', + 4: 'SSO', + 2: 'Özel Şirket Özellikleri', + 1: 'Ticari Lisans Yetkilendirmesi', + 7: 'Dify Tarafından Resmi Güncellemeler ve Bakım', + 5: 'Dify Ortakları tarafından müzakere edilen SLA\'lar', + 6: 'Gelişmiş Güvenlik ve Kontroller', + 0: 'Kurumsal Düzeyde Ölçeklenebilir Dağıtım Çözümleri', + }, + 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: { + 1: 'Tek İş Alanı', + 0: 'Tüm Temel Özellikler Kamu Deposu Altında Yayınlandı', + 2: 'Dify Açık Kaynak Lisansına uyar', + }, + 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: { + 1: 'Tek İş Alanı', + 0: 'Çeşitli Bulut Sağlayıcıları Tarafından Kendiliğinden Yönetilen Güvenilirlik', + 3: 'Öncelikli Email ve Sohbet Desteği', + 2: 'Web Uygulaması Logo ve Markalaşma Özelleştirmesi', + }, + 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: { @@ -107,12 +175,26 @@ const translation = { apps: { fullTipLine1: 'Daha fazla uygulama oluşturmak için', fullTipLine2: 'planınızı yükseltin.', + 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ı', + }, + teamMembers: 'Ekip Üyeleri', } export default translation diff --git a/web/i18n/tr-TR/common.ts b/web/i18n/tr-TR/common.ts index d66c226aa6..584c0a8096 100644 --- a/web/i18n/tr-TR/common.ts +++ b/web/i18n/tr-TR/common.ts @@ -54,6 +54,10 @@ const translation = { 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.', }, errorMsg: { fieldRequired: '{{field}} gereklidir', @@ -157,6 +161,9 @@ const translation = { community: 'Topluluk', about: 'Hakkında', logout: 'Çıkış Yap', + support: 'Destek', + compliance: 'Uygunluk', + github: 'GitHub', }, settings: { accountGroup: 'HESAP', @@ -206,6 +213,9 @@ const translation = { 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', }, members: { team: 'Takım', @@ -547,6 +557,7 @@ const translation = { inputPlaceholder: 'Bot 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', @@ -637,6 +648,25 @@ const translation = { 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ı', + }, } export default translation diff --git a/web/i18n/tr-TR/custom.ts b/web/i18n/tr-TR/custom.ts index d4526074d5..15c4ff59ca 100644 --- a/web/i18n/tr-TR/custom.ts +++ b/web/i18n/tr-TR/custom.ts @@ -3,6 +3,8 @@ const translation = { 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: 'WebApp markasını özelleştir', diff --git a/web/i18n/tr-TR/dataset-creation.ts b/web/i18n/tr-TR/dataset-creation.ts index e672433786..cb3cfcfac4 100644 --- a/web/i18n/tr-TR/dataset-creation.ts +++ b/web/i18n/tr-TR/dataset-creation.ts @@ -87,6 +87,14 @@ const translation = { 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', + watercrawlDocLink: 'https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-website', + configureWatercrawl: 'Watercrawl\'ı yapılandır', }, cancel: 'İptal', }, @@ -200,6 +208,11 @@ const translation = { 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-settings.ts b/web/i18n/tr-TR/dataset-settings.ts index 554f3c7a5c..18fb004d1b 100644 --- a/web/i18n/tr-TR/dataset-settings.ts +++ b/web/i18n/tr-TR/dataset-settings.ts @@ -27,6 +27,7 @@ const translation = { 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', }, save: 'Kaydet', retrievalSettings: 'Alma Ayarları', diff --git a/web/i18n/tr-TR/dataset.ts b/web/i18n/tr-TR/dataset.ts index 6183849ebc..96f120c13d 100644 --- a/web/i18n/tr-TR/dataset.ts +++ b/web/i18n/tr-TR/dataset.ts @@ -168,6 +168,54 @@ const translation = { 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.', + }, + 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.', } export default translation diff --git a/web/i18n/tr-TR/education.ts b/web/i18n/tr-TR/education.ts new file mode 100644 index 0000000000..f6afb98e96 --- /dev/null +++ b/web/i18n/tr-TR/education.ts @@ -0,0 +1,47 @@ +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', +} + +export default translation diff --git a/web/i18n/tr-TR/explore.ts b/web/i18n/tr-TR/explore.ts index 52b45c6b32..78b305ee47 100644 --- a/web/i18n/tr-TR/explore.ts +++ b/web/i18n/tr-TR/explore.ts @@ -37,6 +37,7 @@ const translation = { HR: 'İK', Agent: 'Aracı', Workflow: 'İş Akışı', + Entertainment: 'Eğlence', }, } diff --git a/web/i18n/tr-TR/plugin.ts b/web/i18n/tr-TR/plugin.ts index 4bab35950b..c434052081 100644 --- a/web/i18n/tr-TR/plugin.ts +++ b/web/i18n/tr-TR/plugin.ts @@ -180,6 +180,8 @@ const translation = { 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', @@ -204,6 +206,10 @@ const translation = { 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}}', } export default translation diff --git a/web/i18n/tr-TR/share-app.ts b/web/i18n/tr-TR/share-app.ts index 341368d145..184f44e147 100644 --- a/web/i18n/tr-TR/share-app.ts +++ b/web/i18n/tr-TR/share-app.ts @@ -28,6 +28,10 @@ const translation = { 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: { @@ -66,6 +70,8 @@ const translation = { moreThanMaxLengthLine: 'Satır {{rowIndex}}: {{varName}} değeri {{maxLength}} karakterden fazla olamaz', atLeastOne: 'Lütfen yüklenen dosyada en az bir satır girin.', }, + execution: 'İFRAZAT', + executions: '{{num}} İDAM', }, } diff --git a/web/i18n/tr-TR/time.ts b/web/i18n/tr-TR/time.ts index e2410dd34b..f4cded0998 100644 --- a/web/i18n/tr-TR/time.ts +++ b/web/i18n/tr-TR/time.ts @@ -1,3 +1,37 @@ -const translation = {} +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ç...', +} export default translation diff --git a/web/i18n/tr-TR/workflow.ts b/web/i18n/tr-TR/workflow.ts index 0ba1206b86..999456f1cf 100644 --- a/web/i18n/tr-TR/workflow.ts +++ b/web/i18n/tr-TR/workflow.ts @@ -106,6 +106,15 @@ const translation = { 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', + noExist: 'Böyle bir değişken yok', + exportSVG: 'SVG olarak dışa aktar', + referenceVar: 'Referans Değişken', }, env: { envPanelTitle: 'Çevre Değişkenleri', @@ -205,6 +214,7 @@ const translation = { testRunIteration: 'Test Çalıştırma Yineleme', back: 'Geri', iteration: 'Yineleme', + loop: 'Döngü', }, tabs: { 'searchBlock': 'Blok ara', @@ -243,6 +253,9 @@ const translation = { '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ü', }, blocksAbout: { 'start': 'Bir iş akışını başlatmak için başlangıç parametrelerini tanımlayın', @@ -263,6 +276,8 @@ const translation = { '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.', }, operator: { zoomIn: 'Yakınlaştır', @@ -404,6 +419,34 @@ const translation = { 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.', + }, }, knowledgeRetrieval: { queryVariable: 'Sorgu Değişkeni', @@ -416,6 +459,33 @@ const translation = { url: 'Parça URL\'si', metadata: 'Diğer meta veriler', }, + 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', + }, }, http: { inputVars: 'Giriş Değişkenleri', @@ -506,6 +576,8 @@ const translation = { 'all of': 'Tümü', 'not in': 'İçinde değil', 'exists': 'Var', + 'before': 'önce', + 'after': 'sonra', }, enterValue: 'Değer girin', addCondition: 'Koşul Ekle', @@ -521,6 +593,7 @@ const translation = { }, addSubVariable: 'Alt Değişken', select: 'Seçmek', + condition: 'Koşul', }, variableAssigner: { title: 'Değişken ata', @@ -563,6 +636,8 @@ const translation = { '-=': '-=', '*=': '*=', 'set': 'Ayarlamak', + 'remove-last': 'Sonuncuyu Kaldır', + 'remove-first': 'İlkini kaldır', }, 'variables': 'Değişken', 'selectAssignedVariable': 'Atanan değişkeni seçin...', @@ -767,6 +842,38 @@ const translation = { toolNotAuthorizedTooltip: '{{araç}} Yetkili Değil', model: 'model', }, + 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', + }, }, tracing: { stopBy: '{{user}} tarafından durduruldu', @@ -778,6 +885,38 @@ const translation = { 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', + }, + 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.', + }, } export default translation diff --git a/web/i18n/uk-UA/app.ts b/web/i18n/uk-UA/app.ts index 2a9c03eace..09df6bf413 100644 --- a/web/i18n/uk-UA/app.ts +++ b/web/i18n/uk-UA/app.ts @@ -159,6 +159,10 @@ const translation = { title: 'Опік', description: 'Opik — це платформа з відкритим вихідним кодом для оцінки, тестування та моніторингу додатків LLM.', }, + weave: { + title: 'Ткати', + description: 'Weave є платформою з відкритим кодом для оцінки, тестування та моніторингу LLM додатків.', + }, }, answerIcon: { title: 'Використовуйте піктограму WebApp для заміни 🤖', @@ -194,6 +198,17 @@ const translation = { params: 'ПАРАМЕТРИ ПРОГРАМИ', placeholder: 'Виберіть програму...', }, + structOutput: { + LLMResponse: 'Відповідь ЛЛМ', + configure: 'Налаштувати', + required: 'Необхідно', + moreFillTip: 'Показуючи максимум 10 рівнів вкладеності', + structured: 'Структурований', + modelNotSupported: 'Модель не підтримується', + notConfiguredTip: 'Структурований вихід ще не було налаштовано', + modelNotSupportedTip: 'Поточна модель не підтримує цю функцію та автоматично знижується до ін\'єкції запитів.', + structuredTip: 'Структуровані виходи - це функція, яка забезпечує, що модель завжди генеруватиме відповіді, що відповідають наданій вами схемі JSON.', + }, } export default translation diff --git a/web/i18n/uk-UA/billing.ts b/web/i18n/uk-UA/billing.ts index cebdb11521..56888531b0 100644 --- a/web/i18n/uk-UA/billing.ts +++ b/web/i18n/uk-UA/billing.ts @@ -68,6 +68,7 @@ const translation = { messageRequest: { title: 'Кредити повідомлень', tooltip: 'Квоти на виклик повідомлень для різних планів з використанням моделей OpenAI (крім gpt4). Повідомлення понад ліміт використовуватимуть ваш ключ API OpenAI.', + titlePerMonth: '{{count,number}} повідомлень/місяць', }, annotatedResponse: { title: 'Ліміти квоти відповідей з анотаціями', @@ -77,27 +78,94 @@ const translation = { receiptInfo: 'Лише власник команди та адміністратор команди можуть підписуватися та переглядати інформацію про виставлення рахунків', annotationQuota: 'Квота анотацій', documentsUploadQuota: 'Квота завантаження документів', + 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 послідовних тестів за один хвилину, його робочій області буде тимчасово заборонено виконувати наступні дії протягом наступної хвилини: створення наборів даних, видалення, оновлення, а також завантаження чи модифікацію документів.', }, plans: { sandbox: { name: 'Пісочниця', description: '200 безкоштовних пробних версій GPT', includesTitle: 'Включає в себе:', + for: 'Безкоштовна пробна версія основних функцій', }, professional: { name: 'Професійний', description: 'Щоб окремі особи та невеликі команди могли отримати більше можливостей за доступною ціною.', includesTitle: 'Все у безкоштовному плані, плюс:', + for: 'Для незалежних розробників/малих команд', }, team: { name: 'Команда', description: 'Співпрацюйте без обмежень і користуйтеся продуктивністю найвищого рівня.', includesTitle: 'Все, що входить до плану Professional, плюс:', + for: 'Для середніх команд', }, enterprise: { name: 'Ентерпрайз', description: 'Отримайте повні можливості та підтримку для масштабних критично важливих систем.', includesTitle: 'Все, що входить до плану Team, плюс:', + features: { + 5: 'Угоди про рівень обслуговування, узгоджені партнерами Dify', + 2: 'Ексклюзивні підприємницькі функції', + 6: 'Розвинена безпека та контроль', + 8: 'Професійна технічна підтримка', + 1: 'Комерційна ліцензія на авторизацію', + 3: 'Кілька робочих просторів та управління підприємством', + 4: 'ССО', + 0: 'Рішення для масштабованого розгортання підприємств', + 7: 'Оновлення та обслуговування від Dify Офіційно', + }, + btnText: 'Зв\'язатися з відділом продажу', + priceTip: 'Тільки річна оплата', + for: 'Для великих команд', + price: 'Користувацький', + }, + community: { + features: { + 2: 'Відповідає ліцензії Dify Open Source', + 1: 'Єдине робоче місце', + 0: 'Усі основні функції випущені під публічним репозиторієм', + }, + btnText: 'Розпочніть з громади', + includesTitle: 'Безкоштовні можливості:', + for: 'Для індивідуальних користувачів, малих команд або некомерційних проектів', + price: 'Безкоштовно', + description: 'Для індивідуальних користувачів, малих команд або некомерційних проектів', + name: 'Спільнота', + }, + premium: { + features: { + 2: 'Логотип веб-додатку та налаштування брендингу', + 1: 'Єдине робоче місце', + 3: 'Пріоритетна email та чат підтримка', + 0: 'Самостійно керовані надійність різних хмарних постачальників', + }, + description: 'Для середніх підприємств та команд', + btnText: 'Отримайте Преміум у', + price: 'Масштабований', + comingSoon: 'Підтримка Microsoft Azure та Google Cloud незабаром', + priceTip: 'На основі Хмарного ринку', + for: 'Для середніх підприємств та команд', + name: 'Преміум', + includesTitle: 'Все з громади, плюс:', }, }, vectorSpace: { @@ -107,12 +175,26 @@ const translation = { apps: { fullTipLine1: 'Оновіть свій план, щоб', fullTipLine2: 'створити більше програм.', + fullTip1des: 'Ви досягли межі створення додатків за цим планом.', + fullTip2: 'Досягнуто ліміту плану', + fullTip1: 'Оновіть, щоб створити більше додатків', + contactUs: 'Зв\'яжіться з нами', + fullTip2des: 'Рекомендується очистити неактивні програми, щоб звільнити місце, або зв\'язатися з нами.', }, annotatedResponse: { fullTipLine1: 'Оновіть свій план, щоб', fullTipLine2: 'анотувати більше розмов.', quotaTitle: 'Квота на анотовані відповіді', }, + usagePage: { + teamMembers: 'Члени команди', + buildApps: 'Створюйте додатки', + annotationQuota: 'Квота анотацій', + vectorSpaceTooltip: 'Документи з режимом індексування високої якості споживатимуть ресурси Сховища Знань. Коли Сховище Знань досягне межі, нові документи не будуть завантажені.', + documentsUploadQuota: 'Квота на завантаження документів', + vectorSpace: 'Сховище даних знань', + }, + teamMembers: 'Члени команди', } export default translation diff --git a/web/i18n/uk-UA/common.ts b/web/i18n/uk-UA/common.ts index 7416e30594..dee558ad44 100644 --- a/web/i18n/uk-UA/common.ts +++ b/web/i18n/uk-UA/common.ts @@ -54,6 +54,10 @@ const translation = { viewDetails: 'Перегляд докладних відомостей', copied: 'Скопійовані', in: 'В', + format: 'Формат', + downloadFailed: 'Не вдалося завантажити. Будь ласка, спробуйте ще раз пізніше.', + more: 'Більше', + downloadSuccess: 'Завантаження завершено.', }, placeholder: { input: 'Будь ласка, введіть текст', @@ -153,6 +157,9 @@ const translation = { community: 'Спільнота', about: 'Про нас', logout: 'Вийти', + compliance: 'Відповідність', + support: 'Підтримка', + github: 'Гітхаб', }, settings: { accountGroup: 'ОБЛІКОВИЙ ЗАПИС', @@ -202,6 +209,9 @@ const translation = { deleteSuccessTip: 'Вашому обліковому запису потрібен час, щоб завершити видалення. Ми надішлемо вам електронного листа, коли все буде готово.', deleteLabel: 'Для підтвердження, будь ласка, введіть свою електронну пошту нижче', deletePlaceholder: 'Будь ласка, введіть свою електронну пошту', + workspaceName: 'Назва робочого простору', + workspaceIcon: 'Іконка робочого простору', + editWorkspaceInfo: 'Редагувати інформацію про робочий простір', }, members: { team: 'Команда', @@ -544,6 +554,7 @@ const translation = { inputPlaceholder: 'Поговоріть з ботом', thought: 'Думка', thinking: 'Мислення...', + resend: 'Відправити знову', }, promptEditor: { placeholder: 'Пишіть свої підказки тут, вводьте \'{\', щоб вставити змінну чи \'/\', щоб вставити блок-підказку', @@ -638,6 +649,25 @@ const translation = { 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: 'Перетягніть зображення сюди або', + }, } export default translation diff --git a/web/i18n/uk-UA/custom.ts b/web/i18n/uk-UA/custom.ts index 378e094c62..1eba3f14c8 100644 --- a/web/i18n/uk-UA/custom.ts +++ b/web/i18n/uk-UA/custom.ts @@ -3,6 +3,8 @@ const translation = { upgradeTip: { prefix: 'Оновіть свій план до ', suffix: ', щоб налаштувати свій бренд.', + title: 'Оновіть свій план', + des: 'Оновіть свій план, щоб налаштувати свій бренд', }, webapp: { title: 'Налаштувати бренд для WebApp', diff --git a/web/i18n/uk-UA/dataset-creation.ts b/web/i18n/uk-UA/dataset-creation.ts index 9d924629e6..18b5553be7 100644 --- a/web/i18n/uk-UA/dataset-creation.ts +++ b/web/i18n/uk-UA/dataset-creation.ts @@ -82,6 +82,14 @@ const translation = { jinaReaderNotConfigured: 'Jina Reader не налаштована', jinaReaderTitle: 'Перетворіть весь сайт на Markdown', useSitemap: 'Використовуйте карту сайту', + configureJinaReader: 'Налаштувати Jina Reader', + waterCrawlNotConfigured: 'Watercrawl не налаштовано', + waterCrawlNotConfiguredDescription: 'Налаштуйте Watercrawl з ключем API, щоб його використовувати.', + configureFirecrawl: 'Налаштування Firecrawl', + configureWatercrawl: 'Налаштування Watercrawl', + watercrawlTitle: 'Витягуйте веб-контент за допомогою Watercrawl', + watercrawlDocLink: 'https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-website', + watercrawlDoc: 'Документація Watercrawl', }, cancel: 'Скасувати', }, @@ -200,6 +208,11 @@ const translation = { 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-settings.ts b/web/i18n/uk-UA/dataset-settings.ts index c56473896c..f5403b883e 100644 --- a/web/i18n/uk-UA/dataset-settings.ts +++ b/web/i18n/uk-UA/dataset-settings.ts @@ -25,6 +25,7 @@ const translation = { learnMore: 'Дізнатися більше', description: ' про метод вибірки.', longDescription: ' про метод вибірки, ви можете змінити це будь-коли в налаштуваннях бази знань.', + method: 'Метод отримання', }, save: 'Зберегти', me: '(Ви)', diff --git a/web/i18n/uk-UA/dataset.ts b/web/i18n/uk-UA/dataset.ts index 20948e7b99..84bc8d9ad1 100644 --- a/web/i18n/uk-UA/dataset.ts +++ b/web/i18n/uk-UA/dataset.ts @@ -169,6 +169,54 @@ const translation = { enable: 'Вмикати', allKnowledge: 'Всі знання', allKnowledgeDescription: 'Виберіть, щоб відобразити всі знання в цій робочій області. Тільки власник робочої області може керувати всіма знаннями.', + metadata: { + createMetadata: { + back: 'Назад', + title: 'Нові метадані', + type: 'Тип', + namePlaceholder: 'Додати назву метаданих', + name: 'Ім\'я', + }, + checkName: { + empty: 'Ім\'я метаданих не може бути порожнім', + invalid: 'Ім\'я метаданих може містити лише малі літери, цифри та підкреслення, і повинно починатися з малої літери', + }, + 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: 'Модель вбудовування недоступна.', } export default translation diff --git a/web/i18n/uk-UA/education.ts b/web/i18n/uk-UA/education.ts new file mode 100644 index 0000000000..3cb4750050 --- /dev/null +++ b/web/i18n/uk-UA/education.ts @@ -0,0 +1,47 @@ +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 для вашого акаунту. Купон дійсний протягом одного року, будь ласка, скористайтеся ним протягом терміну дії.', +} + +export default translation diff --git a/web/i18n/uk-UA/explore.ts b/web/i18n/uk-UA/explore.ts index 8b2efc903e..0bb03af719 100644 --- a/web/i18n/uk-UA/explore.ts +++ b/web/i18n/uk-UA/explore.ts @@ -37,6 +37,7 @@ const translation = { HR: 'HR', Workflow: 'Робочий процес', Agent: 'Агент', + Entertainment: 'Розваги', }, } diff --git a/web/i18n/uk-UA/plugin.ts b/web/i18n/uk-UA/plugin.ts index c86e225b1e..465624f2d3 100644 --- a/web/i18n/uk-UA/plugin.ts +++ b/web/i18n/uk-UA/plugin.ts @@ -180,6 +180,8 @@ const translation = { difyMarketplace: 'Dify Marketplace', viewMore: 'Дивитись більше', noPluginFound: 'Плагін не знайдено', + verifiedTip: 'Перевірено Dify', + partnerTip: 'Перевірено партнером Dify', }, task: { installingWithError: 'Не вдалося встановити плагіни {{installingLength}}, успіх {{successLength}}, {{errorLength}}', @@ -204,6 +206,10 @@ const translation = { search: 'Шукати', searchPlugins: 'Плагіни пошуку', allCategories: 'Всі категорії', + metadata: { + title: 'Плагіни', + }, + difyVersionNotCompatible: 'Поточна версія Dify не сумісна з цим плагіном, будь ласка, оновіть до мінімальної версії: {{minimalDifyVersion}}', } export default translation diff --git a/web/i18n/uk-UA/share-app.ts b/web/i18n/uk-UA/share-app.ts index 16161d76cc..058925ff15 100644 --- a/web/i18n/uk-UA/share-app.ts +++ b/web/i18n/uk-UA/share-app.ts @@ -28,6 +28,10 @@ const translation = { temporarySystemIssue: 'Вибачте, тимчасова системна проблема.', expand: 'Розгорнути', collapse: 'Згорнути', + chatFormTip: 'Налаштування чату не можуть бути змінені після початку чату.', + viewChatSettings: 'Переглянути налаштування чату', + chatSettingsTitle: 'Нове налаштування чату', + newChatTip: 'Вже в новому чаті', }, generation: { tabs: { @@ -66,6 +70,8 @@ const translation = { moreThanMaxLengthLine: 'Рядок {{rowIndex}}: значення {{varName}} не може містити більше {{maxLength}} символів', atLeastOne: 'Будь ласка, введіть принаймні один рядок у завантажений файл.', }, + execution: 'ВИКОНАННЯ', + executions: '{{num}} ВИКОНАНЬ', }, } diff --git a/web/i18n/uk-UA/time.ts b/web/i18n/uk-UA/time.ts index e2410dd34b..1ea08cb4ed 100644 --- a/web/i18n/uk-UA/time.ts +++ b/web/i18n/uk-UA/time.ts @@ -1,3 +1,37 @@ -const translation = {} +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: 'Виберіть час...', +} export default translation diff --git a/web/i18n/uk-UA/workflow.ts b/web/i18n/uk-UA/workflow.ts index a4b832660d..c2d0b137fb 100644 --- a/web/i18n/uk-UA/workflow.ts +++ b/web/i18n/uk-UA/workflow.ts @@ -106,6 +106,15 @@ const translation = { addFailureBranch: 'Додано гілку помилки', noHistory: 'Без історії', loadMore: 'Завантажте більше робочих процесів', + referenceVar: 'Посилальна змінна', + exportPNG: 'Експортувати як PNG', + noExist: 'Такої змінної не існує', + exitVersions: 'Вихідні версії', + versionHistory: 'Історія версій', + publishUpdate: 'Опублікувати оновлення', + exportImage: 'Експорт зображення', + exportSVG: 'Експортувати як SVG', + exportJPEG: 'Експортувати як JPEG', }, env: { envPanelTitle: 'Змінні середовища', @@ -205,6 +214,7 @@ const translation = { testRunIteration: 'Ітерація тестового запуску', back: 'Назад', iteration: 'Ітерація', + loop: 'Петля', }, tabs: { 'searchBlock': 'Пошук блоку', @@ -243,6 +253,9 @@ const translation = { 'document-extractor': 'Екстрактор документів', 'list-operator': 'Оператор списку', 'agent': 'Агент', + 'loop-start': 'Початок циклу', + 'loop': 'Петля', + 'loop-end': 'Вихід з циклу', }, blocksAbout: { 'start': 'Визначте початкові параметри для запуску робочого потоку', @@ -263,6 +276,8 @@ const translation = { 'document-extractor': 'Використовується для аналізу завантажених документів у текстовий контент, який легко зрозумілий LLM.', 'list-operator': 'Використовується для фільтрації або сортування вмісту масиву.', 'agent': 'Виклик великих мовних моделей для відповідей на запитання або обробки природної мови', + 'loop': 'Виконуйте цикл логіки, поки не буде виконано умову завершення або досягнуто максимальну кількість ітерацій.', + 'loop-end': 'Еквівалентно "перерві". Цей вузол не має елементів конфігурації. Коли тіло циклу досягає цього вузла, цикл завершується.', }, operator: { zoomIn: 'Збільшити', @@ -404,6 +419,34 @@ const translation = { 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: 'Дізнайтеся більше про структурований вихід', + }, }, knowledgeRetrieval: { queryVariable: 'Змінна запиту', @@ -416,6 +459,33 @@ const translation = { url: 'Сегментована URL', metadata: 'Інші метадані', }, + metadata: { + options: { + disabled: { + title: 'Вимкнено', + subTitle: 'Не включаючи фільтрацію метаданих', + }, + automatic: { + title: 'Автоматичний', + subTitle: 'Автоматично генерувати умови фільтрації метаданих на основі запиту користувача.', + desc: 'Автоматично генерувати умови фільтрації метаданих на основі змінної запиту.', + }, + manual: { + subTitle: 'Вручну додайте умови фільтрації метаданих', + title: 'Посібник', + }, + }, + panel: { + search: 'Пошукова метаінформація', + datePlaceholder: 'Виберіть час...', + title: 'Умови фільтрації метаданих', + placeholder: 'Введіть значення', + conditions: 'Умови', + select: 'Виберіть змінну...', + add: 'Додати умову', + }, + title: 'Фільтрація метаданих', + }, }, http: { inputVars: 'Вхідні змінні', @@ -505,6 +575,8 @@ const translation = { 'exists': 'Існує', 'not exists': 'не існує', 'not in': 'Не в', + 'after': 'після', + 'before': 'раніше', }, enterValue: 'Введіть значення', addCondition: 'Додати умову', @@ -520,6 +592,7 @@ const translation = { }, select: 'Виберіть', addSubVariable: 'Підзмінна', + condition: 'Умова', }, variableAssigner: { title: 'Присвоєння змінних', @@ -562,6 +635,8 @@ const translation = { '+=': '+=', '*=': '*=', 'extend': 'Розширити', + 'remove-last': 'Видалити останнє', + 'remove-first': 'Видалити перший', }, 'selectAssignedVariable': 'Виберіть призначену змінну...', 'noAssignedVars': 'Немає доступних призначених змінних', @@ -766,6 +841,38 @@ const translation = { modelNotSelected: 'Модель не обрана', strategyNotFoundDescAndSwitchVersion: 'Встановлена версія плагіна не забезпечує цю стратегію. Натисніть, щоб змінити версію.', }, + 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: 'Максимальна кількість циклів', + }, }, tracing: { stopBy: 'Зупинено користувачем {{user}}', @@ -777,6 +884,38 @@ const translation = { noAssignedVars: 'Немає доступних призначених змінних', noAvailableVars: 'Немає доступних змінних', }, + versionHistory: { + filter: { + onlyShowNamedVersions: 'Показуйте лише названі версії', + reset: 'Скинути фільтр', + all: 'Усе', + onlyYours: 'Тільки твоє', + empty: 'Не знайдено відповідну історію версій', + }, + editField: { + titleLengthLimit: 'Заголовок не може перевищувати {{limit}} символів', + releaseNotes: 'Примітки до випуску', + title: 'Назва', + releaseNotesLengthLimit: 'Примітки до випуску не можуть перевищувати {{limit}} символів', + }, + action: { + restoreFailure: 'Не вдалося відновити версію', + updateSuccess: 'Версія оновлена', + deleteFailure: 'Не вдалося видалити версію', + deleteSuccess: 'Версія видалена', + restoreSuccess: 'Версія відновлена', + updateFailure: 'Не вдалося оновити версію', + }, + defaultName: 'Без назви версія', + restorationTip: 'Після відновлення версії нинішній проект буде перезаписано.', + title: 'Версії', + currentDraft: 'Поточний проект', + deletionTip: 'Видалення є незворотнім, будь ласка, підтвердіть.', + releaseNotesPlaceholder: 'Опишіть, що змінилося', + editVersionInfo: 'Редагувати інформацію про версію', + nameThisVersion: 'Назвіть цю версію', + latest: 'Останні новини', + }, } export default translation diff --git a/web/i18n/vi-VN/app.ts b/web/i18n/vi-VN/app.ts index fd0a66ad03..aacfc6419b 100644 --- a/web/i18n/vi-VN/app.ts +++ b/web/i18n/vi-VN/app.ts @@ -159,6 +159,10 @@ const translation = { 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.', + }, }, answerIcon: { description: 'Có nên sử dụng biểu tượng WebApp để thay thế 🤖 trong ứng dụng được chia sẻ hay không', @@ -194,6 +198,17 @@ const translation = { 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', + }, } export default translation diff --git a/web/i18n/vi-VN/billing.ts b/web/i18n/vi-VN/billing.ts index 595481e3a4..3a8ac03ffb 100644 --- a/web/i18n/vi-VN/billing.ts +++ b/web/i18n/vi-VN/billing.ts @@ -69,6 +69,7 @@ const translation = { 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ú', @@ -77,27 +78,94 @@ const translation = { 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}}/ngày', + 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.', }, plans: { sandbox: { name: 'Hộp Cát', description: 'Thử nghiệm miễn phí 200 lần GPT', includesTitle: 'Bao gồm:', + 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.', includesTitle: 'Tất cả trong kế hoạch miễn phí, cộng thêm:', + 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.', includesTitle: 'Tất cả trong kế hoạch Chuyên nghiệp, cộng thêm:', + 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: { + 2: 'Tính năng Doanh nghiệp Độc quyền', + 1: 'Giấy phép kinh doanh', + 8: 'Hỗ trợ kỹ thuật chuyên nghiệp', + 7: 'Cập nhật và Bảo trì bởi Dify Chính thức', + 5: 'Thỏa thuận SLA bởi các đối tác Dify', + 6: 'An ninh nâng cao và kiểm soát', + 3: 'Nhiều không gian làm việc & Quản lý doanh nghiệp', + 0: 'Giải pháp triển khai mở rộng quy mô cấp doanh nghiệp', + 4: 'SSO', + }, + 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: { + 2: 'Tuân thủ Giấy phép Mã nguồn Mở Dify', + 0: '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', + 1: 'Không gian làm việc đơn', + }, + 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: { + 3: 'Hỗ trợ qua Email & Chat Ưu tiên', + 2: 'Tùy chỉnh Logo & Thương hiệu Ứng dụng Web', + 1: 'Không gian làm việc đơn', + 0: 'Độ tin cậy tự quản lý bởi các nhà cung cấp đám mây khác nhau', + }, + 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: { @@ -107,12 +175,26 @@ const translation = { apps: { fullTipLine1: 'Nâng cấp kế hoạch của bạn để', fullTipLine2: 'xây dựng thêm ứng dụng.', + 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', + }, + teamMembers: 'Các thành viên trong nhóm', } export default translation diff --git a/web/i18n/vi-VN/common.ts b/web/i18n/vi-VN/common.ts index 2ce9c3c41a..6023fe7285 100644 --- a/web/i18n/vi-VN/common.ts +++ b/web/i18n/vi-VN/common.ts @@ -54,6 +54,10 @@ const translation = { 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.', }, placeholder: { input: 'Vui lòng nhập', @@ -153,6 +157,9 @@ const translation = { community: 'Cộng đồng', about: 'Về chúng tôi', logout: 'Đăng xuất', + compliance: 'Tuân thủ', + github: 'GitHub', + support: 'Hỗ trợ', }, settings: { accountGroup: 'TÀI KHOẢN', @@ -202,6 +209,9 @@ const translation = { 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', }, members: { team: 'Nhóm', @@ -543,6 +553,7 @@ const translation = { inputPlaceholder: 'Nói chuyện với Bot', 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ở', @@ -637,6 +648,25 @@ const translation = { 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', + }, } export default translation diff --git a/web/i18n/vi-VN/custom.ts b/web/i18n/vi-VN/custom.ts index 6c91e519b0..6f9a4720c4 100644 --- a/web/i18n/vi-VN/custom.ts +++ b/web/i18n/vi-VN/custom.ts @@ -3,6 +3,8 @@ const translation = { 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 WebApp', diff --git a/web/i18n/vi-VN/dataset-creation.ts b/web/i18n/vi-VN/dataset-creation.ts index 071c1e3d13..f909a51770 100644 --- a/web/i18n/vi-VN/dataset-creation.ts +++ b/web/i18n/vi-VN/dataset-creation.ts @@ -82,6 +82,14 @@ const translation = { 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ó.', + watercrawlDocLink: 'https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-website', + 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', }, cancel: 'Hủy', }, @@ -200,6 +208,11 @@ const translation = { 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-settings.ts b/web/i18n/vi-VN/dataset-settings.ts index 7add91884e..b24f130b97 100644 --- a/web/i18n/vi-VN/dataset-settings.ts +++ b/web/i18n/vi-VN/dataset-settings.ts @@ -25,6 +25,7 @@ const translation = { 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', }, save: 'Lưu', permissionsInvitedMembers: 'Thành viên một phần trong nhóm', diff --git a/web/i18n/vi-VN/dataset.ts b/web/i18n/vi-VN/dataset.ts index 1ab84bb85f..4227d712a0 100644 --- a/web/i18n/vi-VN/dataset.ts +++ b/web/i18n/vi-VN/dataset.ts @@ -168,6 +168,54 @@ const translation = { 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', + }, + 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.', } export default translation diff --git a/web/i18n/vi-VN/education.ts b/web/i18n/vi-VN/education.ts new file mode 100644 index 0000000000..35614934d9 --- /dev/null +++ b/web/i18n/vi-VN/education.ts @@ -0,0 +1,47 @@ +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.', +} + +export default translation diff --git a/web/i18n/vi-VN/explore.ts b/web/i18n/vi-VN/explore.ts index b1254fa8cd..860bfd76f0 100644 --- a/web/i18n/vi-VN/explore.ts +++ b/web/i18n/vi-VN/explore.ts @@ -37,6 +37,7 @@ const translation = { 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/plugin.ts b/web/i18n/vi-VN/plugin.ts index 512e27b6a5..5e5147c69e 100644 --- a/web/i18n/vi-VN/plugin.ts +++ b/web/i18n/vi-VN/plugin.ts @@ -180,6 +180,8 @@ const translation = { 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', @@ -204,6 +206,10 @@ const translation = { 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}}', } export default translation diff --git a/web/i18n/vi-VN/share-app.ts b/web/i18n/vi-VN/share-app.ts index 12c2ddaa98..a55f9b8476 100644 --- a/web/i18n/vi-VN/share-app.ts +++ b/web/i18n/vi-VN/share-app.ts @@ -28,6 +28,10 @@ const translation = { 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: { @@ -66,6 +70,8 @@ const translation = { 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.', }, + executions: '{{num}} ÁN TỬ HÌNH', + execution: 'THI HÀNH', }, } diff --git a/web/i18n/vi-VN/time.ts b/web/i18n/vi-VN/time.ts index e2410dd34b..9c07eceb4d 100644 --- a/web/i18n/vi-VN/time.ts +++ b/web/i18n/vi-VN/time.ts @@ -1,3 +1,37 @@ -const translation = {} +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...', +} export default translation diff --git a/web/i18n/vi-VN/workflow.ts b/web/i18n/vi-VN/workflow.ts index db56350daf..18ae72022e 100644 --- a/web/i18n/vi-VN/workflow.ts +++ b/web/i18n/vi-VN/workflow.ts @@ -106,6 +106,15 @@ const translation = { 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', + noExist: 'Không có biến như vậy', + exportJPEG: 'Xuất dưới dạng JPEG', + referenceVar: 'Biến tham chiếu', }, env: { envPanelTitle: 'Biến Môi Trường', @@ -205,6 +214,7 @@ const translation = { testRunIteration: 'Lặp chạy thử nghiệm', back: 'Quay lại', iteration: 'Lặp', + loop: 'Vòng', }, tabs: { 'searchBlock': 'Tìm kiếm khối', @@ -243,6 +253,9 @@ const translation = { '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', }, blocksAbout: { 'start': 'Định nghĩa các tham số ban đầu để khởi chạy quy trình làm việc', @@ -263,6 +276,8 @@ const translation = { '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.', }, operator: { zoomIn: 'Phóng to', @@ -404,6 +419,34 @@ const translation = { 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', + }, }, knowledgeRetrieval: { queryVariable: 'Biến truy vấn', @@ -416,6 +459,33 @@ const translation = { url: 'URL phân đoạn', metadata: 'Siêu dữ liệu khác', }, + 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', + }, }, http: { inputVars: 'Biến đầu vào', @@ -505,6 +575,8 @@ const translation = { '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', @@ -520,6 +592,7 @@ const translation = { }, addSubVariable: 'Biến phụ', select: 'Lựa', + condition: 'Điều kiện', }, variableAssigner: { title: 'Gán biến', @@ -562,6 +635,8 @@ const translation = { '+=': '+=', '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...', @@ -766,6 +841,38 @@ const translation = { 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ụ', }, + 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', + }, }, tracing: { stopBy: 'Dừng bởi {{user}}', @@ -777,6 +884,38 @@ const translation = { 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', + }, + 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', + }, } export default translation diff --git a/web/i18n/zh-Hans/app.ts b/web/i18n/zh-Hans/app.ts index 7ef8c1b514..c1723fcab9 100644 --- a/web/i18n/zh-Hans/app.ts +++ b/web/i18n/zh-Hans/app.ts @@ -172,6 +172,10 @@ const translation = { removeConfirmTitle: '删除 {{key}} 配置?', removeConfirmContent: '当前配置正在使用中,删除它将关闭追踪功能。', }, + weave: { + title: '编织', + description: 'Weave是一个开源平台,用于评估、测试和监控大型语言模型应用程序。', + }, }, appSelector: { label: '应用', diff --git a/web/i18n/zh-Hans/billing.ts b/web/i18n/zh-Hans/billing.ts index e5fbff77b0..c00d137aca 100644 --- a/web/i18n/zh-Hans/billing.ts +++ b/web/i18n/zh-Hans/billing.ts @@ -184,6 +184,7 @@ const translation = { fullTipLine2: '标注更多对话。', quotaTitle: '标注的配额', }, + teamMembers: '团队成员', } export default translation diff --git a/web/i18n/zh-Hans/dataset-creation.ts b/web/i18n/zh-Hans/dataset-creation.ts index e3ca478f40..72e2511bd4 100644 --- a/web/i18n/zh-Hans/dataset-creation.ts +++ b/web/i18n/zh-Hans/dataset-creation.ts @@ -100,6 +100,10 @@ const translation = { scrapTimeInfo: '总共在 {{time}}秒 内抓取了 {{total}} 个页面', preview: '预览', maxDepthTooltip: '相对于输入 URL 的最大抓取深度。深度0仅抓取输入 URL 本身的页面,深度1抓取输入 URL 及其后的一层目录(一个 /),依此类推。', + watercrawlDocLink: '从网站同步', + watercrawlDoc: 'Watercrawl 文档', + configureWatercrawl: '配置水爬行', + watercrawlTitle: '使用Watercrawl提取网页内容', }, }, stepTwo: { diff --git a/web/i18n/zh-Hans/education.ts b/web/i18n/zh-Hans/education.ts index 6bfcd9177c..9d27698346 100644 --- a/web/i18n/zh-Hans/education.ts +++ b/web/i18n/zh-Hans/education.ts @@ -42,7 +42,6 @@ const translation = { rejectTitle: '您的 Dify 教育版认证已被拒绝', rejectContent: '非常遗憾,您无法使用此电子邮件以获得教育版认证资格,也无法领取 Dify Professional 版的 100% 独家优惠券。', emailLabel: '您当前的邮箱', - } export default translation diff --git a/web/i18n/zh-Hans/time.ts b/web/i18n/zh-Hans/time.ts index 8a223d9dd1..5158a710b5 100644 --- a/web/i18n/zh-Hans/time.ts +++ b/web/i18n/zh-Hans/time.ts @@ -26,6 +26,7 @@ const translation = { now: '此刻', ok: '确定', cancel: '取消', + pickDate: '选择日期', }, title: { pickTime: '选择时间', diff --git a/web/i18n/zh-Hant/app.ts b/web/i18n/zh-Hant/app.ts index 44412bfcca..f49adc84bc 100644 --- a/web/i18n/zh-Hant/app.ts +++ b/web/i18n/zh-Hant/app.ts @@ -158,6 +158,10 @@ const translation = { title: '奧皮克', description: 'Opik 是一個用於評估、測試和監控 LLM 應用程式的開源平臺。', }, + weave: { + title: '編織', + description: 'Weave 是一個開源平台,用於評估、測試和監控大型語言模型應用程序。', + }, }, answerIcon: { descriptionInExplore: '是否使用 WebApp 圖示在 Explore 中取代 🤖', @@ -193,6 +197,17 @@ const translation = { params: '應用程式參數', label: '應用程式', }, + structOutput: { + moreFillTip: '顯示最多10層的嵌套', + required: '必需的', + LLMResponse: 'LLM 回應', + structured: '結構化的', + configure: '配置', + modelNotSupported: '模型不支持', + modelNotSupportedTip: '當前模型不支持此功能,並自動降級為提示注入。', + structuredTip: '結構化輸出是一項功能,確保模型始終生成符合您提供的 JSON 架構的響應。', + notConfiguredTip: '結構化輸出尚未配置', + }, } export default translation diff --git a/web/i18n/zh-Hant/billing.ts b/web/i18n/zh-Hant/billing.ts index 208102c5be..f3ce5ec79c 100644 --- a/web/i18n/zh-Hant/billing.ts +++ b/web/i18n/zh-Hant/billing.ts @@ -69,6 +69,7 @@ const translation = { messageRequest: { title: '訊息額度', tooltip: '為不同方案提供基於 OpenAI 模型的訊息響應額度。', + titlePerMonth: '{{count,number}} 消息/月', }, annotatedResponse: { title: '標註回覆數', @@ -77,27 +78,94 @@ const translation = { 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次命中測試,他們的工作區將在接下來的一分鐘內暫時禁止執行以下操作:數據集的創建、刪除、更新以及文檔上傳或修改。', }, plans: { sandbox: { name: 'Sandbox', description: '200次 GPT 免費試用', includesTitle: '包括:', + for: '核心功能免費試用', }, professional: { name: 'Professional', description: '讓個人和小團隊能夠以經濟實惠的方式釋放更多能力。', includesTitle: 'Sandbox 計劃中的一切,加上:', + for: '適合獨立開發者/小型團隊', }, team: { name: 'Team', description: '協作無限制並享受頂級效能。', includesTitle: 'Professional 計劃中的一切,加上:', + for: '適用於中型團隊', }, enterprise: { name: 'Enterprise', description: '獲得大規模關鍵任務系統的完整功能和支援。', includesTitle: 'Team 計劃中的一切,加上:', + features: { + 1: '商業許可證授權', + 6: '先進安全與控制', + 3: '多個工作區及企業管理', + 2: '專屬企業功能', + 4: '單一登入', + 8: '專業技術支援', + 0: '企業級可擴展部署解決方案', + 7: 'Dify 官方的更新和維護', + 5: '由 Dify 合作夥伴協商的服務水平協議', + }, + price: '自訂', + btnText: '聯繫銷售', + priceTip: '年度計費のみ', + for: '適用於大規模團隊', + }, + community: { + features: { + 0: '所有核心功能均在公共存儲庫下釋出', + 2: '遵循 Dify 開源許可證', + 1: '單一工作區域', + }, + includesTitle: '免費功能:', + btnText: '開始使用社區', + name: '社區', + for: '適用於個別用戶、小型團隊或非商業項目', + description: '適用於個別用戶、小型團隊或非商業項目', + price: '免費', + }, + premium: { + features: { + 2: '網頁應用程序標誌及品牌自定義', + 0: '各種雲端服務提供商的自我管理可靠性', + 1: '單一工作區域', + 3: '優先電子郵件及聊天支持', + }, + for: '適用於中型組織和團隊', + comingSoon: '微軟Azure與Google Cloud支持即將推出', + priceTip: '根據雲端市場', + btnText: '獲取高級版在', + name: '高級', + description: '適用於中型組織和團隊', + price: '可擴展的', + includesTitle: '來自社群的一切,加上:', }, }, vectorSpace: { @@ -107,12 +175,26 @@ const translation = { apps: { fullTipLine1: '升級您的套餐以', fullTipLine2: '構建更多的程式。', + fullTip1: '升級以創建更多應用程序', + fullTip2des: '建議清除不活躍的應用程式以釋放使用空間,或聯繫我們。', + contactUs: '聯繫我們', + fullTip1des: '您已達到此計劃建構應用程序的限制', + fullTip2: '計劃限制已達', }, annotatedResponse: { fullTipLine1: '升級您的套餐以', fullTipLine2: '標註更多對話。', quotaTitle: '標註的配額', }, + usagePage: { + documentsUploadQuota: '文件上傳配額', + vectorSpaceTooltip: '使用高品質索引模式的文件將消耗知識數據存儲資源。當知識數據存儲達到限制後,將不會上傳新文件。', + annotationQuota: '註解配額', + vectorSpace: '知識數據儲存', + buildApps: '建構應用程式', + teamMembers: '團隊成員', + }, + teamMembers: '團隊成員', } export default translation diff --git a/web/i18n/zh-Hant/common.ts b/web/i18n/zh-Hant/common.ts index cf15a00d61..84b7bc53c2 100644 --- a/web/i18n/zh-Hant/common.ts +++ b/web/i18n/zh-Hant/common.ts @@ -54,6 +54,10 @@ const translation = { viewDetails: '查看詳情', in: '在', copied: '複製', + more: '更多', + downloadSuccess: '下載完成。', + downloadFailed: '下載失敗。請稍後再試。', + format: '格式', }, placeholder: { input: '請輸入', @@ -153,6 +157,9 @@ const translation = { community: '社群', about: '關於', logout: '登出', + support: '支持', + github: 'GitHub', + compliance: '合規', }, settings: { accountGroup: '賬戶', @@ -202,6 +209,9 @@ const translation = { feedbackLabel: '告訴我們您刪除帳戶的原因?', feedbackPlaceholder: '自選', sendVerificationButton: '發送驗證碼', + workspaceName: '工作區名稱', + workspaceIcon: '工作區域圖示', + editWorkspaceInfo: '編輯工作區資訊', }, members: { team: '團隊', @@ -543,6 +553,7 @@ const translation = { inputPlaceholder: '與 Bot 對話', thinking: '思維。。。', thought: '思想', + resend: '重新發送', }, promptEditor: { placeholder: '在這裡寫你的提示詞,輸入\'{\' 插入變數、輸入\'/\' 插入提示內容塊', @@ -637,6 +648,25 @@ const translation = { 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: '將您的圖片放在這裡,或', + }, } export default translation diff --git a/web/i18n/zh-Hant/custom.ts b/web/i18n/zh-Hant/custom.ts index 85b954c27a..bda56657f3 100644 --- a/web/i18n/zh-Hant/custom.ts +++ b/web/i18n/zh-Hant/custom.ts @@ -3,6 +3,8 @@ const translation = { upgradeTip: { prefix: '升級您的計劃以', suffix: '定製您的品牌。', + des: '升級您的計劃以自訂您的品牌', + title: '升級您的計劃', }, webapp: { title: '定製 WebApp 品牌', diff --git a/web/i18n/zh-Hant/dataset-creation.ts b/web/i18n/zh-Hant/dataset-creation.ts index 61737775dc..ca2c410ac6 100644 --- a/web/i18n/zh-Hant/dataset-creation.ts +++ b/web/i18n/zh-Hant/dataset-creation.ts @@ -83,6 +83,14 @@ const translation = { useSitemap: '使用網站地圖', jinaReaderDocLink: 'https://jina.ai/reader', useSitemapTooltip: '按照網站地圖對網站進行爬網。否則,Jina Reader 將根據頁面相關性反覆運算抓取,從而生成更少但品質更高的頁面。', + watercrawlDoc: 'Watercrawl 文檔', + configureFirecrawl: '配置 Firecrawl', + configureWatercrawl: '配置水爬行', + watercrawlTitle: '使用 Watercrawl 提取網頁內容', + watercrawlDocLink: 'https://docs.dify.ai/zh-TW/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-website', + waterCrawlNotConfiguredDescription: '配置 Watercrawl 並使用 API 金鑰來使用它。', + configureJinaReader: '配置 Jina Reader', + waterCrawlNotConfigured: 'Watercrawl 尚未配置', }, }, stepTwo: { @@ -200,6 +208,11 @@ const translation = { 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-settings.ts b/web/i18n/zh-Hant/dataset-settings.ts index 768937c168..3dce646e7e 100644 --- a/web/i18n/zh-Hant/dataset-settings.ts +++ b/web/i18n/zh-Hant/dataset-settings.ts @@ -25,6 +25,7 @@ const translation = { learnMore: '瞭解更多', description: '關於檢索方法。', longDescription: '關於檢索方法,您可以隨時在知識庫設定中更改此設定。', + method: '檢索方法', }, save: '儲存', permissionsInvitedMembers: '部分團隊成員', diff --git a/web/i18n/zh-Hant/dataset.ts b/web/i18n/zh-Hant/dataset.ts index 6a0d9cab21..ce4d63a54b 100644 --- a/web/i18n/zh-Hant/dataset.ts +++ b/web/i18n/zh-Hant/dataset.ts @@ -168,6 +168,54 @@ const translation = { preprocessDocument: '{{num}}預處理文件', allKnowledge: '所有知識', allKnowledgeDescription: '選擇以顯示此工作區中的所有知識。只有 Workspace 擁有者可以管理所有知識。', + metadata: { + createMetadata: { + type: '類型', + title: '新元數據', + back: '返回', + namePlaceholder: '添加元數據名稱', + name: '名字', + }, + checkName: { + empty: '元數據名稱不能為空', + invalid: '元數據名稱只能包含小寫字母、數字和底線,並且必須以小寫字母開頭', + }, + 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: '嵌入模型無法使用。', } export default translation diff --git a/web/i18n/zh-Hant/education.ts b/web/i18n/zh-Hant/education.ts new file mode 100644 index 0000000000..9637324b85 --- /dev/null +++ b/web/i18n/zh-Hant/education.ts @@ -0,0 +1,47 @@ +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: '獲取教育證明', +} + +export default translation diff --git a/web/i18n/zh-Hant/explore.ts b/web/i18n/zh-Hant/explore.ts index 80dfe095dd..c0f4a51e30 100644 --- a/web/i18n/zh-Hant/explore.ts +++ b/web/i18n/zh-Hant/explore.ts @@ -37,6 +37,7 @@ const translation = { HR: '人力資源', Agent: '代理', Workflow: '工作流', + Entertainment: '娛樂', }, } diff --git a/web/i18n/zh-Hant/plugin.ts b/web/i18n/zh-Hant/plugin.ts index 1f71611265..03f6ece7e5 100644 --- a/web/i18n/zh-Hant/plugin.ts +++ b/web/i18n/zh-Hant/plugin.ts @@ -180,6 +180,8 @@ const translation = { viewMore: '查看更多', difyMarketplace: 'Dify 市場', pluginsResult: '{{num}} 個結果', + verifiedTip: '由Dify驗證', + partnerTip: '由 Dify 合作夥伴驗證', }, task: { installingWithError: '安裝 {{installingLength}} 個插件,{{successLength}} 成功,{{errorLength}} 失敗', @@ -204,6 +206,10 @@ const translation = { endpointsEnabled: '{{num}} 組已啟用端點', fromMarketplace: '從 Marketplace', searchCategories: '搜索類別', + metadata: { + title: '插件', + }, + difyVersionNotCompatible: '當前的 Dify 版本與此插件不兼容,請升級至所需的最低版本:{{minimalDifyVersion}}', } export default translation diff --git a/web/i18n/zh-Hant/share-app.ts b/web/i18n/zh-Hant/share-app.ts index 67355ac399..bf81582d58 100644 --- a/web/i18n/zh-Hant/share-app.ts +++ b/web/i18n/zh-Hant/share-app.ts @@ -28,6 +28,10 @@ const translation = { temporarySystemIssue: '抱歉,臨時系統問題。', expand: '展開', collapse: '摺疊', + newChatTip: '已經在一個新聊天中', + chatSettingsTitle: '新的聊天設置', + chatFormTip: '聊天設定在聊天開始後無法修改。', + viewChatSettings: '查看聊天設定', }, generation: { tabs: { @@ -66,6 +70,8 @@ const translation = { moreThanMaxLengthLine: '第 {{rowIndex}} 行: {{varName}}值超過最大長度 {{maxLength}}', atLeastOne: '上傳檔案的內容不能少於一條', }, + execution: '執行', + executions: '{{num}} 執行', }, } diff --git a/web/i18n/zh-Hant/time.ts b/web/i18n/zh-Hant/time.ts index e2410dd34b..3be2511fcc 100644 --- a/web/i18n/zh-Hant/time.ts +++ b/web/i18n/zh-Hant/time.ts @@ -1,3 +1,37 @@ -const translation = {} +const translation = { + daysInWeek: { + Tue: '星期二', + Wed: '星期三', + Fri: '自由', + Mon: '懷念', + Sun: '太陽', + Sat: '星期六', + Thu: '星期四', + }, + months: { + January: '一月', + June: '六月', + March: '三月', + February: '二月', + August: '八月', + April: '四月', + May: '五月', + July: '七月', + November: '十一月', + December: '十二月', + September: '九月', + October: '十月', + }, + operation: { + cancel: '取消', + now: '現在', + ok: '好', + pickDate: '選擇日期', + }, + title: { + pickTime: '選擇時間', + }, + defaultPlaceholder: '選擇一個時間...', +} export default translation diff --git a/web/i18n/zh-Hant/workflow.ts b/web/i18n/zh-Hant/workflow.ts index 0930316047..9a4d7f25d8 100644 --- a/web/i18n/zh-Hant/workflow.ts +++ b/web/i18n/zh-Hant/workflow.ts @@ -106,6 +106,15 @@ const translation = { addFailureBranch: '添加 Fail Branch', loadMore: '載入更多工作流', noHistory: '無歷史記錄', + publishUpdate: '發布更新', + referenceVar: '參考變量', + exportSVG: '匯出為SVG', + exportPNG: '匯出為 PNG', + noExist: '沒有這個變數', + versionHistory: '版本歷史', + exitVersions: '退出版本', + exportImage: '匯出圖像', + exportJPEG: '匯出為JPEG', }, env: { envPanelTitle: '環境變數', @@ -205,6 +214,7 @@ const translation = { testRunIteration: '測試運行迭代', back: '返回', iteration: '迭代', + loop: '循環', }, tabs: { 'searchBlock': '搜索節點', @@ -245,6 +255,7 @@ const translation = { 'agent': '代理', 'loop-start': '循環開始', 'loop': '循環', + 'loop-end': '退出循環', }, blocksAbout: { 'start': '定義一個 workflow 流程啟動的參數', @@ -265,6 +276,8 @@ const translation = { 'document-extractor': '用於將上傳的文件解析為 LLM 易於理解的文字內容。', 'list-operator': '用於篩選或排序陣列內容。', 'agent': '調用大型語言模型來回答問題或處理自然語言', + 'loop-end': '等同於「中斷」。這個節點沒有配置項目。當循環體達到這個節點時,循環終止。', + 'loop': '執行邏輯迴圈,直到滿足終止條件或達到最大迴圈次數。', }, operator: { zoomIn: '放大', @@ -406,6 +419,34 @@ const translation = { 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: '這是生成的結果。如果您不滿意,可以回去修改您的提示。', + }, }, knowledgeRetrieval: { queryVariable: '查詢變量', @@ -418,6 +459,33 @@ const translation = { url: '分段鏈接', metadata: '其他元數據', }, + metadata: { + options: { + disabled: { + subTitle: '不啟用元數據過濾', + title: '禁用', + }, + automatic: { + title: '自動的', + subTitle: '根據用戶查詢自動生成元數據過濾條件', + desc: '根據查詢變數自動生成元數據過濾條件', + }, + manual: { + title: '手動', + subTitle: '手動添加元數據過濾條件', + }, + }, + panel: { + add: '添加條件', + datePlaceholder: '選擇一個時間...', + search: '搜尋元數據', + conditions: '條件', + title: '元數據過濾條件', + select: '選擇變數...', + placeholder: '輸入數值', + }, + title: '元數據過濾', + }, }, http: { inputVars: '輸入變量', @@ -507,6 +575,8 @@ const translation = { 'in': '在', 'not in': '不在', 'not exists': '不存在', + 'after': '之後', + 'before': '之前', }, enterValue: '輸入值', addCondition: '添加條件', @@ -522,6 +592,7 @@ const translation = { }, select: '選擇', addSubVariable: '子變數', + condition: '條件', }, variableAssigner: { title: '變量賦值', @@ -770,6 +841,38 @@ const translation = { pluginNotInstalled: '此外掛程式未安裝', notAuthorized: '未授權', }, + 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: '刪除循環節點嗎?', + }, }, tracing: { stopBy: '由{{user}}終止', @@ -781,6 +884,38 @@ const translation = { assignedVarsDescription: '分配的變數必須是可寫變數,例如', conversationVars: '對話變數', }, + versionHistory: { + filter: { + onlyShowNamedVersions: '僅顯示命名版本', + onlyYours: '只有妳的', + empty: '未找到匹配的版本歷史', + all: '所有', + reset: '重置過濾器', + }, + editField: { + releaseNotes: '發佈說明', + titleLengthLimit: '標題不能超過 {{limit}} 個字符', + releaseNotesLengthLimit: '發佈說明不能超過 {{limit}} 個字符', + title: '標題', + }, + action: { + updateFailure: '更新版本失敗', + restoreFailure: '無法恢復版本', + restoreSuccess: '恢復版本', + updateSuccess: '版本已更新', + deleteSuccess: '版本已刪除', + deleteFailure: '無法刪除版本', + }, + nameThisVersion: '給這個版本命名', + latest: '最新', + currentDraft: '當前草稿', + title: '版本', + editVersionInfo: '編輯版本信息', + restorationTip: '版本恢復後,當前草稿將被覆蓋。', + deletionTip: '刪除是不可逆的,請確認。', + releaseNotesPlaceholder: '描述發生了什麼變化', + defaultName: '未命名版本', + }, } export default translation