Initial commit

This commit is contained in:
2025-10-14 14:17:21 +08:00
commit ac715a8b88
35011 changed files with 3834178 additions and 0 deletions

View File

@@ -0,0 +1,175 @@
# Internationalization (i18n)
## Introduction
This directory contains the internationalization (i18n) files for this project.
## File Structure
```
├── [ 24] README.md
├── [ 0] README_CN.md
├── [ 704] en-US
│   ├── [2.4K] app-annotation.ts
│   ├── [5.2K] app-api.ts
│   ├── [ 16K] app-debug.ts
│   ├── [2.1K] app-log.ts
│   ├── [5.3K] app-overview.ts
│   ├── [1.9K] app.ts
│   ├── [4.1K] billing.ts
│   ├── [ 17K] common.ts
│   ├── [ 859] custom.ts
│   ├── [5.7K] dataset-creation.ts
│   ├── [ 10K] dataset-documents.ts
│   ├── [ 761] dataset-hit-testing.ts
│   ├── [1.7K] dataset-settings.ts
│   ├── [2.0K] dataset.ts
│   ├── [ 941] explore.ts
│   ├── [ 52] layout.ts
│   ├── [2.3K] login.ts
│   ├── [ 52] register.ts
│   ├── [2.5K] share-app.ts
│   └── [2.8K] tools.ts
├── [1.6K] i18next-config.ts
├── [ 634] index.ts
├── [4.4K] language.ts
```
We use English as the default language. The i18n files are organized by language and then by module. For example, the English translation for the `app` module is in `en-US/app.ts`.
If you want to add a new language or modify an existing translation, you can create a new file for the language or modify the existing file. The file name should be the language code (e.g., `zh-CN` for Chinese) and the file extension should be `.ts`.
For example, if you want to add french translation, you can create a new folder `fr-FR` and add the translation files in it.
By default we will use `LanguagesSupported` to determine which languages are supported. For example, in login page and settings page, we will use `LanguagesSupported` to determine which languages are supported and display them in the language selection dropdown.
## Example
1. Create a new folder for the new language.
```
cp -r en-US fr-FR
```
2. Modify the translation files in the new folder.
3. Add type to new language in the `language.ts` file.
```typescript
export type I18nText = {
'en-US': string
'zh-Hans': string
'pt-BR': string
'es-ES': string
'fr-FR': string
'de-DE': string
'ja-JP': string
'ko-KR': string
'ru-RU': string
'it-IT': string
'uk-UA': string
'YOUR_LANGUAGE_CODE': string
}
```
4. Add the new language to the `language.json` file.
```typescript
export const languages = [
{
value: 'en-US',
name: 'English(United States)',
example: 'Hello, Dify!',
supported: true,
},
{
value: 'zh-Hans',
name: '简体中文',
example: '你好Dify',
supported: true,
},
{
value: 'pt-BR',
name: 'Português(Brasil)',
example: 'Olá, Dify!',
supported: true,
},
{
value: 'es-ES',
name: 'Español(España)',
example: 'Saluton, Dify!',
supported: false,
},
{
value: 'fr-FR',
name: 'Français(France)',
example: 'Bonjour, Dify!',
supported: false,
},
{
value: 'de-DE',
name: 'Deutsch(Deutschland)',
example: 'Hallo, Dify!',
supported: false,
},
{
value: 'ja-JP',
name: '日本語(日本)',
example: 'こんにちは、Dify!',
supported: false,
},
{
value: 'ko-KR',
name: '한국어(대한민국)',
example: '안녕, Dify!',
supported: true,
},
{
value: 'ru-RU',
name: 'Русский(Россия)',
example: ' Привет, Dify!',
supported: false,
},
{
value: 'it-IT',
name: 'Italiano(Italia)',
example: 'Ciao, Dify!',
supported: false,
},
{
value: 'th-TH',
name: 'ไทย(ประเทศไทย)',
example: 'สวัสดี Dify!',
supported: false,
},
{
value: 'id-ID',
name: 'Bahasa Indonesia',
example: 'Saluto, Dify!',
supported: false,
},
{
value: 'uk-UA',
name: 'Українська(Україна)',
example: 'Привет, Dify!',
supported: true,
},
// Add your language here 👇
...
// Add your language here 👆
]
```
5. Don't forget to mark the supported field as `true` if the language is supported.
6. Sometime you might need to do some changes in the server side. Please change this file as well. 👇
https://github.com/langgenius/dify/blob/61e4bbabaf2758354db4073cbea09fdd21a5bec1/api/constants/languages.py#L5
## Clean Up
That's it! You have successfully added a new language to the project. If you want to remove a language, you can simply delete the folder and remove the language from the `language.ts` file.
We have a list of languages that we support in the `language.ts` file. But some of them are not supported yet. So, they are marked as `false`. If you want to support a language, you can follow the steps above and mark the supported field as `true`.

View File

@@ -0,0 +1,100 @@
/* eslint-disable no-eval */
const fs = require('node:fs')
const path = require('node:path')
const transpile = require('typescript').transpile
const magicast = require('magicast')
const { parseModule, generateCode, loadFile } = magicast
const bingTranslate = require('bing-translate-api')
const { translate } = bingTranslate
const data = require('./languages.json')
const targetLanguage = 'en-US'
// https://github.com/plainheart/bing-translate-api/blob/master/src/met/lang.json
const languageKeyMap = data.languages.reduce((map, language) => {
if (language.supported) {
if (language.value === 'zh-Hans' || language.value === 'zh-Hant')
map[language.value] = language.value
else
map[language.value] = language.value.split('-')[0]
}
return map
}, {})
async function translateMissingKeyDeeply(sourceObj, targetObject, toLanguage) {
await Promise.all(Object.keys(sourceObj).map(async (key) => {
if (targetObject[key] === undefined) {
if (typeof sourceObj[key] === 'object') {
targetObject[key] = {}
await translateMissingKeyDeeply(sourceObj[key], targetObject[key], toLanguage)
}
else {
try {
const source = sourceObj[key]
if (!source) {
targetObject[key] = ''
return
}
// not support translate with '(' or ')'
if (source.includes('(') || source.includes(')'))
return
const { translation } = await translate(sourceObj[key], null, languageKeyMap[toLanguage])
targetObject[key] = translation
}
catch (e) {
console.error(`Error translating ${sourceObj[key]}(${key}) to ${toLanguage}`)
}
}
}
else if (typeof sourceObj[key] === 'object') {
targetObject[key] = targetObject[key] || {}
await translateMissingKeyDeeply(sourceObj[key], targetObject[key], toLanguage)
}
}))
}
async function autoGenTrans(fileName, toGenLanguage) {
const fullKeyFilePath = path.join(__dirname, targetLanguage, `${fileName}.ts`)
const toGenLanguageFilePath = path.join(__dirname, toGenLanguage, `${fileName}.ts`)
const fullKeyContent = eval(transpile(fs.readFileSync(fullKeyFilePath, 'utf8')))
// To keep object format and format it for magicast to work: const translation = { ... } => export default {...}
const readContent = await loadFile(toGenLanguageFilePath)
const { code: toGenContent } = generateCode(readContent)
const mod = await parseModule(`export default ${toGenContent.replace('export default translation', '').replace('const translation = ', '')}`)
const toGenOutPut = mod.exports.default
await translateMissingKeyDeeply(fullKeyContent, toGenOutPut, toGenLanguage)
const { code } = generateCode(mod)
const res = `const translation =${code.replace('export default', '')}
export default translation
`.replace(/,\n\n/g, ',\n').replace('};', '}')
fs.writeFileSync(toGenLanguageFilePath, res)
}
async function main() {
// const fileName = 'workflow'
// Promise.all(Object.keys(languageKeyMap).map(async (toLanguage) => {
// await autoGenTrans(fileName, toLanguage)
// }))
const files = fs
.readdirSync(path.join(__dirname, targetLanguage))
.map(file => file.replace(/\.ts/, ''))
.filter(f => f !== 'app-debug') // ast parse error in app-debug
await Promise.all(files.map(async (file) => {
await Promise.all(Object.keys(languageKeyMap).map(async (language) => {
try {
await autoGenTrans(file, language)
}
catch (e) {
console.error(`Error translating ${file} to ${language}`, e)
}
}))
}))
}
main()

View File

@@ -0,0 +1,79 @@
/* eslint-disable no-eval */
const fs = require('node:fs')
const path = require('node:path')
const transpile = require('typescript').transpile
const targetLanguage = 'en-US'
const data = require('./languages.json')
const languages = data.languages.filter(language => language.supported).map(language => language.value)
async function getKeysFromLanuage(language) {
return new Promise((resolve, reject) => {
const folderPath = path.join(__dirname, language)
let allKeys = []
fs.readdir(folderPath, (err, files) => {
if (err) {
console.error('Error reading folder:', err)
reject(err)
return
}
files.forEach((file) => {
const filePath = path.join(folderPath, file)
const fileName = file.replace(/\.[^/.]+$/, '') // Remove file extension
const camelCaseFileName = fileName.replace(/[-_](.)/g, (_, c) =>
c.toUpperCase(),
) // Convert to camel case
// console.log(camelCaseFileName)
const content = fs.readFileSync(filePath, 'utf8')
const translation = eval(transpile(content))
// console.log(translation)
const keys = Object.keys(translation)
const nestedKeys = []
const iterateKeys = (obj, prefix = '') => {
for (const key in obj) {
const nestedKey = prefix ? `${prefix}.${key}` : key
nestedKeys.push(nestedKey)
if (typeof obj[key] === 'object')
iterateKeys(obj[key], nestedKey)
}
}
iterateKeys(translation)
allKeys = [...keys, ...nestedKeys].map(
key => `${camelCaseFileName}.${key}`,
)
})
resolve(allKeys)
})
})
}
async function main() {
const compareKeysCount = async () => {
const targetKeys = await getKeysFromLanuage(targetLanguage)
const languagesKeys = await Promise.all(languages.map(language => getKeysFromLanuage(language)))
const keysCount = languagesKeys.map(keys => keys.length)
const targetKeysCount = targetKeys.length
const comparison = languages.reduce((result, language, index) => {
const languageKeysCount = keysCount[index]
const difference = targetKeysCount - languageKeysCount
result[language] = difference
return result
}, {})
console.log(comparison)
// Print missing keys
languages.forEach((language, index) => {
const missingKeys = targetKeys.filter(key => !languagesKeys[index].includes(key))
console.log(`Missing keys in ${language}:`, missingKeys)
})
}
compareKeysCount()
}
main()

View File

@@ -0,0 +1,87 @@
const translation = {
title: 'Anmerkungen',
name: 'Antwort Anmerkung',
editBy: 'Antwort bearbeitet von {{author}}',
noData: {
title: 'Keine Anmerkungen',
description: 'Sie können Anmerkungen während des App-Debuggings bearbeiten oder hier Anmerkungen in großen Mengen importieren für eine hochwertige Antwort.',
},
table: {
header: {
question: 'Frage',
answer: 'Antwort',
createdAt: 'erstellt am',
hits: 'Treffer',
actions: 'Aktionen',
addAnnotation: 'Anmerkung hinzufügen',
bulkImport: 'Massenimport',
bulkExport: 'Massenexport',
clearAll: 'Alle Anmerkungen löschen',
},
},
editModal: {
title: 'Antwort Anmerkung bearbeiten',
queryName: 'Benutzeranfrage',
answerName: 'Geschichtenerzähler Bot',
yourAnswer: 'Ihre Antwort',
answerPlaceholder: 'Geben Sie hier Ihre Antwort ein',
yourQuery: 'Ihre Anfrage',
queryPlaceholder: 'Geben Sie hier Ihre Anfrage ein',
removeThisCache: 'Diese Anmerkung entfernen',
createdAt: 'Erstellt am',
},
addModal: {
title: 'Antwort Anmerkung hinzufügen',
queryName: 'Frage',
answerName: 'Antwort',
answerPlaceholder: 'Antwort hier eingeben',
queryPlaceholder: 'Anfrage hier eingeben',
createNext: 'Eine weitere annotierte Antwort hinzufügen',
},
batchModal: {
title: 'Massenimport',
csvUploadTitle: 'Ziehen Sie Ihre CSV-Datei hierher oder ',
browse: 'durchsuchen',
tip: 'Die CSV-Datei muss der folgenden Struktur entsprechen:',
question: 'Frage',
answer: 'Antwort',
contentTitle: 'Inhaltsabschnitt',
content: 'Inhalt',
template: 'Laden Sie die Vorlage hier herunter',
cancel: 'Abbrechen',
run: 'Batch ausführen',
runError: 'Batch-Ausführung fehlgeschlagen',
processing: 'In Batch-Verarbeitung',
completed: 'Import abgeschlossen',
error: 'Importfehler',
ok: 'OK',
},
errorMessage: {
answerRequired: 'Antwort erforderlich',
queryRequired: 'Frage erforderlich',
},
viewModal: {
annotatedResponse: 'Antwort Anmerkung',
hitHistory: 'Trefferhistorie',
hit: 'Treffer',
hits: 'Treffer',
noHitHistory: 'Keine Trefferhistorie',
},
hitHistoryTable: {
query: 'Anfrage',
match: 'Übereinstimmung',
response: 'Antwort',
source: 'Quelle',
score: 'Punktzahl',
time: 'Zeit',
},
initSetup: {
title: 'Initialeinrichtung Antwort Anmerkung',
configTitle: 'Einrichtung Antwort Anmerkung',
confirmBtn: 'Speichern & Aktivieren',
configConfirmBtn: 'Speichern',
},
embeddingModelSwitchTip: 'Anmerkungstext-Vektorisierungsmodell, das Wechseln von Modellen wird neu eingebettet, was zusätzliche Kosten verursacht.',
}
export default translation

View File

@@ -0,0 +1,85 @@
const translation = {
apiServer: 'API Server',
apiKey: 'API Schlüssel',
status: 'Status',
disabled: 'Deaktiviert',
ok: 'In Betrieb',
copy: 'Kopieren',
copied: 'Kopiert',
play: 'Abspielen',
pause: 'Pause',
playing: 'Wiedergabe',
merMaid: {
rerender: 'Neu rendern',
},
never: 'Nie',
apiKeyModal: {
apiSecretKey: 'API Geheimschlüssel',
apiSecretKeyTips: 'Um Missbrauch der API zu verhindern, schützen Sie Ihren API Schlüssel. Vermeiden Sie es, ihn als Klartext im Frontend-Code zu verwenden. :)',
createNewSecretKey: 'Neuen Geheimschlüssel erstellen',
secretKey: 'Geheimschlüssel',
created: 'ERSTELLT',
lastUsed: 'ZULETZT VERWENDET',
generateTips: 'Bewahren Sie diesen Schlüssel an einem sicheren und zugänglichen Ort auf.',
},
actionMsg: {
deleteConfirmTitle: 'Diesen Geheimschlüssel löschen?',
deleteConfirmTips: 'Diese Aktion kann nicht rückgängig gemacht werden.',
ok: 'OK',
},
completionMode: {
title: 'Completion App API',
info: 'Für die Erzeugung von hochwertigem Text, wie z.B. Artikel, Zusammenfassungen und Übersetzungen, verwenden Sie die Completion-Messages API mit Benutzereingaben. Die Texterzeugung basiert auf den Modellparametern und Vorlagen für Aufforderungen in Dify Prompt Engineering.',
createCompletionApi: 'Completion Nachricht erstellen',
createCompletionApiTip: 'Erstellen Sie eine Completion Nachricht, um den Frage-Antwort-Modus zu unterstützen.',
inputsTips: '(Optional) Geben Sie Benutzereingabefelder als Schlüssel-Wert-Paare an, die Variablen in Prompt Eng. entsprechen. Schlüssel ist der Variablenname, Wert ist der Parameterwert. Wenn der Feldtyp Select ist, muss der übermittelte Wert eine der voreingestellten Optionen sein.',
queryTips: 'Textinhalt der Benutzereingabe.',
blocking: 'Blockierender Typ, wartet auf die Fertigstellung der Ausführung und gibt Ergebnisse zurück. (Anfragen können unterbrochen werden, wenn der Prozess lang ist)',
streaming: 'Streaming Rückgaben. Implementierung der Streaming-Rückgabe basierend auf SSE (Server-Sent Events).',
messageFeedbackApi: 'Nachrichtenfeedback (Like)',
messageFeedbackApiTip: 'Bewerten Sie empfangene Nachrichten im Namen der Endbenutzer mit Likes oder Dislikes. Diese Daten sind auf der Seite Logs & Annotations sichtbar und werden für zukünftige Modellanpassungen verwendet.',
messageIDTip: 'Nachrichten-ID',
ratingTip: 'like oder dislike, null ist rückgängig machen',
parametersApi: 'Anwendungsparameterinformationen abrufen',
parametersApiTip: 'Abrufen konfigurierter Eingabeparameter, einschließlich Variablennamen, Feldnamen, Typen und Standardwerten. Typischerweise verwendet, um diese Felder in einem Formular anzuzeigen oder Standardwerte nach dem Laden des Clients auszufüllen.',
},
chatMode: {
title: 'Chat App API',
info: 'Für vielseitige Gesprächsanwendungen im Q&A-Format rufen Sie die chat-messages API auf, um einen Dialog zu initiieren. Führen Sie laufende Gespräche fort, indem Sie die zurückgegebene conversation_id übergeben. Antwortparameter und -vorlagen hängen von den Einstellungen in Dify Prompt Eng. ab.',
createChatApi: 'Chatnachricht erstellen',
createChatApiTip: 'Eine neue Konversationsnachricht erstellen oder einen bestehenden Dialog fortsetzen.',
inputsTips: '(Optional) Geben Sie Benutzereingabefelder als Schlüssel-Wert-Paare an, die Variablen in Prompt Eng. entsprechen. Schlüssel ist der Variablenname, Wert ist der Parameterwert. Wenn der Feldtyp Select ist, muss der übermittelte Wert eine der voreingestellten Optionen sein.',
queryTips: 'Inhalt der Benutzereingabe/Frage',
blocking: 'Blockierender Typ, wartet auf die Fertigstellung der Ausführung und gibt Ergebnisse zurück. (Anfragen können unterbrochen werden, wenn der Prozess lang ist)',
streaming: 'Streaming Rückgaben. Implementierung der Streaming-Rückgabe basierend auf SSE (Server-Sent Events).',
conversationIdTip: '(Optional) Konversations-ID: für erstmalige Konversation leer lassen; conversation_id aus dem Kontext übergeben, um den Dialog fortzusetzen.',
messageFeedbackApi: 'Nachrichtenfeedback des Endbenutzers, like',
messageFeedbackApiTip: 'Bewerten Sie empfangene Nachrichten im Namen der Endbenutzer mit Likes oder Dislikes. Diese Daten sind auf der Seite Logs & Annotations sichtbar und werden für zukünftige Modellanpassungen verwendet.',
messageIDTip: 'Nachrichten-ID',
ratingTip: 'like oder dislike, null ist rückgängig machen',
chatMsgHistoryApi: 'Chatverlaufsnachricht abrufen',
chatMsgHistoryApiTip: 'Die erste Seite gibt die neuesten `limit` Einträge in umgekehrter Reihenfolge zurück.',
chatMsgHistoryConversationIdTip: 'Konversations-ID',
chatMsgHistoryFirstId: 'ID des ersten Chat-Datensatzes auf der aktuellen Seite. Standardmäßig keiner.',
chatMsgHistoryLimit: 'Wie viele Chats in einer Anfrage zurückgegeben werden',
conversationsListApi: 'Konversationsliste abrufen',
conversationsListApiTip: 'Ruft die Sitzungsliste des aktuellen Benutzers ab. Standardmäßig werden die letzten 20 Sitzungen zurückgegeben.',
conversationsListFirstIdTip: 'Die ID des letzten Datensatzes auf der aktuellen Seite, standardmäßig keine.',
conversationsListLimitTip: 'Wie viele Chats in einer Anfrage zurückgegeben werden',
conversationRenamingApi: 'Konversation umbenennen',
conversationRenamingApiTip: 'Konversationen umbenennen; der Name wird in Mehrsitzungs-Client-Schnittstellen angezeigt.',
conversationRenamingNameTip: 'Neuer Name',
parametersApi: 'Anwendungsparameterinformationen abrufen',
parametersApiTip: 'Abrufen konfigurierter Eingabeparameter, einschließlich Variablennamen, Feldnamen, Typen und Standardwerten. Typischerweise verwendet, um diese Felder in einem Formular anzuzeigen oder Standardwerte nach dem Laden des Clients auszufüllen.',
},
develop: {
requestBody: 'Anfragekörper',
pathParams: 'Pfadparameter',
query: 'Anfrage',
toc: 'Inhalt',
},
loading: 'Laden',
regenerate: 'Erneuern',
}
export default translation

View File

@@ -0,0 +1,392 @@
const translation = {
pageTitle: {
line1: 'PROMPT',
line2: 'Engineering',
},
orchestrate: 'Orchestrieren',
promptMode: {
simple: 'Wechseln Sie in den Expertenmodus, um das gesamte PROMPT zu bearbeiten',
advanced: 'Expertenmodus',
switchBack: 'Zurückwechseln',
advancedWarning: {
title: 'Sie haben in den Expertenmodus gewechselt, und sobald Sie das PROMPT ändern, können Sie NICHT zum Basis-Modus zurückkehren.',
description: 'Im Expertenmodus können Sie das gesamte PROMPT bearbeiten.',
learnMore: 'Mehr erfahren',
ok: 'OK',
},
operation: {
addMessage: 'Nachricht hinzufügen',
},
contextMissing: 'Komponente fehlt, die Wirksamkeit des Prompts könnte schlecht sein.',
},
operation: {
applyConfig: 'Veröffentlichen',
resetConfig: 'Zurücksetzen',
debugConfig: 'Debuggen',
addFeature: 'Funktion hinzufügen',
automatic: 'Generieren',
stopResponding: 'Antworten stoppen',
agree: 'gefällt mir',
disagree: 'gefällt mir nicht',
cancelAgree: 'Gefällt mir zurücknehmen',
cancelDisagree: 'Gefällt mir nicht zurücknehmen',
userAction: 'Benutzer ',
},
notSetAPIKey: {
title: 'LLM-Anbieterschlüssel wurde nicht festgelegt',
trailFinished: 'Testversion beendet',
description: 'Der LLM-Anbieterschlüssel wurde nicht festgelegt und muss vor dem Debuggen festgelegt werden.',
settingBtn: 'Zu den Einstellungen gehen',
},
trailUseGPT4Info: {
title: 'Unterstützt derzeit kein gpt-4',
description: 'Um gpt-4 zu verwenden, bitte API-Schlüssel festlegen.',
},
feature: {
groupChat: {
title: 'Chatverbesserung',
description: 'Voreinstellungen für Konversationen zu Apps hinzufügen kann die Benutzererfahrung verbessern.',
},
groupExperience: {
title: 'Erfahrungsverbesserung',
},
conversationOpener: {
title: 'Gesprächseröffnungen',
description: 'In einer Chat-App wird der erste Satz, den die KI aktiv an den Benutzer richtet, üblicherweise als Begrüßung verwendet.',
},
suggestedQuestionsAfterAnswer: {
title: 'Nachfolgefragen',
description: 'Das Einrichten von Vorschlägen für nächste Fragen kann den Chat für Benutzer verbessern.',
resDes: '3 Vorschläge für die nächste Benutzerfrage.',
tryToAsk: 'Versuchen Sie zu fragen',
},
moreLikeThis: {
title: 'Mehr davon',
description: 'Mehrere Texte gleichzeitig generieren und dann bearbeiten und weiter generieren',
generateNumTip: 'Anzahl der generierten Texte pro Durchgang',
tip: 'Die Verwendung dieser Funktion verursacht zusätzliche Token-Kosten',
},
speechToText: {
title: 'Sprache zu Text',
description: 'Einmal aktiviert, können Sie Spracheingabe verwenden.',
resDes: 'Spracheingabe ist aktiviert',
},
textToSpeech: {
title: 'Text zu Sprache',
description: 'Einmal aktiviert, kann Text in Sprache umgewandelt werden.',
resDes: 'Text zu Audio ist aktiviert',
},
citation: {
title: 'Zitate und Urheberangaben',
description: 'Einmal aktiviert, zeigen Sie das Quelldokument und den zugeordneten Abschnitt des generierten Inhalts an.',
resDes: 'Zitate und Urheberangaben sind aktiviert',
},
annotation: {
title: 'Annotation Antwort',
description: 'Sie können manuell hochwertige Antworten zum Cache hinzufügen für bevorzugte Übereinstimmung mit ähnlichen Benutzerfragen.',
resDes: 'Annotationsantwort ist aktiviert',
scoreThreshold: {
title: 'Schwellenwert',
description: 'Wird verwendet, um den Ähnlichkeitsschwellenwert für die Annotation Antwort einzustellen.',
easyMatch: 'Einfache Übereinstimmung',
accurateMatch: 'Genaue Übereinstimmung',
},
matchVariable: {
title: 'Übereinstimmungsvariable',
choosePlaceholder: 'Wählen Sie Übereinstimmungsvariable',
},
cacheManagement: 'Annotationen',
cached: 'Annotiert',
remove: 'Entfernen',
removeConfirm: 'Diese Annotation löschen?',
add: 'Annotation hinzufügen',
edit: 'Annotation bearbeiten',
},
dataSet: {
title: 'Kontext',
noData: 'Sie können Wissen als Kontext importieren',
words: 'Wörter',
textBlocks: 'Textblöcke',
selectTitle: 'Wählen Sie Referenzwissen',
selected: 'Wissen ausgewählt',
noDataSet: 'Kein Wissen gefunden',
toCreate: 'Erstellen gehen',
notSupportSelectMulti: 'Unterstützt derzeit nur ein Wissen',
queryVariable: {
title: 'Abfragevariable',
tip: 'Diese Variable wird als Eingabe für die Kontextabfrage verwendet, um kontextbezogene Informationen in Bezug auf die Eingabe dieser Variable zu erhalten.',
choosePlaceholder: 'Wählen Sie Abfragevariable',
noVar: 'Keine Variablen',
noVarTip: 'Bitte erstellen Sie eine Variable im Variablenbereich',
unableToQueryDataSet: 'Konnte das Wissen nicht abfragen',
unableToQueryDataSetTip: 'Konnte das Wissen nicht erfolgreich abfragen, bitte wählen Sie eine Kontextabfragevariable im Kontextbereich.',
ok: 'OK',
contextVarNotEmpty: 'Kontextabfragevariable darf nicht leer sein',
deleteContextVarTitle: 'Variable „{{varName}}“ löschen?',
deleteContextVarTip: 'Diese Variable wurde als Kontextabfragevariable festgelegt und deren Entfernung wird die normale Verwendung des Wissens beeinträchtigen. Wenn Sie sie trotzdem löschen müssen, wählen Sie sie bitte im Kontextbereich erneut.',
},
},
tools: {
title: 'Werkzeuge',
tips: 'Werkzeuge bieten eine standardisierte API-Aufrufmethode, die Benutzereingaben oder Variablen als Anfrageparameter für die Abfrage externer Daten als Kontext verwendet.',
toolsInUse: '{{count}} Werkzeuge in Verwendung',
modal: {
title: 'Werkzeug',
toolType: {
title: 'Werkzeugtyp',
placeholder: 'Bitte wählen Sie den Werkzeugtyp',
},
name: {
title: 'Name',
placeholder: 'Bitte geben Sie den Namen ein',
},
variableName: {
title: 'Variablenname',
placeholder: 'Bitte geben Sie den Variablennamen ein',
},
},
},
conversationHistory: {
title: 'Konversationsverlauf',
description: 'Präfixnamen für Konversationsrollen festlegen',
tip: 'Der Konversationsverlauf ist nicht aktiviert, bitte fügen Sie <histories> im Prompt oben ein.',
learnMore: 'Mehr erfahren',
editModal: {
title: 'Konversationsrollennamen bearbeiten',
userPrefix: 'Benutzerpräfix',
assistantPrefix: 'Assistentenpräfix',
},
},
toolbox: {
title: 'WERKZEUGKASTEN',
},
moderation: {
title: 'Inhaltsmoderation',
description: 'Sichern Sie die Ausgabe des Modells durch Verwendung der Moderations-API oder durch Pflege einer Liste sensibler Wörter.',
allEnabled: 'INHALT von EINGABE/AUSGABE aktiviert',
inputEnabled: 'INHALT von EINGABE aktiviert',
outputEnabled: 'INHALT von AUSGABE aktiviert',
modal: {
title: 'Einstellungen zur Inhaltsmoderation',
provider: {
title: 'Anbieter',
openai: 'OpenAI-Moderation',
openaiTip: {
prefix: 'OpenAI-Moderation erfordert einen konfigurierten OpenAI-API-Schlüssel in den ',
suffix: '.',
},
keywords: 'Schlüsselwörter',
},
keywords: {
tip: 'Jeweils eine pro Zeile, getrennt durch Zeilenumbrüche. Bis zu 100 Zeichen pro Zeile.',
placeholder: 'Jeweils eine pro Zeile, getrennt durch Zeilenumbrüche',
line: 'Zeile',
},
content: {
input: 'INHALT der EINGABE moderieren',
output: 'INHALT der AUSGABE moderieren',
preset: 'Voreingestellte Antworten',
placeholder: 'Inhalt der voreingestellten Antworten hier',
condition: 'Moderation von INHALT der EINGABE und AUSGABE mindestens eine aktiviert',
fromApi: 'Voreingestellte Antworten werden durch API zurückgegeben',
errorMessage: 'Voreingestellte Antworten dürfen nicht leer sein',
supportMarkdown: 'Markdown unterstützt',
},
openaiNotConfig: {
before: 'OpenAI-Moderation erfordert einen konfigurierten OpenAI-API-Schlüssel in den',
after: '',
},
},
},
},
resetConfig: {
title: 'Zurücksetzen bestätigen?',
message:
'Zurücksetzen verwirft Änderungen und stellt die zuletzt veröffentlichte Konfiguration wieder her.',
},
errorMessage: {
nameOfKeyRequired: 'Name des Schlüssels: {{key}} erforderlich',
valueOfVarRequired: '{{key}} Wert darf nicht leer sein',
queryRequired: 'Anfragetext ist erforderlich.',
waitForResponse:
'Bitte warten Sie auf die Antwort auf die vorherige Nachricht, um abzuschließen.',
waitForBatchResponse:
'Bitte warten Sie auf die Antwort auf die Stapelaufgabe, um abzuschließen.',
notSelectModel: 'Bitte wählen Sie ein Modell',
waitForImgUpload: 'Bitte warten Sie, bis das Bild hochgeladen ist',
},
chatSubTitle: 'Anweisungen',
completionSubTitle: 'Vor-Prompt',
promptTip:
'Prompts leiten KI-Antworten mit Anweisungen und Einschränkungen. Fügen Sie Variablen wie {{input}} ein. Dieses Prompt wird den Benutzern nicht angezeigt.',
formattingChangedTitle: 'Formatierung geändert',
formattingChangedText:
'Die Änderung der Formatierung wird den Debug-Bereich zurücksetzen, sind Sie sicher?',
variableTitle: 'Variablen',
variableTip:
'Benutzer füllen Variablen in einem Formular aus, automatisches Ersetzen von Variablen im Prompt.',
notSetVar: 'Variablen ermöglichen es Benutzern, Aufforderungswörter oder Eröffnungsbemerkungen einzuführen, wenn sie Formulare ausfüllen. Sie könnten versuchen, "{{input}}" im Prompt einzugeben.',
autoAddVar: 'Im Vor-Prompt referenzierte undefinierte Variablen, möchten Sie sie im Benutzereingabeformular hinzufügen?',
variableTable: {
key: 'Variablenschlüssel',
name: 'Name des Benutzereingabefelds',
optional: 'Optional',
type: 'Eingabetyp',
action: 'Aktionen',
typeString: 'String',
typeSelect: 'Auswählen',
},
varKeyError: {
canNoBeEmpty: '{{key}} ist erforderlich',
tooLong: '{{key}} zu lang. Darf nicht länger als 30 Zeichen sein',
notValid: '{{key}} ist ungültig. Darf nur Buchstaben, Zahlen und Unterstriche enthalten',
notStartWithNumber: '{{key}} darf nicht mit einer Zahl beginnen',
keyAlreadyExists: '{{key}} existiert bereits',
},
otherError: {
promptNoBeEmpty: 'Prompt darf nicht leer sein',
historyNoBeEmpty: 'Konversationsverlauf muss im Prompt gesetzt sein',
queryNoBeEmpty: 'Anfrage muss im Prompt gesetzt sein',
},
variableConfig: {
modalTitle: 'Feldeinstellungen',
description: 'Einstellung für Variable {{varName}}',
fieldType: 'Feldtyp',
string: 'Kurztext',
paragraph: 'Absatz',
select: 'Auswählen',
notSet: 'Nicht gesetzt, versuchen Sie, {{input}} im Vor-Prompt zu tippen',
stringTitle: 'Formular-Textfeldoptionen',
maxLength: 'Maximale Länge',
options: 'Optionen',
addOption: 'Option hinzufügen',
apiBasedVar: 'API-basierte Variable',
},
vision: {
name: 'Vision',
description: 'Vision zu aktivieren ermöglicht es dem Modell, Bilder aufzunehmen und Fragen dazu zu beantworten.',
settings: 'Einstellungen',
visionSettings: {
title: 'Vision-Einstellungen',
resolution: 'Auflösung',
resolutionTooltip: `Niedrige Auflösung ermöglicht es dem Modell, eine Bildversion mit niedriger Auflösung von 512 x 512 zu erhalten und das Bild mit einem Budget von 65 Tokens darzustellen. Dies ermöglicht schnellere Antworten des API und verbraucht weniger Eingabetokens für Anwendungsfälle, die kein hohes Detail benötigen.
\n
Hohe Auflösung ermöglicht zunächst, dass das Modell das Bild mit niedriger Auflösung sieht und dann detaillierte Ausschnitte von Eingabebildern als 512px Quadrate basierend auf der Größe des Eingabebildes erstellt. Jeder der detaillierten Ausschnitte verwendet das doppelte Token-Budget für insgesamt 129 Tokens.`,
high: 'Hoch',
low: 'Niedrig',
uploadMethod: 'Upload-Methode',
both: 'Beides',
localUpload: 'Lokaler Upload',
url: 'URL',
uploadLimit: 'Upload-Limit',
},
},
voice: {
name: 'Stimme',
defaultDisplay: 'Standardstimme',
description: 'Text-zu-Sprache-Stimmeinstellungen',
settings: 'Einstellungen',
voiceSettings: {
title: 'Stimmeinstellungen',
language: 'Sprache',
resolutionTooltip: 'Text-zu-Sprache unterstützte Sprache.',
voice: 'Stimme',
},
},
openingStatement: {
title: 'Gesprächseröffner',
add: 'Hinzufügen',
writeOpener: 'Eröffnung schreiben',
placeholder: 'Schreiben Sie hier Ihre Eröffnungsnachricht, Sie können Variablen verwenden, versuchen Sie {{Variable}} zu tippen.',
openingQuestion: 'Eröffnungsfragen',
noDataPlaceHolder:
'Den Dialog mit dem Benutzer zu beginnen, kann helfen, in konversationellen Anwendungen eine engere Verbindung mit ihnen herzustellen.',
varTip: 'Sie können Variablen verwenden, versuchen Sie {{Variable}} zu tippen',
tooShort: 'Für die Erzeugung von Eröffnungsbemerkungen für das Gespräch werden mindestens 20 Wörter des Anfangsprompts benötigt.',
notIncludeKey: 'Das Anfangsprompt enthält nicht die Variable: {{key}}. Bitte fügen Sie sie dem Anfangsprompt hinzu.',
},
modelConfig: {
model: 'Modell',
setTone: 'Ton der Antworten festlegen',
title: 'Modell und Parameter',
modeType: {
chat: 'Chat',
completion: 'Vollständig',
},
},
inputs: {
title: 'Debug und Vorschau',
noPrompt: 'Versuchen Sie, etwas Prompt im Vor-Prompt-Eingabefeld zu schreiben',
userInputField: 'Benutzereingabefeld',
noVar: 'Füllen Sie den Wert der Variable aus, der bei jedem Start einer neuen Sitzung automatisch im Prompt ersetzt wird.',
chatVarTip:
'Füllen Sie den Wert der Variable aus, der bei jedem Start einer neuen Sitzung automatisch im Prompt ersetzt wird',
completionVarTip:
'Füllen Sie den Wert der Variable aus, der bei jeder Einreichung einer Frage automatisch in den Prompt-Wörtern ersetzt wird.',
previewTitle: 'Prompt-Vorschau',
queryTitle: 'Anfrageinhalt',
queryPlaceholder: 'Bitte geben Sie den Anfragetext ein.',
run: 'AUSFÜHREN',
},
result: 'Ausgabetext',
datasetConfig: {
settingTitle: 'Abfragen-Einstellungen',
retrieveOneWay: {
title: 'N-zu-1-Abfrage',
description: 'Basierend auf Benutzerabsicht und Beschreibungen des Wissens wählt der Agent autonom das beste Wissen für die Abfrage aus. Am besten für Anwendungen mit deutlichen, begrenzten Wissensgebieten.',
},
retrieveMultiWay: {
title: 'Mehrwegabfrage',
description: 'Basierend auf Benutzerabsicht werden Abfragen über alle Wissensbereiche hinweg durchgeführt, relevante Texte aus Mehrfachquellen abgerufen und die besten Ergebnisse, die der Benutzerabfrage entsprechen, nach einer Neubewertung ausgewählt. Konfiguration des Rerank-Modell-APIs erforderlich.',
},
rerankModelRequired: 'Rerank-Modell erforderlich',
params: 'Parameter',
top_k: 'Top K',
top_kTip: 'Wird verwendet, um Abschnitte zu filtern, die am ähnlichsten zu Benutzerfragen sind. Das System wird auch dynamisch den Wert von Top K anpassen, entsprechend max_tokens des ausgewählten Modells.',
score_threshold: 'Schwellenwert',
score_thresholdTip: 'Wird verwendet, um den Ähnlichkeitsschwellenwert für die Abschnittsfilterung einzustellen.',
retrieveChangeTip: 'Das Ändern des Indexmodus und des Abfragemodus kann Anwendungen beeinflussen, die mit diesem Wissen verbunden sind.',
},
debugAsSingleModel: 'Als Einzelmodell debuggen',
debugAsMultipleModel: 'Als Mehrfachmodelle debuggen',
duplicateModel: 'Duplizieren',
publishAs: 'Veröffentlichen als',
assistantType: {
name: 'Assistententyp',
chatAssistant: {
name: 'Basisassistent',
description: 'Erstellen eines chatbasierten Assistenten mit einem Großsprachmodell',
},
agentAssistant: {
name: 'Agentenassistent',
description: 'Erstellen eines intelligenten Agenten, der autonom Werkzeuge wählen kann, um Aufgaben zu erfüllen',
},
},
agent: {
agentMode: 'Agentenmodus',
agentModeDes: 'Den Typ des Inferenzmodus für den Agenten festlegen',
agentModeType: {
ReACT: 'ReAct',
functionCall: 'Funktionsaufruf',
},
setting: {
name: 'Agenten-Einstellungen',
description: 'Agentenassistenten-Einstellungen ermöglichen die Festlegung des Agentenmodus und erweiterte Funktionen wie integrierte Prompts, nur verfügbar im Agententyp.',
maximumIterations: {
name: 'Maximale Iterationen',
description: 'Begrenzt die Anzahl der Iterationen, die ein Agentenassistent ausführen kann',
},
},
buildInPrompt: 'Eingebautes Prompt',
firstPrompt: 'Erstes Prompt',
nextIteration: 'Nächste Iteration',
promptPlaceholder: 'Schreiben Sie hier Ihr Prompt',
tools: {
name: 'Werkzeuge',
description: 'Die Verwendung von Werkzeugen kann die Fähigkeiten von LLM erweitern, z.B. das Internet durchsuchen oder wissenschaftliche Berechnungen durchführen',
enabled: 'Aktiviert',
},
},
}
export default translation

View File

@@ -0,0 +1,98 @@
const translation = {
title: 'Protokolle',
description: 'Die Protokolle zeichnen den Betriebsstatus der Anwendung auf, einschließlich Benutzereingaben und KI-Antworten.',
dateTimeFormat: 'MM/DD/YYYY hh:mm A',
table: {
header: {
updatedTime: 'Aktualisierungszeit',
time: 'Erstellungszeit',
endUser: 'Endbenutzer oder Konto',
input: 'Eingabe',
output: 'Ausgabe',
summary: 'Titel',
messageCount: 'Nachrichtenzahl',
userRate: 'Benutzerbewertung',
adminRate: 'Op. Bewertung',
user: 'Endbenutzer oder Konto',
status: 'STATUS',
runtime: 'LAUFZEIT',
version: 'VERSION',
tokens: 'TOKEN',
startTime: 'STARTZEIT',
},
pagination: {
previous: 'Vorherige',
next: 'Nächste',
},
empty: {
noChat: 'Noch keine Konversation',
noOutput: 'Keine Ausgabe',
element: {
title: 'Ist da jemand?',
content: 'Beobachten und annotieren Sie hier die Interaktionen zwischen Endbenutzern und KI-Anwendungen, um die Genauigkeit der KI kontinuierlich zu verbessern. Sie können versuchen, die Web-App selbst <shareLink>zu teilen</shareLink> oder <testLink>zu testen</testLink>, und dann zu dieser Seite zurückkehren.',
},
},
},
detail: {
time: 'Zeit',
conversationId: 'Konversations-ID',
promptTemplate: 'Prompt-Vorlage',
promptTemplateBeforeChat: 'Prompt-Vorlage vor dem Chat · Als Systemnachricht',
annotationTip: 'Verbesserungen markiert von {{user}}',
timeConsuming: '',
second: 's',
tokenCost: 'Verbrauchte Token',
loading: 'lädt',
operation: {
like: 'gefällt mir',
dislike: 'gefällt mir nicht',
addAnnotation: 'Verbesserung hinzufügen',
editAnnotation: 'Verbesserung bearbeiten',
annotationPlaceholder: 'Geben Sie die erwartete Antwort ein, die Sie möchten, dass die KI antwortet, welche für die Feinabstimmung des Modells und die kontinuierliche Verbesserung der Qualität der Textgenerierung in Zukunft verwendet werden kann.',
},
variables: 'Variablen',
uploadImages: 'Hochgeladene Bilder',
modelParams: 'Modellparameter',
},
filter: {
period: {
today: 'Heute',
last7days: 'Letzte 7 Tage',
last4weeks: 'Letzte 4 Wochen',
last3months: 'Letzte 3 Monate',
last12months: 'Letzte 12 Monate',
monthToDate: 'Monat bis heute',
quarterToDate: 'Quartal bis heute',
yearToDate: 'Jahr bis heute',
allTime: 'Gesamte Zeit',
},
annotation: {
all: 'Alle',
annotated: 'Markierte Verbesserungen ({{count}} Elemente)',
not_annotated: 'Nicht annotiert',
},
sortBy: 'Sortieren nach:',
descending: 'absteigend',
ascending: 'aufsteigend',
},
workflowTitle: 'Workflow-Protokolle',
workflowSubtitle: 'Das Protokoll hat den Vorgang von Automate aufgezeichnet.',
runDetail: {
title: 'Konversationsprotokoll',
workflowTitle: 'Protokolldetail',
fileListLabel: 'Details zur Datei',
fileListDetail: 'Detail',
},
promptLog: 'Prompt-Protokoll',
agentLog: 'Agentenprotokoll',
viewLog: 'Protokoll anzeigen',
agentLogDetail: {
agentMode: 'Agentenmodus',
toolUsed: 'Verwendetes Werkzeug',
iterations: 'Iterationen',
iteration: 'Iteration',
finalProcessing: 'Endverarbeitung',
},
}
export default translation

View File

@@ -0,0 +1,172 @@
const translation = {
welcome: {
firstStepTip: 'Um zu beginnen,',
enterKeyTip: 'geben Sie unten Ihren OpenAI-API-Schlüssel ein',
getKeyTip: 'Holen Sie sich Ihren API-Schlüssel vom OpenAI-Dashboard',
placeholder: 'Ihr OpenAI-API-Schlüssel (z.B. sk-xxxx)',
},
apiKeyInfo: {
cloud: {
trial: {
title: 'Sie nutzen das Testkontingent von {{providerName}}.',
description: 'Das Testkontingent wird für Ihre Testnutzung bereitgestellt. Bevor das Testkontingent aufgebraucht ist, richten Sie bitte Ihren eigenen Modellanbieter ein oder kaufen zusätzliches Kontingent.',
},
exhausted: {
title: 'Ihr Testkontingent wurde aufgebraucht, bitte richten Sie Ihren APIKey ein.',
description: 'Ihr Testkontingent ist aufgebraucht. Bitte richten Sie Ihren eigenen Modellanbieter ein oder kaufen zusätzliches Kontingent.',
},
},
selfHost: {
title: {
row1: 'Um zu beginnen,',
row2: 'richten Sie zuerst Ihren Modellanbieter ein.',
},
},
callTimes: 'Aufrufzeiten',
usedToken: 'Verwendetes Token',
setAPIBtn: 'Zum Einrichten des Modellanbieters gehen',
tryCloud: 'Oder probieren Sie die Cloud-Version von Dify mit kostenlosem Angebot aus',
},
overview: {
title: 'Übersicht',
appInfo: {
explanation: 'Einsatzbereite AI-WebApp',
accessibleAddress: 'Öffentliche URL',
preview: 'Vorschau',
regenerate: 'Regenerieren',
regenerateNotice: 'Möchten Sie die öffentliche URL neu generieren?',
preUseReminder: 'Bitte aktivieren Sie WebApp, bevor Sie fortfahren.',
settings: {
entry: 'Einstellungen',
title: 'WebApp-Einstellungen',
webName: 'WebApp-Name',
webDesc: 'WebApp-Beschreibung',
webDescTip: 'Dieser Text wird auf der Clientseite angezeigt und bietet grundlegende Anleitungen zur Verwendung der Anwendung',
webDescPlaceholder: 'Geben Sie die Beschreibung der WebApp ein',
language: 'Sprache',
workflow: {
title: 'Workflow-Schritte',
show: 'Anzeigen',
hide: 'Verbergen',
subTitle: 'Details zum Arbeitsablauf',
showDesc: 'Ein- oder Ausblenden von Workflow-Details in der WebApp',
},
chatColorTheme: 'Chat-Farbschema',
chatColorThemeDesc: 'Legen Sie das Farbschema des Chatbots fest',
chatColorThemeInverted: 'Invertiert',
invalidHexMessage: 'Ungültiger Hex-Wert',
more: {
entry: 'Mehr Einstellungen anzeigen',
copyright: 'Urheberrecht',
copyRightPlaceholder: 'Geben Sie den Namen des Autors oder der Organisation ein',
privacyPolicy: 'Datenschutzrichtlinie',
privacyPolicyPlaceholder: 'Geben Sie den Link zur Datenschutzrichtlinie ein',
privacyPolicyTip: 'Hilft Besuchern zu verstehen, welche Daten die Anwendung sammelt, siehe Difys <privacyPolicyLink>Datenschutzrichtlinie</privacyPolicyLink>.',
customDisclaimer: 'Benutzerdefinierte Haftungsausschluss',
customDisclaimerPlaceholder: 'Geben Sie den benutzerdefinierten Haftungsausschluss-Text ein',
customDisclaimerTip: 'Der ben userdefinierte Haftungsausschluss-Text wird auf der Clientseite angezeigt und bietet zusätzliche Informationen über die Anwendung',
copyrightTip: 'Copyright-Informationen in der Webapp anzeigen',
copyrightTooltip: 'Bitte führen Sie ein Upgrade auf den Professional-Plan oder höher durch',
},
sso: {
title: 'WebApp-SSO',
description: 'Alle Benutzer müssen sich mit SSO anmelden, bevor sie WebApp verwenden können',
label: 'SSO-Authentifizierung',
tooltip: 'Wenden Sie sich an den Administrator, um WebApp-SSO zu aktivieren',
},
modalTip: 'Einstellungen für clientseitige Web-Apps.',
},
embedded: {
entry: 'Eingebettet',
title: 'Einbetten auf der Website',
explanation: 'Wählen Sie die Art und Weise, wie die Chat-App auf Ihrer Website eingebettet wird',
iframe: 'Um die Chat-App an einer beliebigen Stelle auf Ihrer Website hinzuzufügen, fügen Sie diesen iframe in Ihren HTML-Code ein.',
scripts: 'Um eine Chat-App unten rechts auf Ihrer Website hinzuzufügen, fügen Sie diesen Code in Ihren HTML-Code ein.',
chromePlugin: 'Installieren Sie die Dify Chatbot Chrome-Erweiterung',
copied: 'Kopiert',
copy: 'Kopieren',
},
qrcode: {
title: 'QR-Code zum Teilen',
scan: 'Teilen Sie die Anwendung per Scan',
download: 'QR-Code herunterladen',
},
customize: {
way: 'Art',
entry: 'Anpassen',
title: 'AI-WebApp anpassen',
explanation: 'Sie können das Frontend der Web-App an Ihre Szenarien und Stilbedürfnisse anpassen.',
way1: {
name: 'Forken Sie den Client-Code, ändern Sie ihn und deployen Sie ihn auf Vercel (empfohlen)',
step1: 'Forken Sie den Client-Code und ändern Sie ihn',
step1Tip: 'Klicken Sie hier, um den Quellcode in Ihr GitHub-Konto zu forken und den Code zu ändern',
step1Operation: 'Dify-WebClient',
step2: 'Deployen auf Vercel',
step2Tip: 'Klicken Sie hier, um das Repository in Vercel zu importieren und zu deployen',
step2Operation: 'Repository importieren',
step3: 'Umgebungsvariablen konfigurieren',
step3Tip: 'Fügen Sie die folgenden Umgebungsvariablen in Vercel hinzu',
},
way2: {
name: 'Clientseitigen Code schreiben, um die API aufzurufen, und ihn auf einem Server deployen',
operation: 'Dokumentation',
},
},
launch: 'Abschießen',
},
apiInfo: {
title: 'Backend-Service-API',
explanation: 'Einfach in Ihre Anwendung integrierbar',
accessibleAddress: 'Service-API-Endpunkt',
doc: 'API-Referenz',
},
status: {
running: 'In Betrieb',
disable: 'Deaktivieren',
},
},
analysis: {
title: 'Analyse',
ms: 'ms',
tokenPS: 'Token/s',
totalMessages: {
title: 'Gesamtnachrichten',
explanation: 'Tägliche Anzahl der KI-Interaktionen.',
},
totalConversations: {
title: 'Gesamte Konversationen',
explanation: 'Tägliche Anzahl der KI-Konversationen; Prompt-Engineering/Debugging ausgeschlossen.',
},
activeUsers: {
title: 'Aktive Benutzer',
explanation: 'Einzigartige Benutzer, die mit AI Q&A führen; Prompt-Engineering/Debugging ausgenommen.',
},
tokenUsage: {
title: 'Token-Verbrauch',
explanation: 'Spiegelt den täglichen Token-Verbrauch des Sprachmodells für die Anwendung wider, nützlich für Kostenkontrollzwecke.',
consumed: 'Verbraucht',
},
avgSessionInteractions: {
title: 'Durchschn. Sitzungsinteraktionen',
explanation: 'Fortlaufende Benutzer-KI-Kommunikationszählung; für konversationsbasierte Apps.',
},
userSatisfactionRate: {
title: 'Benutzerzufriedenheitsrate',
explanation: 'Die Anzahl der Likes pro 1.000 Nachrichten. Dies zeigt den Anteil der Antworten an, mit denen die Benutzer sehr zufrieden sind.',
},
avgResponseTime: {
title: 'Durchschn. Antwortzeit',
explanation: 'Zeit (ms) für die AI, um zu verarbeiten/antworten; für textbasierte Apps.',
},
tps: {
title: 'Token-Ausgabegeschwindigkeit',
explanation: 'Misst die Leistung des LLM. Zählt die Token-Ausgabegeschwindigkeit des LLM vom Beginn der Anfrage bis zum Abschluss der Ausgabe.',
},
avgUserInteractions: {
explanation: 'Spiegelt die tägliche Nutzungshäufigkeit der Benutzer wider. Diese Metrik spiegelt die Bindung der Benutzer wider.',
title: 'Durchschnittliche Benutzerinteraktionen',
},
},
}
export default translation

View File

@@ -0,0 +1,206 @@
const translation = {
createApp: 'Neue App erstellen',
types: {
all: 'Alle',
assistant: 'Assistent',
completion: 'Vervollständigung',
workflow: 'Arbeitsablauf',
agent: 'Agent',
chatbot: 'Chatbot',
basic: 'Grundlegend',
advanced: 'Chatflow',
},
modes: {
completion: 'Textgenerator',
chat: 'Basisassistent',
},
createFromConfigFile: 'App aus Konfigurationsdatei erstellen',
deleteAppConfirmTitle: 'Diese App löschen?',
deleteAppConfirmContent:
'Das Löschen der App ist unwiderruflich. Nutzer werden keinen Zugang mehr zu Ihrer App haben, und alle Prompt-Konfigurationen und Logs werden dauerhaft gelöscht.',
appDeleted: 'App gelöscht',
appDeleteFailed: 'Löschen der App fehlgeschlagen',
join: 'Treten Sie der Gemeinschaft bei',
communityIntro:
'Diskutieren Sie mit Teammitgliedern, Mitwirkenden und Entwicklern auf verschiedenen Kanälen.',
roadmap: 'Sehen Sie unseren Fahrplan',
appNamePlaceholder: 'Bitte geben Sie den Namen der App ein',
newApp: {
startToCreate: 'Lassen Sie uns mit Ihrer neuen App beginnen',
captionName: 'App-Symbol & Name',
captionAppType: 'Welchen Typ von App möchten Sie erstellen?',
previewDemo: 'Vorschau-Demo',
chatApp: 'Assistent',
chatAppIntro:
'Ich möchte eine Chat-basierte Anwendung bauen. Diese App verwendet ein Frage-Antwort-Format und ermöglicht mehrere Runden kontinuierlicher Konversation.',
agentAssistant: 'Neuer Agentenassistent',
completeApp: 'Textgenerator',
completeAppIntro:
'Ich möchte eine Anwendung erstellen, die hochwertigen Text basierend auf Aufforderungen generiert, wie z.B. das Erstellen von Artikeln, Zusammenfassungen, Übersetzungen und mehr.',
showTemplates: 'Ich möchte aus einer Vorlage wählen',
hideTemplates: 'Zurück zur Modusauswahl',
Create: 'Erstellen',
Cancel: 'Abbrechen',
nameNotEmpty: 'Name darf nicht leer sein',
appTemplateNotSelected: 'Bitte wählen Sie eine Vorlage',
appTypeRequired: 'Bitte wählen Sie einen App-Typ',
appCreated: 'App erstellt',
appCreateFailed: 'Erstellen der App fehlgeschlagen',
basic: 'Grundlegend',
chatbotType: 'Chatbot-Orchestrierungsmethode',
workflowDescription: 'Erstellen Sie eine Anwendung, die qualitativ hochwertigen Text auf der Grundlage von Workflow-Orchestrierungen mit einem hohen Maß an Anpassung generiert. Es ist für erfahrene Benutzer geeignet.',
advancedFor: 'Für Fortgeschrittene',
startFromTemplate: 'Aus Vorlage erstellen',
appNamePlaceholder: 'Geben Sie Ihrer App einen Namen',
startFromBlank: 'Aus Leer erstellen',
basicTip: 'Für Anfänger können Sie später zu Chatflow wechseln',
basicDescription: 'Basic Orchestrate ermöglicht die Orchestrierung einer Chatbot-App mit einfachen Einstellungen, ohne die Möglichkeit, integrierte Eingabeaufforderungen zu ändern. Es ist für Anfänger geeignet.',
workflowWarning: 'Derzeit in der Beta-Phase',
advancedDescription: 'Workflow Orchestrate orchestriert Chatbots in Form von Workflows und bietet ein hohes Maß an Individualisierung, einschließlich der Möglichkeit, integrierte Eingabeaufforderungen zu bearbeiten. Es ist für erfahrene Benutzer geeignet.',
basicFor: 'FÜR ANFÄNGER',
completionWarning: 'Diese Art von App wird nicht mehr unterstützt.',
chatbotDescription: 'Erstellen Sie eine chatbasierte Anwendung. Diese App verwendet ein Frage-und-Antwort-Format, das mehrere Runden kontinuierlicher Konversation ermöglicht.',
captionDescription: 'Beschreibung',
advanced: 'Chatflow',
useTemplate: 'Diese Vorlage verwenden',
agentDescription: 'Erstellen Sie einen intelligenten Agenten, der autonom Werkzeuge auswählen kann, um die Aufgaben zu erledigen',
completionDescription: 'Erstellen Sie eine Anwendung, die qualitativ hochwertigen Text auf der Grundlage von Eingabeaufforderungen generiert, z. B. zum Generieren von Artikeln, Zusammenfassungen, Übersetzungen und mehr.',
appDescriptionPlaceholder: 'Geben Sie die Beschreibung der App ein',
caution: 'Vorsicht',
Confirm: 'Bestätigen',
appCreateDSLErrorTitle: 'Inkompatibilität der Version',
appCreateDSLErrorPart2: 'Möchten Sie fortfahren?',
appCreateDSLErrorPart4: 'Systemgestützte DSL-Version:',
appCreateDSLErrorPart1: 'Es wurde ein signifikanter Unterschied bei den DSL-Versionen festgestellt. Das Erzwingen des Imports kann zu Fehlfunktionen der Anwendung führen.',
appCreateDSLErrorPart3: 'Aktuelle DSL-Version der Anwendung:',
appCreateDSLWarning: 'Achtung: Ein unterschiedlicher DSL-Versionsunterschied kann sich auf bestimmte Funktionen auswirken',
learnMore: 'Weitere Informationen',
optional: 'Wahlfrei',
noTemplateFound: 'Keine Vorlagen gefunden',
workflowUserDescription: 'Workflow-Orchestrierung für Aufgaben in einer einzigen Runde wie Automatisierung und Stapelverarbeitung.',
foundResults: '{{Anzahl}} Befund',
chatbotShortDescription: 'LLM-basierter Chatbot mit einfacher Einrichtung',
completionUserDescription: 'Erstellen Sie schnell einen KI-Assistenten für Textgenerierungsaufgaben mit einfacher Konfiguration.',
noAppsFound: 'Keine Apps gefunden',
advancedShortDescription: 'Workflow für komplexe Dialoge mit mehreren Durchläufen mit Speicher',
forAdvanced: 'FÜR FORTGESCHRITTENE',
chooseAppType: 'App-Typ auswählen',
completionShortDescription: 'KI-Assistent für Textgenerierungsaufgaben',
forBeginners: 'FÜR ANFÄNGER',
noIdeaTip: 'Keine Ideen? Schauen Sie sich unsere Vorlagen an',
workflowShortDescription: 'Orchestrierung für Single-Turn-Automatisierungsaufgaben',
noTemplateFoundTip: 'Versuchen Sie, mit verschiedenen Schlüsselwörtern zu suchen.',
advancedUserDescription: 'Workflow-Orchestrierung für komplexe Dialogaufgaben mit mehreren Runden und Speicherkapazitäten.',
chatbotUserDescription: 'Erstellen Sie schnell einen LLM-basierten Chatbot mit einfacher Konfiguration. Sie können später zu Chatflow wechseln.',
foundResult: '{{Anzahl}} Ergebnis',
agentUserDescription: 'Ein intelligenter Agent, der in der Lage ist, iteratives Denken zu führen und autonome Werkzeuge zu verwenden, um Aufgabenziele zu erreichen.',
agentShortDescription: 'Intelligenter Agent mit logischem Denken und autonomer Werkzeugnutzung',
},
editApp: 'App bearbeiten',
editAppTitle: 'App-Informationen bearbeiten',
editDone: 'App-Informationen wurden aktualisiert',
editFailed: 'Aktualisierung der App-Informationen fehlgeschlagen',
iconPicker: {
ok: 'OK',
cancel: 'Abbrechen',
emoji: 'Emoji',
image: 'Bild',
},
switch: 'Zu Workflow-Orchestrierung wechseln',
switchTipStart: 'Eine neue App-Kopie wird für Sie erstellt, und die neue Kopie wird zur Workflow-Orchestrierung wechseln. Die neue Kopie wird ',
switchTip: 'nicht erlauben',
switchTipEnd: ' zur Basis-Orchestrierung zurückzuwechseln.',
switchLabel: 'Die zu erstellende App-Kopie',
removeOriginal: 'Ursprüngliche App löschen',
switchStart: 'Wechsel starten',
typeSelector: {
all: 'ALLE Typen',
chatbot: 'Chatbot',
agent: 'Agent',
workflow: 'Workflow',
completion: 'Vervollständigung',
advanced: 'Chatflow',
},
tracing: {
title: 'Anwendungsleistung nachverfolgen',
description: 'Konfiguration eines Drittanbieter-LLMOps-Anbieters und Nachverfolgung der Anwendungsleistung.',
config: 'Konfigurieren',
collapse: 'Einklappen',
expand: 'Ausklappen',
tracing: 'Nachverfolgung',
disabled: 'Deaktiviert',
disabledTip: 'Bitte zuerst den Anbieter konfigurieren',
enabled: 'In Betrieb',
tracingDescription: 'Erfassung des vollständigen Kontexts der Anwendungsausführung, einschließlich LLM-Aufrufe, Kontext, Prompts, HTTP-Anfragen und mehr, auf einer Nachverfolgungsplattform von Drittanbietern.',
configProviderTitle: {
configured: 'Konfiguriert',
notConfigured: 'Anbieter konfigurieren, um Nachverfolgung zu aktivieren',
moreProvider: 'Weitere Anbieter',
},
langsmith: {
title: 'LangSmith',
description: 'Eine All-in-One-Entwicklerplattform für jeden Schritt des LLM-gesteuerten Anwendungslebenszyklus.',
},
langfuse: {
title: 'Langfuse',
description: 'Traces, Bewertungen, Prompt-Management und Metriken zum Debuggen und Verbessern Ihrer LLM-Anwendung.',
},
inUse: 'In Verwendung',
configProvider: {
title: 'Konfigurieren ',
placeholder: 'Geben Sie Ihren {{key}} ein',
project: 'Projekt',
publicKey: 'Öffentlicher Schlüssel',
secretKey: 'Geheimer Schlüssel',
viewDocsLink: '{{key}}-Dokumentation ansehen',
removeConfirmTitle: '{{key}}-Konfiguration entfernen?',
removeConfirmContent: 'Die aktuelle Konfiguration wird verwendet. Das Entfernen wird die Nachverfolgungsfunktion ausschalten.',
},
view: 'Ansehen',
opik: {
description: 'Opik ist eine Open-Source-Plattform zum Bewerten, Testen und Überwachen von LLM-Anwendungen.',
title: 'Opik',
},
},
answerIcon: {
descriptionInExplore: 'Gibt an, ob das WebApp-Symbol zum Ersetzen 🤖 in Explore verwendet werden soll',
title: 'Verwenden Sie das WebApp-Symbol, um es zu ersetzen 🤖',
description: 'Gibt an, ob das WebApp-Symbol zum Ersetzen 🤖 in der freigegebenen Anwendung verwendet werden soll',
},
importFromDSLUrlPlaceholder: 'DSL-Link hier einfügen',
duplicate: 'Duplikat',
importFromDSL: 'Import von DSL',
importDSL: 'DSL-Datei importieren',
importFromDSLUrl: 'Von URL',
exportFailed: 'Fehler beim Exportieren von DSL.',
importFromDSLFile: 'Aus DSL-Datei',
export: 'DSL exportieren',
duplicateTitle: 'App duplizieren',
mermaid: {
handDrawn: 'Handgezeichnet',
classic: 'Klassisch',
},
openInExplore: 'In Explore öffnen',
newAppFromTemplate: {
sidebar: {
Recommended: 'Empfohlen',
Assistant: 'Assistent',
Writing: 'Schrift',
Workflow: 'Arbeitsablauf',
Programming: 'Programmieren',
Agent: 'Agent',
HR: 'HR',
},
byCategories: 'NACH KATEGORIEN',
searchAllTemplate: 'Alle Vorlagen durchsuchen...',
},
showMyCreatedAppsOnly: 'Nur meine erstellten Apps anzeigen',
appSelector: {
placeholder: 'Wählen Sie eine App aus...',
params: 'APP-PARAMETER',
label: 'APP',
noParams: 'Keine Parameter erforderlich',
},
}
export default translation

View File

@@ -0,0 +1,118 @@
const translation = {
currentPlan: 'Aktueller Tarif',
upgradeBtn: {
plain: 'Tarif Upgraden',
encourage: 'Jetzt Upgraden',
encourageShort: 'Upgraden',
},
viewBilling: 'Abrechnung und Abonnements verwalten',
buyPermissionDeniedTip: 'Bitte kontaktieren Sie Ihren Unternehmensadministrator, um zu abonnieren',
plansCommon: {
title: 'Wählen Sie einen Tarif, der zu Ihnen passt',
yearlyTip: 'Erhalten Sie 2 Monate kostenlos durch jährliches Abonnieren!',
mostPopular: 'Am beliebtesten',
planRange: {
monthly: 'Monatlich',
yearly: 'Jährlich',
},
month: 'Monat',
year: 'Jahr',
save: 'Sparen ',
free: 'Kostenlos',
currentPlan: 'Aktueller Tarif',
contractSales: 'Vertrieb kontaktieren',
contractOwner: 'Teammanager kontaktieren',
startForFree: 'Kostenlos starten',
getStartedWith: 'Beginnen Sie mit ',
contactSales: 'Vertrieb kontaktieren',
talkToSales: 'Mit dem Vertrieb sprechen',
modelProviders: 'Modellanbieter',
teamMembers: 'Teammitglieder',
buildApps: 'Apps bauen',
vectorSpace: 'Vektorraum',
vectorSpaceBillingTooltip: 'Jedes 1MB kann ungefähr 1,2 Millionen Zeichen an vektorisierten Daten speichern (geschätzt mit OpenAI Embeddings, variiert je nach Modell).',
vectorSpaceTooltip: 'Vektorraum ist das Langzeitspeichersystem, das erforderlich ist, damit LLMs Ihre Daten verstehen können.',
documentsUploadQuota: 'Dokumenten-Upload-Kontingent',
documentProcessingPriority: 'Priorität der Dokumentenverarbeitung',
documentProcessingPriorityTip: 'Für eine höhere Dokumentenverarbeitungspriorität, bitte Ihren Tarif upgraden.',
documentProcessingPriorityUpgrade: 'Mehr Daten mit höherer Genauigkeit bei schnelleren Geschwindigkeiten verarbeiten.',
priority: {
'standard': 'Standard',
'priority': 'Priorität',
'top-priority': 'Höchste Priorität',
},
logsHistory: 'Protokollverlauf',
customTools: 'Benutzerdefinierte Werkzeuge',
unavailable: 'Nicht verfügbar',
days: 'Tage',
unlimited: 'Unbegrenzt',
support: 'Support',
supportItems: {
communityForums: 'Community-Foren',
emailSupport: 'E-Mail-Support',
priorityEmail: 'Priorisierter E-Mail- und Chat-Support',
logoChange: 'Logo-Änderung',
SSOAuthentication: 'SSO-Authentifizierung',
personalizedSupport: 'Persönlicher Support',
dedicatedAPISupport: 'Dedizierter API-Support',
customIntegration: 'Benutzerdefinierte Integration und Support',
ragAPIRequest: 'RAG-API-Anfragen',
bulkUpload: 'Massenupload von Dokumenten',
agentMode: 'Agentenmodus',
workflow: 'Workflow',
llmLoadingBalancing: 'LLM-Lastausgleich',
llmLoadingBalancingTooltip: 'Fügen Sie Modellen mehrere API-Schlüssel hinzu, um die API-Ratenlimits effektiv zu umgehen.',
},
comingSoon: 'Demnächst',
member: 'Mitglied',
memberAfter: 'Mitglied',
messageRequest: {
title: 'Nachrichtenguthaben',
tooltip: 'Nachrichtenaufrufkontingente für verschiedene Tarife unter Verwendung von OpenAI-Modellen (außer gpt4).Nachrichten über dem Limit verwenden Ihren OpenAI-API-Schlüssel.',
},
annotatedResponse: {
title: 'Kontingentgrenzen für Annotationen',
tooltip: 'Manuelle Bearbeitung und Annotation von Antworten bieten anpassbare, hochwertige Frage-Antwort-Fähigkeiten für Apps. (Nur anwendbar in Chat-Apps)',
},
ragAPIRequestTooltip: 'Bezieht sich auf die Anzahl der API-Aufrufe, die nur die Wissensdatenbankverarbeitungsfähigkeiten von Dify aufrufen.',
receiptInfo: 'Nur der Teaminhaber und der Teamadministrator können abonnieren und Abrechnungsinformationen einsehen',
annotationQuota: 'Kontingent für Anmerkungen',
},
plans: {
sandbox: {
name: 'Sandbox',
description: '200 mal GPT kostenlos testen',
includesTitle: 'Beinhaltet:',
},
professional: {
name: 'Professionell',
description: 'Für Einzelpersonen und kleine Teams, um mehr Leistung erschwinglich freizuschalten.',
includesTitle: 'Alles im kostenlosen Tarif, plus:',
},
team: {
name: 'Team',
description: 'Zusammenarbeiten ohne Grenzen und Top-Leistung genießen.',
includesTitle: 'Alles im Professionell-Tarif, plus:',
},
enterprise: {
name: 'Unternehmen',
description: 'Erhalten Sie volle Fähigkeiten und Unterstützung für großangelegte, missionskritische Systeme.',
includesTitle: 'Alles im Team-Tarif, plus:',
},
},
vectorSpace: {
fullTip: 'Vektorraum ist voll.',
fullSolution: 'Upgraden Sie Ihren Tarif, um mehr Speicherplatz zu erhalten.',
},
apps: {
fullTipLine1: 'Upgraden Sie Ihren Tarif, um',
fullTipLine2: 'mehr Apps zu bauen.',
},
annotatedResponse: {
fullTipLine1: 'Upgraden Sie Ihren Tarif, um',
fullTipLine2: 'mehr Konversationen zu annotieren.',
quotaTitle: 'Kontingent für Annotation-Antworten',
},
}
export default translation

View File

@@ -0,0 +1,642 @@
const translation = {
api: {
success: 'Erfolg',
actionSuccess: 'Aktion erfolgreich',
saved: 'Gespeichert',
create: 'Erstellt',
remove: 'Entfernt',
},
operation: {
create: 'Erstellen',
confirm: 'Bestätigen',
cancel: 'Abbrechen',
clear: 'Leeren',
save: 'Speichern',
saveAndEnable: 'Speichern und Aktivieren',
edit: 'Bearbeiten',
add: 'Hinzufügen',
added: 'Hinzugefügt',
refresh: 'Neustart',
reset: 'Zurücksetzen',
search: 'Suchen',
change: 'Ändern',
remove: 'Entfernen',
send: 'Senden',
copy: 'Kopieren',
lineBreak: 'Zeilenumbruch',
sure: 'Ich bin sicher',
download: 'Herunterladen',
delete: 'Löschen',
settings: 'Einstellungen',
setup: 'Einrichten',
getForFree: 'Kostenlos erhalten',
reload: 'Neu laden',
ok: 'OK',
log: 'Protokoll',
learnMore: 'Mehr erfahren',
params: 'Parameter',
duplicate: 'Duplikat',
rename: 'Umbenennen',
audioSourceUnavailable: 'AudioSource ist nicht verfügbar',
zoomOut: 'Verkleinern',
zoomIn: 'Vergrößern',
openInNewTab: 'In neuem Tab öffnen',
copyImage: 'Bild kopieren',
close: 'Schließen',
viewMore: 'MEHR SEHEN',
regenerate: 'Erneuern',
saveAndRegenerate: 'Speichern und Regenerieren von untergeordneten Chunks',
view: 'Ansehen',
submit: 'Senden',
skip: 'Schiff',
imageCopied: 'Kopiertes Bild',
deleteApp: 'App löschen',
viewDetails: 'Details anzeigen',
in: 'in',
copied: 'Kopiert',
},
placeholder: {
input: 'Bitte eingeben',
select: 'Bitte auswählen',
},
voice: {
language: {
zhHans: 'Chinesisch',
zhHant: 'Chinesisch (traditionell)',
enUS: 'Englisch',
deDE: 'Deutsch',
frFR: 'Französisch',
esES: 'Spanisch',
itIT: 'Italienisch',
thTH: 'Thailändisch',
idID: 'Indonesisch',
jaJP: 'Japanisch',
koKR: 'Koreanisch',
ptBR: 'Portugiesisch',
ruRU: 'Russisch',
ukUA: 'Ukrainisch',
viVN: 'Vietnamesisch',
plPL: 'Polnisch',
roRO: 'Rumänisch',
hiIN: 'Hindi',
trTR: 'Türkisch',
faIR: 'Persisch',
},
},
unit: {
char: 'Zeichen',
},
actionMsg: {
noModification: 'Im Moment keine Änderungen.',
modifiedSuccessfully: 'Erfolgreich geändert',
modifiedUnsuccessfully: 'Änderung nicht erfolgreich',
copySuccessfully: 'Erfolgreich kopiert',
paySucceeded: 'Zahlung erfolgreich',
payCancelled: 'Zahlung abgebrochen',
generatedSuccessfully: 'Erfolgreich generiert',
generatedUnsuccessfully: 'Generierung nicht erfolgreich',
},
model: {
params: {
temperature: 'Temperatur',
temperatureTip:
'Kontrolliert Zufälligkeit: Eine niedrigere Temperatur führt zu weniger zufälligen Ergebnissen. Nähert sich die Temperatur null, wird das Modell deterministisch und repetitiv.',
top_p: 'Top P',
top_pTip:
'Kontrolliert Diversität über Nukleus-Sampling: 0,5 bedeutet, dass die Hälfte aller wahrscheinlichkeitsgewichteten Optionen berücksichtigt wird.',
presence_penalty: 'Präsenz-Strafe',
presence_penaltyTip:
'Wie stark neue Tokens basierend darauf bestraft werden, ob sie bereits im Text erschienen sind.\nErhöht die Wahrscheinlichkeit des Modells, über neue Themen zu sprechen.',
frequency_penalty: 'Häufigkeitsstrafe',
frequency_penaltyTip:
'Wie stark neue Tokens basierend auf ihrer bisherigen Häufigkeit im Text bestraft werden.\nVerringert die Wahrscheinlichkeit des Modells, denselben Satz wortwörtlich zu wiederholen.',
max_tokens: 'Maximale Token',
max_tokensTip:
'Begrenzt die maximale Länge der Antwort in Token. \nGrößere Werte können den Platz für Eingabeaufforderungen, Chat-Logs und Wissen begrenzen. \nEs wird empfohlen, dies unter zwei Dritteln zu setzen\ngpt-4-1106-Vorschau, gpt-4-vision-Vorschau maximale Token (Eingabe 128k Ausgabe 4k)',
maxTokenSettingTip: 'Ihre Einstellung für maximale Token ist hoch, was den Platz für Eingabeaufforderungen, Abfragen und Daten potenziell begrenzen kann. Erwägen Sie, dies unter 2/3 zu setzen.',
setToCurrentModelMaxTokenTip: 'Maximale Token auf 80 % der maximalen Token des aktuellen Modells {{maxToken}} aktualisiert.',
stop_sequences: 'Stop-Sequenzen',
stop_sequencesTip: 'Bis zu vier Sequenzen, bei denen die API die Generierung weiterer Token stoppt. Der zurückgegebene Text wird die Stop-Sequenz nicht enthalten.',
stop_sequencesPlaceholder: 'Sequenz eingeben und Tab drücken',
},
tone: {
Creative: 'Kreativ',
Balanced: 'Ausgewogen',
Precise: 'Präzise',
Custom: 'Benutzerdefiniert',
},
addMoreModel: 'Gehen Sie zu den Einstellungen, um mehr Modelle hinzuzufügen',
settingsLink: 'Einstellungen für Modellanbieter',
capabilities: 'Multimodale Fähigkeiten',
},
menus: {
status: 'Beta',
explore: 'Erkunden',
apps: 'Studio',
plugins: 'Plugins',
pluginsTips: 'Integrieren Sie Plugins von Drittanbietern oder erstellen Sie ChatGPT-kompatible KI-Plugins.',
datasets: 'Wissen',
datasetsTips: 'BALD VERFÜGBAR: Importieren Sie Ihre eigenen Textdaten oder schreiben Sie Daten in Echtzeit über Webhook, um den LLM-Kontext zu verbessern.',
newApp: 'Neue App',
newDataset: 'Wissen erstellen',
tools: 'Werkzeuge',
exploreMarketplace: 'Marketplace erkunden',
},
userProfile: {
settings: 'Einstellungen',
emailSupport: 'E-Mail-Support',
workspace: 'Arbeitsbereich',
createWorkspace: 'Arbeitsbereich erstellen',
helpCenter: 'Hilfe',
communityFeedback: 'Rückmeldung',
roadmap: 'Fahrplan',
community: 'Gemeinschaft',
about: 'Über',
logout: 'Abmelden',
},
settings: {
accountGroup: 'KONTO',
workplaceGroup: 'ARBEITSBEREICH',
account: 'Mein Konto',
members: 'Mitglieder',
billing: 'Abrechnung',
integrations: 'Integrationen',
language: 'Sprache',
provider: 'Modellanbieter',
dataSource: 'Datenquelle',
plugin: 'Plugins',
apiBasedExtension: 'API-Erweiterung',
generalGroup: 'ALLGEMEIN',
},
account: {
avatar: 'Avatar',
name: 'Name',
email: 'E-Mail',
password: 'Passwort',
passwordTip: 'Sie können ein dauerhaftes Passwort festlegen, wenn Sie keine temporären Anmeldecodes verwenden möchten',
setPassword: 'Ein Passwort festlegen',
resetPassword: 'Passwort zurücksetzen',
currentPassword: 'Aktuelles Passwort',
newPassword: 'Neues Passwort',
confirmPassword: 'Passwort bestätigen',
notEqual: 'Die Passwörter sind unterschiedlich.',
langGeniusAccount: 'Dify-Konto',
langGeniusAccountTip: 'Ihr Dify-Konto und zugehörige Benutzerdaten.',
editName: 'Namen bearbeiten',
showAppLength: '{{length}} Apps anzeigen',
delete: 'Konto löschen',
deleteTip: 'Wenn Sie Ihr Konto löschen, werden alle Ihre Daten dauerhaft gelöscht und können nicht wiederhergestellt werden.',
deleteConfirmTip: 'Zur Bestätigung senden Sie bitte Folgendes von Ihrer registrierten E-Mail-Adresse an ',
myAccount: 'Mein Konto',
studio: 'Dify Studio',
account: 'Konto',
deletePrivacyLinkTip: 'Weitere Informationen darüber, wie wir mit Ihren Daten umgehen, finden Sie in unserer',
deletePrivacyLink: 'Datenschutzrichtlinie.',
deleteSuccessTip: 'Das Löschen Ihres Kontos benötigt einige Zeit, um vollständig gelöscht zu werden. Wir senden Ihnen eine E-Mail, wenn alles erledigt ist.',
deleteLabel: 'Zur Bestätigung geben Sie bitte unten Ihre E-Mail-Adresse ein',
deletePlaceholder: 'Bitte geben Sie Ihre E-Mail-Adresse ein',
sendVerificationButton: 'Verifizierungscode senden',
verificationLabel: 'Verifizierungs-Code',
verificationPlaceholder: 'Fügen Sie den 6-stelligen Code ein',
feedbackTitle: 'Feedback',
feedbackLabel: 'Sagen Sie uns, warum Sie Ihr Konto gelöscht haben?',
feedbackPlaceholder: 'Wahlfrei',
permanentlyDeleteButton: 'Konto dauerhaft löschen',
},
members: {
team: 'Team',
invite: 'Hinzufügen',
name: 'NAME',
lastActive: 'ZULETZT AKTIV',
role: 'ROLLEN',
pending: 'Ausstehend...',
owner: 'Eigentümer',
admin: 'Admin',
adminTip: 'Kann Apps erstellen & Team-Einstellungen verwalten',
normal: 'Normal',
normalTip: 'Kann nur Apps verwenden, kann keine Apps erstellen',
editor: 'Editor',
editorTip: 'Kann Apps erstellen & bearbeiten',
inviteTeamMember: 'Teammitglied hinzufügen',
inviteTeamMemberTip: 'Sie können direkt nach der Anmeldung auf Ihre Teamdaten zugreifen.',
emailNotSetup: 'E-Mail-Server ist nicht eingerichtet, daher können keine Einladungs-E-Mails versendet werden. Bitte informieren Sie die Benutzer über den Einladungslink, der nach der Einladung ausgestellt wird.',
email: 'E-Mail',
emailInvalid: 'Ungültiges E-Mail-Format',
emailPlaceholder: 'Bitte E-Mails eingeben',
sendInvite: 'Einladung senden',
invitedAsRole: 'Eingeladen als {{role}}-Benutzer',
invitationSent: 'Einladung gesendet',
invitationSentTip: 'Einladung gesendet, und sie können sich bei Dify anmelden, um auf Ihre Teamdaten zuzugreifen.',
invitationLink: 'Einladungslink',
failedInvitationEmails: 'Die folgenden Benutzer wurden nicht erfolgreich eingeladen',
ok: 'OK',
removeFromTeam: 'Vom Team entfernen',
removeFromTeamTip: 'Wird den Teamzugang entfernen',
setAdmin: 'Als Administrator einstellen',
setMember: 'Als normales Mitglied einstellen',
setEditor: 'Als Editor einstellen',
disInvite: 'Einladung widerrufen',
deleteMember: 'Mitglied löschen',
you: '(Du)',
setBuilder: 'Als Builder festlegen',
datasetOperator: 'Wissensadministrator',
datasetOperatorTip: 'Kann die Wissensdatenbank nur verwalten',
builder: 'Bauherr',
builderTip: 'Kann eigene Apps erstellen und bearbeiten',
},
integrations: {
connected: 'Verbunden',
google: 'Google',
googleAccount: 'Mit Google-Konto anmelden',
github: 'GitHub',
githubAccount: 'Mit GitHub-Konto anmelden',
connect: 'Verbinden',
},
language: {
displayLanguage: 'Anzeigesprache',
timezone: 'Zeitzone',
},
provider: {
apiKey: 'API-Schlüssel',
enterYourKey: 'Geben Sie hier Ihren API-Schlüssel ein',
invalidKey: 'Ungültiger OpenAI API-Schlüssel',
validatedError: 'Validierung fehlgeschlagen: ',
validating: 'Schlüssel wird validiert...',
saveFailed: 'API-Schlüssel speichern fehlgeschlagen',
apiKeyExceedBill: 'Dieser API-SCHLÜSSEL verfügt über kein verfügbares Kontingent, bitte lesen',
addKey: 'Schlüssel hinzufügen',
comingSoon: 'Demnächst verfügbar',
editKey: 'Bearbeiten',
invalidApiKey: 'Ungültiger API-Schlüssel',
azure: {
apiBase: 'API-Basis',
apiBasePlaceholder: 'Die API-Basis-URL Ihres Azure OpenAI-Endpunkts.',
apiKey: 'API-Schlüssel',
apiKeyPlaceholder: 'Geben Sie hier Ihren API-Schlüssel ein',
helpTip: 'Azure OpenAI Service kennenlernen',
},
openaiHosted: {
openaiHosted: 'Gehostetes OpenAI',
onTrial: 'IN PROBE',
exhausted: 'KONTINGENT ERSCHÖPFT',
desc: 'Der OpenAI-Hostingdienst von Dify ermöglicht es Ihnen, Modelle wie GPT-3.5 zu verwenden. Bevor Ihr Probe-Kontingent aufgebraucht ist, müssen Sie andere Modellanbieter einrichten.',
callTimes: 'Anrufzeiten',
usedUp: 'Probe-Kontingent aufgebraucht. Eigenen Modellanbieter hinzufügen.',
useYourModel: 'Derzeit wird eigener Modellanbieter verwendet.',
close: 'Schließen',
},
anthropicHosted: {
anthropicHosted: 'Anthropic Claude',
onTrial: 'IN PROBE',
exhausted: 'KONTINGENT ERSCHÖPFT',
desc: 'Leistungsstarkes Modell, das bei einer Vielzahl von Aufgaben von anspruchsvollen Dialogen und kreativer Inhalteerstellung bis hin zu detaillierten Anweisungen hervorragend ist.',
callTimes: 'Anrufzeiten',
usedUp: 'Testkontingent aufgebraucht. Eigenen Modellanbieter hinzufügen.',
useYourModel: 'Derzeit wird eigener Modellanbieter verwendet.',
close: 'Schließen',
trialQuotaTip: 'Ihr Anthropic-Testkontingent läuft am 11.03.2025 ab und steht danach nicht mehr zur Verfügung. Bitte machen Sie rechtzeitig davon Gebrauch.',
},
anthropic: {
using: 'Die Einbettungsfähigkeit verwendet',
enableTip: 'Um das Anthropische Modell zu aktivieren, müssen Sie sich zuerst mit OpenAI oder Azure OpenAI Service verbinden.',
notEnabled: 'Nicht aktiviert',
keyFrom: 'Holen Sie Ihren API-Schlüssel von Anthropic',
},
encrypted: {
front: 'Ihr API-SCHLÜSSEL wird verschlüsselt und mit',
back: ' Technologie gespeichert.',
},
},
modelProvider: {
notConfigured: 'Das Systemmodell wurde noch nicht vollständig konfiguriert, und einige Funktionen sind möglicherweise nicht verfügbar.',
systemModelSettings: 'Systemmodell-Einstellungen',
systemModelSettingsLink: 'Warum ist es notwendig, ein Systemmodell einzurichten?',
selectModel: 'Wählen Sie Ihr Modell',
setupModelFirst: 'Bitte richten Sie zuerst Ihr Modell ein',
systemReasoningModel: {
key: 'System-Reasoning-Modell',
tip: 'Legen Sie das Standardinferenzmodell fest, das für die Erstellung von Anwendungen verwendet wird, sowie Funktionen wie die Generierung von Dialognamen und die Vorschlagserstellung für die nächste Frage, die auch das Standardinferenzmodell verwenden.',
},
embeddingModel: {
key: 'Einbettungsmodell',
tip: 'Legen Sie das Standardmodell für die Dokumenteneinbettungsverarbeitung des Wissens fest, sowohl die Wiederherstellung als auch der Import des Wissens verwenden dieses Einbettungsmodell für die Vektorisierungsverarbeitung. Ein Wechsel wird dazu führen, dass die Vektordimension zwischen dem importierten Wissen und der Frage inkonsistent ist, was zu einem Wiederherstellungsfehler führt. Um einen Wiederherstellungsfehler zu vermeiden, wechseln Sie dieses Modell bitte nicht willkürlich.',
required: 'Einbettungsmodell ist erforderlich',
},
speechToTextModel: {
key: 'Sprach-zu-Text-Modell',
tip: 'Legen Sie das Standardmodell für die Spracheingabe in Konversationen fest.',
},
ttsModel: {
key: 'Text-zu-Sprache-Modell',
tip: 'Legen Sie das Standardmodell für die Text-zu-Sprache-Eingabe in Konversationen fest.',
},
rerankModel: {
key: 'Rerank-Modell',
tip: 'Rerank-Modell wird die Kandidatendokumentenliste basierend auf der semantischen Übereinstimmung mit der Benutzeranfrage neu ordnen und die Ergebnisse der semantischen Rangordnung verbessern',
},
quota: 'Kontingent',
searchModel: 'Suchmodell',
noModelFound: 'Kein Modell für {{model}} gefunden',
models: 'Modelle',
showMoreModelProvider: 'Zeige mehr Modellanbieter',
selector: {
tip: 'Dieses Modell wurde entfernt. Bitte fügen Sie ein Modell hinzu oder wählen Sie ein anderes Modell.',
emptyTip: 'Keine verfügbaren Modelle',
emptySetting: 'Bitte gehen Sie zu den Einstellungen, um zu konfigurieren',
rerankTip: 'Bitte richten Sie das Rerank-Modell ein',
},
card: {
quota: 'KONTINGENT',
onTrial: 'In Probe',
paid: 'Bezahlt',
quotaExhausted: 'Kontingent erschöpft',
callTimes: 'Anrufzeiten',
tokens: 'Token',
buyQuota: 'Kontingent kaufen',
priorityUse: 'Priorisierte Nutzung',
removeKey: 'API-Schlüssel entfernen',
tip: 'Der bezahlten Kontingent wird Vorrang gegeben. Das Testkontingent wird nach dem Verbrauch des bezahlten Kontingents verwendet.',
},
item: {
deleteDesc: '{{modelName}} werden als System-Reasoning-Modelle verwendet. Einige Funktionen stehen nach der Entfernung nicht zur Verfügung. Bitte bestätigen.',
freeQuota: 'KOSTENLOSES KONTINGENT',
},
addApiKey: 'Fügen Sie Ihren API-Schlüssel hinzu',
invalidApiKey: 'Ungültiger API-Schlüssel',
encrypted: {
front: 'Ihr API-SCHLÜSSEL wird verschlüsselt und mit',
back: ' Technologie gespeichert.',
},
freeQuota: {
howToEarn: 'Wie zu verdienen',
},
addMoreModelProvider: 'MEHR MODELLANBIETER HINZUFÜGEN',
addModel: 'Modell hinzufügen',
modelsNum: '{{num}} Modelle',
showModels: 'Modelle anzeigen',
showModelsNum: 'Zeige {{num}} Modelle',
collapse: 'Einklappen',
config: 'Konfigurieren',
modelAndParameters: 'Modell und Parameter',
model: 'Modell',
featureSupported: '{{feature}} unterstützt',
callTimes: 'Anrufzeiten',
credits: 'Nachrichtenguthaben',
buyQuota: 'Kontingent kaufen',
getFreeTokens: 'Kostenlose Token erhalten',
priorityUsing: 'Bevorzugte Nutzung',
deprecated: 'Veraltet',
confirmDelete: 'Löschung bestätigen?',
quotaTip: 'Verbleibende verfügbare kostenlose Token',
loadPresets: 'Voreinstellungen laden',
parameters: 'PARAMETER',
loadBalancingHeadline: 'Lastenausgleich',
apiKey: 'API-SCHLÜSSEL',
editConfig: 'Konfiguration bearbeiten',
loadBalancing: 'Lastenausgleich',
addConfig: 'Konfiguration hinzufügen',
configLoadBalancing: 'Lastenausgleich für die Konfiguration',
providerManagedDescription: 'Verwenden Sie den einzelnen Satz von Anmeldeinformationen, der vom Modellanbieter bereitgestellt wird.',
loadBalancingDescription: 'Reduzieren Sie den Druck mit mehreren Sätzen von Anmeldeinformationen.',
modelHasBeenDeprecated: 'Dieses Modell ist veraltet',
loadBalancingLeastKeyWarning: 'Um den Lastausgleich zu aktivieren, müssen mindestens 2 Schlüssel aktiviert sein.',
providerManaged: 'Vom Anbieter verwaltet',
apiKeyStatusNormal: 'APIKey-Status ist normal',
upgradeForLoadBalancing: 'Aktualisieren Sie Ihren Plan, um den Lastenausgleich zu aktivieren.',
defaultConfig: 'Standardkonfiguration',
apiKeyRateLimit: 'Ratenlimit wurde erreicht, verfügbar nach {{seconds}}s',
loadBalancingInfo: 'Standardmäßig wird für den Lastenausgleich die Round-Robin-Strategie verwendet. Wenn die Ratenbegrenzung ausgelöst wird, wird eine Abklingzeit von 1 Minute angewendet.',
emptyProviderTip: 'Bitte installieren Sie zuerst einen Modellanbieter.',
configureTip: 'Einrichten des API-Schlüssels oder Hinzufügen des zu verwendenden Modells',
discoverMore: 'Erfahren Sie mehr in',
installProvider: 'Installieren von Modellanbietern',
toBeConfigured: 'Zu konfigurieren',
emptyProviderTitle: 'Modellanbieter nicht eingerichtet',
},
dataSource: {
add: 'Eine Datenquelle hinzufügen',
connect: 'Verbinden',
notion: {
title: 'Notion',
description: 'Notion als Datenquelle für das Wissen verwenden.',
connectedWorkspace: 'Verbundener Arbeitsbereich',
addWorkspace: 'Arbeitsbereich hinzufügen',
connected: 'Verbunden',
disconnected: 'Getrennt',
changeAuthorizedPages: 'Autorisierte Seiten ändern',
pagesAuthorized: 'Autorisierte Seiten',
sync: 'Synchronisieren',
remove: 'Entfernen',
selector: {
pageSelected: 'Ausgewählte Seiten',
searchPages: 'Seiten suchen...',
noSearchResult: 'Keine Suchergebnisse',
addPages: 'Seiten hinzufügen',
preview: 'VORSCHAU',
},
},
website: {
inactive: 'Inaktiv',
description: 'Importieren Sie Inhalte von Websites mit dem Webcrawler.',
title: 'Website',
configuredCrawlers: 'Konfigurierte Crawler',
active: 'Aktiv',
with: 'Mit',
},
configure: 'Konfigurieren',
},
plugin: {
serpapi: {
apiKey: 'API-Schlüssel',
apiKeyPlaceholder: 'Geben Sie Ihren API-Schlüssel ein',
keyFrom: 'Holen Sie Ihren SerpAPI-Schlüssel von der SerpAPI-Kontoseite',
},
},
apiBasedExtension: {
title: 'API-Erweiterungen bieten zentralisiertes API-Management und vereinfachen die Konfiguration für eine einfache Verwendung in Difys Anwendungen.',
link: 'Erfahren Sie, wie Sie Ihre eigene API-Erweiterung entwickeln.',
linkUrl: 'https://docs.dify.ai/features/extension/api_based_extension',
add: 'API-Erweiterung hinzufügen',
selector: {
title: 'API-Erweiterung',
placeholder: 'Bitte wählen Sie API-Erweiterung',
manage: 'API-Erweiterung verwalten',
},
modal: {
title: 'API-Erweiterung hinzufügen',
editTitle: 'API-Erweiterung bearbeiten',
name: {
title: 'Name',
placeholder: 'Bitte geben Sie den Namen ein',
},
apiEndpoint: {
title: 'API-Endpunkt',
placeholder: 'Bitte geben Sie den API-Endpunkt ein',
},
apiKey: {
title: 'API-Schlüssel',
placeholder: 'Bitte geben Sie den API-Schlüssel ein',
lengthError: 'Die Länge des API-Schlüssels darf nicht weniger als 5 Zeichen betragen',
},
},
type: 'Typ',
},
about: {
changeLog: 'Änderungsprotokoll',
updateNow: 'Jetzt aktualisieren',
nowAvailable: 'Dify {{version}} ist jetzt verfügbar.',
latestAvailable: 'Dify {{version}} ist die neueste verfügbare Version.',
},
appMenus: {
overview: 'Übersicht',
promptEng: 'Orchestrieren',
apiAccess: 'API-Zugriff',
logAndAnn: 'Protokolle & Ank.',
logs: 'Baumstämme',
},
environment: {
testing: 'TESTEN',
development: 'ENTWICKLUNG',
},
appModes: {
completionApp: 'Textgenerator',
chatApp: 'Chat-App',
},
datasetMenus: {
documents: 'Dokumente',
hitTesting: 'Wiederherstellungstest',
settings: 'Einstellungen',
emptyTip: 'Das Wissen wurde nicht zugeordnet, bitte gehen Sie zur Anwendung oder zum Plug-in, um die Zuordnung abzuschließen.',
viewDoc: 'Dokumentation anzeigen',
relatedApp: 'verbundene Apps',
noRelatedApp: 'Keine verknüpften Apps',
},
voiceInput: {
speaking: 'Sprechen Sie jetzt...',
converting: 'Umwandlung in Text...',
notAllow: 'Mikrofon nicht autorisiert',
},
modelName: {
'gpt-3.5-turbo': 'GPT-3.5-Turbo',
'gpt-3.5-turbo-16k': 'GPT-3.5-Turbo-16K',
'gpt-4': 'GPT-4',
'gpt-4-32k': 'GPT-4-32K',
'text-davinci-003': 'Text-Davinci-003',
'text-embedding-ada-002': 'Text-Embedding-Ada-002',
'whisper-1': 'Flüstern-1',
'claude-instant-1': 'Claude-Instant',
'claude-2': 'Claude-2',
},
chat: {
renameConversation: 'Konversation umbenennen',
conversationName: 'Konversationsname',
conversationNamePlaceholder: 'Bitte geben Sie den Konversationsnamen ein',
conversationNameCanNotEmpty: 'Konversationsname erforderlich',
citation: {
title: 'ZITIERUNGEN',
linkToDataset: 'Link zum Wissen',
characters: 'Zeichen:',
hitCount: 'Abrufanzahl:',
vectorHash: 'Vektorhash:',
hitScore: 'Abrufwertung:',
},
inputPlaceholder: 'Sprechen Sie mit dem Bot',
thought: 'Gedanke',
thinking: 'Denken...',
},
promptEditor: {
placeholder: 'Schreiben Sie hier Ihr Aufforderungswort, geben Sie \'{\' ein, um eine Variable einzufügen, geben Sie \'/\' ein, um einen Aufforderungs-Inhaltsblock einzufügen',
context: {
item: {
title: 'Kontext',
desc: 'Kontextvorlage einfügen',
},
modal: {
title: '{{num}} Wissen im Kontext',
add: 'Kontext hinzufügen',
footer: 'Sie können Kontexte im unten stehenden Kontextabschnitt verwalten.',
},
},
history: {
item: {
title: 'Konversationsgeschichte',
desc: 'Vorlage für historische Nachricht einfügen',
},
modal: {
title: 'BEISPIEL',
user: 'Hallo',
assistant: 'Hallo! Wie kann ich Ihnen heute helfen?',
edit: 'Konversationsrollennamen bearbeiten',
},
},
variable: {
item: {
title: 'Variablen & Externe Werkzeuge',
desc: 'Variablen & Externe Werkzeuge einfügen',
},
modal: {
add: 'Neue Variable',
addTool: 'Neues Werkzeug',
},
outputToolDisabledItem: {
desc: 'Variablen einfügen',
title: 'Variablen',
},
},
query: {
item: {
title: 'Abfrage',
desc: 'Benutzerabfragevorlage einfügen',
},
},
existed: 'Bereits im Aufforderungstext vorhanden',
},
imageUploader: {
uploadFromComputer: 'Vom Computer hochladen',
uploadFromComputerReadError: 'Bildlesung fehlgeschlagen, bitte versuchen Sie es erneut.',
uploadFromComputerUploadError: 'Bildupload fehlgeschlagen, bitte erneut hochladen.',
uploadFromComputerLimit: 'Hochgeladene Bilder dürfen {{size}} MB nicht überschreiten',
pasteImageLink: 'Bildlink einfügen',
pasteImageLinkInputPlaceholder: 'Bildlink hier einfügen',
pasteImageLinkInvalid: 'Ungültiger Bildlink',
imageUpload: 'Bild-Upload',
},
tag: {
placeholder: 'Alle Tags',
addNew: 'Neues Tag hinzufügen',
noTag: 'Keine Tags',
noTagYet: 'Noch keine Tags',
addTag: 'Tags hinzufügen',
editTag: 'Tags bearbeiten',
manageTags: 'Tags verwalten',
selectorPlaceholder: 'Typ zum Suchen oder Erstellen',
create: 'Erstellen',
delete: 'Tag löschen',
deleteTip: 'Das Tag wird verwendet, löschen?',
created: 'Tag erfolgreich erstellt',
failed: 'Tag-Erstellung fehlgeschlagen',
},
errorMsg: {
fieldRequired: '{{field}} ist erforderlich',
urlError: 'Die URL sollte mit http:// oder https:// beginnen',
},
fileUploader: {
uploadFromComputer: 'Lokaler Upload',
pasteFileLinkInvalid: 'Ungültiger Dateilink',
pasteFileLinkInputPlaceholder: 'URL eingeben...',
pasteFileLink: 'Dateilink einfügen',
uploadFromComputerUploadError: 'Datei-Upload fehlgeschlagen, bitte erneut hochladen.',
uploadFromComputerLimit: 'Datei hochladen darf {{size}} nicht überschreiten',
uploadFromComputerReadError: 'Lesen der Datei fehlgeschlagen, bitte versuchen Sie es erneut.',
fileExtensionNotSupport: 'Dateiendung nicht bedient',
},
license: {
expiring: 'Läuft an einem Tag ab',
expiring_plural: 'Läuft in {{count}} Tagen ab',
},
pagination: {
perPage: 'Artikel pro Seite',
},
}
export default translation

View File

@@ -0,0 +1,30 @@
const translation = {
custom: 'Anpassung',
upgradeTip: {
prefix: 'Erweitere deinen Plan auf',
suffix: 'um deine Marke anzupassen.',
},
webapp: {
title: 'WebApp Marke anpassen',
removeBrand: 'Entferne Powered by Dify',
changeLogo: 'Ändere Powered by Markenbild',
changeLogoTip: 'SVG oder PNG Format mit einer Mindestgröße von 40x40px',
},
app: {
title: 'App Kopfzeilen Marke anpassen',
changeLogoTip: 'SVG oder PNG Format mit einer Mindestgröße von 80x80px',
},
upload: 'Hochladen',
uploading: 'Lade hoch',
uploadedFail: 'Bild-Upload fehlgeschlagen, bitte erneut hochladen.',
change: 'Ändern',
apply: 'Anwenden',
restore: 'Standardeinstellungen wiederherstellen',
customize: {
contactUs: ' kontaktiere uns ',
prefix: 'Um das Markenlogo innerhalb der App anzupassen, bitte',
suffix: 'um auf die Enterprise-Edition zu upgraden.',
},
}
export default translation

View File

@@ -0,0 +1,205 @@
const translation = {
steps: {
header: {
creation: 'Wissen erstellen',
update: 'Daten hinzufügen',
fallbackRoute: 'Wissen',
},
one: 'Datenquelle wählen',
two: 'Textvorverarbeitung und Bereinigung',
three: 'Ausführen und beenden',
},
error: {
unavailable: 'Dieses Wissen ist nicht verfügbar',
},
stepOne: {
filePreview: 'Dateivorschau',
pagePreview: 'Seitenvorschau',
dataSourceType: {
file: 'Import aus Textdatei',
notion: 'Synchronisation aus Notion',
web: 'Synchronisation von Webseite',
},
uploader: {
title: 'Textdatei hochladen',
button: 'Datei hierher ziehen oder',
browse: 'Durchsuchen',
tip: 'Unterstützt {{supportTypes}}. Maximal {{size}}MB pro Datei.',
validation: {
typeError: 'Dateityp nicht unterstützt',
size: 'Datei zu groß. Maximum ist {{size}}MB',
count: 'Mehrere Dateien nicht unterstützt',
filesNumber: 'Sie haben das Limit für die Stapelverarbeitung von {{filesNumber}} erreicht.',
},
cancel: 'Abbrechen',
change: 'Ändern',
failed: 'Hochladen fehlgeschlagen',
},
notionSyncTitle: 'Notion ist nicht verbunden',
notionSyncTip: 'Um mit Notion zu synchronisieren, muss zuerst eine Verbindung zu Notion hergestellt werden.',
connect: 'Verbinden gehen',
button: 'weiter',
emptyDatasetCreation: 'Ich möchte ein leeres Wissen erstellen',
modal: {
title: 'Ein leeres Wissen erstellen',
tip: 'Ein leeres Wissen enthält keine Dokumente, und Sie können jederzeit Dokumente hochladen.',
input: 'Wissensname',
placeholder: 'Bitte eingeben',
nameNotEmpty: 'Name darf nicht leer sein',
nameLengthInvalid: 'Name muss zwischen 1 bis 40 Zeichen lang sein',
cancelButton: 'Abbrechen',
confirmButton: 'Erstellen',
failed: 'Erstellung fehlgeschlagen',
},
website: {
preview: 'Vorschau',
totalPageScraped: 'Gesamtzahl der gescrapten Seiten:',
fireCrawlNotConfigured: 'Firecrawl ist nicht konfiguriert',
options: 'Optionen',
excludePaths: 'Pfade ausschließen',
limit: 'Grenze',
exceptionErrorTitle: 'Beim Ausführen des Firecrawl-Auftrags ist eine Ausnahme aufgetreten:',
selectAll: 'Alles auswählen',
includeOnlyPaths: 'Nur Pfade einschließen',
run: 'Laufen',
firecrawlDoc: 'Firecrawl-Dokumente',
configure: 'Konfigurieren',
fireCrawlNotConfiguredDescription: 'Konfigurieren Sie Firecrawl mit dem API-Schlüssel, um es zu verwenden.',
maxDepth: 'Maximale Tiefe',
unknownError: 'Unbekannter Fehler',
resetAll: 'Alles zurücksetzen',
extractOnlyMainContent: 'Extrahieren Sie nur den Hauptinhalt (keine Kopf-, Navigations- und Fußzeilen usw.)',
firecrawlDocLink: 'https://docs.dify.ai/guides/knowledge-base/sync-from-website',
firecrawlTitle: 'Extrahieren von Webinhalten mit 🔥Firecrawl',
maxDepthTooltip: 'Maximale Tiefe für das Crawlen relativ zur eingegebenen URL. Tiefe 0 kratzt nur die Seite der eingegebenen URL, Tiefe 1 kratzt die URL und alles nach der eingegebenen URL + ein / und so weiter.',
crawlSubPage: 'Unterseiten crawlen',
scrapTimeInfo: 'Insgesamt {{{total}} Seiten innerhalb von {{time}}s gescrapt',
jinaReaderDocLink: 'https://jina.ai/reader',
jinaReaderTitle: 'Konvertieren Sie die gesamte Website in Markdown',
useSitemap: 'Sitemap verwenden',
chooseProvider: 'Wählen Sie einen Anbieter',
jinaReaderNotConfigured: 'Jina Reader ist nicht konfiguriert',
jinaReaderNotConfiguredDescription: 'Richten Sie Jina Reader ein, indem Sie Ihren kostenlosen API-Schlüssel für den Zugriff eingeben.',
useSitemapTooltip: 'Folgen Sie der Sitemap, um die Website zu crawlen. Ist dies nicht der Fall, crawlt Jina Reader iterativ basierend auf der Seitenrelevanz, sodass weniger, aber qualitativ hochwertigere Seiten angezeigt werden.',
jinaReaderDoc: 'Erfahre mehr über Jina Reader',
},
cancel: 'Abbrechen',
},
stepTwo: {
segmentation: 'Chunk-Einstellungen',
auto: 'Automatisch',
autoDescription: 'Stellt Chunk- und Vorverarbeitungsregeln automatisch ein. Unbekannten Benutzern wird dies empfohlen.',
custom: 'Benutzerdefiniert',
customDescription: 'Chunk-Regeln, Chunk-Länge und Vorverarbeitungsregeln usw. anpassen.',
separator: 'Segmentidentifikator',
separatorPlaceholder: 'Zum Beispiel Neuer Absatz (\\\\n) oder spezieller Separator (wie "***")',
maxLength: 'Maximale Chunk-Länge',
overlap: 'Chunk-Überlappung',
overlapTip: 'Die Einstellung der Chunk-Überlappung kann die semantische Relevanz zwischen ihnen aufrechterhalten und so die Abrufeffekt verbessern. Es wird empfohlen, 10%-25% der maximalen Chunk-Größe einzustellen.',
overlapCheck: 'Chunk-Überlappung sollte nicht größer als maximale Chunk-Länge sein',
rules: 'Textvorverarbeitungsregeln',
removeExtraSpaces: 'Mehrfache Leerzeichen, Zeilenumbrüche und Tabulatoren ersetzen',
removeUrlEmails: 'Alle URLs und E-Mail-Adressen löschen',
removeStopwords: 'Stopwörter wie "ein", "eine", "der" entfernen',
preview: 'Bestätigen & Vorschau',
reset: 'Zurücksetzen',
indexMode: 'Indexmodus',
qualified: 'Hohe Qualität',
recommend: 'Empfehlen',
qualifiedTip: 'Ruft standardmäßige Systemeinbettungsschnittstelle für die Verarbeitung auf, um höhere Genauigkeit bei Benutzerabfragen zu bieten.',
warning: 'Bitte zuerst den API-Schlüssel des Modellanbieters einrichten.',
click: 'Zu den Einstellungen gehen',
economical: 'Ökonomisch',
economicalTip: 'Verwendet Offline-Vektor-Engines, Schlagwortindizes usw., um die Genauigkeit ohne Tokenverbrauch zu reduzieren',
QATitle: 'Segmentierung im Frage-und-Antwort-Format',
QATip: 'Diese Option zu aktivieren, wird mehr Tokens verbrauchen',
QALanguage: 'Segmentierung verwenden',
estimateCost: 'Schätzung',
estimateSegment: 'Geschätzte Chunks',
segmentCount: 'Chunks',
calculating: 'Berechnung...',
fileSource: 'Dokumente vorverarbeiten',
notionSource: 'Seiten vorverarbeiten',
other: 'und weitere ',
fileUnit: ' Dateien',
notionUnit: ' Seiten',
previousStep: 'Vorheriger Schritt',
nextStep: 'Speichern & Verarbeiten',
save: 'Speichern & Verarbeiten',
cancel: 'Abbrechen',
sideTipTitle: 'Warum segmentieren und vorverarbeiten?',
sideTipP1: 'Bei der Verarbeitung von Textdaten sind Segmentierung und Bereinigung zwei wichtige Vorverarbeitungsschritte.',
sideTipP2: 'Segmentierung teilt langen Text in Absätze, damit Modelle ihn besser verstehen können. Dies verbessert die Qualität und Relevanz der Modellergebnisse.',
sideTipP3: 'Bereinigung entfernt unnötige Zeichen und Formate, macht das Wissen sauberer und leichter zu parsen.',
sideTipP4: 'Richtige Segmentierung und Bereinigung verbessern die Modellleistung und liefern genauere und wertvollere Ergebnisse.',
previewTitle: 'Vorschau',
previewTitleButton: 'Vorschau',
previewButton: 'Umschalten zum Frage-und-Antwort-Format',
previewSwitchTipStart: 'Die aktuelle Chunk-Vorschau ist im Textformat, ein Wechsel zur Vorschau im Frage-und-Antwort-Format wird',
previewSwitchTipEnd: ' zusätzliche Tokens verbrauchen',
characters: 'Zeichen',
indexSettingTip: 'Um die Indexmethode zu ändern, bitte gehen Sie zu den ',
retrievalSettingTip: 'Um die Indexmethode zu ändern, bitte gehen Sie zu den ',
datasetSettingLink: 'Wissenseinstellungen.',
websiteSource: 'Preprocess-Website',
webpageUnit: 'Seiten',
separatorTip: 'Ein Trennzeichen ist das Zeichen, das zum Trennen von Text verwendet wird. \\n\\n und \\n sind häufig verwendete Trennzeichen zum Trennen von Absätzen und Zeilen. In Kombination mit Kommas (\\n\\n,\\n) werden Absätze nach Zeilen segmentiert, wenn die maximale Blocklänge überschritten wird. Sie können auch spezielle, von Ihnen selbst definierte Trennzeichen verwenden (z. B. ***).',
maxLengthCheck: 'Die maximale Stücklänge sollte weniger als {{limit}} betragen',
switch: 'Schalter',
previewChunk: 'Vorschau Chunk',
highQualityTip: 'Sobald die Einbettung im Modus "Hohe Qualität" abgeschlossen ist, ist es nicht mehr möglich, in den Modus "Wirtschaftlich" zurückzukehren.',
parentChildTip: 'Wenn Sie den Parent-Child-Modus verwenden, wird der Child-Chunk für den Abruf und der Parent-Chunk für den Abruf als Kontext verwendet.',
fullDoc: 'Vollständiges Dokument',
parentChildDelimiterTip: 'Ein Trennzeichen ist das Zeichen, das zum Trennen von Text verwendet wird. \\n\\n wird empfohlen, um das Originaldokument in große übergeordnete Blöcke aufzuteilen. Sie können auch spezielle Trennzeichen verwenden, die Sie selbst definiert haben.',
qaSwitchHighQualityTipContent: 'Derzeit unterstützt nur eine hochwertige Indexmethode das Q&A-Format-Chunking. Möchten Sie in den High-Quality-Modus wechseln?',
childChunkForRetrieval: 'Child-Chunk zum Abrufen',
previewChunkCount: '{{Anzahl}} Geschätzte Chunks',
previewChunkTip: 'Klicken Sie auf die Schaltfläche "Preview Chunk" auf der linken Seite, um die Vorschau zu laden',
qaSwitchHighQualityTipTitle: 'Das Q&A-Format erfordert eine qualitativ hochwertige Indizierungsmethode',
general: 'Allgemein',
generalTip: 'Allgemeiner Text-Chunking-Modus, die abgerufenen und zurückgerufenen Chunks sind gleich.',
notAvailableForQA: 'Nicht verfügbar für Q&A Index',
notAvailableForParentChild: 'Nicht verfügbar für den Parent-Child-Index',
parentChild: 'Eltern-Kind',
parentChunkForContext: 'Parent-chunk für Context',
parentChildChunkDelimiterTip: 'Ein Trennzeichen ist das Zeichen, das zum Trennen von Text verwendet wird. \\n wird empfohlen, um übergeordnete Blöcke in kleine untergeordnete Blöcke aufzuteilen. Sie können auch spezielle Trennzeichen verwenden, die Sie selbst definiert haben.',
useQALanguage: 'Chunk im Q&A-Format in',
paragraph: 'Absatz',
fullDocTip: 'Das gesamte Dokument wird als übergeordneter Block verwendet und direkt abgerufen. Bitte beachten Sie, dass aus Leistungsgründen Texte, die 10000 Token überschreiten, automatisch abgeschnitten werden.',
paragraphTip: 'In diesem Modus wird der Text basierend auf Trennzeichen und der maximalen Blocklänge in Absätze aufgeteilt, wobei der geteilte Text als übergeordneter Block für den Abruf verwendet wird.',
},
stepThree: {
creationTitle: '🎉 Wissen erstellt',
creationContent: 'Wir haben das Wissen automatisch benannt, Sie können es jederzeit ändern',
label: 'Wissensname',
additionTitle: '🎉 Dokument hochgeladen',
additionP1: 'Das Dokument wurde zum Wissen hinzugefügt',
additionP2: ', Sie können es in der Dokumentenliste des Wissens finden.',
stop: 'Verarbeitung stoppen',
resume: 'Verarbeitung fortsetzen',
navTo: 'Zum Dokument gehen',
sideTipTitle: 'Was kommt als Nächstes',
sideTipContent: 'Nachdem das Dokument indiziert wurde, kann das Wissen in die Anwendung als Kontext integriert werden, Sie finden die Kontexteinstellung auf der Seite zur Eingabeaufforderungen-Orchestrierung. Sie können es auch als unabhängiges ChatGPT-Indexierungsplugin zur Veröffentlichung erstellen.',
modelTitle: 'Sind Sie sicher, dass Sie die Einbettung stoppen möchten?',
modelContent: 'Wenn Sie die Verarbeitung später fortsetzen möchten, werden Sie dort weitermachen, wo Sie aufgehört haben.',
modelButtonConfirm: 'Bestätigen',
modelButtonCancel: 'Abbrechen',
},
firecrawl: {
apiKeyPlaceholder: 'API-Schlüssel von firecrawl.dev',
configFirecrawl: 'Konfigurieren von 🔥Firecrawl',
getApiKeyLinkText: 'Holen Sie sich Ihren API-Schlüssel von firecrawl.dev',
},
jinaReader: {
configJinaReader: 'Jina Reader konfigurieren',
apiKeyPlaceholder: 'API-Schlüssel von jina.ai',
getApiKeyLinkText: 'Holen Sie sich Ihren kostenlosen API-Schlüssel bei jina.ai',
},
otherDataSource: {
learnMore: 'Weitere Informationen',
title: 'Verbinden Sie sich mit anderen Datenquellen?',
description: 'Derzeit verfügt die Wissensdatenbank von Dify nur über begrenzte Datenquellen. Das Beitragen einer Datenquelle zur Dify-Wissensdatenbank ist eine fantastische Möglichkeit, die Flexibilität und Leistungsfähigkeit der Plattform für alle Benutzer zu verbessern. Unser Beitragsleitfaden erleichtert Ihnen den Einstieg. Bitte klicken Sie auf den untenstehenden Link, um mehr zu erfahren.',
},
}
export default translation

View File

@@ -0,0 +1,396 @@
const translation = {
list: {
title: 'Dokumente',
desc: 'Alle Dateien des Wissens werden hier angezeigt, und das gesamte Wissen kann mit Dify-Zitaten verknüpft oder über das Chat-Plugin indiziert werden.',
addFile: 'Datei hinzufügen',
addPages: 'Seiten hinzufügen',
table: {
header: {
fileName: 'DATEINAME',
words: 'WÖRTER',
hitCount: 'SUCHANFRAGEN',
uploadTime: 'HOCHLADEZEIT',
status: 'STATUS',
action: 'AKTION',
chunkingMode: 'CHUNKING-MODUS',
},
name: 'Name',
rename: 'Umbenennen',
},
action: {
uploadFile: 'Neue Datei hochladen',
settings: 'Segment-Einstellungen',
addButton: 'Chunk hinzufügen',
add: 'Einen Chunk hinzufügen',
batchAdd: 'Batch hinzufügen',
archive: 'Archivieren',
unarchive: 'Archivierung aufheben',
delete: 'Löschen',
enableWarning: 'Archivierte Datei kann nicht aktiviert werden',
sync: 'Synchronisieren',
},
index: {
enable: 'Aktivieren',
disable: 'Deaktivieren',
all: 'Alle',
enableTip: 'Die Datei kann indiziert werden',
disableTip: 'Die Datei kann nicht indiziert werden',
},
status: {
queuing: 'In Warteschlange',
indexing: 'Indizierung',
paused: 'Pausiert',
error: 'Fehler',
available: 'Verfügbar',
enabled: 'Aktiviert',
disabled: 'Deaktiviert',
archived: 'Archiviert',
},
empty: {
title: 'Es gibt noch keine Dokumentation',
upload: {
tip: 'Sie können Dateien hochladen, von der Website oder von Web-Apps wie Notion, GitHub usw. synchronisieren.',
},
sync: {
tip: 'Dify wird periodisch Dateien von Ihrem Notion herunterladen und die Verarbeitung abschließen.',
},
},
delete: {
title: 'Sind Sie sicher, dass Sie löschen möchten?',
content: 'Wenn Sie die Verarbeitung später fortsetzen müssen, werden Sie dort weitermachen, wo Sie aufgehört haben',
},
batchModal: {
title: 'Chunks in Batch hinzufügen',
csvUploadTitle: 'Ziehen Sie Ihre CSV-Datei hierher oder ',
browse: 'durchsuchen',
tip: 'Die CSV-Datei muss der folgenden Struktur entsprechen:',
question: 'Frage',
answer: 'Antwort',
contentTitle: 'Chunk-Inhalt',
content: 'Inhalt',
template: 'Laden Sie die Vorlage hier herunter',
cancel: 'Abbrechen',
run: 'Batch ausführen',
runError: 'Batch-Ausführung fehlgeschlagen',
processing: 'In Batch-Verarbeitung',
completed: 'Import abgeschlossen',
error: 'Importfehler',
ok: 'OK',
},
addUrl: 'URL hinzufügen',
learnMore: 'Weitere Informationen',
},
metadata: {
title: 'Metadaten',
desc: 'Das Kennzeichnen von Metadaten für Dokumente ermöglicht es der KI, sie rechtzeitig zu erreichen und die Quelle der Referenzen für die Benutzer offenzulegen.',
dateTimeFormat: 'MMMM D, YYYY hh:mm A',
docTypeSelectTitle: 'Bitte wählen Sie einen Dokumenttyp',
docTypeChangeTitle: 'Dokumenttyp ändern',
docTypeSelectWarning:
'Wenn der Dokumenttyp geändert wird, werden die jetzt ausgefüllten Metadaten nicht mehr erhalten bleiben',
firstMetaAction: 'Los geht\'s',
placeholder: {
add: 'Hinzufügen ',
select: 'Auswählen ',
},
source: {
upload_file: 'Datei hochladen',
notion: 'Von Notion synchronisieren',
github: 'Von Github synchronisieren',
},
type: {
book: 'Buch',
webPage: 'Webseite',
paper: 'Aufsatz',
socialMediaPost: 'Social Media Beitrag',
personalDocument: 'Persönliches Dokument',
businessDocument: 'Geschäftsdokument',
IMChat: 'IM Chat',
wikipediaEntry: 'Wikipedia-Eintrag',
notion: 'Von Notion synchronisieren',
github: 'Von Github synchronisieren',
technicalParameters: 'Technische Parameter',
},
field: {
processRule: {
processDoc: 'Dokument verarbeiten',
segmentRule: 'Chunk-Regel',
segmentLength: 'Chunk-Länge',
processClean: 'Textverarbeitung bereinigen',
},
book: {
title: 'Titel',
language: 'Sprache',
author: 'Autor',
publisher: 'Verlag',
publicationDate: 'Veröffentlichungsdatum',
ISBN: 'ISBN',
category: 'Kategorie',
},
webPage: {
title: 'Titel',
url: 'URL',
language: 'Sprache',
authorPublisher: 'Autor/Verlag',
publishDate: 'Veröffentlichungsdatum',
topicKeywords: 'Themen/Schlüsselwörter',
description: 'Beschreibung',
},
paper: {
title: 'Titel',
language: 'Sprache',
author: 'Autor',
publishDate: 'Veröffentlichungsdatum',
journalConferenceName: 'Zeitschrift/Konferenzname',
volumeIssuePage: 'Band/Ausgabe/Seite',
DOI: 'DOI',
topicKeywords: 'Themen/Schlüsselwörter',
abstract: 'Zusammenfassung',
topicsKeywords: 'Themen/Stichworte',
},
socialMediaPost: {
platform: 'Plattform',
authorUsername: 'Autor/Benutzername',
publishDate: 'Veröffentlichungsdatum',
postURL: 'Beitrags-URL',
topicsTags: 'Themen/Tags',
},
personalDocument: {
title: 'Titel',
author: 'Autor',
creationDate: 'Erstellungsdatum',
lastModifiedDate: 'Letztes Änderungsdatum',
documentType: 'Dokumenttyp',
tagsCategory: 'Tags/Kategorie',
},
businessDocument: {
title: 'Titel',
author: 'Autor',
creationDate: 'Erstellungsdatum',
lastModifiedDate: 'Letztes Änderungsdatum',
documentType: 'Dokumenttyp',
departmentTeam: 'Abteilung/Team',
},
IMChat: {
chatPlatform: 'Chat-Plattform',
chatPartiesGroupName: 'Chat-Parteien/Gruppenname',
participants: 'Teilnehmer',
startDate: 'Startdatum',
endDate: 'Enddatum',
topicsKeywords: 'Themen/Schlüsselwörter',
fileType: 'Dateityp',
},
wikipediaEntry: {
title: 'Titel',
language: 'Sprache',
webpageURL: 'Webseiten-URL',
editorContributor: 'Editor/Beitragender',
lastEditDate: 'Letztes Bearbeitungsdatum',
summaryIntroduction: 'Zusammenfassung/Einführung',
},
notion: {
title: 'Titel',
language: 'Sprache',
author: 'Autor',
createdTime: 'Erstellungszeit',
lastModifiedTime: 'Letzte Änderungszeit',
url: 'URL',
tag: 'Tag',
description: 'Beschreibung',
},
github: {
repoName: 'Repository-Name',
repoDesc: 'Repository-Beschreibung',
repoOwner: 'Repository-Eigentümer',
fileName: 'Dateiname',
filePath: 'Dateipfad',
programmingLang: 'Programmiersprache',
url: 'URL',
license: 'Lizenz',
lastCommitTime: 'Letzte Commit-Zeit',
lastCommitAuthor: 'Letzter Commit-Autor',
},
originInfo: {
originalFilename: 'Originaldateiname',
originalFileSize: 'Originaldateigröße',
uploadDate: 'Hochladedatum',
lastUpdateDate: 'Letztes Änderungsdatum',
source: 'Quelle',
},
technicalParameters: {
segmentSpecification: 'Chunk-Spezifikation',
segmentLength: 'Chunk-Länge',
avgParagraphLength: 'Durchschn. Absatzlänge',
paragraphs: 'Absätze',
hitCount: 'Abrufanzahl',
embeddingTime: 'Einbettungszeit',
embeddedSpend: 'Einbettungsausgaben',
},
},
languageMap: {
zh: 'Chinesisch',
en: 'Englisch',
es: 'Spanisch',
fr: 'Französisch',
de: 'Deutsch',
ja: 'Japanisch',
ko: 'Koreanisch',
ru: 'Russisch',
ar: 'Arabisch',
pt: 'Portugiesisch',
it: 'Italienisch',
nl: 'Niederländisch',
pl: 'Polnisch',
sv: 'Schwedisch',
tr: 'Türkisch',
he: 'Hebräisch',
hi: 'Hindi',
da: 'Dänisch',
fi: 'Finnisch',
no: 'Norwegisch',
hu: 'Ungarisch',
el: 'Griechisch',
cs: 'Tschechisch',
th: 'Thai',
id: 'Indonesisch',
},
categoryMap: {
book: {
fiction: 'Fiktion',
biography: 'Biografie',
history: 'Geschichte',
science: 'Wissenschaft',
technology: 'Technologie',
education: 'Bildung',
philosophy: 'Philosophie',
religion: 'Religion',
socialSciences: 'Sozialwissenschaften',
art: 'Kunst',
travel: 'Reisen',
health: 'Gesundheit',
selfHelp: 'Selbsthilfe',
businessEconomics: 'Wirtschaft',
cooking: 'Kochen',
childrenYoungAdults: 'Kinder & Jugendliche',
comicsGraphicNovels: 'Comics & Grafische Romane',
poetry: 'Poesie',
drama: 'Drama',
other: 'Andere',
},
personalDoc: {
notes: 'Notizen',
blogDraft: 'Blog-Entwurf',
diary: 'Tagebuch',
researchReport: 'Forschungsbericht',
bookExcerpt: 'Buchauszug',
schedule: 'Zeitplan',
list: 'Liste',
projectOverview: 'Projektübersicht',
photoCollection: 'Fotosammlung',
creativeWriting: 'Kreatives Schreiben',
codeSnippet: 'Code-Snippet',
designDraft: 'Design-Entwurf',
personalResume: 'Persönlicher Lebenslauf',
other: 'Andere',
},
businessDoc: {
meetingMinutes: 'Protokolle',
researchReport: 'Forschungsbericht',
proposal: 'Vorschlag',
employeeHandbook: 'Mitarbeiterhandbuch',
trainingMaterials: 'Schulungsmaterialien',
requirementsDocument: 'Anforderungsdokumentation',
designDocument: 'Design-Dokument',
productSpecification: 'Produktspezifikation',
financialReport: 'Finanzbericht',
marketAnalysis: 'Marktanalyse',
projectPlan: 'Projektplan',
teamStructure: 'Teamstruktur',
policiesProcedures: 'Richtlinien & Verfahren',
contractsAgreements: 'Verträge & Vereinbarungen',
emailCorrespondence: 'E-Mail-Korrespondenz',
other: 'Andere',
},
},
},
embedding: {
processing: 'Einbettungsverarbeitung...',
paused: 'Einbettung pausiert',
completed: 'Einbettung abgeschlossen',
error: 'Einbettungsfehler',
docName: 'Dokument vorbereiten',
mode: 'Segmentierungsregel',
segmentLength: 'Chunk-Länge',
textCleaning: 'Textvordefinition und -bereinigung',
segments: 'Absätze',
highQuality: 'Hochwertiger Modus',
economy: 'Wirtschaftlicher Modus',
estimate: 'Geschätzter Verbrauch',
stop: 'Verarbeitung stoppen',
resume: 'Verarbeitung fortsetzen',
automatic: 'Automatisch',
custom: 'Benutzerdefiniert',
previewTip: 'Absatzvorschau ist nach Abschluss der Einbettung verfügbar',
parentMaxTokens: 'Elternteil',
childMaxTokens: 'Kind',
hierarchical: 'Eltern-Kind',
pause: 'Pause',
},
segment: {
paragraphs: 'Absätze',
keywords: 'Schlüsselwörter',
addKeyWord: 'Schlüsselwort hinzufügen',
keywordError: 'Die maximale Länge des Schlüsselworts beträgt 20',
characters: 'Zeichen',
hitCount: 'Abrufanzahl',
vectorHash: 'Vektor-Hash: ',
questionPlaceholder: 'Frage hier hinzufügen',
questionEmpty: 'Frage darf nicht leer sein',
answerPlaceholder: 'Antwort hier hinzufügen',
answerEmpty: 'Antwort darf nicht leer sein',
contentPlaceholder: 'Inhalt hier hinzufügen',
contentEmpty: 'Inhalt darf nicht leer sein',
newTextSegment: 'Neues Textsegment',
newQaSegment: 'Neues Q&A-Segment',
delete: 'Diesen Chunk löschen?',
parentChunks_one: 'ÜBERGEORDNETER CHUNK',
searchResults_other: 'BEFUND',
clearFilter: 'Filter löschen',
chunk: 'Stück',
childChunk: 'Untergeordneter Brocken',
newChildChunk: 'Neuer untergeordneter Block',
chunkDetail: 'Chunk-Detail',
regeneratingMessage: 'Das kann einen Moment dauern, bitte warten...',
searchResults_zero: 'ERGEBNIS',
parentChunks_other: 'ÜBERGEORDNETE BLÖCKE',
editParentChunk: 'Übergeordneter Block bearbeiten',
childChunks_other: 'UNTERGEORDNETE BLÖCKE',
editChunk: 'Chunk bearbeiten',
regenerationSuccessTitle: 'Regeneration abgeschlossen',
parentChunk: 'Übergeordneter Chunk',
childChunkAdded: '1 untergeordneter Block hinzugefügt',
edited: 'BEARBEITETE',
collapseChunks: 'Blöcke reduzieren',
empty: 'Kein Chunk gefunden',
regenerationSuccessMessage: 'Sie können dieses Fenster schließen.',
chunks_other: 'STÜCKE',
regenerationConfirmMessage: 'Beim Regenerieren von untergeordneten Blöcken werden die aktuellen untergeordneten Blöcke überschrieben, einschließlich bearbeiteter und neu hinzugefügter Blöcke. Die Regeneration kann nicht rückgängig gemacht werden.',
childChunks_one: 'UNTERGEORDNETER CHUNK',
characters_other: 'Zeichen',
newChunk: 'Neuer Brocken',
editChildChunk: 'Untergeordneten Block bearbeiten',
chunkAdded: '1 Stück hinzugefügt',
expandChunks: 'Blöcke erweitern',
editedAt: 'Bearbeitet am',
addChunk: 'Block hinzufügen',
addAnother: 'Fügen Sie eine weitere hinzu',
regeneratingTitle: 'Regenerieren von untergeordneten Blöcken',
chunks_one: 'STÜCK',
characters_one: 'Zeichen',
addChildChunk: 'Untergeordneten Block hinzufügen',
regenerationConfirmTitle: 'Möchten Sie untergeordnete Chunks regenerieren?',
searchResults_one: 'ERGEBNIS',
},
}
export default translation

View File

@@ -0,0 +1,35 @@
const translation = {
title: 'Abruf-Test',
desc: 'Testen Sie die Treffereffektivität des Wissens anhand des gegebenen Abfragetextes.',
dateTimeFormat: 'MM/TT/JJJJ hh:mm A',
recents: 'Kürzlich',
table: {
header: {
source: 'Quelle',
text: 'Text',
time: 'Zeit',
},
},
input: {
title: 'Quelltext',
placeholder: 'Bitte geben Sie einen Text ein, ein kurzer aussagekräftiger Satz wird empfohlen.',
countWarning: 'Bis zu 200 Zeichen.',
indexWarning: 'Nur Wissen hoher Qualität.',
testing: 'Testen',
},
hit: {
title: 'ABRUFPARAGRAFEN',
emptyTip: 'Ergebnisse des Abruf-Tests werden hier angezeigt',
},
noRecentTip: 'Keine kürzlichen Abfrageergebnisse hier',
viewChart: 'VEKTORDIAGRAMM ansehen',
viewDetail: 'Im Detail sehen',
settingTitle: 'Einstellung für den Abruf',
records: 'Aufzeichnungen',
open: 'Offen',
hitChunks: 'Klicken Sie auf {{num}} untergeordnete Chunks',
keyword: 'Schlüsselwörter',
chunkDetail: 'Chunk-Detail',
}
export default translation

View File

@@ -0,0 +1,41 @@
const translation = {
title: 'Wissenseinstellungen',
desc: 'Hier können Sie die Eigenschaften und Arbeitsweisen des Wissens anpassen.',
form: {
name: 'Wissensname',
namePlaceholder: 'Bitte geben Sie den Namen des Wissens ein',
nameError: 'Name darf nicht leer sein',
desc: 'Wissensbeschreibung',
descInfo: 'Bitte schreiben Sie eine klare textuelle Beschreibung, um den Inhalt des Wissens zu umreißen. Diese Beschreibung wird als Grundlage für die Auswahl aus mehreren Wissensdatenbanken zur Inferenz verwendet.',
descPlaceholder: 'Beschreiben Sie, was in diesem Wissen enthalten ist. Eine detaillierte Beschreibung ermöglicht es der KI, zeitnah auf den Inhalt des Wissens zuzugreifen. Wenn leer, verwendet Dify die Standard-Treffstrategie.',
descWrite: 'Erfahren Sie, wie man eine gute Wissensbeschreibung schreibt.',
permissions: 'Berechtigungen',
permissionsOnlyMe: 'Nur ich',
permissionsAllMember: 'Alle Teammitglieder',
indexMethod: 'Indexierungsmethode',
indexMethodHighQuality: 'Hohe Qualität',
indexMethodHighQualityTip: 'Den Embedding-Modell zur Verarbeitung aufrufen, um bei Benutzeranfragen eine höhere Genauigkeit zu bieten.',
indexMethodEconomy: 'Ökonomisch',
indexMethodEconomyTip: 'Verwendet Offline-Vektor-Engines, Schlagwortindizes usw., um die Genauigkeit ohne Tokenverbrauch zu reduzieren',
embeddingModel: 'Einbettungsmodell',
embeddingModelTip: 'Ändern Sie das eingebettete Modell, bitte gehen Sie zu ',
embeddingModelTipLink: 'Einstellungen',
retrievalSetting: {
title: 'Abrufeinstellung',
learnMore: 'Mehr erfahren',
description: ' über die Abrufmethode.',
longDescription: ' über die Abrufmethode, dies kann jederzeit in den Wissenseinstellungen geändert werden.',
},
save: 'Speichern',
permissionsInvitedMembers: 'Teilweise Teammitglieder',
me: '(Sie)',
externalKnowledgeID: 'ID für externes Wissen',
externalKnowledgeAPI: 'API für externes Wissen',
retrievalSettings: 'Einstellungen für den Abruf',
upgradeHighQualityTip: 'Nach dem Upgrade auf den Modus "Hohe Qualität" ist das Zurücksetzen auf den Modus "Wirtschaftlich" nicht mehr möglich',
helpText: 'Erfahren Sie, wie Sie eine gute Datensatzbeschreibung schreiben.',
indexMethodChangeToEconomyDisabledTip: 'Nicht verfügbar für ein Downgrade von HQ auf ECO',
},
}
export default translation

View File

@@ -0,0 +1,173 @@
const translation = {
knowledge: 'Wissen',
documentCount: ' Dokumente',
wordCount: ' k Wörter',
appCount: ' verknüpfte Apps',
createDataset: 'Wissen erstellen',
createDatasetIntro: 'Importiere deine eigenen Textdaten oder schreibe Daten in Echtzeit über Webhook für die LLM-Kontextverbesserung.',
deleteDatasetConfirmTitle: 'Dieses Wissen löschen?',
deleteDatasetConfirmContent:
'Das Löschen des Wissens ist unwiderruflich. Benutzer werden nicht mehr auf Ihr Wissen zugreifen können und alle Eingabeaufforderungen, Konfigurationen und Protokolle werden dauerhaft gelöscht.',
datasetUsedByApp: 'Das Wissen wird von einigen Apps verwendet. Apps werden dieses Wissen nicht mehr nutzen können, und alle Prompt-Konfigurationen und Protokolle werden dauerhaft gelöscht.',
datasetDeleted: 'Wissen gelöscht',
datasetDeleteFailed: 'Löschen des Wissens fehlgeschlagen',
didYouKnow: 'Wusstest du schon?',
intro1: 'Das Wissen kann in die Dify-Anwendung ',
intro2: 'als Kontext',
intro3: ',',
intro4: 'oder es ',
intro5: 'kann erstellt werden',
intro6: ' als ein eigenständiges ChatGPT-Index-Plugin zum Veröffentlichen',
unavailable: 'Nicht verfügbar',
unavailableTip: 'Einbettungsmodell ist nicht verfügbar, das Standard-Einbettungsmodell muss konfiguriert werden',
datasets: 'WISSEN',
datasetsApi: 'API',
retrieval: {
semantic_search: {
title: 'Vektorsuche',
description: 'Erzeuge Abfrage-Einbettungen und suche nach dem Textstück, das seiner Vektorrepräsentation am ähnlichsten ist.',
},
full_text_search: {
title: 'Volltextsuche',
description: 'Indiziere alle Begriffe im Dokument, sodass Benutzer jeden Begriff suchen und den relevanten Textabschnitt finden können, der diese Begriffe enthält.',
},
hybrid_search: {
title: 'Hybridsuche',
description: 'Führe Volltextsuche und Vektorsuchen gleichzeitig aus, ordne neu, um die beste Übereinstimmung für die Abfrage des Benutzers auszuwählen. Konfiguration des Rerank-Modell-APIs ist notwendig.',
recommend: 'Empfehlen',
},
invertedIndex: {
title: 'Invertierter Index',
description: 'Ein invertierter Index ist eine Struktur, die für effiziente Abfragen verwendet wird. Organisiert nach Begriffen, zeigt jeder Begriff auf Dokumente oder Webseiten, die ihn enthalten.',
},
change: 'Ändern',
changeRetrievalMethod: 'Abfragemethode ändern',
},
docsFailedNotice: 'Dokumente konnten nicht indiziert werden',
retry: 'Wiederholen',
indexingTechnique: {
high_quality: 'HQ',
economy: 'ECO',
},
indexingMethod: {
semantic_search: 'VEKTOR',
full_text_search: 'VOLLTEXT',
hybrid_search: 'HYBRID',
invertedIndex: 'INVERTIERT',
},
mixtureHighQualityAndEconomicTip: 'Für die Mischung von hochwertigen und wirtschaftlichen Wissensbasen ist das Rerank-Modell erforderlich.',
inconsistentEmbeddingModelTip: 'Das Rerank-Modell ist erforderlich, wenn die Embedding-Modelle der ausgewählten Wissensbasen inkonsistent sind.',
retrievalSettings: 'Abrufeinstellungen',
rerankSettings: 'Rerank-Einstellungen',
weightedScore: {
title: 'Gewichtete Bewertung',
description: 'Durch Anpassung der zugewiesenen Gewichte bestimmt diese Rerank-Strategie, ob semantische oder Schlüsselwort-Übereinstimmung priorisiert werden soll.',
semanticFirst: 'Semantik zuerst',
keywordFirst: 'Schlüsselwort zuerst',
customized: 'Angepasst',
semantic: 'Semantisch',
keyword: 'Schlüsselwort',
},
nTo1RetrievalLegacy: 'N-zu-1-Abruf wird ab September offiziell eingestellt. Es wird empfohlen, den neuesten Multi-Pfad-Abruf zu verwenden, um bessere Ergebnisse zu erzielen.',
nTo1RetrievalLegacyLink: 'Mehr erfahren',
nTo1RetrievalLegacyLinkText: 'N-zu-1-Abruf wird im September offiziell eingestellt.',
defaultRetrievalTip: 'Standardmäßig wird der Multi-Path-Abruf verwendet. Das Wissen wird aus mehreren Wissensdatenbanken abgerufen und dann neu eingestuft.',
editExternalAPIConfirmWarningContent: {
end: 'externes Wissen, und diese Modifikation wird auf alle angewendet. Sind Sie sicher, dass Sie diese Änderung speichern möchten?',
front: 'Diese External Knowledge API ist verknüpft mit',
},
editExternalAPIFormWarning: {
front: 'Diese externe API ist verknüpft mit',
end: 'externes Wissen',
},
deleteExternalAPIConfirmWarningContent: {
title: {
front: 'Löschen',
end: '?',
},
content: {
front: 'Diese External Knowledge API ist verknüpft mit',
end: 'externes Wissen. Wenn Sie diese API löschen, werden alle ungültig. Sind Sie sicher, dass Sie diese API löschen möchten?',
},
noConnectionContent: 'Sind Sie sicher, dass Sie diese API löschen möchten?',
},
selectExternalKnowledgeAPI: {
placeholder: 'Auswählen einer externen Wissens-API',
},
connectDatasetIntro: {
content: {
front: 'Um eine Verbindung zu einer externen Wissensdatenbank herzustellen, müssen Sie zuerst eine externe API erstellen. Bitte lesen Sie diese sorgfältig durch und beziehen Sie sich auf',
link: 'Erfahren Sie, wie Sie eine externe API erstellen',
end: '. Suchen Sie dann die entsprechende Wissens-ID und füllen Sie diese in das Formular links aus. Wenn alle Informationen korrekt sind, wird nach dem Klicken auf die Schaltfläche "Verbinden" automatisch zum Abruftest in der Wissensdatenbank gesprungen.',
},
learnMore: 'Weitere Informationen',
title: 'So stellen Sie eine Verbindung zu einer externen Wissensdatenbank her',
},
connectHelper: {
helper3: '. Wir empfehlen Ihnen dringend,',
helper2: 'Es wird nur die Retrieval-Funktionalität unterstützt',
helper5: 'bevor Sie diese Funktion verwenden.',
helper4: 'Lesen Sie die Hilfedokumentation',
helper1: 'Verbinden Sie sich mit externen Wissensdatenbanken über API und Wissensdatenbank-ID.',
},
externalKnowledgeForm: {
connect: 'Verbinden',
cancel: 'Abbrechen',
},
externalAPIForm: {
encrypted: {
front: 'Ihr API-Token wird verschlüsselt und gespeichert mit',
end: 'Technologie.',
},
save: 'Retten',
cancel: 'Abbrechen',
endpoint: 'API-Endpunkt',
name: 'Name',
edit: 'Redigieren',
apiKey: 'API-Schlüssel',
},
externalTag: 'Äußerlich',
createExternalAPI: 'Hinzufügen einer externen Knowledge-API',
externalAPIPanelDescription: 'Die API für externes Wissen wird verwendet, um eine Verbindung zu einer Wissensdatenbank außerhalb von Dify herzustellen und Wissen aus dieser Wissensdatenbank abzurufen.',
createNewExternalAPI: 'Erstellen einer neuen API für externes Wissen',
externalKnowledgeDescriptionPlaceholder: 'Beschreiben Sie, was in dieser Wissensdatenbank enthalten ist (optional)',
externalAPIPanelDocumentation: 'Erfahren Sie, wie Sie eine API für externes Wissen erstellen',
externalAPIPanelTitle: 'API für externes Wissen',
learnHowToWriteGoodKnowledgeDescription: 'Erfahren Sie, wie Sie eine gute Wissensbeschreibung schreiben',
editExternalAPITooltipTitle: 'VERKNÜPFTES WISSEN',
externalKnowledgeIdPlaceholder: 'Bitte geben Sie die Knowledge ID ein',
connectDataset: 'Herstellen einer Verbindung mit einer externen Wissensdatenbank',
externalAPI: 'Externe API',
externalKnowledgeName: 'Name des externen Wissens',
allExternalTip: 'Wenn nur externes Wissen verwendet wird, kann der Benutzer auswählen, ob das Rerank-Modell aktiviert werden soll. Wenn diese Option nicht aktiviert ist, werden die abgerufenen Blöcke basierend auf den Punktzahlen sortiert. Wenn die Abrufstrategien verschiedener Wissensdatenbanken inkonsistent sind, ist dies ungenau.',
externalKnowledgeDescription: 'Wissen Beschreibung',
noExternalKnowledge: 'Es gibt noch keine External Knowledge API, klicken Sie hier, um zu erstellen',
externalKnowledgeNamePlaceholder: 'Bitte geben Sie den Namen der Wissensdatenbank ein.',
mixtureInternalAndExternalTip: 'Das Rerank-Modell ist für die Mischung von internem und externem Wissen erforderlich.',
externalKnowledgeId: 'ID für externes Wissen',
editExternalAPIFormTitle: 'Bearbeiten der API für externes Wissen',
chunkingMode: {
parentChild: 'Eltern-Kind',
general: 'Allgemein',
},
parentMode: {
paragraph: 'Absatz',
fullDoc: 'Vollständiges Dokument',
},
batchAction: {
selected: 'Ausgewählt',
cancel: 'Abbrechen',
archive: 'Archiv',
disable: 'Abschalten',
delete: 'Löschen',
enable: 'Ermöglichen',
},
enable: 'Ermöglichen',
localDocs: 'Lokale Dokumente',
preprocessDocument: '{{num}} Vorverarbeiten von Dokumenten',
documentsDisabled: '{{num}} Dokumente deaktiviert - seit über 30 Tagen inaktiv',
allKnowledge: 'Alles Wissen',
allKnowledgeDescription: 'Wählen Sie diese Option aus, um das gesamte Wissen in diesem Arbeitsbereich anzuzeigen. Nur der Workspace-Besitzer kann das gesamte Wissen verwalten.',
}
export default translation

View File

@@ -0,0 +1,43 @@
const translation = {
title: 'Entdecken',
sidebar: {
discovery: 'Entdeckung',
chat: 'Chat',
workspace: 'Arbeitsbereich',
action: {
pin: 'Anheften',
unpin: 'Lösen',
rename: 'Umbenennen',
delete: 'Löschen',
},
delete: {
title: 'App löschen',
content: 'Sind Sie sicher, dass Sie diese App löschen möchten?',
},
},
apps: {
title: 'Apps von Dify erkunden',
description: 'Nutzen Sie diese Vorlagen-Apps sofort oder passen Sie Ihre eigenen Apps basierend auf den Vorlagen an.',
allCategories: 'Alle Kategorien',
},
appCard: {
addToWorkspace: 'Zum Arbeitsbereich hinzufügen',
customize: 'Anpassen',
},
appCustomize: {
title: 'App aus {{name}} erstellen',
subTitle: 'App-Symbol & Name',
nameRequired: 'App-Name ist erforderlich',
},
category: {
Assistant: 'Assistent',
Writing: 'Schreiben',
Translate: 'Übersetzen',
Programming: 'Programmieren',
HR: 'Personalwesen',
Agent: 'Agent',
Workflow: 'Arbeitsablauf',
},
}
export default translation

View File

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

View File

@@ -0,0 +1,110 @@
const translation = {
pageTitle: 'Hey, lass uns anfangen!👋',
welcome: 'Willkommen bei Dify, bitte melde dich an, um fortzufahren.',
email: 'E-Mail-Adresse',
emailPlaceholder: 'Deine E-Mail',
password: 'Passwort',
passwordPlaceholder: 'Dein Passwort',
name: 'Benutzername',
namePlaceholder: 'Dein Benutzername',
forget: 'Passwort vergessen?',
signBtn: 'Anmelden',
installBtn: 'Einrichten',
setAdminAccount: 'Admin-Konto einrichten',
setAdminAccountDesc: 'Maximale Berechtigungen für das Admin-Konto, das verwendet werden kann, um Anwendungen zu erstellen und LLM-Anbieter usw. zu verwalten.',
createAndSignIn: 'Erstellen und anmelden',
oneMoreStep: 'Nur noch ein Schritt',
createSample: 'Basierend auf diesen Informationen erstellen wir eine Beispielanwendung für dich',
invitationCode: 'Einladungscode',
invitationCodePlaceholder: 'Dein Einladungscode',
interfaceLanguage: 'Oberflächensprache',
timezone: 'Zeitzone',
go: 'Zu Dify gehen',
sendUsMail: 'Sende uns deine Vorstellung per E-Mail, und wir bearbeiten die Einladungsanfrage.',
acceptPP: 'Ich habe die Datenschutzbestimmungen gelesen und akzeptiere sie',
reset: 'Bitte führe den folgenden Befehl aus, um dein Passwort zurückzusetzen',
withGitHub: 'Mit GitHub fortfahren',
withGoogle: 'Mit Google fortfahren',
rightTitle: 'Das volle Potenzial von LLM ausschöpfen',
rightDesc: 'Mühelos optisch ansprechende, bedienbare und verbesserbare KI-Anwendungen erstellen.',
tos: 'Nutzungsbedingungen',
pp: 'Datenschutzbestimmungen',
tosDesc: 'Mit der Anmeldung stimmst du unseren',
goToInit: 'Wenn du das Konto noch nicht initialisiert hast, gehe bitte zur Initialisierungsseite',
dontHave: 'Hast du nicht?',
invalidInvitationCode: 'Ungültiger Einladungscode',
accountAlreadyInited: 'Konto bereits initialisiert',
forgotPassword: 'Passwort vergessen?',
resetLinkSent: 'Link zum Zurücksetzen gesendet',
sendResetLink: 'Link zum Zurücksetzen senden',
backToSignIn: 'Zurück zur Anmeldung',
forgotPasswordDesc: 'Bitte geben Sie Ihre E-Mail-Adresse ein, um Ihr Passwort zurückzusetzen. Wir senden Ihnen eine E-Mail mit Anweisungen zum Zurücksetzen Ihres Passworts.',
checkEmailForResetLink: 'Bitte überprüfen Sie Ihre E-Mails auf einen Link zum Zurücksetzen Ihres Passworts. Wenn er nicht innerhalb weniger Minuten erscheint, überprüfen Sie bitte Ihren Spam-Ordner.',
passwordChanged: 'Jetzt anmelden',
changePassword: 'Passwort ändern',
changePasswordTip: 'Bitte geben Sie ein neues Passwort für Ihr Konto ein',
invalidToken: 'Ungültiges oder abgelaufenes Token',
confirmPassword: 'Passwort bestätigen',
confirmPasswordPlaceholder: 'Bestätigen Sie Ihr neues Passwort',
passwordChangedTip: 'Ihr Passwort wurde erfolgreich geändert',
error: {
emailEmpty: 'E-Mail-Adresse wird benötigt',
emailInValid: 'Bitte gib eine gültige E-Mail-Adresse ein',
nameEmpty: 'Name wird benötigt',
passwordEmpty: 'Passwort wird benötigt',
passwordInvalid: 'Das Passwort muss Buchstaben und Zahlen enthalten und länger als 8 Zeichen sein',
passwordLengthInValid: 'Das Passwort muss mindestens 8 Zeichen lang sein',
registrationNotAllowed: 'Konto nicht gefunden. Bitte wenden Sie sich an den Systemadministrator, um sich zu registrieren.',
},
license: {
tip: 'Bevor du mit Dify Community Edition beginnst, lies die',
link: 'Open-Source-Lizenz',
},
join: 'Beitreten',
joinTipStart: 'Lade dich ein, dem',
joinTipEnd: 'Team auf Dify beizutreten',
invalid: 'Der Link ist abgelaufen',
explore: 'Dify erkunden',
activatedTipStart: 'Du bist dem',
activatedTipEnd: 'Team beigetreten',
activated: 'Jetzt anmelden',
adminInitPassword: 'Admin-Initialpasswort',
validate: 'Validieren',
sso: 'Mit SSO fortfahren',
checkCode: {
didNotReceiveCode: 'Sie haben den Code nicht erhalten?',
verificationCodePlaceholder: 'Geben Sie den 6-stelligen Code ein',
checkYourEmail: 'Überprüfen Sie Ihre E-Mails',
verify: 'Überprüfen',
verificationCode: 'Verifizierungscode',
useAnotherMethod: 'Verwenden Sie eine andere Methode',
validTime: 'Beachten Sie, dass der Code 5 Minuten lang gültig ist',
emptyCode: 'Code ist erforderlich',
tips: 'Wir senden einen Verifizierungscode an <strong>{{email}}</strong>',
invalidCode: 'Ungültiger Code',
resend: 'Wieder senden',
},
or: 'ODER',
back: 'Zurück',
changePasswordBtn: 'Festlegen eines Kennworts',
enterYourName: 'Bitte geben Sie Ihren Benutzernamen ein',
setYourAccount: 'Richten Sie Ihr Konto ein',
sendVerificationCode: 'Verifizierungscode senden',
useVerificationCode: 'Verifizierungscode verwenden',
withSSO: 'Mit SSO fortfahren',
resetPasswordDesc: 'Geben Sie die E-Mail-Adresse ein, mit der Sie sich bei Dify angemeldet haben, und wir senden Ihnen eine E-Mail zum Zurücksetzen des Passworts.',
continueWithCode: 'Fahren Sie mit dem Code fort',
resetPassword: 'Passwort zurücksetzen',
backToLogin: 'Zurück zum Login',
noLoginMethodTip: 'Wenden Sie sich an den Systemadministrator, um eine Authentifizierungsmethode hinzuzufügen.',
usePassword: 'Passwort verwenden',
noLoginMethod: 'Authentifizierungsmethode nicht konfiguriert',
licenseExpired: 'Lizenz abgelaufen',
licenseLostTip: 'Fehler beim Verbinden des Dify-Lizenzservers. Wenden Sie sich an Ihren Administrator, um Dify weiterhin zu verwenden.',
licenseInactive: 'Lizenz inaktiv',
licenseInactiveTip: 'Die Dify Enterprise-Lizenz für Ihren Arbeitsbereich ist inaktiv. Wenden Sie sich an Ihren Administrator, um Dify weiterhin zu verwenden.',
licenseExpiredTip: 'Die Dify Enterprise-Lizenz für Ihren Arbeitsbereich ist abgelaufen. Wenden Sie sich an Ihren Administrator, um Dify weiterhin zu verwenden.',
licenseLost: 'Lizenz verloren',
}
export default translation

View File

@@ -0,0 +1,25 @@
const translation = {
tags: {
weather: 'Wetter',
social: 'Sozial',
image: 'Bild',
education: 'Bildung',
travel: 'Reise',
agent: 'Agent',
design: 'Entwurf',
finance: 'Finanzieren',
search: 'Suchen',
medical: 'Medizinisch',
business: 'Geschäft',
news: 'Nachrichten',
videos: 'Videos',
other: 'Andere',
entertainment: 'Unterhaltung',
utilities: 'Versorgungswirtschaft',
productivity: 'Produktivität',
},
searchTags: 'Such-Tags',
allTags: 'Alle Schlagwörter',
}
export default translation

View File

@@ -0,0 +1,209 @@
const translation = {
category: {
extensions: 'Erweiterungen',
bundles: 'Bündel',
agents: 'Agenten-Strategien',
models: 'Modelle',
all: 'Alle',
tools: 'Werkzeuge',
},
categorySingle: {
extension: 'Erweiterung',
agent: 'Agenten-Strategie',
bundle: 'Bündel',
model: 'Modell',
tool: 'Werkzeug',
},
list: {
source: {
marketplace: 'Installation aus dem Marketplace',
github: 'Installation von GitHub',
local: 'Installation aus lokaler Paketdatei',
},
notFound: 'Keine Plugins gefunden',
noInstalled: 'Keine Plugins installiert',
},
source: {
github: 'GitHub (Englisch)',
marketplace: 'Marktplatz',
local: 'Lokale Paketdatei',
},
detailPanel: {
categoryTip: {
local: 'Lokales Plugin',
github: 'Installiert von Github',
marketplace: 'Installiert aus dem Marketplace',
debugging: 'Debuggen-Plugin',
},
operation: {
remove: 'Entfernen',
detail: 'Einzelheiten',
install: 'Installieren',
info: 'Plugin-Informationen',
checkUpdate: 'Update prüfen',
update: 'Aktualisieren',
viewDetail: 'Im Detail sehen',
},
toolSelector: {
paramsTip1: 'Steuert LLM-Inferenzparameter.',
settings: 'BENUTZEREINSTELLUNGEN',
uninstalledLink: 'In Plugins verwalten',
descriptionLabel: 'Beschreibung des Werkzeugs',
empty: 'Klicken Sie auf die Schaltfläche "+", um Werkzeuge hinzuzufügen. Sie können mehrere Werkzeuge hinzufügen.',
title: 'Werkzeug "Hinzufügen"',
paramsTip2: 'Wenn "Automatisch" ausgeschaltet ist, wird der Standardwert verwendet.',
unsupportedContent: 'Die installierte Plug-in-Version bietet diese Aktion nicht.',
unsupportedTitle: 'Nicht unterstützte Aktion',
descriptionPlaceholder: 'Kurze Beschreibung des Zwecks des Werkzeugs, z. B. um die Temperatur für einen bestimmten Ort zu ermitteln.',
auto: 'Automatisch',
params: 'KONFIGURATION DER ARGUMENTATION',
unsupportedContent2: 'Klicken Sie hier, um die Version zu wechseln.',
placeholder: 'Wählen Sie ein Werkzeug aus...',
uninstalledTitle: 'Tool nicht installiert',
toolLabel: 'Werkzeug',
uninstalledContent: 'Dieses Plugin wird aus dem lokalen/GitHub-Repository installiert. Bitte nach der Installation verwenden.',
},
strategyNum: '{{num}} {{Strategie}} IINKLUSIVE',
configureApp: 'App konfigurieren',
endpointDeleteContent: 'Möchten Sie {{name}} entfernen?',
endpointsEmpty: 'Klicken Sie auf die Schaltfläche "+", um einen Endpunkt hinzuzufügen',
disabled: 'Arbeitsunfähig',
endpointsDocLink: 'Dokument anzeigen',
endpointDisableTip: 'Endpunkt deaktivieren',
endpoints: 'Endpunkte',
actionNum: '{{num}} {{Aktion}} IINKLUSIVE',
endpointModalTitle: 'Endpunkt einrichten',
endpointModalDesc: 'Nach der Konfiguration können die Funktionen, die das Plugin über API-Endpunkte bereitstellt, verwendet werden.',
configureTool: 'Werkzeug konfigurieren',
endpointsTip: 'Dieses Plugin bietet bestimmte Funktionen über Endpunkte, und Sie können mehrere Endpunktsätze für den aktuellen Arbeitsbereich konfigurieren.',
modelNum: '{{num}} ENTHALTENE MODELLE',
configureModel: 'Modell konfigurieren',
endpointDisableContent: 'Möchten Sie {{name}} deaktivieren?',
endpointDeleteTip: 'Endpunkt entfernen',
serviceOk: 'Service in Ordnung',
switchVersion: 'Version wechseln',
},
debugInfo: {
title: 'Debuggen',
viewDocs: 'Dokumente anzeigen',
},
privilege: {
everyone: 'Jeder',
title: 'Plugin-Einstellungen',
noone: 'Niemand',
admins: 'Administratoren',
whoCanDebug: 'Wer kann Plugins debuggen?',
whoCanInstall: 'Wer kann Plugins installieren und verwalten?',
},
pluginInfoModal: {
repository: 'Aufbewahrungsort',
title: 'Plugin-Info',
packageName: 'Paket',
release: 'Loslassen',
},
action: {
checkForUpdates: 'Nach Updates suchen',
pluginInfo: 'Plugin-Info',
usedInApps: 'Dieses Plugin wird in {{num}} Apps verwendet.',
delete: 'Plugin entfernen',
deleteContentRight: 'Plugin?',
deleteContentLeft: 'Möchten Sie',
},
installModal: {
labels: {
repository: 'Aufbewahrungsort',
package: 'Paket',
version: 'Version',
},
installFailed: 'Installation fehlgeschlagen',
installPlugin: 'Plugin installieren',
uploadFailed: 'Upload fehlgeschlagen',
install: 'Installieren',
installComplete: 'Installation abgeschlossen',
installing: 'Installation...',
installedSuccessfullyDesc: 'Das Plugin wurde erfolgreich installiert.',
installedSuccessfully: 'Installation erfolgreich',
installFailedDesc: 'Die Installation des Plugins ist fehlgeschlagen.',
pluginLoadError: 'Fehler beim Laden des Plugins',
close: 'Schließen',
pluginLoadErrorDesc: 'Dieses Plugin wird nicht installiert',
cancel: 'Abbrechen',
back: 'Zurück',
uploadingPackage: 'Das Hochladen von {{packageName}}...',
readyToInstallPackage: 'Über die Installation des folgenden Plugins',
readyToInstallPackages: 'Über die Installation der folgenden {{num}} Plugins',
fromTrustSource: 'Bitte stellen Sie sicher, dass Sie nur Plugins aus einer <trustSource>vertrauenswürdigen Quelle</trustSource> installieren.',
readyToInstall: 'Über die Installation des folgenden Plugins',
dropPluginToInstall: 'Legen Sie das Plugin-Paket hier ab, um es zu installieren',
next: 'Nächster',
},
installFromGitHub: {
selectPackagePlaceholder: 'Bitte wählen Sie ein Paket aus',
gitHubRepo: 'GitHub-Repository',
uploadFailed: 'Upload fehlgeschlagen',
selectPackage: 'Paket auswählen',
installFailed: 'Installation fehlgeschlagen',
installNote: 'Bitte stellen Sie sicher, dass Sie nur Plugins aus einer vertrauenswürdigen Quelle installieren.',
selectVersionPlaceholder: 'Bitte wählen Sie eine Version aus',
updatePlugin: 'Update-Plugin von GitHub',
installPlugin: 'Plugin von GitHub installieren',
installedSuccessfully: 'Installation erfolgreich',
selectVersion: 'Ausführung wählen',
},
upgrade: {
usedInApps: 'Wird in {{num}} Apps verwendet',
description: 'Über die Installation des folgenden Plugins',
upgrading: 'Installation...',
successfulTitle: 'Installation erfolgreich',
upgrade: 'Installieren',
title: 'Plugin installieren',
close: 'Schließen',
},
error: {
inValidGitHubUrl: 'Ungültige GitHub-URL. Bitte geben Sie eine gültige URL im Format ein: https://github.com/owner/repo',
noReleasesFound: 'Keine Veröffentlichungen gefunden. Bitte überprüfen Sie das GitHub-Repository oder die Eingabe-URL.',
fetchReleasesError: 'Freigaben können nicht abgerufen werden. Bitte versuchen Sie es später erneut.',
},
marketplace: {
sortOption: {
newlyReleased: 'Neu veröffentlicht',
mostPopular: 'Beliebteste',
firstReleased: 'Zuerst veröffentlicht',
recentlyUpdated: 'Kürzlich aktualisiert',
},
viewMore: 'Mehr anzeigen',
sortBy: 'Schwarze Stadt',
discover: 'Entdecken',
noPluginFound: 'Kein Plugin gefunden',
difyMarketplace: 'Dify Marktplatz',
moreFrom: 'Mehr aus dem Marketplace',
pluginsResult: '{{num}} Ergebnisse',
empower: 'Unterstützen Sie Ihre KI-Entwicklung',
and: 'und',
},
task: {
clearAll: 'Alle löschen',
installingWithError: 'Installation von {{installingLength}} Plugins, {{successLength}} erfolgreich, {{errorLength}} fehlgeschlagen',
installingWithSuccess: 'Installation von {{installingLength}} Plugins, {{successLength}} erfolgreich.',
installedError: '{{errorLength}} Plugins konnten nicht installiert werden',
installing: 'Installation von {{installingLength}} Plugins, 0 erledigt.',
installError: '{{errorLength}} Plugins konnten nicht installiert werden, klicken Sie hier, um sie anzusehen',
},
allCategories: 'Alle Kategorien',
install: '{{num}} Installationen',
installAction: 'Installieren',
submitPlugin: 'Plugin einreichen',
from: 'Von',
fromMarketplace: 'Aus dem Marketplace',
search: 'Suchen',
searchCategories: 'Kategorien durchsuchen',
searchPlugins: 'Plugins suchen',
endpointsEnabled: '{{num}} Gruppen von Endpunkten aktiviert',
searchInMarketplace: 'Suche im Marketplace',
searchTools: 'Suchwerkzeuge...',
findMoreInMarketplace: 'Weitere Informationen finden Sie im Marketplace',
installPlugin: 'Plugin installieren',
installFrom: 'INSTALLIEREN VON',
}
export default translation

View File

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

View File

@@ -0,0 +1,32 @@
const translation = {
input: 'EINGABE',
result: 'ERGEBNIS',
detail: 'DETAILS',
tracing: 'NACHVERFOLGUNG',
resultPanel: {
status: 'STATUS',
time: 'VERSTRICHENE ZEIT',
tokens: 'GESAMTZEICHEN',
},
meta: {
title: 'METADATEN',
status: 'Status',
version: 'Version',
executor: 'Ausführender',
startTime: 'Startzeit',
time: 'Verstrichene Zeit',
tokens: 'Gesamtzeichen',
steps: 'Ausführungsschritte',
},
resultEmpty: {
title: 'Dieser Lauf gibt nur das JSON-Format aus',
tipLeft: 'Bitte gehen Sie zum ',
Link: 'Detailpanel',
tipRight: 'ansehen.',
link: 'Gruppe Detail',
},
actionLogs: 'Aktionsprotokolle',
circularInvocationTip: 'Es gibt einen zirkulären Aufruf von Werkzeugen/Knoten im aktuellen Workflow.',
}
export default translation

View File

@@ -0,0 +1,74 @@
const translation = {
common: {
welcome: '',
appUnavailable: 'App ist nicht verfügbar',
appUnknownError: 'App ist nicht verfügbar',
},
chat: {
newChat: 'Neuer Chat',
pinnedTitle: 'Angeheftet',
unpinnedTitle: 'Chats',
newChatDefaultName: 'Neues Gespräch',
resetChat: 'Gespräch zurücksetzen',
poweredBy: 'Bereitgestellt von',
prompt: 'Aufforderung',
privatePromptConfigTitle: 'Konversationseinstellungen',
publicPromptConfigTitle: 'Anfängliche Aufforderung',
configStatusDes: 'Vor dem Start können Sie die Konversationseinstellungen ändern',
configDisabled:
'Voreinstellungen der vorherigen Sitzung wurden für diese Sitzung verwendet.',
startChat: 'Chat starten',
privacyPolicyLeft:
'Bitte lesen Sie die ',
privacyPolicyMiddle:
'Datenschutzrichtlinien',
privacyPolicyRight:
', die vom App-Entwickler bereitgestellt wurden.',
deleteConversation: {
title: 'Konversation löschen',
content: 'Sind Sie sicher, dass Sie diese Konversation löschen möchten?',
},
tryToSolve: 'Versuchen zu lösen',
temporarySystemIssue: 'Entschuldigung, vorübergehendes Systemproblem.',
},
generation: {
tabs: {
create: 'Einmal ausführen',
batch: 'Stapelverarbeitung',
saved: 'Gespeichert',
},
savedNoData: {
title: 'Sie haben noch kein Ergebnis gespeichert!',
description: 'Beginnen Sie mit der Inhaltserstellung und finden Sie hier Ihre gespeicherten Ergebnisse.',
startCreateContent: 'Beginnen Sie mit der Inhaltserstellung',
},
title: 'KI-Vervollständigung',
queryTitle: 'Abfrageinhalt',
completionResult: 'Vervollständigungsergebnis',
queryPlaceholder: 'Schreiben Sie Ihren Abfrageinhalt...',
run: 'Ausführen',
copy: 'Kopieren',
resultTitle: 'KI-Vervollständigung',
noData: 'KI wird Ihnen hier geben, was Sie möchten.',
csvUploadTitle: 'Ziehen Sie Ihre CSV-Datei hierher oder ',
browse: 'durchsuchen',
csvStructureTitle: 'Die CSV-Datei muss der folgenden Struktur entsprechen:',
downloadTemplate: 'Laden Sie die Vorlage hier herunter',
field: 'Feld',
batchFailed: {
info: '{{num}} fehlgeschlagene Ausführungen',
retry: 'Wiederholen',
outputPlaceholder: 'Kein Ausgabeanhalt',
},
errorMsg: {
empty: 'Bitte geben Sie Inhalte in die hochgeladene Datei ein.',
fileStructNotMatch: 'Die hochgeladene CSV-Datei entspricht nicht der Struktur.',
emptyLine: 'Zeile {{rowIndex}} ist leer',
invalidLine: 'Zeile {{rowIndex}}: {{varName}} Wert darf nicht leer sein',
moreThanMaxLengthLine: 'Zeile {{rowIndex}}: {{varName}} Wert darf nicht mehr als {{maxLength}} Zeichen sein',
atLeastOne: 'Bitte geben Sie mindestens eine Zeile in die hochgeladene Datei ein.',
},
},
}
export default translation

View File

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

View File

@@ -0,0 +1,158 @@
const translation = {
title: 'Werkzeuge',
createCustomTool: 'Eigenes Werkzeug erstellen',
type: {
all: 'Alle',
builtIn: 'Integriert',
custom: 'Benutzerdefiniert',
workflow: 'Arbeitsablauf',
},
contribute: {
line1: 'Ich interessiere mich dafür, ',
line2: 'Werkzeuge zu Dify beizutragen.',
viewGuide: 'Leitfaden anzeigen',
},
author: 'Von',
auth: {
unauthorized: 'Zur Autorisierung',
authorized: 'Autorisiert',
setup: 'Autorisierung einrichten, um zu nutzen',
setupModalTitle: 'Autorisierung einrichten',
setupModalTitleDescription: 'Nach der Konfiguration der Anmeldeinformationen können alle Mitglieder im Arbeitsbereich dieses Werkzeug beim Orchestrieren von Anwendungen nutzen.',
},
includeToolNum: '{{num}} Werkzeuge inkludiert',
addTool: 'Werkzeug hinzufügen',
createTool: {
title: 'Eigenes Werkzeug erstellen',
editAction: 'Konfigurieren',
editTitle: 'Eigenes Werkzeug bearbeiten',
name: 'Name',
toolNamePlaceHolder: 'Geben Sie den Werkzeugnamen ein',
schema: 'Schema',
schemaPlaceHolder: 'Geben Sie hier Ihr OpenAPI-Schema ein',
viewSchemaSpec: 'Die OpenAPI-Swagger-Spezifikation anzeigen',
importFromUrl: 'Von URL importieren',
importFromUrlPlaceHolder: 'https://...',
urlError: 'Bitte geben Sie eine gültige URL ein',
examples: 'Beispiele',
exampleOptions: {
json: 'Wetter(JSON)',
yaml: 'Pet Store(YAML)',
blankTemplate: 'Leere Vorlage',
},
availableTools: {
title: 'Verfügbare Werkzeuge',
name: 'Name',
description: 'Beschreibung',
method: 'Methode',
path: 'Pfad',
action: 'Aktionen',
test: 'Test',
},
authMethod: {
title: 'Autorisierungsmethode',
type: 'Autorisierungstyp',
keyTooltip: 'Http Header Key, Sie können es bei "Authorization" belassen, wenn Sie nicht wissen, was es ist, oder auf einen benutzerdefinierten Wert setzen',
types: {
none: 'Keine',
api_key: 'API-Key',
apiKeyPlaceholder: 'HTTP-Headername für API-Key',
apiValuePlaceholder: 'API-Key eingeben',
},
key: 'Schlüssel',
value: 'Wert',
},
authHeaderPrefix: {
title: 'Auth-Typ',
types: {
basic: 'Basic',
bearer: 'Bearer',
custom: 'Benutzerdefiniert',
},
},
privacyPolicy: 'Datenschutzrichtlinie',
privacyPolicyPlaceholder: 'Bitte Datenschutzrichtlinie eingeben',
customDisclaimer: 'Benutzer Haftungsausschluss',
customDisclaimerPlaceholder: 'Bitte benutzerdefinierten Haftungsausschluss eingeben',
deleteToolConfirmTitle: 'Löschen Sie dieses Werkzeug?',
deleteToolConfirmContent: 'Das Löschen des Werkzeugs ist irreversibel. Benutzer können Ihr Werkzeug nicht mehr verwenden.',
toolInput: {
description: 'Beschreibung',
methodParameterTip: 'LLM-Füllungen während der Inferenz',
method: 'Methode',
methodParameter: 'Parameter',
label: 'Schilder',
required: 'Erforderlich',
methodSetting: 'Einstellung',
name: 'Name',
title: 'Werkzeug-Eingabe',
methodSettingTip: 'Der Benutzer füllt die Werkzeugkonfiguration aus',
descriptionPlaceholder: 'Beschreibung der Bedeutung des Parameters',
labelPlaceholder: 'Tags auswählen(optional)',
},
description: 'Beschreibung',
confirmTip: 'Apps, die dieses Tool verwenden, sind davon betroffen',
nameForToolCallTip: 'Unterstützt nur Zahlen, Buchstaben und Unterstriche.',
nameForToolCall: 'Name des Werkzeugaufrufs',
confirmTitle: 'Bestätigen, um zu speichern?',
nameForToolCallPlaceHolder: 'Wird für die Maschinenerkennung verwendet, z. B. getCurrentWeather, list_pets',
descriptionPlaceholder: 'Kurze Beschreibung des Zwecks des Werkzeugs, z. B. um die Temperatur für einen bestimmten Ort zu ermitteln.',
},
test: {
title: 'Test',
parametersValue: 'Parameter & Wert',
parameters: 'Parameter',
value: 'Wert',
testResult: 'Testergebnisse',
testResultPlaceholder: 'Testergebnis wird hier angezeigt',
},
thought: {
using: 'Nutzung',
used: 'Genutzt',
requestTitle: 'Anfrage an',
responseTitle: 'Antwort von',
},
setBuiltInTools: {
info: 'Info',
setting: 'Einstellung',
toolDescription: 'Werkzeugbeschreibung',
parameters: 'Parameter',
string: 'Zeichenkette',
number: 'Nummer',
required: 'Erforderlich',
infoAndSetting: 'Info & Einstellungen',
file: 'Datei',
},
noCustomTool: {
title: 'Keine benutzerdefinierten Werkzeuge!',
content: 'Fügen Sie hier Ihre benutzerdefinierten Werkzeuge hinzu und verwalten Sie sie, um KI-Apps zu erstellen.',
createTool: 'Werkzeug erstellen',
},
noSearchRes: {
title: 'Leider keine Ergebnisse!',
content: 'Wir konnten keine Werkzeuge finden, die Ihrer Suche entsprechen.',
reset: 'Suche zurücksetzen',
},
builtInPromptTitle: 'Aufforderung',
toolRemoved: 'Werkzeug entfernt',
notAuthorized: 'Werkzeug nicht autorisiert',
howToGet: 'Wie erhält man',
addToolModal: {
added: 'zugefügt',
manageInTools: 'Verwalten in Tools',
add: 'hinzufügen',
category: 'Kategorie',
emptyTitle: 'Kein Workflow-Tool verfügbar',
type: 'Art',
emptyTip: 'Gehen Sie zu "Workflow -> Als Tool veröffentlichen"',
emptyTitleCustom: 'Kein benutzerdefiniertes Tool verfügbar',
emptyTipCustom: 'Erstellen eines benutzerdefinierten Werkzeugs',
},
toolNameUsageTip: 'Name des Tool-Aufrufs für die Argumentation und Aufforderung des Agenten',
customToolTip: 'Erfahren Sie mehr über benutzerdefinierte Dify-Tools',
openInStudio: 'In Studio öffnen',
noTools: 'Keine Werkzeuge gefunden',
copyToolName: 'Name kopieren',
}
export default translation

View File

@@ -0,0 +1,782 @@
const translation = {
common: {
undo: 'Rückgängig',
redo: 'Wiederholen',
editing: 'Bearbeitung',
autoSaved: 'Automatisch gespeichert',
unpublished: 'Unveröffentlicht',
published: 'Veröffentlicht',
publish: 'Veröffentlichen',
update: 'Aktualisieren',
run: 'Ausführen',
running: 'Wird ausgeführt',
inRunMode: 'Im Ausführungsmodus',
inPreview: 'In der Vorschau',
inPreviewMode: 'Im Vorschaumodus',
preview: 'Vorschau',
viewRunHistory: 'Ausführungsverlauf anzeigen',
runHistory: 'Ausführungsverlauf',
goBackToEdit: 'Zurück zum Editor',
conversationLog: 'Konversationsprotokoll',
features: 'Funktionen',
debugAndPreview: 'Vorschau',
restart: 'Neustarten',
currentDraft: 'Aktueller Entwurf',
currentDraftUnpublished: 'Aktueller Entwurf unveröffentlicht',
latestPublished: 'Zuletzt veröffentlicht',
publishedAt: 'Veröffentlicht am',
restore: 'Wiederherstellen',
runApp: 'App ausführen',
batchRunApp: 'App im Batch-Modus ausführen',
accessAPIReference: 'API-Referenz aufrufen',
embedIntoSite: 'In die Webseite einbetten',
addTitle: 'Titel hinzufügen...',
addDescription: 'Beschreibung hinzufügen...',
noVar: 'Keine Variable',
searchVar: 'Variable suchen',
variableNamePlaceholder: 'Variablenname',
setVarValuePlaceholder: 'Variable setzen',
needConnectTip: 'Dieser Schritt ist mit nichts verbunden',
maxTreeDepth: 'Maximales Limit von {{depth}} Knoten pro Ast',
needEndNode: 'Der Endblock muss hinzugefügt werden',
needAnswerNode: 'Der Antwortblock muss hinzugefügt werden',
workflowProcess: 'Arbeitsablauf',
notRunning: 'Noch nicht ausgeführt',
previewPlaceholder: 'Geben Sie den Inhalt in das Feld unten ein, um das Debuggen des Chatbots zu starten',
effectVarConfirm: {
title: 'Variable entfernen',
content: 'Die Variable wird in anderen Knoten verwendet. Möchten Sie sie trotzdem entfernen?',
},
insertVarTip: 'Drücken Sie die Taste \'/\' zum schnellen Einfügen',
processData: 'Daten verarbeiten',
input: 'Eingabe',
output: 'Ausgabe',
jinjaEditorPlaceholder: 'Tippen Sie \'/\' oder \'{\' um eine Variable einzufügen',
viewOnly: 'Nur anzeigen',
showRunHistory: 'Ausführungsverlauf anzeigen',
enableJinja: 'Jinja-Vorlagenunterstützung aktivieren',
learnMore: 'Mehr erfahren',
copy: 'Kopieren',
duplicate: 'Duplizieren',
addBlock: 'Block hinzufügen',
pasteHere: 'Hier einfügen',
pointerMode: 'Zeigermodus',
handMode: 'Handmodus',
model: 'Modell',
workflowAsTool: 'Workflow als Tool',
configureRequired: 'Konfiguration erforderlich',
configure: 'Konfigurieren',
manageInTools: 'In den Tools verwalten',
workflowAsToolTip: 'Nach dem Workflow-Update ist eine Neukonfiguration des Tools erforderlich.',
viewDetailInTracingPanel: 'Details anzeigen',
importDSL: 'DSL importieren',
importFailure: 'Fehler beim Import',
syncingData: 'Synchronisieren von Daten, nur wenige Sekunden.',
chooseDSL: 'Wählen Sie eine DSL(yml)-Datei',
importSuccess: 'Erfolg beim Import',
importDSLTip: 'Der aktuelle Entwurf wird überschrieben. Exportieren Sie den Workflow vor dem Import als Backup.',
overwriteAndImport: 'Überschreiben und Importieren',
backupCurrentDraft: 'Aktuellen Entwurf sichern',
parallelTip: {
click: {
title: 'Klicken',
desc: 'hinzuzufügen',
},
drag: {
title: 'Ziehen',
desc: 'um eine Verbindung herzustellen',
},
limit: 'Die Parallelität ist auf {{num}} Zweige beschränkt.',
depthLimit: 'Begrenzung der parallelen Verschachtelungsschicht von {{num}} Schichten',
},
parallelRun: 'Paralleler Lauf',
disconnect: 'Trennen',
jumpToNode: 'Zu diesem Knoten springen',
addParallelNode: 'Parallelen Knoten hinzufügen',
parallel: 'PARALLEL',
branch: 'ZWEIG',
featuresDocLink: 'Weitere Informationen',
ImageUploadLegacyTip: 'Sie können jetzt Dateitypvariablen im Startformular erstellen. Wir werden die Funktion zum Hochladen von Bildern in Zukunft nicht mehr unterstützen.',
fileUploadTip: 'Die Funktionen zum Hochladen von Bildern wurden auf das Hochladen von Dateien aktualisiert.',
featuresDescription: 'Verbessern Sie die Benutzererfahrung von Web-Apps',
importWarning: 'Vorsicht',
importWarningDetails: 'Der Unterschied zwischen den DSL-Versionen kann sich auf bestimmte Funktionen auswirken',
openInExplore: 'In Explore öffnen',
onFailure: 'Bei Ausfall',
addFailureBranch: 'Fail-Branch hinzufügen',
loadMore: 'Weitere Workflows laden',
noHistory: 'Keine Geschichte',
},
env: {
envPanelTitle: 'Umgebungsvariablen',
envDescription: 'Umgebungsvariablen können zur Speicherung privater Informationen und Anmeldedaten verwendet werden. Sie sind schreibgeschützt und können beim Export vom DSL-File getrennt werden.',
envPanelButton: 'Variable hinzufügen',
modal: {
title: 'Umgebungsvariable hinzufügen',
editTitle: 'Umgebungsvariable bearbeiten',
type: 'Typ',
name: 'Name',
namePlaceholder: 'Umgebungsname',
value: 'Wert',
valuePlaceholder: 'Umgebungswert',
secretTip: 'Wird verwendet, um sensible Informationen oder Daten zu definieren, wobei DSL-Einstellungen zur Verhinderung von Lecks konfiguriert sind.',
},
export: {
title: 'Geheime Umgebungsvariablen exportieren?',
checkbox: 'Geheime Werte exportieren',
ignore: 'DSL exportieren',
export: 'DSL mit geheimen Werten exportieren',
},
},
chatVariable: {
panelTitle: 'Gesprächsvariablen',
panelDescription: 'Gesprächsvariablen werden verwendet, um interaktive Informationen zu speichern, die das LLM benötigt, einschließlich Gesprächsverlauf, hochgeladene Dateien und Benutzereinstellungen. Sie sind les- und schreibbar.',
docLink: 'Besuchen Sie unsere Dokumentation für weitere Informationen.',
button: 'Variable hinzufügen',
modal: {
title: 'Gesprächsvariable hinzufügen',
editTitle: 'Gesprächsvariable bearbeiten',
name: 'Name',
namePlaceholder: 'Variablenname',
type: 'Typ',
value: 'Standardwert',
valuePlaceholder: 'Standardwert, leer lassen für keine Festlegung',
description: 'Beschreibung',
descriptionPlaceholder: 'Beschreiben Sie die Variable',
editInJSON: 'In JSON bearbeiten',
oneByOne: 'Einzeln hinzufügen',
editInForm: 'Im Formular bearbeiten',
arrayValue: 'Wert',
addArrayValue: 'Wert hinzufügen',
objectKey: 'Schlüssel',
objectType: 'Typ',
objectValue: 'Standardwert',
},
storedContent: 'Gespeicherter Inhalt',
updatedAt: 'Aktualisiert am ',
},
changeHistory: {
title: 'Änderungsverlauf',
placeholder: 'Du hast noch nichts geändert',
clearHistory: 'Änderungsverlauf löschen',
hint: 'Hinweis',
hintText: 'Änderungen werden im Änderungsverlauf aufgezeichnet, der für die Dauer dieser Sitzung auf Ihrem Gerät gespeichert wird. Dieser Verlauf wird gelöscht, wenn Sie den Editor verlassen.',
stepBackward_one: '{{count}} Schritt zurück',
stepBackward_other: '{{count}} Schritte zurück',
stepForward_one: '{{count}} Schritt vorwärts',
stepForward_other: '{{count}} Schritte vorwärts',
sessionStart: 'Sitzungsstart',
currentState: 'Aktueller Zustand',
nodeTitleChange: 'Blocktitel geändert',
nodeDescriptionChange: 'Blockbeschreibung geändert',
nodeDragStop: 'Block verschoben',
nodeChange: 'Block geändert',
nodeConnect: 'Block verbunden',
nodePaste: 'Block eingefügt',
nodeDelete: 'Block gelöscht',
nodeAdd: 'Block hinzugefügt',
nodeResize: 'Blockgröße geändert',
noteAdd: 'Notiz hinzugefügt',
noteChange: 'Notiz geändert',
noteDelete: 'Notiz gelöscht',
edgeDelete: 'Block getrennt',
},
errorMsg: {
fieldRequired: '{{field}} ist erforderlich',
authRequired: 'Autorisierung ist erforderlich',
invalidJson: '{{field}} ist ein ungültiges JSON',
fields: {
variable: 'Variablenname',
variableValue: 'Variablenwert',
code: 'Code',
model: 'Modell',
rerankModel: 'Neusortierungsmodell',
visionVariable: 'Vision variabel',
},
invalidVariable: 'Ungültige Variable',
rerankModelRequired: 'Bevor Sie das Rerank-Modell aktivieren, bestätigen Sie bitte, dass das Modell in den Einstellungen erfolgreich konfiguriert wurde.',
toolParameterRequired: '{{field}}: Parameter [{{param}}] ist erforderlich',
noValidTool: '{{field}} kein gültiges Werkzeug ausgewählt',
},
singleRun: {
testRun: 'Testlauf ',
startRun: 'Lauf starten',
running: 'Wird ausgeführt',
testRunIteration: 'Testlaufiteration',
back: 'Zurück',
iteration: 'Iteration',
},
tabs: {
'searchBlock': 'Block suchen',
'blocks': 'Blöcke',
'tools': 'Werkzeuge',
'allTool': 'Alle',
'builtInTool': 'Eingebaut',
'customTool': 'Benutzerdefiniert',
'workflowTool': 'Arbeitsablauf',
'question-understand': 'Fragen verstehen',
'logic': 'Logik',
'transform': 'Transformieren',
'utilities': 'Dienstprogramme',
'noResult': 'Kein Ergebnis gefunden',
'searchTool': 'Suchwerkzeug',
'plugin': 'Stecker',
'agent': 'Agenten-Strategie',
},
blocks: {
'start': 'Start',
'end': 'Ende',
'answer': 'Antwort',
'llm': 'LLM',
'knowledge-retrieval': 'Wissensabruf',
'question-classifier': 'Fragenklassifizierer',
'if-else': 'WENN/SONST',
'code': 'Code',
'template-transform': 'Vorlage',
'http-request': 'HTTP-Anfrage',
'variable-assigner': 'Variablen-Zuweiser',
'variable-aggregator': 'Variablen-Aggregator',
'assigner': 'Variablenzuweiser',
'iteration-start': 'Iterationsstart',
'iteration': 'Iteration',
'parameter-extractor': 'Parameter-Extraktor',
'list-operator': 'List-Operator',
'document-extractor': 'Doc Extraktor',
'agent': 'Agent',
},
blocksAbout: {
'start': 'Definieren Sie die Anfangsparameter zum Starten eines Workflows',
'end': 'Definieren Sie das Ende und den Ergebnistyp eines Workflows',
'answer': 'Definieren Sie den Antwortinhalt einer Chat-Konversation',
'llm': 'Große Sprachmodelle aufrufen, um Fragen zu beantworten oder natürliche Sprache zu verarbeiten',
'knowledge-retrieval': 'Ermöglicht das Abfragen von Textinhalten, die sich auf Benutzerfragen aus der Wissensdatenbank beziehen',
'question-classifier': 'Definieren Sie die Klassifizierungsbedingungen von Benutzerfragen, LLM kann basierend auf der Klassifikationsbeschreibung festlegen, wie die Konversation fortschreitet',
'if-else': 'Ermöglicht das Aufteilen des Workflows in zwei Zweige basierend auf if/else-Bedingungen',
'code': 'Ein Stück Python- oder NodeJS-Code ausführen, um benutzerdefinierte Logik zu implementieren',
'template-transform': 'Daten in Zeichenfolgen mit Jinja-Vorlagensyntax umwandeln',
'http-request': 'Ermöglichen, dass Serveranforderungen über das HTTP-Protokoll gesendet werden',
'variable-assigner': 'Variablen aus mehreren Zweigen in eine einzige Variable zusammenführen, um eine einheitliche Konfiguration der nachgelagerten Knoten zu ermöglichen.',
'assigner': 'Der Variablenzuweisungsknoten wird verwendet, um beschreibbaren Variablen (wie Gesprächsvariablen) Werte zuzuweisen.',
'variable-aggregator': 'Variablen aus mehreren Zweigen in eine einzige Variable zusammenführen, um eine einheitliche Konfiguration der nachgelagerten Knoten zu ermöglichen.',
'iteration': 'Mehrere Schritte an einem Listenobjekt ausführen, bis alle Ergebnisse ausgegeben wurden.',
'parameter-extractor': 'Verwenden Sie LLM, um strukturierte Parameter aus natürlicher Sprache für Werkzeugaufrufe oder HTTP-Anfragen zu extrahieren.',
'list-operator': 'Wird verwendet, um Array-Inhalte zu filtern oder zu sortieren.',
'document-extractor': 'Wird verwendet, um hochgeladene Dokumente in Textinhalte zu analysieren, die für LLM leicht verständlich sind.',
'agent': 'Aufruf großer Sprachmodelle zur Beantwortung von Fragen oder zur Verarbeitung natürlicher Sprache',
},
operator: {
zoomIn: 'Vergrößern',
zoomOut: 'Verkleinern',
zoomTo50: 'Auf 50% vergrößern',
zoomTo100: 'Auf 100% vergrößern',
zoomToFit: 'An Bildschirm anpassen',
},
panel: {
userInputField: 'Benutzereingabefeld',
changeBlock: 'Block ändern',
helpLink: 'Hilfelink',
about: 'Über',
createdBy: 'Erstellt von ',
nextStep: 'Nächster Schritt',
addNextStep: 'Fügen Sie den nächsten Block in diesem Workflow hinzu',
selectNextStep: 'Nächsten Block auswählen',
runThisStep: 'Diesen Schritt ausführen',
checklist: 'Checkliste',
checklistTip: 'Stellen Sie sicher, dass alle Probleme vor der Veröffentlichung gelöst sind',
checklistResolved: 'Alle Probleme wurden gelöst',
organizeBlocks: 'Blöcke organisieren',
change: 'Ändern',
optional: '(optional)',
},
nodes: {
common: {
outputVars: 'Ausgabevariablen',
insertVarTip: 'Variable einfügen',
memory: {
memory: 'Speicher',
memoryTip: 'Einstellungen des Chat-Speichers',
windowSize: 'Fenstergröße',
conversationRoleName: 'Rollenname in der Konversation',
user: 'Benutzer-Präfix',
assistant: 'Assistenten-Präfix',
},
memories: {
title: 'Erinnerungen',
tip: 'Chat-Speicher',
builtIn: 'Eingebaut',
},
errorHandle: {
none: {
title: 'Nichts',
desc: 'Der Knoten wird nicht mehr ausgeführt, wenn eine Ausnahme auftritt und nicht behandelt wird',
},
defaultValue: {
title: 'Standardwert',
desc: 'Wenn ein Fehler auftritt, geben Sie einen statischen Ausgabeinhalt an.',
tip: 'Bei einem Fehler wird der untere Wert zurückgegeben.',
inLog: 'Knotenausnahme, Ausgabe nach Vorschlagswerten.',
output: 'Standardwert für die Ausgabe',
},
failBranch: {
title: 'Fehlgeschlagener Zweig',
desc: 'Wenn ein Fehler auftritt, wird der Ausnahmezweig ausgeführt',
customize: 'Wechseln Sie zur Arbeitsfläche, um die Fehlerverzweigungslogik anzupassen.',
customizeTip: 'Wenn der Fail-Zweig aktiviert ist, wird der Prozess durch Ausnahmen, die von Knoten ausgelöst werden, nicht beendet. Stattdessen wird automatisch der vordefinierte Fehlerzweig ausgeführt, sodass Sie flexibel Fehlermeldungen, Berichte, Korrekturen oder Überspringen von Aktionen bereitstellen können.',
inLog: 'Knotenausnahme, führt den Fail-Zweig automatisch aus. Die Knotenausgabe gibt einen Fehlertyp und eine Fehlermeldung zurück und übergibt sie an den Downstream.',
},
partialSucceeded: {
tip: 'Es gibt {{num}} Knoten im Prozess, die nicht normal laufen, bitte gehen Sie zur Ablaufverfolgung, um die Protokolle zu überprüfen.',
},
title: 'Fehlerbehandlung',
tip: 'Ausnahmebehandlungsstrategie, die ausgelöst wird, wenn ein Knoten auf eine Ausnahme stößt.',
},
retry: {
retry: 'Wiederholen',
retryOnFailure: 'Wiederholen bei Fehler',
maxRetries: 'Max. Wiederholungen',
retryInterval: 'Wiederholungsintervall',
retryTimes: 'Wiederholen Sie {{times}} mal bei einem Fehler',
retrying: 'Wiederholung...',
retrySuccessful: 'Wiederholen erfolgreich',
retryFailed: 'Wiederholung fehlgeschlagen',
retryFailedTimes: '{{times}} fehlgeschlagene Wiederholungen',
times: 'mal',
ms: 'Frau',
retries: '{{num}} Wiederholungen',
},
},
start: {
required: 'erforderlich',
inputField: 'Eingabefeld',
builtInVar: 'Eingebaute Variablen',
outputVars: {
query: 'Benutzereingabe',
memories: {
des: 'Konversationsverlauf',
type: 'Nachrichtentyp',
content: 'Nachrichteninhalt',
},
files: 'Dateiliste',
},
noVarTip: 'Legen Sie Eingaben fest, die im Workflow verwendet werden können',
},
end: {
outputs: 'Ausgaben',
output: {
type: 'Ausgabetyp',
variable: 'Ausgabevariable',
},
type: {
'none': 'Keine',
'plain-text': 'Klartext',
'structured': 'Strukturiert',
},
},
answer: {
answer: 'Antwort',
outputVars: 'Ausgabevariablen',
},
llm: {
model: 'Modell',
variables: 'Variablen',
context: 'Kontext',
contextTooltip: 'Sie können Wissen als Kontext importieren',
notSetContextInPromptTip: 'Um die Kontextfunktion zu aktivieren, füllen Sie die Kontextvariable im PROMPT aus.',
prompt: 'Prompt',
roleDescription: {
system: 'Geben Sie hochrangige Anweisungen für die Konversation',
user: 'Geben Sie dem Modell Anweisungen, Abfragen oder beliebigen texteingabebasierten Input',
assistant: 'Die Antworten des Modells basierend auf den Benutzernachrichten',
},
addMessage: 'Nachricht hinzufügen',
vision: 'Vision',
files: 'Dateien',
resolution: {
name: 'Auflösung',
high: 'Hoch',
low: 'Niedrig',
},
outputVars: {
output: 'Generierter Inhalt',
usage: 'Nutzungsinformationen des Modells',
},
singleRun: {
variable: 'Variable',
},
sysQueryInUser: 'sys.query in Benutzernachricht erforderlich',
},
knowledgeRetrieval: {
queryVariable: 'Abfragevariable',
knowledge: 'Wissen',
outputVars: {
output: 'Abgerufene segmentierte Daten',
content: 'Segmentierter Inhalt',
title: 'Segmentierter Titel',
icon: 'Segmentiertes Symbol',
url: 'Segmentierte URL',
metadata: 'Weitere Metadaten',
},
},
http: {
inputVars: 'Eingabevariablen',
api: 'API',
apiPlaceholder: 'Geben Sie die URL ein, tippen Sie /, um Variable einzufügen',
notStartWithHttp: 'API sollte mit http:// oder https:// beginnen',
key: 'Schlüssel',
value: 'Wert',
bulkEdit: 'Massenerfassung',
keyValueEdit: 'Schlüssel-Wert-Erfassung',
headers: 'Header',
params: 'Parameter',
body: 'Body',
outputVars: {
body: 'Antwortinhalt',
statusCode: 'Antwortstatuscode',
headers: 'Antwort-Header-Liste im JSON-Format',
files: 'Dateiliste',
},
authorization: {
'authorization': 'Autorisierung',
'authorizationType': 'Autorisierungstyp',
'no-auth': 'Keine',
'api-key': 'API-Schlüssel',
'auth-type': 'Autorisierungstyp',
'basic': 'Basis',
'bearer': 'Bearer',
'custom': 'Benutzerdefiniert',
'api-key-title': 'API-Schlüssel',
'header': 'Header',
},
insertVarPlaceholder: 'tippen Sie /, um Variable einzufügen',
timeout: {
title: 'Zeitüberschreitung',
connectLabel: 'Verbindungs-Zeitüberschreitung',
connectPlaceholder: 'Geben Sie die Verbindungs-Zeitüberschreitung in Sekunden ein',
readLabel: 'Lese-Zeitüberschreitung',
readPlaceholder: 'Geben Sie die Lese-Zeitüberschreitung in Sekunden ein',
writeLabel: 'Schreib-Zeitüberschreitung',
writePlaceholder: 'Geben Sie die Schreib-Zeitüberschreitung in Sekunden ein',
},
type: 'Art',
binaryFileVariable: 'Variable der Binärdatei',
extractListPlaceholder: 'Geben Sie den Index des Listeneintrags ein, geben Sie \'/\' ein, fügen Sie die Variable ein',
curl: {
title: 'Importieren von cURL',
placeholder: 'Fügen Sie hier die cURL-Zeichenfolge ein',
},
},
code: {
inputVars: 'Eingabevariablen',
outputVars: 'Ausgabevariablen',
advancedDependencies: 'Erweiterte Abhängigkeiten',
advancedDependenciesTip: 'Fügen Sie hier einige vorinstallierte Abhängigkeiten hinzu, die mehr Zeit in Anspruch nehmen oder nicht standardmäßig eingebaut sind',
searchDependencies: 'Abhängigkeiten suchen',
},
templateTransform: {
inputVars: 'Eingabevariablen',
code: 'Code',
codeSupportTip: 'Unterstützt nur Jinja2',
outputVars: {
output: 'Transformierter Inhalt',
},
},
ifElse: {
if: 'Wenn',
else: 'Sonst',
elseDescription: 'Wird verwendet, um die Logik zu definieren, die ausgeführt werden soll, wenn die if-Bedingung nicht erfüllt ist.',
and: 'und',
or: 'oder',
operator: 'Operator',
notSetVariable: 'Bitte setzen Sie zuerst die Variable',
comparisonOperator: {
'contains': 'enthält',
'not contains': 'enthält nicht',
'start with': 'beginnt mit',
'end with': 'endet mit',
'is': 'ist',
'is not': 'ist nicht',
'empty': 'ist leer',
'not empty': 'ist nicht leer',
'null': 'ist null',
'not null': 'ist nicht null',
'regex match': 'Regex-Übereinstimmung',
'not exists': 'existiert nicht',
'in': 'in',
'all of': 'alle',
'exists': 'existiert',
'not in': 'nicht in',
},
enterValue: 'Wert eingeben',
addCondition: 'Bedingung hinzufügen',
conditionNotSetup: 'Bedingung NICHT eingerichtet',
selectVariable: 'Variable auswählen...',
optionName: {
video: 'Video',
url: 'URL (Englisch)',
image: 'Bild',
localUpload: 'Lokaler Upload',
audio: 'Audio',
doc: 'Doktor',
},
select: 'Auswählen',
addSubVariable: 'Untervariable',
},
variableAssigner: {
title: 'Variablen zuweisen',
outputType: 'Ausgabetyp',
varNotSet: 'Variable nicht gesetzt',
noVarTip: 'Fügen Sie die zuzuweisenden Variablen hinzu',
type: {
string: 'String',
number: 'Nummer',
object: 'Objekt',
array: 'Array',
},
aggregationGroup: 'Aggregationsgruppe',
aggregationGroupTip: 'Durch Aktivieren dieser Funktion kann der Variablen-Aggregator mehrere Variablensätze aggregieren.',
addGroup: 'Gruppe hinzufügen',
outputVars: {
varDescribe: 'Ausgabe {{groupName}}',
},
setAssignVariable: 'Zuweisungsvariable festlegen',
},
assigner: {
'assignedVariable': 'Zugewiesene Variable',
'writeMode': 'Schreibmodus',
'writeModeTip': 'Wenn die ZUGEWIESENE VARIABLE ein Array ist, fügt der Anhängemodus am Ende hinzu.',
'over-write': 'Überschreiben',
'append': 'Anhängen',
'plus': 'Plus',
'clear': 'Löschen',
'setVariable': 'Variable setzen',
'variable': 'Variable',
'operations': {
'title': 'Operation',
'clear': 'Klar',
'over-write': 'Überschreiben',
'set': 'Garnitur',
'-=': '-=',
'+=': '+=',
'/=': '/=',
'append': 'Anfügen',
'extend': 'Ausdehnen',
'*=': '*=',
'overwrite': 'Überschreiben',
},
'setParameter': 'Parameter setzen...',
'noVarTip': 'Klicken Sie auf die Schaltfläche "+", um Variablen hinzuzufügen',
'variables': 'Variablen',
'noAssignedVars': 'Keine verfügbaren zugewiesenen Variablen',
'selectAssignedVariable': 'Zugewiesene Variable auswählen...',
'varNotSet': 'Variable NICHT gesetzt',
'assignedVarsDescription': 'Zugewiesene Variablen müssen beschreibbare Variablen sein, z. B. Konversationsvariablen.',
},
tool: {
toAuthorize: 'Autorisieren',
inputVars: 'Eingabevariablen',
outputVars: {
text: 'durch das Tool generierter Inhalt',
files: {
title: 'durch das Tool generierte Dateien',
type: 'Unterstützungstyp. Derzeit nur Bild unterstützt',
transfer_method: 'Übertragungsmethode. Der Wert ist remote_url oder local_file',
url: 'Bild-URL',
upload_file_id: 'Hochgeladene Datei-ID',
},
json: 'von einem Tool generiertes JSON',
},
},
questionClassifiers: {
model: 'Modell',
inputVars: 'Eingabevariablen',
outputVars: {
className: 'Klassennamen',
},
class: 'Klasse',
classNamePlaceholder: 'Geben Sie Ihren Klassennamen ein',
advancedSetting: 'Erweiterte Einstellung',
topicName: 'Themenname',
topicPlaceholder: 'Geben Sie Ihren Themennamen ein',
addClass: 'Klasse hinzufügen',
instruction: 'Anweisung',
instructionTip: 'Geben Sie zusätzliche Anweisungen ein, um dem Fragenklassifizierer zu helfen, besser zu verstehen, wie Fragen kategorisiert werden sollen.',
instructionPlaceholder: 'Geben Sie Ihre Anweisung ein',
},
parameterExtractor: {
inputVar: 'Eingabevariable',
extractParameters: 'Parameter extrahieren',
importFromTool: 'Aus Tools importieren',
addExtractParameter: 'Extraktionsparameter hinzufügen',
addExtractParameterContent: {
name: 'Name',
namePlaceholder: 'Name des Extraktionsparameters',
type: 'Typ',
typePlaceholder: 'Typ des Extraktionsparameters',
description: 'Beschreibung',
descriptionPlaceholder: 'Beschreibung des Extraktionsparameters',
required: 'Erforderlich',
requiredContent: 'Erforderlich wird nur als Referenz für die Modellschlussfolgerung verwendet und nicht für die zwingende Validierung der Parameter-Ausgabe.',
},
extractParametersNotSet: 'Extraktionsparameter nicht eingerichtet',
instruction: 'Anweisung',
instructionTip: 'Geben Sie zusätzliche Anweisungen ein, um dem Parameter-Extraktor zu helfen, zu verstehen, wie Parameter extrahiert werden.',
advancedSetting: 'Erweiterte Einstellung',
reasoningMode: 'Schlussfolgerungsmodus',
reasoningModeTip: 'Sie können den entsprechenden Schlussfolgerungsmodus basierend auf der Fähigkeit des Modells wählen, auf Anweisungen zur Funktionsaufruf- oder Eingabeaufforderungen zu reagieren.',
isSuccess: 'Ist Erfolg. Bei Erfolg beträgt der Wert 1, bei Misserfolg beträgt der Wert 0.',
errorReason: 'Fehlergrund',
},
iteration: {
deleteTitle: 'Iterationsknoten löschen?',
deleteDesc: 'Das Löschen des Iterationsknotens löscht alle untergeordneten Knoten',
input: 'Eingabe',
output: 'Ausgabevariablen',
iteration_one: '{{count}} Iteration',
iteration_other: '{{count}} Iterationen',
currentIteration: 'Aktuelle Iteration',
ErrorMethod: {
operationTerminated: 'beendet',
removeAbnormalOutput: 'remove-abnormale_ausgabe',
continueOnError: 'Fehler "Fortfahren bei"',
},
MaxParallelismTitle: 'Maximale Parallelität',
parallelMode: 'Paralleler Modus',
errorResponseMethod: 'Methode der Fehlerantwort',
error_one: '{{Anzahl}} Fehler',
error_other: '{{Anzahl}} Irrtümer',
MaxParallelismDesc: 'Die maximale Parallelität wird verwendet, um die Anzahl der Aufgaben zu steuern, die gleichzeitig in einer einzigen Iteration ausgeführt werden.',
parallelPanelDesc: 'Im parallelen Modus unterstützen Aufgaben in der Iteration die parallele Ausführung.',
parallelModeEnableDesc: 'Im parallelen Modus unterstützen Aufgaben innerhalb von Iterationen die parallele Ausführung. Sie können dies im Eigenschaftenbereich auf der rechten Seite konfigurieren.',
answerNodeWarningDesc: 'Warnung im parallelen Modus: Antwortknoten, Zuweisungen von Konversationsvariablen und persistente Lese-/Schreibvorgänge innerhalb von Iterationen können Ausnahmen verursachen.',
parallelModeEnableTitle: 'Paralleler Modus aktiviert',
parallelModeUpper: 'PARALLELER MODUS',
comma: ',',
},
note: {
editor: {
strikethrough: 'Durchgestrichen',
large: 'Groß',
bulletList: 'Aufzählung',
italic: 'Kursiv',
small: 'Klein',
bold: 'Kühn',
placeholder: 'Schreiben Sie Ihre Notiz...',
openLink: 'Offen',
showAuthor: 'Autor anzeigen',
medium: 'Mittel',
unlink: 'Trennen',
link: 'Verbinden',
enterUrl: 'URL eingeben...',
invalidUrl: 'Ungültige URL',
},
addNote: 'Notiz hinzufügen',
},
docExtractor: {
outputVars: {
text: 'Extrahierter Text',
},
supportFileTypes: 'Unterstützte Dateitypen: {{types}}.',
inputVar: 'Eingabevariable',
learnMore: 'Weitere Informationen',
},
listFilter: {
outputVars: {
first_record: 'Erste Aufnahme',
result: 'Ergebnis filtern',
last_record: 'Letzter Datensatz',
},
asc: 'ASC',
limit: 'Top N',
desc: 'DESC',
orderBy: 'Sortieren nach',
inputVar: 'Eingabevariable',
filterConditionComparisonOperator: 'Operator für den Bedingungsvergleich filtern',
filterConditionComparisonValue: 'Wert der Filterbedingung',
filterConditionKey: 'Bedingungsschlüssel filtern',
filterCondition: 'Filter-Bedingung',
selectVariableKeyPlaceholder: 'Untervariablenschlüssel auswählen',
extractsCondition: 'Extrahieren des N-Elements',
},
agent: {
strategy: {
configureTipDesc: 'Nach der Konfiguration der agentischen Strategie lädt dieser Knoten automatisch die verbleibenden Konfigurationen. Die Strategie wirkt sich auf den Mechanismus des mehrstufigen Tool-Reasoning aus.',
shortLabel: 'Strategie',
tooltip: 'Unterschiedliche Agentenstrategien bestimmen, wie das System mehrstufige Werkzeugaufrufe plant und ausführt',
configureTip: 'Bitte konfigurieren Sie die Agentenstrategie.',
selectTip: 'Agentische Strategie auswählen',
searchPlaceholder: 'Agentenstrategie suchen',
label: 'Agentische Strategie',
},
pluginInstaller: {
install: 'Installieren',
installing: 'Installation',
},
modelNotInMarketplace: {
desc: 'Dieses Modell wird aus dem lokalen oder GitHub-Repository installiert. Bitte nach der Installation verwenden.',
manageInPlugins: 'In Plugins verwalten',
title: 'Modell nicht installiert',
},
modelNotSupport: {
descForVersionSwitch: 'Die installierte Plugin-Version stellt dieses Modell nicht zur Verfügung. Klicken Sie hier, um die Version zu wechseln.',
desc: 'Die installierte Plugin-Version stellt dieses Modell nicht zur Verfügung.',
title: 'Nicht unterstütztes Modell',
},
modelSelectorTooltips: {
deprecated: 'Dieses Modell ist veraltet',
},
outputVars: {
files: {
type: 'Art der Unterstützung. Jetzt nur noch Image unterstützen',
url: 'Bild-URL',
title: 'Vom Agenten generierte Dateien',
upload_file_id: 'Datei-ID hochladen',
transfer_method: 'Übertragungsmethode. Wert ist remote_url oder local_file',
},
text: 'Von Agenten generierte Inhalte',
json: 'Vom Agenten generiertes JSON',
},
checkList: {
strategyNotSelected: 'Strategie nicht ausgewählt',
},
installPlugin: {
cancel: 'Abbrechen',
desc: 'Über die Installation des folgenden Plugins',
changelog: 'Änderungsprotokoll',
title: 'Plugin installieren',
install: 'Installieren',
},
modelNotSelected: 'Modell nicht ausgewählt',
modelNotInstallTooltip: 'Dieses Modell ist nicht installiert',
strategyNotFoundDesc: 'Die installierte Plugin-Version bietet diese Strategie nicht.',
unsupportedStrategy: 'Nicht unterstützte Strategie',
toolNotInstallTooltip: '{{tool}} ist nicht installiert',
notAuthorized: 'Nicht autorisiert',
pluginNotInstalled: 'Dieses Plugin ist nicht installiert',
toolbox: 'Werkzeugkasten',
toolNotAuthorizedTooltip: '{{Werkzeug}} Nicht autorisiert',
maxIterations: 'Max. Iterationen',
model: 'Modell',
strategyNotInstallTooltip: '{{strategy}} ist nicht installiert',
pluginNotInstalledDesc: 'Dieses Plugin wird von GitHub installiert. Bitte gehen Sie zu Plugins, um sie neu zu installieren',
strategyNotSet: 'Agentische Strategie nicht festgelegt',
strategyNotFoundDescAndSwitchVersion: 'Die installierte Plugin-Version bietet diese Strategie nicht. Klicken Sie hier, um die Version zu wechseln.',
tools: 'Werkzeuge',
pluginNotFoundDesc: 'Dieses Plugin wird von GitHub installiert. Bitte gehen Sie zu Plugins, um sie neu zu installieren',
learnMore: 'Weitere Informationen',
configureModel: 'Modell konfigurieren',
linkToPlugin: 'Link zu Plugins',
},
},
tracing: {
stopBy: 'Gestoppt von {{user}}',
},
variableReference: {
noAvailableVars: 'Keine verfügbaren Variablen',
conversationVars: 'Konversations-Variablen',
noAssignedVars: 'Keine verfügbaren zugewiesenen Variablen',
noVarsForOperation: 'Es stehen keine Variablen für die Zuweisung mit der ausgewählten Operation zur Verfügung.',
assignedVarsDescription: 'Zugewiesene Variablen müssen beschreibbare Variablen sein, z. B.',
},
}
export default translation

View File

@@ -0,0 +1,87 @@
const translation = {
title: 'Annotations',
name: 'Annotation Reply',
editBy: 'Answer edited by {{author}}',
noData: {
title: 'No annotations',
description: 'You can edit annotations during app debugging or import annotations in bulk here for a high-quality response.',
},
table: {
header: {
question: 'question',
answer: 'answer',
createdAt: 'created at',
hits: 'hits',
actions: 'actions',
addAnnotation: 'Add Annotation',
bulkImport: 'Bulk Import',
bulkExport: 'Bulk Export',
clearAll: 'Clear All Annotation',
},
},
editModal: {
title: 'Edit Annotation Reply',
queryName: 'User Query',
answerName: 'Storyteller Bot',
yourAnswer: 'Your Answer',
answerPlaceholder: 'Type your answer here',
yourQuery: 'Your Query',
queryPlaceholder: 'Type your query here',
removeThisCache: 'Remove this Annotation',
createdAt: 'Created At',
},
addModal: {
title: 'Add Annotation Reply',
queryName: 'Question',
answerName: 'Answer',
answerPlaceholder: 'Type answer here',
queryPlaceholder: 'Type query here',
createNext: 'Add another annotated response',
},
batchModal: {
title: 'Bulk Import',
csvUploadTitle: 'Drag and drop your CSV file here, or ',
browse: 'browse',
tip: 'The CSV file must conform to the following structure:',
question: 'question',
answer: 'answer',
contentTitle: 'chunk content',
content: 'content',
template: 'Download the template here',
cancel: 'Cancel',
run: 'Run Batch',
runError: 'Run batch failed',
processing: 'In batch processing',
completed: 'Import completed',
error: 'Import Error',
ok: 'OK',
},
errorMessage: {
answerRequired: 'Answer is required',
queryRequired: 'Question is required',
},
viewModal: {
annotatedResponse: 'Annotation Reply',
hitHistory: 'Hit History',
hit: 'Hit',
hits: 'Hits',
noHitHistory: 'No hit history',
},
hitHistoryTable: {
query: 'Query',
match: 'Match',
response: 'Response',
source: 'Source',
score: 'Score',
time: 'Time',
},
initSetup: {
title: 'Annotation Reply Initial Setup',
configTitle: 'Annotation Reply Setup',
confirmBtn: 'Save & Enable',
configConfirmBtn: 'Save',
},
embeddingModelSwitchTip: 'Annotation text vectorization model, switching models will be re-embedded, resulting in additional costs.',
}
export default translation

View File

@@ -0,0 +1,85 @@
const translation = {
apiServer: 'API Server',
apiKey: 'API Key',
status: 'Status',
disabled: 'Disabled',
ok: 'In Service',
copy: 'Copy',
copied: 'Copied',
regenerate: 'Regenerate',
play: 'Play',
pause: 'Pause',
playing: 'Playing',
loading: 'Loading',
merMaid: {
rerender: 'Redo Rerender',
},
never: 'Never',
apiKeyModal: {
apiSecretKey: 'API Secret key',
apiSecretKeyTips: 'To prevent API abuse, protect your API Key. Avoid using it as plain text in front-end code. :)',
createNewSecretKey: 'Create new Secret key',
secretKey: 'Secret Key',
created: 'CREATED',
lastUsed: 'LAST USED',
generateTips: 'Keep this key in a secure and accessible place.',
},
actionMsg: {
deleteConfirmTitle: 'Delete this secret key?',
deleteConfirmTips: 'This action cannot be undone.',
ok: 'OK',
},
completionMode: {
title: 'Completion App API',
info: 'For high-quality text generation, such as articles, summaries, and translations, use the completion-messages API with user input. Text generation relies on the model parameters and prompt templates set in Dify Prompt Engineering.',
createCompletionApi: 'Create Completion Message',
createCompletionApiTip: 'Create a Completion Message to support the question-and-answer mode.',
inputsTips: '(Optional) Provide user input fields as key-value pairs, corresponding to variables in Prompt Eng. Key is the variable name, Value is the parameter value. If the field type is Select, the submitted Value must be one of the preset choices.',
queryTips: 'User input text content.',
blocking: 'Blocking type, waiting for execution to complete and returning results. (Requests may be interrupted if the process is long)',
streaming: 'streaming returns. Implementation of streaming return based on SSE (Server-Sent Events).',
messageFeedbackApi: 'Message feedback (like)',
messageFeedbackApiTip: 'Rate received messages on behalf of end-users with likes or dislikes. This data is visible in the Logs & Annotations page and used for future model fine-tuning.',
messageIDTip: 'Message ID',
ratingTip: 'like or dislike, null is undo',
parametersApi: 'Obtain application parameter information',
parametersApiTip: 'Retrieve configured Input parameters, including variable names, field names, types, and default values. Typically used for displaying these fields in a form or filling in default values after the client loads.',
},
chatMode: {
title: 'Chat App API',
info: 'For versatile conversational apps using a Q&A format, call the chat-messages API to initiate dialogue. Maintain ongoing conversations by passing the returned conversation_id. Response parameters and templates depend on Dify Prompt Eng. settings.',
createChatApi: 'Create chat message',
createChatApiTip: 'Create a new conversation message or continue an existing dialogue.',
inputsTips: '(Optional) Provide user input fields as key-value pairs, corresponding to variables in Prompt Eng. Key is the variable name, Value is the parameter value. If the field type is Select, the submitted Value must be one of the preset choices.',
queryTips: 'User input/question content',
blocking: 'Blocking type, waiting for execution to complete and returning results. (Requests may be interrupted if the process is long)',
streaming: 'streaming returns. Implementation of streaming return based on SSE (Server-Sent Events).',
conversationIdTip: '(Optional) Conversation ID: leave empty for first-time conversation; pass conversation_id from context to continue dialogue.',
messageFeedbackApi: 'Message terminal user feedback, like',
messageFeedbackApiTip: 'Rate received messages on behalf of end-users with likes or dislikes. This data is visible in the Logs & Annotations page and used for future model fine-tuning.',
messageIDTip: 'Message ID',
ratingTip: 'like or dislike, null is undo',
chatMsgHistoryApi: 'Get the chat history message',
chatMsgHistoryApiTip: 'The first page returns the latest `limit` bar, which is in reverse order.',
chatMsgHistoryConversationIdTip: 'Conversation ID',
chatMsgHistoryFirstId: 'ID of the first chat record on the current page. The default is none.',
chatMsgHistoryLimit: 'How many chats are returned in one request',
conversationsListApi: 'Get conversation list',
conversationsListApiTip: 'Gets the session list of the current user. By default, the last 20 sessions are returned.',
conversationsListFirstIdTip: 'The ID of the last record on the current page, default none.',
conversationsListLimitTip: 'How many chats are returned in one request',
conversationRenamingApi: 'Conversation renaming',
conversationRenamingApiTip: 'Rename conversations; the name is displayed in multi-session client interfaces.',
conversationRenamingNameTip: 'New name',
parametersApi: 'Obtain application parameter information',
parametersApiTip: 'Retrieve configured Input parameters, including variable names, field names, types, and default values. Typically used for displaying these fields in a form or filling in default values after the client loads.',
},
develop: {
requestBody: 'Request Body',
pathParams: 'Path Params',
query: 'Query',
toc: 'Contents',
},
}
export default translation

View File

@@ -0,0 +1,536 @@
const translation = {
pageTitle: {
line1: 'PROMPT',
line2: 'Engineering',
},
orchestrate: 'Orchestrate',
promptMode: {
simple: 'Switch to Expert Mode to edit the whole PROMPT',
advanced: 'Expert Mode',
switchBack: 'Switch back',
advancedWarning: {
title: 'You have switched to Expert Mode, and once you modify the PROMPT, you CANNOT return to the basic mode.',
description: 'In Expert Mode, you can edit whole PROMPT.',
learnMore: 'Learn more',
ok: 'OK',
},
operation: {
addMessage: 'Add Message',
},
contextMissing: 'Context component missed, the effectiveness of the prompt may not be good.',
},
operation: {
applyConfig: 'Publish',
resetConfig: 'Reset',
debugConfig: 'Debug',
addFeature: 'Add Feature',
automatic: 'Generate',
stopResponding: 'Stop responding',
agree: 'like',
disagree: 'dislike',
cancelAgree: 'Cancel like',
cancelDisagree: 'Cancel dislike',
userAction: 'User ',
},
notSetAPIKey: {
title: 'LLM provider key has not been set',
trailFinished: 'Trail finished',
description: 'The LLM provider key has not been set, and it needs to be set before debugging.',
settingBtn: 'Go to settings',
},
trailUseGPT4Info: {
title: 'Does not support gpt-4 now',
description: 'Use gpt-4, please set API Key.',
},
feature: {
groupChat: {
title: 'Chat enhance',
description: 'Add pre-conversation settings for apps can enhance user experience.',
},
groupExperience: {
title: 'Experience enhance',
},
conversationOpener: {
title: 'Conversation Opener',
description: 'In a chat app, the first sentence that the AI actively speaks to the user is usually used as a welcome.',
},
suggestedQuestionsAfterAnswer: {
title: 'Follow-up',
description: 'Setting up next questions suggestion can give users a better chat.',
resDes: '3 suggestions for user next question.',
tryToAsk: 'Try to ask',
},
moreLikeThis: {
title: 'More like this',
description: 'Generate multiple texts at once, and then edit and continue to generate',
generateNumTip: 'Number of each generated times',
tip: 'Using this feature will incur additional tokens overhead',
},
speechToText: {
title: 'Speech to Text',
description: 'Voice input can be used in chat.',
resDes: 'Voice input is enabled',
},
textToSpeech: {
title: 'Text to Speech',
description: 'Conversation messages can be converted to speech.',
resDes: 'Text to Audio is enabled',
},
citation: {
title: 'Citations and Attributions',
description: 'Show source document and attributed section of the generated content.',
resDes: 'Citations and Attributions is enabled',
},
annotation: {
title: 'Annotation Reply',
description: 'You can manually add high-quality response to the cache for prioritized matching with similar user questions.',
resDes: 'Annotation Response is enabled',
scoreThreshold: {
title: 'Score Threshold',
description: 'Used to set the similarity threshold for annotation reply.',
easyMatch: 'Easy Match',
accurateMatch: 'Accurate Match',
},
matchVariable: {
title: 'Match Variable',
choosePlaceholder: 'Choose match variable',
},
cacheManagement: 'Annotations',
cached: 'Annotated',
remove: 'Remove',
removeConfirm: 'Delete this annotation ?',
add: 'Add annotation',
edit: 'Edit annotation',
},
dataSet: {
title: 'Knowledge',
noData: 'You can import Knowledge as context',
words: 'Words',
textBlocks: 'Text Blocks',
selectTitle: 'Select reference Knowledge',
selected: 'Knowledge selected',
noDataSet: 'No Knowledge found',
toCreate: 'Go to create',
notSupportSelectMulti: 'Currently only support one Knowledge',
queryVariable: {
title: 'Query variable',
tip: 'This variable will be used as the query input for context retrieval, obtaining context information related to the input of this variable.',
choosePlaceholder: 'Choose query variable',
noVar: 'No variables',
noVarTip: 'please create a variable under the Variables section',
unableToQueryDataSet: 'Unable to query the Knowledge',
unableToQueryDataSetTip: 'Unable to query the Knowledge successfully, please choose a context query variable in the context section.',
ok: 'OK',
contextVarNotEmpty: 'context query variable can not be empty',
deleteContextVarTitle: 'Delete variable “{{varName}}”?',
deleteContextVarTip: 'This variable has been set as a context query variable, and removing it will impact the normal use of the Knowledge. If you still need to delete it, please reselect it in the context section.',
},
},
tools: {
title: 'Tools',
tips: 'Tools provide a standard API call method, taking user input or variables as request parameters for querying external data as context.',
toolsInUse: '{{count}} tools in use',
modal: {
title: 'Tool',
toolType: {
title: 'Tool Type',
placeholder: 'Please select the tool type',
},
name: {
title: 'Name',
placeholder: 'Please enter the name',
},
variableName: {
title: 'Variable Name',
placeholder: 'Please enter the variable name',
},
},
},
conversationHistory: {
title: 'Conversation History',
description: 'Set prefix names for conversation roles',
tip: 'The Conversation History is not enabled, please add <histories> in the prompt above.',
learnMore: 'Learn more',
editModal: {
title: 'Edit Conversation Role Names',
userPrefix: 'User prefix',
assistantPrefix: 'Assistant prefix',
},
},
toolbox: {
title: 'TOOLBOX',
},
moderation: {
title: 'Content moderation',
description: 'Secure model output by using moderation API or maintaining a sensitive word list.',
contentEnableLabel: 'Enabled moderate content',
allEnabled: 'INPUT & OUTPUT',
inputEnabled: 'INPUT',
outputEnabled: 'OUTPUT',
modal: {
title: 'Content moderation settings',
provider: {
title: 'Provider',
openai: 'OpenAI Moderation',
openaiTip: {
prefix: 'OpenAI Moderation requires an OpenAI API key configured in the ',
suffix: '.',
},
keywords: 'Keywords',
},
keywords: {
tip: 'One per line, separated by line breaks. Up to 100 characters per line.',
placeholder: 'One per line, separated by line breaks',
line: 'Line',
},
content: {
input: 'Moderate INPUT Content',
output: 'Moderate OUTPUT Content',
preset: 'Preset replies',
placeholder: 'Preset replies content here',
condition: 'Moderate INPUT and OUTPUT Content enabled at least one',
fromApi: 'Preset replies are returned by API',
errorMessage: 'Preset replies cannot be empty',
supportMarkdown: 'Markdown supported',
},
openaiNotConfig: {
before: 'OpenAI Moderation requires an OpenAI API key configured in the',
after: '',
},
},
},
fileUpload: {
title: 'File Upload',
description: 'The chat input box allows uploading of images, documents, and other files.',
supportedTypes: 'Support File Types',
numberLimit: 'Max uploads',
modalTitle: 'File Upload Setting',
},
imageUpload: {
title: 'Image Upload',
description: 'Allow uploading images.',
supportedTypes: 'Support File Types',
numberLimit: 'Max uploads',
modalTitle: 'Image Upload Setting',
},
bar: {
empty: 'Enable feature to enhance web app user experience',
enableText: 'Features Enabled',
manage: 'Manage',
},
documentUpload: {
title: 'Document',
description: 'Enable Document will allows the model to take in documents and answer questions about them.',
},
},
codegen: {
title: 'Code Generator',
description: 'The Code Generator uses configured models to generate high-quality code based on your instructions. Please provide clear and detailed instructions.',
instruction: 'Instructions',
instructionPlaceholder: 'Enter detailed description of the code you want to generate.',
noDataLine1: 'Describe your use case on the left,',
noDataLine2: 'the code preview will show here.',
generate: 'Generate',
generatedCodeTitle: 'Generated Code',
loading: 'Generating code...',
apply: 'Apply',
applyChanges: 'Apply Changes',
resTitle: 'Generated Code',
overwriteConfirmTitle: 'Overwrite existing code?',
overwriteConfirmMessage: 'This action will overwrite the existing code. Do you want to continue?',
},
generate: {
title: 'Prompt Generator',
description: 'The Prompt Generator uses the configured model to optimize prompts for higher quality and better structure. Please write clear and detailed instructions.',
tryIt: 'Try it',
instruction: 'Instructions',
instructionPlaceHolder: 'Write clear and specific instructions.',
generate: 'Generate',
resTitle: 'Generated Prompt',
noDataLine1: 'Describe your use case on the left,',
noDataLine2: 'the orchestration preview will show here.',
apply: 'Apply',
loading: 'Orchestrating the application for you...',
overwriteTitle: 'Override existing configuration?',
overwriteMessage: 'Applying this prompt will override existing configuration.',
template: {
pythonDebugger: {
name: 'Python debugger',
instruction: 'A bot that can generate and debug your code based on your instruction',
},
translation: {
name: 'Translation',
instruction: 'A translator that can translate multiple languages',
},
professionalAnalyst: {
name: 'Professional analyst',
instruction: 'Extract insights, identify risk and distill key information from long reports into single memo',
},
excelFormulaExpert: {
name: 'Excel formula expert',
instruction: 'A chatbot that can help novice users understand, use and create Excel formulas based on user instructions',
},
travelPlanning: {
name: 'Travel planning',
instruction: 'The Travel Planning Assistant is an intelligent tool designed to help users effortlessly plan their trips',
},
SQLSorcerer: {
name: 'SQL sorcerer',
instruction: 'Transform everyday language into SQL queries',
},
GitGud: {
name: 'Git gud',
instruction: 'Generate appropriate Git commands based on user described version control actions',
},
meetingTakeaways: {
name: 'Meeting takeaways',
instruction: 'Distill meetings into concise summaries including discussion topics, key takeaways, and action items',
},
writingsPolisher: {
name: 'Writing polisher',
instruction: 'Use advanced copyediting techniques to improve your writings',
},
},
},
resetConfig: {
title: 'Confirm reset?',
message:
'Reset discards changes, restoring the last published configuration.',
},
errorMessage: {
nameOfKeyRequired: 'name of the key: {{key}} required',
valueOfVarRequired: '{{key}} value can not be empty',
queryRequired: 'Request text is required.',
waitForResponse:
'Please wait for the response to the previous message to complete.',
waitForBatchResponse:
'Please wait for the response to the batch task to complete.',
notSelectModel: 'Please choose a model',
waitForImgUpload: 'Please wait for the image to upload',
waitForFileUpload: 'Please wait for the file/files to upload',
},
warningMessage: {
timeoutExceeded: 'Results are not displayed due to timeout. Please refer to the logs to gather complete results.',
},
chatSubTitle: 'Instructions',
completionSubTitle: 'Prefix Prompt',
promptTip:
'Prompts guide AI responses with instructions and constraints. Insert variables like {{input}}. This prompt won\'t be visible to users.',
formattingChangedTitle: 'Formatting changed',
formattingChangedText:
'Modifying the formatting will reset the debug area, are you sure?',
variableTitle: 'Variables',
variableTip:
'Users fill variables in a form, automatically replacing variables in the prompt.',
notSetVar: 'Variables allow users to introduce prompt words or opening remarks when filling out forms. You can try entering "{{input}}" in the prompt words.',
autoAddVar: 'Undefined variables referenced in pre-prompt, are you want to add them in user input form?',
variableTable: {
key: 'Variable Key',
name: 'User Input Field Name',
optional: 'Optional',
type: 'Input Type',
action: 'Actions',
typeString: 'String',
typeSelect: 'Select',
},
varKeyError: {
canNoBeEmpty: '{{key}} is required',
tooLong: '{{key}} is too length. Can not be longer then 30 characters',
notValid: '{{key}} is invalid. Can only contain letters, numbers, and underscores',
notStartWithNumber: '{{key}} can not start with a number',
keyAlreadyExists: '{{key}} already exists',
},
otherError: {
promptNoBeEmpty: 'Prompt can not be empty',
historyNoBeEmpty: 'Conversation history must be set in the prompt',
queryNoBeEmpty: 'Query must be set in the prompt',
},
variableConfig: {
'addModalTitle': 'Add Input Field',
'editModalTitle': 'Edit Input Field',
'description': 'Setting for variable {{varName}}',
'fieldType': 'Field type',
'string': 'Short Text',
'text-input': 'Short Text',
'paragraph': 'Paragraph',
'select': 'Select',
'number': 'Number',
'single-file': 'Single File',
'multi-files': 'File List',
'notSet': 'Not set, try typing {{input}} in the prefix prompt',
'stringTitle': 'Form text box options',
'maxLength': 'Max length',
'options': 'Options',
'addOption': 'Add option',
'apiBasedVar': 'API-based Variable',
'varName': 'Variable Name',
'labelName': 'Label Name',
'inputPlaceholder': 'Please input',
'content': 'Content',
'required': 'Required',
'file': {
supportFileTypes: 'Support File Types',
image: {
name: 'Image',
},
audio: {
name: 'Audio',
},
document: {
name: 'Document',
},
video: {
name: 'Video',
},
custom: {
name: 'Other file types',
description: 'Specify other file types.',
createPlaceholder: '+ File extension, e.g .doc',
},
},
'uploadFileTypes': 'Upload File Types',
'localUpload': 'Local Upload',
'both': 'Both',
'maxNumberOfUploads': 'Max number of uploads',
'maxNumberTip': 'Document < {{docLimit}}, image < {{imgLimit}}, audio < {{audioLimit}}, video < {{videoLimit}}',
'errorMsg': {
labelNameRequired: 'Label name is required',
varNameCanBeRepeat: 'Variable name can not be repeated',
atLeastOneOption: 'At least one option is required',
optionRepeat: 'Has repeat options',
},
},
vision: {
name: 'Vision',
description: 'Enable Vision will allows the model to take in images and answer questions about them. ',
onlySupportVisionModelTip: 'Only supports vision models',
settings: 'Settings',
visionSettings: {
title: 'Vision Settings',
resolution: 'Resolution',
resolutionTooltip: `low res will allow model receive a low-res 512 x 512 version of the image, and represent the image with a budget of 65 tokens. This allows the API to return faster responses and consume fewer input tokens for use cases that do not require high detail.
\n
high res will first allows the model to see the low res image and then creates detailed crops of input images as 512px squares based on the input image size. Each of the detailed crops uses twice the token budget for a total of 129 tokens.`,
high: 'High',
low: 'Low',
uploadMethod: 'Upload Method',
both: 'Both',
localUpload: 'Local Upload',
url: 'URL',
uploadLimit: 'Upload Limit',
},
},
voice: {
name: 'Voice',
defaultDisplay: 'Default Voice',
description: 'Text to speech voice Settings',
settings: 'Settings',
voiceSettings: {
title: 'Voice Settings',
language: 'Language',
resolutionTooltip: 'Text-to-speech voice support language。',
voice: 'Voice',
autoPlay: 'Auto Play',
autoPlayEnabled: 'On',
autoPlayDisabled: 'Off',
},
},
openingStatement: {
title: 'Conversation Opener',
add: 'Add',
writeOpener: 'Edit opener',
placeholder: 'Write your opener message here, you can use variables, try type {{variable}}.',
openingQuestion: 'Opening Questions',
noDataPlaceHolder:
'Starting the conversation with the user can help AI establish a closer connection with them in conversational applications.',
varTip: 'You can use variables, try type {{variable}}',
tooShort: 'At least 20 words of initial prompt are required to generate an opening remarks for the conversation.',
notIncludeKey: 'The initial prompt does not include the variable: {{key}}. Please add it to the initial prompt.',
},
modelConfig: {
model: 'Model',
setTone: 'Set tone of responses',
title: 'Model and Parameters',
modeType: {
chat: 'Chat',
completion: 'Complete',
},
},
inputs: {
title: 'Debug & Preview',
noPrompt: 'Try write some prompt in pre-prompt input',
userInputField: 'User Input Field',
noVar: 'Fill in the value of the variable, which will be automatically replaced in the prompt word every time a new session is started.',
chatVarTip:
'Fill in the value of the variable, which will be automatically replaced in the prompt word every time a new session is started',
completionVarTip:
'Fill in the value of the variable, which will be automatically replaced in the prompt words every time a question is submitted.',
previewTitle: 'Prompt preview',
queryTitle: 'Query content',
queryPlaceholder: 'Please enter the request text.',
run: 'RUN',
},
result: 'Output Text',
noResult: 'Output will be displayed here.',
datasetConfig: {
settingTitle: 'Retrieval settings',
knowledgeTip: 'Click the “+” button to add knowledge',
retrieveOneWay: {
title: 'N-to-1 retrieval',
description: 'Based on user intent and Knowledge descriptions, the Agent autonomously selects the best Knowledge for querying. Best for applications with distinct, limited Knowledge.',
},
retrieveMultiWay: {
title: 'Multi-path retrieval',
description: 'Based on user intent, queries across all Knowledge, retrieves relevant text from multi-sources, and selects the best results matching the user query after reranking. ',
},
rerankModelRequired: 'A configured Rerank Model is required',
params: 'Params',
top_k: 'Top K',
top_kTip: 'Used to filter chunks that are most similar to user questions. The system will also dynamically adjust the value of Top K, according to max_tokens of the selected model.',
score_threshold: 'Score Threshold',
score_thresholdTip: 'Used to set the similarity threshold for chunks filtering.',
retrieveChangeTip: 'Modifying the index mode and retrieval mode may affect applications associated with this Knowledge.',
},
debugAsSingleModel: 'Debug as Single Model',
debugAsMultipleModel: 'Debug as Multiple Models',
duplicateModel: 'Duplicate',
publishAs: 'Publish as',
assistantType: {
name: 'Assistant Type',
chatAssistant: {
name: 'Basic Assistant',
description: 'Build a chat-based assistant using a Large Language Model',
},
agentAssistant: {
name: 'Agent Assistant',
description: 'Build an intelligent Agent which can autonomously choose tools to complete the tasks',
},
},
agent: {
agentMode: 'Agent Mode',
agentModeDes: 'Set the type of inference mode for the agent',
agentModeType: {
ReACT: 'ReAct',
functionCall: 'Function Calling',
},
setting: {
name: 'Agent Settings',
description: 'Agent Assistant settings allow setting agent mode and advanced features like built-in prompts, only available in Agent type.',
maximumIterations: {
name: 'Maximum Iterations',
description: 'Limit the number of iterations an agent assistant can execute',
},
},
buildInPrompt: 'Build-In Prompt',
firstPrompt: 'First Prompt',
nextIteration: 'Next Iteration',
promptPlaceholder: 'Write your prompt here',
tools: {
name: 'Tools',
description: 'Using tools can extend the capabilities of LLM, such as searching the internet or performing scientific calculations',
enabled: 'Enabled',
},
},
}
export default translation

View File

@@ -0,0 +1,98 @@
const translation = {
title: 'Logs',
description: 'The logs record the running status of the application, including user inputs and AI replies.',
dateTimeFormat: 'MM/DD/YYYY hh:mm A',
table: {
header: {
updatedTime: 'Updated time',
time: 'Created time',
endUser: 'End User or Account',
input: 'Input',
output: 'Output',
summary: 'Title',
messageCount: 'Message Count',
userRate: 'User Rate',
adminRate: 'Op. Rate',
startTime: 'START TIME',
status: 'STATUS',
runtime: 'RUN TIME',
tokens: 'TOKENS',
user: 'End User or Account',
version: 'VERSION',
},
pagination: {
previous: 'Prev',
next: 'Next',
},
empty: {
noChat: 'No conversation yet',
noOutput: 'No output',
element: {
title: 'Is anyone there?',
content: 'Observe and annotate interactions between end-users and AI applications here to continuously improve AI accuracy. You can try <shareLink>sharing</shareLink> or <testLink>testing</testLink> the Web App yourself, then return to this page.',
},
},
},
detail: {
time: 'Time',
conversationId: 'Conversation ID',
promptTemplate: 'Prompt Template',
promptTemplateBeforeChat: 'Prompt Template Before Chat · As System Message',
annotationTip: 'Improvements Marked by {{user}}',
timeConsuming: '',
second: 's',
tokenCost: 'Token spent',
loading: 'loading',
operation: {
like: 'like',
dislike: 'dislike',
addAnnotation: 'Add Improvement',
editAnnotation: 'Edit Improvement',
annotationPlaceholder: 'Enter the expected answer that you want AI to reply, which can be used for model fine-tuning and continuous improvement of text generation quality in the future.',
},
variables: 'Variables',
uploadImages: 'Uploaded Images',
modelParams: 'Model parameters',
},
filter: {
period: {
today: 'Today',
last7days: 'Last 7 Days',
last4weeks: 'Last 4 weeks',
last3months: 'Last 3 months',
last12months: 'Last 12 months',
monthToDate: 'Month to date',
quarterToDate: 'Quarter to date',
yearToDate: 'Year to date',
allTime: 'All time',
},
annotation: {
all: 'All',
annotated: 'Annotated Improvements ({{count}} items)',
not_annotated: 'Not Annotated',
},
sortBy: 'Sort by:',
descending: 'descending',
ascending: 'ascending',
},
workflowTitle: 'Workflow Logs',
workflowSubtitle: 'The log recorded the operation of Automate.',
runDetail: {
title: 'Conversation Log',
workflowTitle: 'Log Detail',
fileListLabel: 'File Details',
fileListDetail: 'Detail',
},
promptLog: 'Prompt Log',
agentLog: 'Agent Log',
viewLog: 'View Log',
agentLogDetail: {
agentMode: 'Agent Mode',
toolUsed: 'Tool Used',
iterations: 'Iterations',
iteration: 'Iteration',
finalProcessing: 'Final Processing',
},
}
export default translation

View File

@@ -0,0 +1,172 @@
const translation = {
welcome: {
firstStepTip: 'To get started,',
enterKeyTip: 'enter your OpenAI API Key below',
getKeyTip: 'Get your API Key from OpenAI dashboard',
placeholder: 'Your OpenAI API Key (eg.sk-xxxx)',
},
apiKeyInfo: {
cloud: {
trial: {
title: 'You are using the {{providerName}} trial quota.',
description: 'The trial quota is provided for your testing purposes. Before the trial quota is exhausted, please set up your own model provider or purchase additional quota.',
},
exhausted: {
title: 'Your trial quota have been used up, please set up your APIKey.',
description: 'You have exhausted your trial quota. Please set up your own model provider or purchase additional quota.',
},
},
selfHost: {
title: {
row1: 'To get started,',
row2: 'setup your model provider first.',
},
},
callTimes: 'Call times',
usedToken: 'Used token',
setAPIBtn: 'Go to setup model provider',
tryCloud: 'Or try the cloud version of Dify with free quote',
},
overview: {
title: 'Overview',
appInfo: {
explanation: 'Ready-to-use AI WebApp',
accessibleAddress: 'Public URL',
preview: 'Preview',
launch: 'Launch',
regenerate: 'Regenerate',
regenerateNotice: 'Do you want to regenerate the public URL?',
preUseReminder: 'Please enable WebApp before continuing.',
settings: {
entry: 'Settings',
title: 'Web App Settings',
modalTip: 'Client-side web app settings. ',
webName: 'WebApp Name',
webDesc: 'WebApp Description',
webDescTip: 'This text will be displayed on the client side, providing basic guidance on how to use the application',
webDescPlaceholder: 'Enter the description of the WebApp',
language: 'Language',
workflow: {
title: 'Workflow',
subTitle: 'Workflow Details',
show: 'Show',
hide: 'Hide',
showDesc: 'Show or hide workflow details in WebApp',
},
chatColorTheme: 'Chat color theme',
chatColorThemeDesc: 'Set the color theme of the chatbot',
chatColorThemeInverted: 'Inverted',
invalidHexMessage: 'Invalid hex value',
sso: {
label: 'SSO Enforcement',
title: 'WebApp SSO',
description: 'All users are required to login with SSO before using WebApp',
tooltip: 'Contact the administrator to enable WebApp SSO',
},
more: {
entry: 'Show more settings',
copyright: 'Copyright',
copyrightTip: 'Display copyright information in the webapp',
copyrightTooltip: 'Please upgrade to Professional plan or above',
copyRightPlaceholder: 'Enter the name of the author or organization',
privacyPolicy: 'Privacy Policy',
privacyPolicyPlaceholder: 'Enter the privacy policy link',
privacyPolicyTip: 'Helps visitors understand the data the application collects, see Dify\'s <privacyPolicyLink>Privacy Policy</privacyPolicyLink>.',
customDisclaimer: 'Custom Disclaimer',
customDisclaimerPlaceholder: 'Enter the custom disclaimer text',
customDisclaimerTip: 'Custom disclaimer text will be displayed on the client side, providing additional information about the application',
},
},
embedded: {
entry: 'Embedded',
title: 'Embed on website',
explanation: 'Choose the way to embed chat app to your website',
iframe: 'To add the chat app any where on your website, add this iframe to your html code.',
scripts: 'To add a chat app to the bottom right of your website add this code to your html.',
chromePlugin: 'Install Dify Chatbot Chrome Extension',
copied: 'Copied',
copy: 'Copy',
},
qrcode: {
title: 'Link QR Code',
scan: 'Scan To Share',
download: 'Download QR Code',
},
customize: {
way: 'way',
entry: 'Customize',
title: 'Customize AI WebApp',
explanation: 'You can customize the frontend of the Web App to fit your scenario and style needs.',
way1: {
name: 'Fork the client code, modify it and deploy to Vercel (recommended)',
step1: 'Fork the client code and modify it',
step1Tip: 'Click here to fork the source code into your GitHub account and modify the code',
step1Operation: 'Dify-WebClient',
step2: 'Deploy to Vercel',
step2Tip: 'Click here to import the repository into Vercel and deploy',
step2Operation: 'Import repository',
step3: 'Configure environment variables',
step3Tip: 'Add the following environment variables in Vercel',
},
way2: {
name: 'Write client-side code to call the API and deploy it to a server',
operation: 'Documentation',
},
},
},
apiInfo: {
title: 'Backend Service API',
explanation: 'Easily integrated into your application',
accessibleAddress: 'Service API Endpoint',
doc: 'API Reference',
},
status: {
running: 'In Service',
disable: 'Disabled',
},
},
analysis: {
title: 'Analysis',
ms: 'ms',
tokenPS: 'Token/s',
totalMessages: {
title: 'Total Messages',
explanation: 'Daily AI interactions count.',
},
totalConversations: {
title: 'Total Conversations',
explanation: 'Daily AI conversations count; prompt engineering/debugging excluded.',
},
activeUsers: {
title: 'Active Users',
explanation: 'Unique users engaging in Q&A with AI; prompt engineering/debugging excluded.',
},
tokenUsage: {
title: 'Token Usage',
explanation: 'Reflects the daily token usage of the language model for the application, useful for cost control purposes.',
consumed: 'Consumed',
},
avgSessionInteractions: {
title: 'Avg. Session Interactions',
explanation: 'Continuous user-AI communication count; for conversation-based apps.',
},
avgUserInteractions: {
title: 'Avg. User Interactions',
explanation: 'Reflects the daily usage frequency of users. This metric reflects user stickiness.',
},
userSatisfactionRate: {
title: 'User Satisfaction Rate',
explanation: 'The number of likes per 1,000 messages. This indicates the proportion of answers that users are highly satisfied with.',
},
avgResponseTime: {
title: 'Avg. Response Time',
explanation: 'Time (ms) for AI to process/respond; for text-based apps.',
},
tps: {
title: 'Token Output Speed',
explanation: 'Measure the performance of the LLM. Count the Tokens output speed of LLM from the beginning of the request to the completion of the output.',
},
},
}
export default translation

View File

@@ -0,0 +1,185 @@
const translation = {
createApp: 'CREATE APP',
types: {
all: 'All',
chatbot: 'Chatbot',
agent: 'Agent',
workflow: 'Workflow',
completion: 'Completion',
advanced: 'Chatflow',
basic: 'Basic',
},
duplicate: 'Duplicate',
mermaid: {
handDrawn: 'Hand Drawn',
classic: 'Classic',
},
duplicateTitle: 'Duplicate App',
export: 'Export DSL',
exportFailed: 'Export DSL failed.',
importDSL: 'Import DSL file',
createFromConfigFile: 'Create from DSL file',
importFromDSL: 'Import from DSL',
importFromDSLFile: 'From DSL file',
importFromDSLUrl: 'From URL',
importFromDSLUrlPlaceholder: 'Paste DSL link here',
deleteAppConfirmTitle: 'Delete this app?',
deleteAppConfirmContent:
'Deleting the app is irreversible. Users will no longer be able to access your app, and all prompt configurations and logs will be permanently deleted.',
appDeleted: 'App deleted',
appDeleteFailed: 'Failed to delete app',
join: 'Join the community',
communityIntro:
'Discuss with team members, contributors and developers on different channels.',
roadmap: 'See our roadmap',
newApp: {
learnMore: 'Learn more',
startFromBlank: 'Create from Blank',
startFromTemplate: 'Create from Template',
foundResult: '{{count}} Result',
foundResults: '{{count}} Results',
noAppsFound: 'No apps found',
noTemplateFound: 'No templates found',
noTemplateFoundTip: 'Try searching using different keywords.',
chatbotShortDescription: 'LLM-based chatbot with simple setup',
chatbotUserDescription: 'Quickly build an LLM-based chatbot with simple configuration. You can switch to Chatflow later.',
completionShortDescription: 'AI assistant for text generation tasks',
completionUserDescription: 'Quickly build an AI assistant for text generation tasks with simple configuration.',
agentShortDescription: 'Intelligent agent with reasoning and autonomous tool use',
agentUserDescription: 'An intelligent agent capable of iterative reasoning and autonomous tool use to achieve task goals.',
workflowShortDescription: 'Orchestration for single-turn automation tasks',
workflowUserDescription: 'Workflow orchestration for single-round tasks like automation and batch processing.',
workflowWarning: 'Currently in beta',
advancedShortDescription: 'Workflow for complex multi-turn dialogues with memory',
advancedUserDescription: 'Workflow orchestration for multi-round complex dialogue tasks with memory capabilities.',
chooseAppType: 'Choose App Type',
forBeginners: 'FOR BEGINNERS',
forAdvanced: 'FOR ADVANCED USERS',
noIdeaTip: 'No ideas? Check out our templates',
captionName: 'App Name & Icon',
appNamePlaceholder: 'Give your app a name',
captionDescription: 'Description',
optional: 'Optional',
appDescriptionPlaceholder: 'Enter the description of the app',
useTemplate: 'Use this template',
previewDemo: 'Preview demo',
chatApp: 'Assistant',
chatAppIntro:
'I want to build a chat-based application. This app uses a question-and-answer format, allowing for multiple rounds of continuous conversation.',
agentAssistant: 'New Agent Assistant',
completeApp: 'Text Generator',
completeAppIntro:
'I want to create an application that generates high-quality text based on prompts, such as generating articles, summaries, translations, and more.',
showTemplates: 'I want to choose from a template',
hideTemplates: 'Go back to mode selection',
Create: 'Create',
Cancel: 'Cancel',
Confirm: 'Confirm',
nameNotEmpty: 'Name cannot be empty',
appTemplateNotSelected: 'Please select a template',
appTypeRequired: 'Please select an app type',
appCreated: 'App created',
caution: 'Caution',
appCreateDSLWarning: 'Caution: DSL version difference may affect certain features',
appCreateDSLErrorTitle: 'Version Incompatibility',
appCreateDSLErrorPart1: 'A significant difference in DSL versions has been detected. Forcing the import may cause the application to malfunction.',
appCreateDSLErrorPart2: 'Do you want to continue?',
appCreateDSLErrorPart3: 'Current application DSL version: ',
appCreateDSLErrorPart4: 'System-supported DSL version: ',
appCreateFailed: 'Failed to create app',
},
newAppFromTemplate: {
byCategories: 'BY CATEGORIES',
searchAllTemplate: 'Search all templates...',
sidebar: {
Recommended: 'Recommended',
Agent: 'Agent',
Assistant: 'Assistant',
HR: 'HR',
Workflow: 'Workflow',
Writing: 'Writing',
Programming: 'Programming',
},
},
editApp: 'Edit Info',
editAppTitle: 'Edit App Info',
editDone: 'App info updated',
editFailed: 'Failed to update app info',
iconPicker: {
ok: 'OK',
cancel: 'Cancel',
emoji: 'Emoji',
image: 'Image',
},
answerIcon: {
title: 'Use WebApp icon to replace 🤖',
description: 'Whether to use the WebApp icon to replace 🤖 in the shared application',
descriptionInExplore: 'Whether to use the WebApp icon to replace 🤖 in Explore',
},
switch: 'Switch to Workflow Orchestrate',
switchTipStart: 'A new app copy will be created for you, and the new copy will switch to Workflow Orchestrate. The new copy will ',
switchTip: 'not allow',
switchTipEnd: ' switching back to Basic Orchestrate.',
switchLabel: 'The app copy to be created',
removeOriginal: 'Delete the original app',
switchStart: 'Start switch',
openInExplore: 'Open in Explore',
typeSelector: {
all: 'All Types ',
chatbot: 'Chatbot',
agent: 'Agent',
workflow: 'Workflow',
completion: 'Completion',
advanced: 'Chatflow',
},
tracing: {
title: 'Tracing app performance',
description: 'Configuring a Third-Party LLMOps provider and tracing app performance.',
config: 'Config',
view: 'View',
collapse: 'Collapse',
expand: 'Expand',
tracing: 'Tracing',
disabled: 'Disabled',
disabledTip: 'Please config provider first',
enabled: 'In Service',
tracingDescription: 'Capture the full context of app execution, including LLM calls, context, prompts, HTTP requests, and more, to a third-party tracing platform.',
configProviderTitle: {
configured: 'Configured',
notConfigured: 'Config provider to enable tracing',
moreProvider: 'More Provider',
},
langsmith: {
title: 'LangSmith',
description: 'An all-in-one developer platform for every step of the LLM-powered application lifecycle.',
},
langfuse: {
title: 'Langfuse',
description: 'Open-source LLM observability, evaluation, prompt management and metrics to debug and improve your LLM application.',
},
opik: {
title: 'Opik',
description: 'Opik is an open-source platform for evaluating, testing, and monitoring LLM applications.',
},
inUse: 'In use',
configProvider: {
title: 'Config ',
placeholder: 'Enter your {{key}}',
project: 'Project',
publicKey: 'Public Key',
secretKey: 'Secret Key',
viewDocsLink: 'View {{key}} docs',
removeConfirmTitle: 'Remove {{key}} configuration?',
removeConfirmContent: 'The current configuration is in use, removing it will turn off the Tracing feature.',
},
},
appSelector: {
label: 'APP',
placeholder: 'Select an app...',
params: 'APP PARAMETERS',
noParams: 'No parameters needed',
},
showMyCreatedAppsOnly: 'Created by me',
}
export default translation

View File

@@ -0,0 +1,182 @@
const translation = {
currentPlan: 'Current Plan',
usagePage: {
teamMembers: 'Team Members',
buildApps: 'Build Apps',
annotationQuota: 'Annotation Quota',
documentsUploadQuota: 'Documents Upload Quota',
vectorSpace: 'Knowledge Data Storage',
vectorSpaceTooltip: 'Documents with the High Quality indexing mode will consume Knowledge Data Storage resources. When Knowledge Data Storage reaches the limit, new documents will not be uploaded.',
},
teamMembers: 'Team Members',
upgradeBtn: {
plain: 'View Plan',
encourage: 'Upgrade Now',
encourageShort: 'Upgrade',
},
viewBilling: 'Manage billing and subscriptions',
buyPermissionDeniedTip: 'Please contact your enterprise administrator to subscribe',
plansCommon: {
title: 'Pricing that powers your AI journey',
freeTrialTipPrefix: 'Sign up and get a ',
freeTrialTip: 'free trial of 200 OpenAI calls. ',
freeTrialTipSuffix: 'No credit card required',
yearlyTip: 'Pay for 10 months, enjoy 1 Year!',
mostPopular: 'Popular',
cloud: 'Cloud Service',
self: 'Self-Hosted',
planRange: {
monthly: 'Monthly',
yearly: 'Yearly',
},
month: 'month',
year: 'year',
save: 'Save ',
free: 'Free',
annualBilling: 'Annual Billing',
comparePlanAndFeatures: 'Compare plans & features',
priceTip: 'per workspace/',
currentPlan: 'Current Plan',
contractSales: 'Contact sales',
contractOwner: 'Contact team manager',
startForFree: 'Start for Free',
getStarted: 'Get Started',
contactSales: 'Contact Sales',
talkToSales: 'Talk to Sales',
modelProviders: 'Support OpenAI/Anthropic/Llama2/Azure OpenAI/Hugging Face/Replicate',
teamWorkspace: '{{count,number}} Team Workspace',
teamMember_one: '{{count,number}} Team Member',
teamMember_other: '{{count,number}} Team Members',
annotationQuota: 'Annotation Quota',
buildApps: '{{count,number}} Apps',
documents: '{{count,number}} Knowledge Documents',
documentsTooltip: 'Quota on the number of documents imported from the Knowledge Data Source.',
vectorSpace: '{{size}} Knowledge Data Storage',
vectorSpaceTooltip: 'Documents with the High Quality indexing mode will consume Knowledge Data Storage resources. When Knowledge Data Storage reaches the limit, new documents will not be uploaded.',
documentsRequestQuota: '{{count,number}}/min Knowledge Request Rate Limit',
documentsRequestQuotaTooltip: 'Specifies the total number of actions a workspace can perform per minute within the knowledge base, including dataset creation, deletion, updates, document uploads, modifications, archiving, and knowledge base queries. This metric is used to evaluate the performance of knowledge base requests. For example, if a Sandbox user performs 10 consecutive hit tests within one minute, their workspace will be temporarily restricted from performing the following actions for the next minute: dataset creation, deletion, updates, and document uploads or modifications. ',
documentProcessingPriority: ' Document Processing',
priority: {
'standard': 'Standard',
'priority': 'Priority',
'top-priority': 'Top Priority',
},
logsHistory: '{{days}} Log history',
customTools: 'Custom Tools',
unavailable: 'Unavailable',
days: 'Days',
unlimited: 'Unlimited',
support: 'Support',
supportItems: {
communityForums: 'Community forums',
emailSupport: 'Email support',
priorityEmail: 'Priority email & chat support',
logoChange: 'Logo change',
SSOAuthentication: 'SSO authentication',
personalizedSupport: 'Personalized support',
dedicatedAPISupport: 'Dedicated API support',
customIntegration: 'Custom integration and support',
ragAPIRequest: 'RAG API Requests',
bulkUpload: 'Bulk upload documents',
agentMode: 'Agent Mode',
workflow: 'Workflow',
llmLoadingBalancing: 'LLM Load Balancing',
llmLoadingBalancingTooltip: 'Add multiple API keys to models, effectively bypassing the API rate limits. ',
},
comingSoon: 'Coming soon',
member: 'Member',
memberAfter: 'Member',
messageRequest: {
title: '{{count,number}} messages',
titlePerMonth: '{{count,number}} messages/month',
tooltip: 'Message invocation quotas for various plans using OpenAl models. Messages over the limit will use your OpenAI API Key.',
},
annotatedResponse: {
title: '{{count,number}} Annotation Quota Limits',
tooltip: 'Manual editing and annotation of responses provides customizable high-quality question-answering abilities for apps. (Applicable only in Chat apps)',
},
ragAPIRequestTooltip: 'Refers to the number of API calls invoking only the knowledge base processing capabilities of Dify.',
receiptInfo: 'Only team owner and team admin can subscribe and view billing information',
},
plans: {
sandbox: {
name: 'Sandbox',
for: 'Free Trial of Core Capabilities',
description: 'Free Trial of Core Capabilities',
},
professional: {
name: 'Professional',
for: 'For Independent Developers/Small Teams',
description: 'For Independent Developers/Small Teams',
},
team: {
name: 'Team',
for: 'For Medium-sized Teams',
description: 'For Medium-sized Teams',
},
community: {
name: 'Community',
for: 'For Individual Users, Small Teams, or Non-commercial Projects',
description: 'For Individual Users, Small Teams, or Non-commercial Projects',
price: 'Free',
btnText: 'Get Started with Community',
includesTitle: 'Free Features:',
features: [
'All Core Features Released Under the Public Repository',
'Single Workspace',
'Complies with Dify Open Source License',
],
},
premium: {
name: 'Premium',
for: 'For Mid-sized Organizations and Teams',
description: 'For Mid-sized Organizations and Teams',
price: 'Scalable',
priceTip: 'Based on Cloud Marketplace',
btnText: 'Get Premium in',
includesTitle: 'Everything from Community, plus:',
comingSoon: 'Microsoft Azure & Google Cloud Support Coming Soon',
features: [
'Self-managed Reliability by Various Cloud Providers',
'Single Workspace',
'WebApp Logo & Branding Customization',
'Priority Email & Chat Support',
],
},
enterprise: {
name: 'Enterprise',
for: 'For large-sized Teams',
description: 'For Enterprise Require Organization-wide Security, Compliance, Scalability, Control and More Advanced Features',
price: 'Custom',
priceTip: 'Annual Billing Only',
btnText: 'Contact Sales',
includesTitle: 'Everything from Premium, plus:',
features: [
'Enterprise-grade Scalable Deployment Solutions',
'Commercial License Authorization',
'Exclusive Enterprise Features',
'Multiple Workspaces & Enterprise Management',
'SSO',
'Negotiated SLAs by Dify Partners',
'Advanced Security & Controls',
'Updates and Maintenance by Dify Officially',
'Professional Technical Support',
],
},
},
vectorSpace: {
fullTip: 'Vector Space is full.',
fullSolution: 'Upgrade your plan to get more space.',
},
apps: {
fullTipLine1: 'Upgrade your plan to',
fullTipLine2: 'build more apps.',
},
annotatedResponse: {
fullTipLine1: 'Upgrade your plan to',
fullTipLine2: 'annotate more conversations.',
quotaTitle: 'Annotation Reply Quota',
},
}
export default translation

View File

@@ -0,0 +1,654 @@
const translation = {
api: {
success: 'Success',
actionSuccess: 'Action succeeded',
saved: 'Saved',
create: 'Created',
remove: 'Removed',
},
operation: {
create: 'Create',
confirm: 'Confirm',
cancel: 'Cancel',
clear: 'Clear',
save: 'Save',
saveAndEnable: 'Save & Enable',
edit: 'Edit',
add: 'Add',
added: 'Added',
refresh: 'Restart',
reset: 'Reset',
search: 'Search',
change: 'Change',
remove: 'Remove',
send: 'Send',
copy: 'Copy',
copied: 'Copied',
lineBreak: 'Line break',
sure: 'I\'m sure',
download: 'Download',
downloadSuccess: 'Download Completed.',
downloadFailed: 'Download failed. Please try again later.',
viewDetails: 'View Details',
delete: 'Delete',
deleteApp: 'Delete App',
settings: 'Settings',
setup: 'Setup',
getForFree: 'Get for free',
reload: 'Reload',
ok: 'OK',
log: 'Log',
learnMore: 'Learn More',
params: 'Params',
duplicate: 'Duplicate',
rename: 'Rename',
audioSourceUnavailable: 'AudioSource is unavailable',
close: 'Close',
copyImage: 'Copy Image',
imageCopied: 'Image copied',
zoomOut: 'Zoom Out',
zoomIn: 'Zoom In',
openInNewTab: 'Open in new tab',
in: 'in',
saveAndRegenerate: 'Save & Regenerate Child Chunks',
view: 'View',
viewMore: 'VIEW MORE',
regenerate: 'Regenerate',
submit: 'Submit',
skip: 'Skip',
},
errorMsg: {
fieldRequired: '{{field}} is required',
urlError: 'url should start with http:// or https://',
},
placeholder: {
input: 'Please enter',
select: 'Please select',
},
voice: {
language: {
zhHans: 'Chinese',
zhHant: 'Traditional Chinese',
enUS: 'English',
deDE: 'German',
frFR: 'French',
esES: 'Spanish',
itIT: 'Italian',
thTH: 'Thai',
idID: 'Indonesian',
jaJP: 'Japanese',
koKR: 'Korean',
ptBR: 'Portuguese',
ruRU: 'Russian',
ukUA: 'Ukrainian',
viVN: 'Vietnamese',
plPL: 'Polish',
roRO: 'Romanian',
hiIN: 'Hindi',
trTR: 'Türkçe',
faIR: 'Farsi',
},
},
unit: {
char: 'chars',
},
actionMsg: {
noModification: 'No modifications at the moment.',
modifiedSuccessfully: 'Modified successfully',
modifiedUnsuccessfully: 'Modified unsuccessfully',
copySuccessfully: 'Copied successfully',
paySucceeded: 'Payment succeeded',
payCancelled: 'Payment cancelled',
generatedSuccessfully: 'Generated successfully',
generatedUnsuccessfully: 'Generated unsuccessfully',
},
model: {
params: {
temperature: 'Temperature',
temperatureTip:
'Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.',
top_p: 'Top P',
top_pTip:
'Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered.',
presence_penalty: 'Presence penalty',
presence_penaltyTip:
'How much to penalize new tokens based on whether they appear in the text so far.\nIncreases the model\'s likelihood to talk about new topics.',
frequency_penalty: 'Frequency penalty',
frequency_penaltyTip:
'How much to penalize new tokens based on their existing frequency in the text so far.\nDecreases the model\'s likelihood to repeat the same line verbatim.',
max_tokens: 'Max token',
max_tokensTip:
'Used to limit the maximum length of the reply, in tokens. \nLarger values may limit the space left for prompt words, chat logs, and Knowledge. \nIt is recommended to set it below two-thirds\ngpt-4-1106-preview, gpt-4-vision-preview max token (input 128k output 4k)',
maxTokenSettingTip: 'Your max token setting is high, potentially limiting space for prompts, queries, and data. Consider setting it below 2/3.',
setToCurrentModelMaxTokenTip: 'Max token is updated to the 80% maximum token of the current model {{maxToken}}.',
stop_sequences: 'Stop sequences',
stop_sequencesTip: 'Up to four sequences where the API will stop generating further tokens. The returned text will not contain the stop sequence.',
stop_sequencesPlaceholder: 'Enter sequence and press Tab',
},
tone: {
Creative: 'Creative',
Balanced: 'Balanced',
Precise: 'Precise',
Custom: 'Custom',
},
addMoreModel: 'Go to settings to add more models',
settingsLink: 'Model Provider Settings',
capabilities: 'MultiModal Capabilities',
},
menus: {
status: 'beta',
explore: 'Explore',
apps: 'Studio',
plugins: 'Plugins',
exploreMarketplace: 'Explore Marketplace',
pluginsTips: 'Integrate third-party plugins or create ChatGPT-compatible AI-Plugins.',
datasets: 'Knowledge',
datasetsTips: 'COMING SOON: Import your own text data or write data in real-time via Webhook for LLM context enhancement.',
newApp: 'New App',
newDataset: 'Create Knowledge',
tools: 'Tools',
},
userProfile: {
settings: 'Settings',
emailSupport: 'Email Support',
workspace: 'Workspace',
createWorkspace: 'Create Workspace',
helpCenter: 'Docs',
support: 'Support',
compliance: 'Compliance',
communityFeedback: 'Feedback',
roadmap: 'Roadmap',
github: 'GitHub',
community: 'Community',
about: 'About',
logout: 'Log out',
},
compliance: {
soc2Type1: 'SOC 2 Type I Report',
soc2Type2: 'SOC 2 Type II Report',
iso27001: 'ISO 27001:2022 Certification',
gdpr: 'GDPR DPA',
sandboxUpgradeTooltip: 'Only available with a Professional or Team plan.',
professionalUpgradeTooltip: 'Only available with a Team plan or above.',
},
settings: {
accountGroup: 'GENERAL',
workplaceGroup: 'WORKSPACE',
generalGroup: 'GENERAL',
account: 'My account',
members: 'Members',
billing: 'Billing',
integrations: 'Integrations',
language: 'Language',
provider: 'Model Provider',
dataSource: 'Data Source',
plugin: 'Plugins',
apiBasedExtension: 'API Extension',
},
account: {
account: 'Account',
myAccount: 'My Account',
studio: 'Dify Studio',
avatar: 'Avatar',
name: 'Name',
email: 'Email',
password: 'Password',
passwordTip: 'You can set a permanent password if you dont want to use temporary login codes',
setPassword: 'Set a password',
resetPassword: 'Reset password',
currentPassword: 'Current password',
newPassword: 'New password',
confirmPassword: 'Confirm password',
notEqual: 'Two passwords are different.',
langGeniusAccount: 'Dify account',
langGeniusAccountTip: 'Your Dify account and associated user data.',
editName: 'Edit Name',
showAppLength: 'Show {{length}} apps',
delete: 'Delete Account',
deleteTip: 'Please note, once confirmed, as the Owner of any Workspaces, your workspaces will be scheduled in a queue for permanent deletion, and all your user data will be queued for permanent deletion.',
deletePrivacyLinkTip: 'For more information about how we handle your data, please see our ',
deletePrivacyLink: 'Privacy Policy.',
deleteSuccessTip: 'Your account needs time to finish deleting. We\'ll email you when it\'s all done.',
deleteLabel: 'To confirm, please type in your email below',
deletePlaceholder: 'Please enter your email',
sendVerificationButton: 'Send Verification Code',
verificationLabel: 'Verification Code',
verificationPlaceholder: 'Paste the 6-digit code',
permanentlyDeleteButton: 'Permanently Delete Account',
feedbackTitle: 'Feedback',
feedbackLabel: 'Tell us why you deleted your account?',
feedbackPlaceholder: 'Optional',
},
members: {
team: 'Team',
invite: 'Add',
name: 'NAME',
lastActive: 'LAST ACTIVE',
role: 'ROLES',
pending: 'Pending...',
owner: 'Owner',
admin: 'Admin',
adminTip: 'Can build apps & manage team settings',
normal: 'Normal',
normalTip: 'Only can use apps, can not build apps',
builder: 'Builder',
builderTip: 'Can build & edit own apps',
editor: 'Editor',
editorTip: 'Can build & edit apps',
datasetOperator: 'Knowledge Admin',
datasetOperatorTip: 'Only can manage the knowledge base',
inviteTeamMember: 'Add team member',
inviteTeamMemberTip: 'They can access your team data directly after signing in.',
emailNotSetup: 'Email server is not set up, so invitation emails cannot be sent. Please notify users of the invitation link that will be issued after invitation instead.',
email: 'Email',
emailInvalid: 'Invalid Email Format',
emailPlaceholder: 'Please input emails',
sendInvite: 'Send Invite',
invitedAsRole: 'Invited as {{role}} user',
invitationSent: 'Invitation sent',
invitationSentTip: 'Invitation sent, and they can sign in to Dify to access your team data.',
invitationLink: 'Invitation Link',
failedInvitationEmails: 'Below users were not invited successfully',
ok: 'OK',
removeFromTeam: 'Remove from team',
removeFromTeamTip: 'Will remove team access',
setAdmin: 'Set as administrator',
setMember: 'Set to ordinary member',
setBuilder: 'Set as builder',
setEditor: 'Set as editor',
disInvite: 'Cancel the invitation',
deleteMember: 'Delete Member',
you: '(You)',
},
integrations: {
connected: 'Connected',
google: 'Google',
googleAccount: 'Login with Google account',
github: 'GitHub',
githubAccount: 'Login with GitHub account',
connect: 'Connect',
},
language: {
displayLanguage: 'Display Language',
timezone: 'Time Zone',
},
provider: {
apiKey: 'API Key',
enterYourKey: 'Enter your API key here',
invalidKey: 'Invalid OpenAI API key',
validatedError: 'Validation failed: ',
validating: 'Validating key...',
saveFailed: 'Save api key failed',
apiKeyExceedBill: 'This API KEY has no quota available, please read',
addKey: 'Add Key',
comingSoon: 'Coming Soon',
editKey: 'Edit',
invalidApiKey: 'Invalid API key',
azure: {
apiBase: 'API Base',
apiBasePlaceholder: 'The API Base URL of your Azure OpenAI Endpoint.',
apiKey: 'API Key',
apiKeyPlaceholder: 'Enter your API key here',
helpTip: 'Learn Azure OpenAI Service',
},
openaiHosted: {
openaiHosted: 'Hosted OpenAI',
onTrial: 'ON TRIAL',
exhausted: 'QUOTA EXHAUSTED',
desc: 'The OpenAI hosting service provided by Dify allows you to use models such as GPT-3.5. Before your trial quota is used up, you need to set up other model providers.',
callTimes: 'Call times',
usedUp: 'Trial quota used up. Add own Model Provider.',
useYourModel: 'Currently using own Model Provider.',
close: 'Close',
},
anthropicHosted: {
anthropicHosted: 'Anthropic Claude',
onTrial: 'ON TRIAL',
exhausted: 'QUOTA EXHAUSTED',
desc: 'Powerful model, which excels at a wide range of tasks from sophisticated dialogue and creative content generation to detailed instruction.',
callTimes: 'Call times',
usedUp: 'Trial quota used up. Add own Model Provider.',
useYourModel: 'Currently using own Model Provider.',
close: 'Close',
trialQuotaTip: 'Your Anthropic trial quota will expire on 2025/03/17 and will no longer be available thereafter. Please make use of it in time.',
},
anthropic: {
using: 'The embedding capability is using',
enableTip: 'To enable the Anthropic model, you need to bind to OpenAI or Azure OpenAI Service first.',
notEnabled: 'Not enabled',
keyFrom: 'Get your API key from Anthropic',
},
encrypted: {
front: 'Your API KEY will be encrypted and stored using',
back: ' technology.',
},
},
modelProvider: {
notConfigured: 'The system model has not yet been fully configured',
systemModelSettings: 'System Model Settings',
systemModelSettingsLink: 'Why is it necessary to set up a system model?',
selectModel: 'Select your model',
setupModelFirst: 'Please set up your model first',
systemReasoningModel: {
key: 'System Reasoning Model',
tip: 'Set the default inference model to be used for creating applications, as well as features such as dialogue name generation and next question suggestion will also use the default inference model.',
},
embeddingModel: {
key: 'Embedding Model',
tip: 'Set the default model for document embedding processing of the Knowledge, both retrieval and import of the Knowledge use this Embedding model for vectorization processing. Switching will cause the vector dimension between the imported Knowledge and the question to be inconsistent, resulting in retrieval failure. To avoid retrieval failure, please do not switch this model at will.',
required: 'Embedding Model is required',
},
speechToTextModel: {
key: 'Speech-to-Text Model',
tip: 'Set the default model for speech-to-text input in conversation.',
},
ttsModel: {
key: 'Text-to-Speech Model',
tip: 'Set the default model for text-to-speech input in conversation.',
},
rerankModel: {
key: 'Rerank Model',
tip: 'Rerank model will reorder the candidate document list based on the semantic match with user query, improving the results of semantic ranking',
},
apiKey: 'API-KEY',
quota: 'Quota',
searchModel: 'Search model',
noModelFound: 'No model found for {{model}}',
models: 'Models',
showMoreModelProvider: 'Show more model provider',
selector: {
tip: 'This model has been removed. Please add a model or select another model.',
emptyTip: 'No available models',
emptySetting: 'Please go to settings to configure',
rerankTip: 'Please set up the Rerank model',
},
card: {
quota: 'QUOTA',
onTrial: 'On Trial',
paid: 'Paid',
quotaExhausted: 'Quota exhausted',
callTimes: 'Call times',
tokens: 'Tokens',
buyQuota: 'Buy Quota',
priorityUse: 'Priority use',
removeKey: 'Remove API Key',
tip: 'Priority will be given to the paid quota. The Trial quota will be used after the paid quota is exhausted.',
},
item: {
deleteDesc: '{{modelName}} are being used as system reasoning models. Some functions will not be available after removal. Please confirm.',
freeQuota: 'FREE QUOTA',
},
addApiKey: 'Add your API key',
invalidApiKey: 'Invalid API key',
encrypted: {
front: 'Your API KEY will be encrypted and stored using',
back: ' technology.',
},
freeQuota: {
howToEarn: 'How to earn',
},
addMoreModelProvider: 'ADD MORE MODEL PROVIDER',
addModel: 'Add Model',
modelsNum: '{{num}} Models',
showModels: 'Show Models',
showModelsNum: 'Show {{num}} Models',
collapse: 'Collapse',
config: 'Config',
modelAndParameters: 'Model and Parameters',
model: 'Model',
featureSupported: '{{feature}} supported',
callTimes: 'Call times',
credits: 'Message Credits',
buyQuota: 'Buy Quota',
getFreeTokens: 'Get free Tokens',
priorityUsing: 'Prioritize using',
deprecated: 'Deprecated',
confirmDelete: 'Confirm deletion?',
quotaTip: 'Remaining available free tokens',
loadPresets: 'Load Presets',
parameters: 'PARAMETERS',
loadBalancing: 'Load balancing',
loadBalancingDescription: 'Reduce pressure with multiple sets of credentials.',
loadBalancingHeadline: 'Load Balancing',
configLoadBalancing: 'Config Load Balancing',
modelHasBeenDeprecated: 'This model has been deprecated',
providerManaged: 'Provider managed',
providerManagedDescription: 'Use the single set of credentials provided by the model provider.',
defaultConfig: 'Default Config',
apiKeyStatusNormal: 'APIKey status is normal',
apiKeyRateLimit: 'Rate limit was reached, available after {{seconds}}s',
addConfig: 'Add Config',
editConfig: 'Edit Config',
loadBalancingLeastKeyWarning: 'To enable load balancing at least 2 keys must be enabled.',
loadBalancingInfo: 'By default, load balancing uses the Round-robin strategy. If rate limiting is triggered, a 1-minute cooldown period will be applied.',
upgradeForLoadBalancing: 'Upgrade your plan to enable Load Balancing.',
toBeConfigured: 'To be configured',
configureTip: 'Set up api-key or add model to use',
installProvider: 'Install model providers',
discoverMore: 'Discover more in ',
emptyProviderTitle: 'Model provider not set up',
emptyProviderTip: 'Please install a model provider first.',
},
dataSource: {
add: 'Add a data source',
connect: 'Connect',
configure: 'Configure',
notion: {
title: 'Notion',
description: 'Using Notion as a data source for the Knowledge.',
connectedWorkspace: 'Connected workspace',
addWorkspace: 'Add workspace',
connected: 'Connected',
disconnected: 'Disconnected',
changeAuthorizedPages: 'Change authorized pages',
pagesAuthorized: 'Pages authorized',
sync: 'Sync',
remove: 'Remove',
selector: {
pageSelected: 'Pages Selected',
searchPages: 'Search pages...',
noSearchResult: 'No search results',
addPages: 'Add pages',
preview: 'PREVIEW',
},
},
website: {
title: 'Website',
description: 'Import content from websites using web crawler.',
with: 'With',
configuredCrawlers: 'Configured crawlers',
active: 'Active',
inactive: 'Inactive',
},
},
plugin: {
serpapi: {
apiKey: 'API Key',
apiKeyPlaceholder: 'Enter your API key',
keyFrom: 'Get your SerpAPI key from SerpAPI Account Page',
},
},
apiBasedExtension: {
title: 'API extensions provide centralized API management, simplifying configuration for easy use across Dify\'s applications.',
link: 'Learn how to develop your own API Extension.',
linkUrl: 'https://docs.dify.ai/features/extension/api_based_extension',
add: 'Add API Extension',
selector: {
title: 'API Extension',
placeholder: 'Please select API extension',
manage: 'Manage API Extension',
},
modal: {
title: 'Add API Extension',
editTitle: 'Edit API Extension',
name: {
title: 'Name',
placeholder: 'Please enter the name',
},
apiEndpoint: {
title: 'API Endpoint',
placeholder: 'Please enter the API endpoint',
},
apiKey: {
title: 'API-key',
placeholder: 'Please enter the API-key',
lengthError: 'API-key length cannot be less than 5 characters',
},
},
type: 'Type',
},
about: {
changeLog: 'Changelog',
updateNow: 'Update now',
nowAvailable: 'Dify {{version}} is now available.',
latestAvailable: 'Dify {{version}} is the latest version available.',
},
appMenus: {
overview: 'Monitoring',
promptEng: 'Orchestrate',
apiAccess: 'API Access',
logAndAnn: 'Logs & Annotations',
logs: 'Logs',
},
environment: {
testing: 'TESTING',
development: 'DEVELOPMENT',
},
appModes: {
completionApp: 'Text Generator',
chatApp: 'Chat App',
},
datasetMenus: {
documents: 'Documents',
hitTesting: 'Retrieval Testing',
settings: 'Settings',
emptyTip: 'This Knowledge has not been integrated within any application. Please refer to the document for guidance.',
viewDoc: 'View documentation',
relatedApp: 'linked apps',
noRelatedApp: 'No linked apps',
},
voiceInput: {
speaking: 'Speak now...',
converting: 'Converting to text...',
notAllow: 'microphone not authorized',
},
modelName: {
'gpt-3.5-turbo': 'GPT-3.5-Turbo',
'gpt-3.5-turbo-16k': 'GPT-3.5-Turbo-16K',
'gpt-4': 'GPT-4',
'gpt-4-32k': 'GPT-4-32K',
'text-davinci-003': 'Text-Davinci-003',
'text-embedding-ada-002': 'Text-Embedding-Ada-002',
'whisper-1': 'Whisper-1',
'claude-instant-1': 'Claude-Instant',
'claude-2': 'Claude-2',
},
chat: {
renameConversation: 'Rename Conversation',
conversationName: 'Conversation name',
conversationNamePlaceholder: 'Please input conversation name',
conversationNameCanNotEmpty: 'Conversation name required',
citation: {
title: 'CITATIONS',
linkToDataset: 'Link to Knowledge',
characters: 'Characters:',
hitCount: 'Retrieval count:',
vectorHash: 'Vector hash:',
hitScore: 'Retrieval Score:',
},
inputPlaceholder: 'Talk to Bot',
thinking: 'Thinking...',
thought: 'Thought',
},
promptEditor: {
placeholder: 'Write your prompt word here, enter \'{\' to insert a variable, enter \'/\' to insert a prompt content block',
context: {
item: {
title: 'Context',
desc: 'Insert context template',
},
modal: {
title: '{{num}} Knowledge in Context',
add: 'Add Context ',
footer: 'You can manage contexts in the Context section below.',
},
},
history: {
item: {
title: 'Conversation History',
desc: 'Insert historical message template',
},
modal: {
title: 'EXAMPLE',
user: 'Hello',
assistant: 'Hello! How can I assist you today?',
edit: 'Edit Conversation Role Names',
},
},
variable: {
item: {
title: 'Variables & External Tools',
desc: 'Insert Variables & External Tools',
},
outputToolDisabledItem: {
title: 'Variables',
desc: 'Insert Variables',
},
modal: {
add: 'New variable',
addTool: 'New tool',
},
},
query: {
item: {
title: 'Query',
desc: 'Insert user query template',
},
},
existed: 'Already exists in the prompt',
},
imageUploader: {
uploadFromComputer: 'Upload from Computer',
uploadFromComputerReadError: 'Image reading failed, please try again.',
uploadFromComputerUploadError: 'Image upload failed, please upload again.',
uploadFromComputerLimit: 'Upload images cannot exceed {{size}} MB',
pasteImageLink: 'Paste image link',
pasteImageLinkInputPlaceholder: 'Paste image link here',
pasteImageLinkInvalid: 'Invalid image link',
imageUpload: 'Image Upload',
},
fileUploader: {
uploadFromComputer: 'Local upload',
pasteFileLink: 'Paste file link',
pasteFileLinkInputPlaceholder: 'Enter URL...',
uploadFromComputerReadError: 'File reading failed, please try again.',
uploadFromComputerUploadError: 'File upload failed, please upload again.',
uploadFromComputerLimit: 'Upload {{type}} cannot exceed {{size}}',
pasteFileLinkInvalid: 'Invalid file link',
fileExtensionNotSupport: 'File extension not supported',
},
tag: {
placeholder: 'All Tags',
addNew: 'Add new tag',
noTag: 'No tags',
noTagYet: 'No tags yet',
addTag: 'Add tags',
editTag: 'Edit tags',
manageTags: 'Manage Tags',
selectorPlaceholder: 'Type to search or create',
create: 'Create',
delete: 'Delete tag',
deleteTip: 'The tag is being used, delete it?',
created: 'Tag created successfully',
failed: 'Tag creation failed',
},
license: {
expiring: 'Expiring in one day',
expiring_plural: 'Expiring in {{count}} days',
},
pagination: {
perPage: 'Items per page',
},
}
export default translation

View File

@@ -0,0 +1,32 @@
const translation = {
custom: 'Customization',
upgradeTip: {
title: 'Upgrade your plan',
des: 'Upgrade your plan to customize your brand',
prefix: 'Upgrade your plan to',
suffix: 'customize your brand.',
},
webapp: {
title: 'Customize WebApp brand',
removeBrand: 'Remove Powered by Dify',
changeLogo: 'Change Powered by Brand Image',
changeLogoTip: 'SVG or PNG format with a minimum size of 40x40px',
},
app: {
title: 'Customize app header brand',
changeLogoTip: 'SVG or PNG format with a minimum size of 80x80px',
},
upload: 'Upload',
uploading: 'Uploading',
uploadedFail: 'Image upload failed, please re-upload.',
change: 'Change',
apply: 'Apply',
restore: 'Restore Defaults',
customize: {
contactUs: ' contact us ',
prefix: 'To customize the brand logo within the app, please',
suffix: 'to upgrade to the Enterprise edition.',
},
}
export default translation

View File

@@ -0,0 +1,203 @@
const translation = {
steps: {
header: {
fallbackRoute: 'Knowledge',
},
one: 'Data Source',
two: 'Document Processing',
three: 'Execute & Finish',
},
error: {
unavailable: 'This Knowledge is not available',
},
firecrawl: {
configFirecrawl: 'Configure 🔥Firecrawl',
apiKeyPlaceholder: 'API key from firecrawl.dev',
getApiKeyLinkText: 'Get your API key from firecrawl.dev',
},
jinaReader: {
configJinaReader: 'Configure Jina Reader',
apiKeyPlaceholder: 'API key from jina.ai',
getApiKeyLinkText: 'Get your free API key at jina.ai',
},
stepOne: {
filePreview: 'File Preview',
pagePreview: 'Page Preview',
dataSourceType: {
file: 'Import from file',
notion: 'Sync from Notion',
web: 'Sync from website',
},
uploader: {
title: 'Upload file',
button: 'Drag and drop file, or',
browse: 'Browse',
tip: 'Supports {{supportTypes}}. Max {{size}}MB each.',
validation: {
typeError: 'File type not supported',
size: 'File too large. Maximum is {{size}}MB',
count: 'Multiple files not supported',
filesNumber: 'You have reached the batch upload limit of {{filesNumber}}.',
},
cancel: 'Cancel',
change: 'Change',
failed: 'Upload failed',
},
notionSyncTitle: 'Notion is not connected',
notionSyncTip: 'To sync with Notion, connection to Notion must be established first.',
connect: 'Go to connect',
cancel: 'Cancel',
button: 'Next',
emptyDatasetCreation: 'I want to create an empty Knowledge',
modal: {
title: 'Create an empty Knowledge',
tip: 'An empty Knowledge will contain no documents, and you can upload documents any time.',
input: 'Knowledge name',
placeholder: 'Please input',
nameNotEmpty: 'Name cannot be empty',
nameLengthInvalid: 'Name must be between 1 to 40 characters',
cancelButton: 'Cancel',
confirmButton: 'Create',
failed: 'Creation failed',
},
website: {
chooseProvider: 'Select a provider',
fireCrawlNotConfigured: 'Firecrawl is not configured',
fireCrawlNotConfiguredDescription: 'Configure Firecrawl with API key to use it.',
jinaReaderNotConfigured: 'Jina Reader is not configured',
jinaReaderNotConfiguredDescription: 'Set up Jina Reader by entering your free API key for access.',
configure: 'Configure',
run: 'Run',
firecrawlTitle: 'Extract web content with 🔥Firecrawl',
firecrawlDoc: 'Firecrawl docs',
firecrawlDocLink: 'https://docs.dify.ai/guides/knowledge-base/sync-from-website',
jinaReaderTitle: 'Convert the entire site to Markdown',
jinaReaderDoc: 'Learn more about Jina Reader',
jinaReaderDocLink: 'https://jina.ai/reader',
useSitemap: 'Use sitemap',
useSitemapTooltip: 'Follow the sitemap to crawl the site. If not, Jina Reader will crawl iteratively based on page relevance, yielding fewer but higher-quality pages.',
options: 'Options',
crawlSubPage: 'Crawl sub-pages',
limit: 'Limit',
maxDepth: 'Max depth',
excludePaths: 'Exclude paths',
includeOnlyPaths: 'Include only paths',
extractOnlyMainContent: 'Extract only main content (no headers, navs, footers, etc.)',
exceptionErrorTitle: 'An exception occurred while running crawling job:',
unknownError: 'Unknown error',
totalPageScraped: 'Total pages scraped:',
selectAll: 'Select All',
resetAll: 'Reset All',
scrapTimeInfo: 'Scraped {{total}} pages in total within {{time}}s',
preview: 'Preview',
maxDepthTooltip: 'Maximum depth to crawl relative to the entered URL. Depth 0 just scrapes the page of the entered url, depth 1 scrapes the url and everything after enteredURL + one /, and so on.',
},
},
stepTwo: {
segmentation: 'Chunk Settings',
auto: 'Automatic',
autoDescription: 'Automatically set chunk and preprocessing rules. Unfamiliar users are recommended to select this.',
custom: 'Custom',
customDescription: 'Customize chunks rules, chunks length, and preprocessing rules, etc.',
general: 'General',
generalTip: 'General text chunking mode, the chunks retrieved and recalled are the same.',
parentChild: 'Parent-child',
parentChildTip: 'When using the parent-child mode, the child-chunk is used for retrieval and the parent-chunk is used for recall as context.',
parentChunkForContext: 'Parent-chunk for Context',
childChunkForRetrieval: 'Child-chunk for Retrieval',
paragraph: 'Paragraph',
paragraphTip: 'This mode splits the text in to paragraphs based on delimiters and the maximum chunk length, using the split text as the parent chunk for retrieval.',
fullDoc: 'Full Doc',
fullDocTip: 'The entire document is used as the parent chunk and retrieved directly. Please note that for performance reasons, text exceeding 10000 tokens will be automatically truncated.',
separator: 'Delimiter',
separatorTip: 'A delimiter is the character used to separate text. \\n\\n and \\n are commonly used delimiters for separating paragraphs and lines. Combined with commas (\\n\\n,\\n), paragraphs will be segmented by lines when exceeding the maximum chunk length. You can also use special delimiters defined by yourself (e.g. ***).',
separatorPlaceholder: '\\n\\n for paragraphs; \\n for lines',
maxLength: 'Maximum chunk length',
maxLengthCheck: 'Maximum chunk length should be less than {{limit}}',
overlap: 'Chunk overlap',
overlapTip: 'Setting the chunk overlap can maintain the semantic relevance between them, enhancing the retrieve effect. It is recommended to set 10%-25% of the maximum chunk size.',
overlapCheck: 'chunk overlap should not bigger than maximum chunk length',
rules: 'Text Pre-processing Rules',
removeExtraSpaces: 'Replace consecutive spaces, newlines and tabs',
removeUrlEmails: 'Delete all URLs and email addresses',
removeStopwords: 'Remove stopwords such as "a", "an", "the"',
preview: 'Preview',
previewChunk: 'Preview Chunk',
reset: 'Reset',
indexMode: 'Index Method',
qualified: 'High Quality',
highQualityTip: 'Once finishing embedding in High Quality mode, reverting to Economical mode is not available.',
recommend: 'Recommend',
qualifiedTip: 'Calling the embedding model to process documents for more precise retrieval helps LLM generate high-quality answers.',
warning: 'Please set up the model provider API key first.',
click: 'Go to settings',
economical: 'Economical',
economicalTip: 'Using 10 keywords per chunk for retrieval, no tokens are consumed at the expense of reduced retrieval accuracy.',
QATitle: 'Segmenting in Question & Answer format',
QATip: 'Enable this option will consume more tokens',
QALanguage: 'Segment using',
useQALanguage: 'Chunk using Q&A format in',
estimateCost: 'Estimation',
estimateSegment: 'Estimated chunks',
segmentCount: 'chunks',
calculating: 'Calculating...',
fileSource: 'Preprocess documents',
notionSource: 'Preprocess pages',
websiteSource: 'Preprocess website',
other: 'and other ',
fileUnit: ' files',
notionUnit: ' pages',
webpageUnit: ' pages',
previousStep: 'Previous step',
nextStep: 'Save & Process',
save: 'Save & Process',
cancel: 'Cancel',
sideTipTitle: 'Why chunk and preprocess?',
sideTipP1: 'When processing text data, chunk and cleaning are two important preprocessing steps.',
sideTipP2: 'Segmentation splits long text into paragraphs so models can understand better. This improves the quality and relevance of model results.',
sideTipP3: 'Cleaning removes unnecessary characters and formats, making Knowledge cleaner and easier to parse.',
sideTipP4: 'Proper chunk and cleaning improve model performance, providing more accurate and valuable results.',
previewTitle: 'Preview',
previewTitleButton: 'Preview',
previewButton: 'Switching to Q&A format',
previewSwitchTipStart: 'The current chunk preview is in text format, switching to a question-and-answer format preview will',
previewSwitchTipEnd: ' consume additional tokens',
characters: 'characters',
indexSettingTip: 'To change the index method & embedding model, please go to the ',
retrievalSettingTip: 'To change the retrieval setting, please go to the ',
datasetSettingLink: 'Knowledge settings.',
previewChunkTip: 'Click the \'Preview Chunk\' button on the left to load the preview',
previewChunkCount: '{{count}} Estimated chunks',
switch: 'Switch',
qaSwitchHighQualityTipTitle: 'Q&A Format Requires High-quality Indexing Method',
qaSwitchHighQualityTipContent: 'Currently, only high-quality index method supports Q&A format chunking. Would you like to switch to high-quality mode?',
notAvailableForParentChild: 'Not available for Parent-child Index',
notAvailableForQA: 'Not available for Q&A Index',
parentChildDelimiterTip: 'A delimiter is the character used to separate text. \\n\\n is recommended for splitting the original document into large parent chunks. You can also use special delimiters defined by yourself.',
parentChildChunkDelimiterTip: 'A delimiter is the character used to separate text. \\n is recommended for splitting parent chunks into small child chunks. You can also use special delimiters defined by yourself.',
},
stepThree: {
creationTitle: '🎉 Knowledge created',
creationContent: 'We automatically named the Knowledge, you can modify it at any time.',
label: 'Knowledge name',
additionTitle: '🎉 Document uploaded',
additionP1: 'The document has been uploaded to the Knowledge',
additionP2: ', you can find it in the document list of the Knowledge.',
stop: 'Stop processing',
resume: 'Resume processing',
navTo: 'Go to document',
sideTipTitle: 'What\'s next',
sideTipContent: 'After the document finishes indexing, the Knowledge can be integrated into the application as context, you can find the context setting in the prompt orchestration page. You can also create it as an independent ChatGPT indexing plugin for release.',
modelTitle: 'Are you sure to stop embedding?',
modelContent: 'If you need to resume processing later, you will continue from where you left off.',
modelButtonConfirm: 'Confirm',
modelButtonCancel: 'Cancel',
},
otherDataSource: {
title: 'Connect to other data sources?',
description: 'Currently, Dify\'s knowledge base only has limited data sources. Contributing a data source to the Dify knowledge base is a fantastic way to help enhance the platform\'s flexibility and power for all users. Our contribution guide makes it easy to get started. Please click on the link below to learn more.',
learnMore: 'Learn more',
},
}
export default translation

View File

@@ -0,0 +1,394 @@
const translation = {
list: {
title: 'Documents',
desc: 'All files of the Knowledge are shown here, and the entire Knowledge can be linked to Dify citations or indexed via the Chat plugin.',
learnMore: 'Learn more',
addFile: 'Add file',
addPages: 'Add Pages',
addUrl: 'Add URL',
table: {
header: {
fileName: 'NAME',
chunkingMode: 'CHUNKING MODE',
words: 'WORDS',
hitCount: 'RETRIEVAL COUNT',
uploadTime: 'UPLOAD TIME',
status: 'STATUS',
action: 'ACTION',
},
rename: 'Rename',
name: 'Name',
},
action: {
uploadFile: 'Upload new file',
settings: 'Chunking Settings',
addButton: 'Add chunk',
add: 'Add a chunk',
batchAdd: 'Batch add',
archive: 'Archive',
unarchive: 'Unarchive',
delete: 'Delete',
enableWarning: 'Archived file cannot be enabled',
sync: 'Sync',
},
index: {
enable: 'Enable',
disable: 'Disable',
all: 'All',
enableTip: 'The file can be indexed',
disableTip: 'The file cannot be indexed',
},
status: {
queuing: 'Queuing',
indexing: 'Indexing',
paused: 'Paused',
error: 'Error',
available: 'Available',
enabled: 'Enabled',
disabled: 'Disabled',
archived: 'Archived',
},
empty: {
title: 'There is no documentation yet',
upload: {
tip: 'You can upload files, sync from the website, or from webb apps like Notion, GitHub, etc.',
},
sync: {
tip: 'Dify will periodically download files from your Notion and complete processing.',
},
},
delete: {
title: 'Are you sure Delete?',
content: 'If you need to resume processing later, you will continue from where you left off',
},
batchModal: {
title: 'Batch add chunks',
csvUploadTitle: 'Drag and drop your CSV file here, or ',
browse: 'browse',
tip: 'The CSV file must conform to the following structure:',
question: 'question',
answer: 'answer',
contentTitle: 'chunk content',
content: 'content',
template: 'Download the template here',
cancel: 'Cancel',
run: 'Run Batch',
runError: 'Run batch failed',
processing: 'In batch processing',
completed: 'Import completed',
error: 'Import Error',
ok: 'OK',
},
},
metadata: {
title: 'Metadata',
desc: 'Labeling metadata for documents allows AI to access them in a timely manner and exposes the source of references for users.',
dateTimeFormat: 'MMMM D, YYYY hh:mm A',
docTypeSelectTitle: 'Please select a document type',
docTypeChangeTitle: 'Change document type',
docTypeSelectWarning:
'If the document type is changed, the now filled metadata will no longer be preserved',
firstMetaAction: 'Let\'s go',
placeholder: {
add: 'Add ',
select: 'Select ',
},
source: {
upload_file: 'Upload File',
notion: 'Sync form Notion',
github: 'Sync form Github',
},
type: {
book: 'Book',
webPage: 'Web Page',
paper: 'Paper',
socialMediaPost: 'Social Media Post',
personalDocument: 'Personal Document',
businessDocument: 'Business Document',
IMChat: 'IM Chat',
wikipediaEntry: 'Wikipedia Entry',
notion: 'Sync form Notion',
github: 'Sync form Github',
technicalParameters: 'Technical Parameters',
},
field: {
processRule: {
processDoc: 'Process Document',
segmentRule: 'Chunk Rule',
segmentLength: 'Chunks Length',
processClean: 'Text Process Clean',
},
book: {
title: 'Title',
language: 'Language',
author: 'Author',
publisher: 'Publisher',
publicationDate: 'Publication Date',
ISBN: 'ISBN',
category: 'Category',
},
webPage: {
title: 'Title',
url: 'URL',
language: 'Language',
authorPublisher: 'Author/Publisher',
publishDate: 'Publish Date',
topicKeywords: 'Topic/Keywords',
description: 'Description',
},
paper: {
title: 'Title',
language: 'Language',
author: 'Author',
publishDate: 'Publish Date',
journalConferenceName: 'Journal/Conference Name',
volumeIssuePage: 'Volume/Issue/Page',
DOI: 'DOI',
topicsKeywords: 'Topics/Keywords',
abstract: 'Abstract',
},
socialMediaPost: {
platform: 'Platform',
authorUsername: 'Author/Username',
publishDate: 'Publish Date',
postURL: 'Post URL',
topicsTags: 'Topics/Tags',
},
personalDocument: {
title: 'Title',
author: 'Author',
creationDate: 'Creation Date',
lastModifiedDate: 'Last Modified Date',
documentType: 'Document Type',
tagsCategory: 'Tags/Category',
},
businessDocument: {
title: 'Title',
author: 'Author',
creationDate: 'Creation Date',
lastModifiedDate: 'Last Modified Date',
documentType: 'Document Type',
departmentTeam: 'Department/Team',
},
IMChat: {
chatPlatform: 'Chat Platform',
chatPartiesGroupName: 'Chat Parties/Group Name',
participants: 'Participants',
startDate: 'Start Date',
endDate: 'End Date',
topicsKeywords: 'Topics/Keywords',
fileType: 'File Type',
},
wikipediaEntry: {
title: 'Title',
language: 'Language',
webpageURL: 'Webpage URL',
editorContributor: 'Editor/Contributor',
lastEditDate: 'Last Edit Date',
summaryIntroduction: 'Summary/Introduction',
},
notion: {
title: 'Title',
language: 'Language',
author: 'Author',
createdTime: 'Created Time',
lastModifiedTime: 'Last Modified Time',
url: 'URL',
tag: 'Tag',
description: 'Description',
},
github: {
repoName: 'Repo Name',
repoDesc: 'Repo Description',
repoOwner: 'Repo Owner',
fileName: 'File Name',
filePath: 'File Path',
programmingLang: 'Programming Language',
url: 'URL',
license: 'License',
lastCommitTime: 'Last Commit Time',
lastCommitAuthor: 'Last Commit Author',
},
originInfo: {
originalFilename: 'Original filename',
originalFileSize: 'Original file size',
uploadDate: 'Upload date',
lastUpdateDate: 'Last update date',
source: 'Source',
},
technicalParameters: {
segmentSpecification: 'Chunks specification',
segmentLength: 'Chunks length',
avgParagraphLength: 'Avg. paragraph length',
paragraphs: 'Paragraphs',
hitCount: 'Retrieval count',
embeddingTime: 'Embedding time',
embeddedSpend: 'Embedded spend',
},
},
languageMap: {
zh: 'Chinese',
en: 'English',
es: 'Spanish',
fr: 'French',
de: 'German',
ja: 'Japanese',
ko: 'Korean',
ru: 'Russian',
ar: 'Arabic',
pt: 'Portuguese',
it: 'Italian',
nl: 'Dutch',
pl: 'Polish',
sv: 'Swedish',
tr: 'Turkish',
he: 'Hebrew',
hi: 'Hindi',
da: 'Danish',
fi: 'Finnish',
no: 'Norwegian',
hu: 'Hungarian',
el: 'Greek',
cs: 'Czech',
th: 'Thai',
id: 'Indonesian',
},
categoryMap: {
book: {
fiction: 'Fiction',
biography: 'Biography',
history: 'History',
science: 'Science',
technology: 'Technology',
education: 'Education',
philosophy: 'Philosophy',
religion: 'Religion',
socialSciences: 'SocialSciences',
art: 'Art',
travel: 'Travel',
health: 'Health',
selfHelp: 'SelfHelp',
businessEconomics: 'BusinessEconomics',
cooking: 'Cooking',
childrenYoungAdults: 'ChildrenYoungAdults',
comicsGraphicNovels: 'ComicsGraphicNovels',
poetry: 'Poetry',
drama: 'Drama',
other: 'Other',
},
personalDoc: {
notes: 'Notes',
blogDraft: 'Blog Draft',
diary: 'Diary',
researchReport: 'Research Report',
bookExcerpt: 'Book Excerpt',
schedule: 'Schedule',
list: 'List',
projectOverview: 'Project Overview',
photoCollection: 'Photo Collection',
creativeWriting: 'Creative Writing',
codeSnippet: 'Code Snippet',
designDraft: 'Design Draft',
personalResume: 'Personal Resume',
other: 'Other',
},
businessDoc: {
meetingMinutes: 'Meeting Minutes',
researchReport: 'Research Report',
proposal: 'Proposal',
employeeHandbook: 'Employee Handbook',
trainingMaterials: 'Training Materials',
requirementsDocument: 'Requirements Document',
designDocument: 'Design Document',
productSpecification: 'Product Specification',
financialReport: 'Financial Report',
marketAnalysis: 'Market Analysis',
projectPlan: 'Project Plan',
teamStructure: 'Team Structure',
policiesProcedures: 'Policies & Procedures',
contractsAgreements: 'Contracts & Agreements',
emailCorrespondence: 'Email Correspondence',
other: 'Other',
},
},
},
embedding: {
processing: 'Embedding processing...',
paused: 'Embedding paused',
completed: 'Embedding completed',
error: 'Embedding error',
docName: 'Preprocessing document',
mode: 'Chunking Setting',
segmentLength: 'Maximum Chunk Length',
textCleaning: 'Text Preprocessing Rules',
segments: 'Paragraphs',
highQuality: 'High-quality mode',
economy: 'Economy mode',
estimate: 'Estimated consumption',
stop: 'Stop processing',
pause: 'Pause',
resume: 'Resume',
automatic: 'Automatic',
custom: 'Custom',
hierarchical: 'Parent-child',
previewTip: 'Paragraph preview will be available after embedding is complete',
parentMaxTokens: 'Parent',
childMaxTokens: 'Child',
},
segment: {
paragraphs: 'Paragraphs',
chunks_one: 'CHUNK',
chunks_other: 'CHUNKS',
parentChunks_one: 'PARENT CHUNK',
parentChunks_other: 'PARENT CHUNKS',
childChunks_one: 'CHILD CHUNK',
childChunks_other: 'CHILD CHUNKS',
searchResults_zero: 'RESULT',
searchResults_one: 'RESULT',
searchResults_other: 'RESULTS',
empty: 'No Chunk found',
clearFilter: 'Clear filter',
chunk: 'Chunk',
parentChunk: 'Parent-Chunk',
newChunk: 'New Chunk',
childChunk: 'Child-Chunk',
newChildChunk: 'New Child Chunk',
keywords: 'KEYWORDS',
addKeyWord: 'Add keyword',
keywordError: 'The maximum length of keyword is 20',
characters_one: 'character',
characters_other: 'characters',
hitCount: 'Retrieval count',
vectorHash: 'Vector hash: ',
questionPlaceholder: 'Add question here',
questionEmpty: 'Question can not be empty',
answerPlaceholder: 'Add answer here',
answerEmpty: 'Answer can not be empty',
contentPlaceholder: 'Add content here',
contentEmpty: 'Content can not be empty',
newTextSegment: 'New Text Segment',
newQaSegment: 'New Q&A Segment',
addChunk: 'Add Chunk',
addChildChunk: 'Add Child Chunk',
addAnother: 'Add another',
delete: 'Delete this chunk ?',
chunkAdded: '1 chunk added',
childChunkAdded: '1 child chunk added',
editChunk: 'Edit Chunk',
editParentChunk: 'Edit Parent Chunk',
editChildChunk: 'Edit Child Chunk',
chunkDetail: 'Chunk Detail',
regenerationConfirmTitle: 'Do you want to regenerate child chunks?',
regenerationConfirmMessage: 'Regenerating child chunks will overwrite the current child chunks, including edited chunks and newly added chunks. The regeneration cannot be undone.',
regeneratingTitle: 'Regenerating child chunks',
regeneratingMessage: 'This may take a moment, please wait...',
regenerationSuccessTitle: 'Regeneration completed',
regenerationSuccessMessage: 'You can close this window.',
edited: 'EDITED',
editedAt: 'Edited at',
expandChunks: 'Expand chunks',
collapseChunks: 'Collapse chunks',
},
}
export default translation

View File

@@ -0,0 +1,34 @@
const translation = {
title: 'Retrieval Test',
settingTitle: 'Retrieval Setting',
desc: 'Test the hitting effect of the Knowledge based on the given query text.',
dateTimeFormat: 'MM/DD/YYYY hh:mm A',
records: 'Records',
table: {
header: {
source: 'Source',
text: 'Text',
time: 'Time',
},
},
input: {
title: 'Source text',
placeholder: 'Please enter a text, a short declarative sentence is recommended.',
countWarning: 'Up to 200 characters.',
indexWarning: 'High quality Knowledge only.',
testing: 'Test',
},
hit: {
title: '{{num}} Retrieved Chunks',
emptyTip: 'Retrieval Testing results will show here',
},
noRecentTip: 'No recent query results here',
viewChart: 'View VECTOR CHART',
viewDetail: 'View Detail',
chunkDetail: 'Chunk Detail',
hitChunks: 'Hit {{num}} child chunks',
open: 'Open',
keyword: 'Keywords',
}
export default translation

View File

@@ -0,0 +1,41 @@
const translation = {
title: 'Knowledge settings',
desc: 'Here you can modify the properties and retrieval settings of this Knowledge.',
form: {
name: 'Knowledge Name',
namePlaceholder: 'Please enter the Knowledge name',
nameError: 'Name cannot be empty',
desc: 'Knowledge Description',
descInfo: 'Please write a clear textual description to outline the content of the Knowledge. This description will be used as a basis for matching when selecting from multiple Knowledge for inference.',
descPlaceholder: 'Describe what is in this data set. A detailed description allows AI to access the content of the data set in a timely manner. If empty, LangGenius will use the default hit strategy.',
helpText: 'Learn how to write a good dataset description.',
descWrite: 'Learn how to write a good Knowledge description.',
permissions: 'Permissions',
permissionsOnlyMe: 'Only me',
permissionsAllMember: 'All team members',
permissionsInvitedMembers: 'Partial team members',
me: '(You)',
indexMethod: 'Index Method',
indexMethodHighQuality: 'High Quality',
indexMethodHighQualityTip: 'Calling the embedding model to process documents for more precise retrieval helps LLM generate high-quality answers.',
upgradeHighQualityTip: 'Once upgrading to High Quality mode, reverting to Economical mode is not available',
indexMethodEconomy: 'Economical',
indexMethodEconomyTip: 'Using 10 keywords per chunk for retrieval, no tokens are consumed at the expense of reduced retrieval accuracy.',
embeddingModel: 'Embedding Model',
embeddingModelTip: 'Change the embedded model, please go to ',
embeddingModelTipLink: 'Settings',
retrievalSetting: {
title: 'Retrieval Setting',
learnMore: 'Learn more',
description: ' about retrieval method.',
longDescription: ' about retrieval method, you can change this at any time in the Knowledge settings.',
},
externalKnowledgeAPI: 'External Knowledge API',
externalKnowledgeID: 'External Knowledge ID',
retrievalSettings: 'Retrieval Settings',
save: 'Save',
indexMethodChangeToEconomyDisabledTip: 'Not available for downgrading from HQ to ECO',
},
}
export default translation

View File

@@ -0,0 +1,173 @@
const translation = {
knowledge: 'Knowledge',
chunkingMode: {
general: 'General',
parentChild: 'Parent-child',
},
parentMode: {
paragraph: 'Paragraph',
fullDoc: 'Full-doc',
},
externalTag: 'External',
externalAPI: 'External API',
externalAPIPanelTitle: 'External Knowledge API',
externalKnowledgeId: 'External Knowledge ID',
externalKnowledgeName: 'External Knowledge Name',
externalKnowledgeDescription: 'Knowledge Description',
externalKnowledgeIdPlaceholder: 'Please enter the Knowledge ID',
externalKnowledgeNamePlaceholder: 'Please enter the name of the knowledge base',
externalKnowledgeDescriptionPlaceholder: 'Describe what\'s in this Knowledge Base (optional)',
learnHowToWriteGoodKnowledgeDescription: 'Learn how to write a good knowledge description',
externalAPIPanelDescription: 'The external knowledge API is used to connect to a knowledge base outside of Dify and retrieve knowledge from that knowledge base.',
externalAPIPanelDocumentation: 'Learn how to create an External Knowledge API',
localDocs: 'Local Docs',
documentCount: ' docs',
wordCount: ' k words',
appCount: ' linked apps',
createDataset: 'Create Knowledge',
createNewExternalAPI: 'Create a new External Knowledge API',
noExternalKnowledge: 'There is no External Knowledge API yet, click here to create',
createExternalAPI: 'Add an External Knowledge API',
editExternalAPIFormTitle: 'Edit the External Knowledge API',
editExternalAPITooltipTitle: 'LINKED KNOWLEDGE',
editExternalAPIConfirmWarningContent: {
front: 'This External Knowledge API is linked to',
end: 'external knowledge, and this modification will be applied to all of them. Are you sure you want to save this change?',
},
editExternalAPIFormWarning: {
front: 'This External API is linked to',
end: 'external knowledge',
},
deleteExternalAPIConfirmWarningContent: {
title: {
front: 'Delete',
end: '?',
},
content: {
front: 'This External Knowledge API is linked to',
end: 'external knowledge. Deleting this API will invalidate all of them. Are you sure you want to delete this API?',
},
noConnectionContent: 'Are you sure to delete this API?',
},
selectExternalKnowledgeAPI: {
placeholder: 'Choose an External Knowledge API',
},
connectDataset: 'Connect to an External Knowledge Base',
connectDatasetIntro: {
title: 'How to Connect to an External Knowledge Base',
content: {
front: 'To connect to an external knowledge base, you need to create an external API first. Please read carefully and refer to',
link: 'Learn how to create an external API',
end: '. Then find the corresponding knowledge ID and fill it in the form on the left. If all the information is correct, it will automatically jump to the retrieval test in the knowledge base after clicking the connect button.',
},
learnMore: 'Learn More',
},
connectHelper: {
helper1: 'Connect to external knowledge bases via API and knowledge base ID. Currently, ',
helper2: 'only the retrieval functionality is supported',
helper3: '. We strongly recommend that you ',
helper4: 'read the help documentation',
helper5: ' carefully before using this feature.',
},
createDatasetIntro: 'Import your own text data or write data in real-time via Webhook for LLM context enhancement.',
deleteDatasetConfirmTitle: 'Delete this Knowledge?',
deleteDatasetConfirmContent:
'Deleting the Knowledge is irreversible. Users will no longer be able to access your Knowledge, and all prompt configurations and logs will be permanently deleted.',
datasetUsedByApp: 'The knowledge is being used by some apps. Apps will no longer be able to use this Knowledge, and all prompt configurations and logs will be permanently deleted.',
datasetDeleted: 'Knowledge deleted',
datasetDeleteFailed: 'Failed to delete Knowledge',
didYouKnow: 'Did you know?',
intro1: 'The Knowledge can be integrated into the Dify application ',
intro2: 'as a context',
intro3: ',',
intro4: 'or it ',
intro5: 'can be created',
intro6: ' as a standalone ChatGPT index plug-in to publish',
unavailable: 'Unavailable',
unavailableTip: 'Embedding model is not available, the default embedding model needs to be configured',
datasets: 'KNOWLEDGE',
datasetsApi: 'API ACCESS',
externalKnowledgeForm: {
connect: 'Connect',
cancel: 'Cancel',
},
externalAPIForm: {
name: 'Name',
endpoint: 'API Endpoint',
apiKey: 'API Key',
save: 'Save',
cancel: 'Cancel',
edit: 'Edit',
encrypted: {
front: 'Your API Token will be encrypted and stored using',
end: 'technology.',
},
},
retrieval: {
semantic_search: {
title: 'Vector Search',
description: 'Generate query embeddings and search for the text chunk most similar to its vector representation.',
},
full_text_search: {
title: 'Full-Text Search',
description: 'Index all terms in the document, allowing users to search any term and retrieve relevant text chunk containing those terms.',
},
hybrid_search: {
title: 'Hybrid Search',
description: 'Execute full-text search and vector searches simultaneously, re-rank to select the best match for the user\'s query. Users can choose to set weights or configure to a Rerank model.',
recommend: 'Recommend',
},
invertedIndex: {
title: 'Inverted Index',
description: 'Inverted Index is a structure used for efficient retrieval. Organized by terms, each term points to documents or web pages containing it.',
},
change: 'Change',
changeRetrievalMethod: 'Change retrieval method',
},
docsFailedNotice: 'documents indexed failed',
retry: 'Retry',
documentsDisabled: '{{num}} documents disabled - inactive for over 30 days',
enable: 'Enable',
indexingTechnique: {
high_quality: 'HQ',
economy: 'ECO',
},
indexingMethod: {
semantic_search: 'VECTOR',
full_text_search: 'FULL TEXT',
hybrid_search: 'HYBRID',
invertedIndex: 'INVERTED',
},
defaultRetrievalTip: 'Multi-path retrieval is used by default. Knowledge is retrieved from multiple knowledge bases and then re-ranked.',
mixtureHighQualityAndEconomicTip: 'The Rerank model is required for mixture of high quality and economical knowledge bases.',
inconsistentEmbeddingModelTip: 'The Rerank model is required if the Embedding models of the selected knowledge bases are inconsistent.',
mixtureInternalAndExternalTip: 'The Rerank model is required for mixture of internal and external knowledge.',
allExternalTip: 'When using external knowledge only, the user can choose whether to enable the Rerank model. If not enabled, retrieved chunks will be sorted based on scores. When the retrieval strategies of different knowledge bases are inconsistent, it will be inaccurate.',
retrievalSettings: 'Retrieval Setting',
rerankSettings: 'Rerank Setting',
weightedScore: {
title: 'Weighted Score',
description: 'By adjusting the weights assigned, this rerank strategy determines whether to prioritize semantic or keyword matching.',
semanticFirst: 'Semantic first',
keywordFirst: 'Keyword first',
customized: 'Customized',
semantic: 'Semantic',
keyword: 'Keyword',
},
nTo1RetrievalLegacy: 'N-to-1 retrieval will be officially deprecated from September. It is recommended to use the latest Multi-path retrieval to obtain better results. ',
nTo1RetrievalLegacyLink: 'Learn more',
nTo1RetrievalLegacyLinkText: ' N-to-1 retrieval will be officially deprecated in September.',
batchAction: {
selected: 'Selected',
enable: 'Enable',
disable: 'Disable',
archive: 'Archive',
delete: 'Delete',
cancel: 'Cancel',
},
preprocessDocument: '{{num}} Preprocess Documents',
allKnowledge: 'All Knowledge',
allKnowledgeDescription: 'Select to display all knowledge in this workspace. Only the Workspace Owner can manage all knowledge.',
}
export default translation

View File

@@ -0,0 +1,43 @@
const translation = {
title: 'Explore',
sidebar: {
discovery: 'Discovery',
chat: 'Chat',
workspace: 'Workspace',
action: {
pin: 'Pin',
unpin: 'Unpin',
rename: 'Rename',
delete: 'Delete',
},
delete: {
title: 'Delete app',
content: 'Are you sure you want to delete this app?',
},
},
apps: {
title: 'Explore Apps by Dify',
description: 'Use these template apps instantly or customize your own apps based on the templates.',
allCategories: 'Recommended',
},
appCard: {
addToWorkspace: 'Add to Workspace',
customize: 'Customize',
},
appCustomize: {
title: 'Create app from {{name}}',
subTitle: 'App icon & name',
nameRequired: 'App name is required',
},
category: {
Agent: 'Agent',
Assistant: 'Assistant',
Writing: 'Writing',
Translate: 'Translate',
Programming: 'Programming',
HR: 'HR',
Workflow: 'Workflow',
},
}
export default translation

View File

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

View File

@@ -0,0 +1,109 @@
const translation = {
pageTitle: 'Hey, let\'s get started!',
welcome: '👋 Welcome to Dify, please log in to continue.',
email: 'Email address',
emailPlaceholder: 'Your email',
password: 'Password',
passwordPlaceholder: 'Your password',
name: 'Username',
namePlaceholder: 'Your username',
forget: 'Forgot your password?',
signBtn: 'Sign in',
continueWithCode: 'Continue With Code',
sendVerificationCode: 'Send Verification Code',
usePassword: 'Use Password',
useVerificationCode: 'Use Verification Code',
or: 'OR',
installBtn: 'Set up',
setAdminAccount: 'Setting up an admin account',
setAdminAccountDesc: 'Maximum privileges for admin account, which can be used to create applications and manage LLM providers, etc.',
createAndSignIn: 'Create and sign in',
oneMoreStep: 'One more step',
createSample: 'Based on this information, well create sample application for you',
invitationCode: 'Invitation Code',
invitationCodePlaceholder: 'Your invitation code',
interfaceLanguage: 'Interface Language',
timezone: 'Time zone',
go: 'Go to Dify',
sendUsMail: 'Email us your introduction, and we\'ll handle the invitation request.',
acceptPP: 'I have read and accept the privacy policy',
reset: 'Please run following command to reset your password',
withGitHub: 'Continue with GitHub',
withGoogle: 'Continue with Google',
withSSO: 'Continue with SSO',
rightTitle: 'Unlock the full potential of LLM',
rightDesc: 'Effortlessly build visually captivating, operable, and improvable AI applications.',
tos: 'Terms of Service',
pp: 'Privacy Policy',
tosDesc: 'By signing up, you agree to our',
goToInit: 'If you have not initialized the account, please go to the initialization page',
dontHave: 'Don\'t have?',
invalidInvitationCode: 'Invalid invitation code',
accountAlreadyInited: 'Account already initialized',
forgotPassword: 'Forgot your password?',
resetLinkSent: 'Reset link sent',
sendResetLink: 'Send reset link',
backToSignIn: 'Return to sign in',
forgotPasswordDesc: 'Please enter your email address to reset your password. We will send you an email with instructions on how to reset your password.',
checkEmailForResetLink: 'Please check your email for a link to reset your password. If it doesn\'t appear within a few minutes, make sure to check your spam folder.',
passwordChanged: 'Sign in now',
changePassword: 'Set a password',
changePasswordTip: 'Please enter a new password for your account',
changePasswordBtn: 'Set a password',
invalidToken: 'Invalid or expired token',
confirmPassword: 'Confirm Password',
confirmPasswordPlaceholder: 'Confirm your new password',
passwordChangedTip: 'Your password has been successfully changed',
error: {
emailEmpty: 'Email address is required',
emailInValid: 'Please enter a valid email address',
nameEmpty: 'Name is required',
passwordEmpty: 'Password is required',
passwordLengthInValid: 'Password must be at least 8 characters',
passwordInvalid: 'Password must contain letters and numbers, and the length must be greater than 8',
registrationNotAllowed: 'Account not found. Please contact the system admin to register.',
},
license: {
tip: 'Before starting Dify Community Edition, read the GitHub',
link: 'Open-source License',
},
join: 'Join ',
joinTipStart: 'Invite you join ',
joinTipEnd: ' team on Dify',
invalid: 'The link has expired',
explore: 'Explore Dify',
activatedTipStart: 'You have joined the',
activatedTipEnd: 'team',
activated: 'Sign in now',
adminInitPassword: 'Admin initialization password',
validate: 'Validate',
checkCode: {
checkYourEmail: 'Check your email',
tips: 'We send a verification code to <strong>{{email}}</strong>',
validTime: 'Bear in mind that the code is valid for 5 minutes',
verificationCode: 'Verification code',
verificationCodePlaceholder: 'Enter 6-digit code',
verify: 'Verify',
didNotReceiveCode: 'Didn\'t receive the code? ',
resend: 'Resend',
useAnotherMethod: 'Use another method',
emptyCode: 'Code is required',
invalidCode: 'Invalid code',
},
resetPassword: 'Reset Password',
resetPasswordDesc: 'Type the email you used to sign up on Dify and we will send you a password reset email.',
backToLogin: 'Back to login',
setYourAccount: 'Set Your Account',
enterYourName: 'Please enter your username',
back: 'Back',
noLoginMethod: 'Authentication method not configured',
noLoginMethodTip: 'Please contact the system admin to add an authentication method.',
licenseExpired: 'License Expired',
licenseExpiredTip: 'The Dify Enterprise license for your workspace has expired. Please contact your administrator to continue using Dify.',
licenseLost: 'License Lost',
licenseLostTip: 'Failed to connect Dify license server. Please contact your administrator to continue using Dify.',
licenseInactive: 'License Inactive',
licenseInactiveTip: 'The Dify Enterprise license for your workspace is inactive. Please contact your administrator to continue using Dify.',
}
export default translation

View File

@@ -0,0 +1,25 @@
const translation = {
allTags: 'All Tags',
searchTags: 'Search Tags',
tags: {
agent: 'Agent',
search: 'Search',
image: 'Image',
videos: 'Videos',
weather: 'Weather',
finance: 'Finance',
design: 'Design',
travel: 'Travel',
social: 'Social',
news: 'News',
medical: 'Medical',
productivity: 'Productivity',
education: 'Education',
business: 'Business',
entertainment: 'Entertainment',
utilities: 'Utilities',
other: 'Other',
},
}
export default translation

View File

@@ -0,0 +1,211 @@
const translation = {
category: {
all: 'All',
models: 'Models',
tools: 'Tools',
agents: 'Agent Strategies',
extensions: 'Extensions',
bundles: 'Bundles',
},
categorySingle: {
model: 'Model',
tool: 'Tool',
agent: 'Agent Strategy',
extension: 'Extension',
bundle: 'Bundle',
},
search: 'Search',
allCategories: 'All Categories',
searchCategories: 'Search Categories',
searchPlugins: 'Search plugins',
from: 'From',
findMoreInMarketplace: 'Find more in Marketplace',
searchInMarketplace: 'Search in Marketplace',
fromMarketplace: 'From Marketplace',
endpointsEnabled: '{{num}} sets of endpoints enabled',
searchTools: 'Search tools...',
installPlugin: 'Install plugin',
installFrom: 'INSTALL FROM',
list: {
noInstalled: 'No plugins installed',
notFound: 'No plugins found',
source: {
marketplace: 'Install from Marketplace',
github: 'Install from GitHub',
local: 'Install from Local Package File',
},
},
source: {
marketplace: 'Marketplace',
github: 'GitHub',
local: 'Local Package File',
},
detailPanel: {
switchVersion: 'Switch Version',
categoryTip: {
marketplace: 'Installed from Marketplace',
github: 'Installed from Github',
local: 'Local Plugin',
debugging: 'Debugging Plugin',
},
operation: {
install: 'Install',
detail: 'Details',
update: 'Update',
info: 'Plugin Info',
checkUpdate: 'Check Update',
viewDetail: 'View Detail',
remove: 'Remove',
},
actionNum: '{{num}} {{action}} INCLUDED',
strategyNum: '{{num}} {{strategy}} INCLUDED',
endpoints: 'Endpoints',
endpointsTip: 'This plugin provides specific functionalities via endpoints, and you can configure multiple endpoint sets for current workspace.',
endpointsDocLink: 'View the document',
endpointsEmpty: 'Click the \'+\' button to add an endpoint',
endpointDisableTip: 'Disable Endpoint',
endpointDisableContent: 'Would you like to disable {{name}}? ',
endpointDeleteTip: 'Remove Endpoint',
endpointDeleteContent: 'Would you like to remove {{name}}? ',
endpointModalTitle: 'Setup endpoint',
endpointModalDesc: 'Once configured, the features provided by the plugin via API endpoints can be used.',
serviceOk: 'Service OK',
disabled: 'Disabled',
modelNum: '{{num}} MODELS INCLUDED',
toolSelector: {
title: 'Add tool',
toolLabel: 'Tool',
descriptionLabel: 'Tool description',
descriptionPlaceholder: 'Brief description of the tool\'s purpose, e.g., get the temperature for a specific location.',
placeholder: 'Select a tool...',
settings: 'USER SETTINGS',
params: 'REASONING CONFIG',
paramsTip1: 'Controls LLM inference parameters.',
paramsTip2: 'When \'Automatic\' is off, the default value is used.',
auto: 'Automatic',
empty: 'Click the \'+\' button to add tools. You can add multiple tools.',
uninstalledTitle: 'Tool not installed',
uninstalledContent: 'This plugin is installed from the local/GitHub repository. Please use after installation.',
uninstalledLink: 'Manage in Plugins',
unsupportedTitle: 'Unsupported Action',
unsupportedContent: 'The installed plugin version does not provide this action.',
unsupportedContent2: 'Click to switch version.',
},
configureApp: 'Configure App',
configureModel: 'Configure model',
configureTool: 'Configure tool',
},
install: '{{num}} installs',
installAction: 'Install',
debugInfo: {
title: 'Debugging',
viewDocs: 'View Docs',
},
privilege: {
title: 'Plugin Preferences',
whoCanInstall: 'Who can install and manage plugins?',
whoCanDebug: 'Who can debug plugins?',
everyone: 'Everyone',
admins: 'Admins',
noone: 'No one',
},
pluginInfoModal: {
title: 'Plugin info',
repository: 'Repository',
release: 'Release',
packageName: 'Package',
},
action: {
checkForUpdates: 'Check for updates',
pluginInfo: 'Plugin info',
delete: 'Remove plugin',
deleteContentLeft: 'Would you like to remove ',
deleteContentRight: ' plugin?',
usedInApps: 'This plugin is being used in {{num}} apps.',
},
installModal: {
installPlugin: 'Install Plugin',
installComplete: 'Installation complete',
installedSuccessfully: 'Installation successful',
installedSuccessfullyDesc: 'The plugin has been installed successfully.',
uploadFailed: 'Upload failed',
installFailed: 'Installation failed',
installFailedDesc: 'The plugin has been installed failed.',
install: 'Install',
installing: 'Installing...',
uploadingPackage: 'Uploading {{packageName}}...',
readyToInstall: 'About to install the following plugin',
readyToInstallPackage: 'About to install the following plugin',
readyToInstallPackages: 'About to install the following {{num}} plugins',
fromTrustSource: 'Please make sure that you only install plugins from a <trustSource>trusted source</trustSource>.',
dropPluginToInstall: 'Drop plugin package here to install',
labels: {
repository: 'Repository',
version: 'Version',
package: 'Package',
},
close: 'Close',
cancel: 'Cancel',
back: 'Back',
next: 'Next',
pluginLoadError: 'Plugin load error',
pluginLoadErrorDesc: 'This plugin will not be installed',
},
installFromGitHub: {
installPlugin: 'Install plugin from GitHub',
updatePlugin: 'Update plugin from GitHub',
installedSuccessfully: 'Installation successful',
installFailed: 'Installation failed',
uploadFailed: 'Upload failed',
gitHubRepo: 'GitHub repository',
selectVersion: 'Select version',
selectVersionPlaceholder: 'Please select a version',
installNote: 'Please make sure that you only install plugins from a trusted source.',
selectPackage: 'Select package',
selectPackagePlaceholder: 'Please select a package',
},
upgrade: {
title: 'Install Plugin',
successfulTitle: 'Install successful',
description: 'About to install the following plugin',
usedInApps: 'Used in {{num}} apps',
upgrade: 'Install',
upgrading: 'Installing...',
close: 'Close',
},
error: {
inValidGitHubUrl: 'Invalid GitHub URL. Please enter a valid URL in the format: https://github.com/owner/repo',
fetchReleasesError: 'Unable to retrieve releases. Please try again later.',
noReleasesFound: 'No releases found. Please check the GitHub repository or the input URL.',
},
marketplace: {
empower: 'Empower your AI development',
discover: 'Discover',
and: 'and',
difyMarketplace: 'Dify Marketplace',
moreFrom: 'More from Marketplace',
noPluginFound: 'No plugin found',
pluginsResult: '{{num}} results',
sortBy: 'Sort by',
sortOption: {
mostPopular: 'Most Popular',
recentlyUpdated: 'Recently Updated',
newlyReleased: 'Newly Released',
firstReleased: 'First Released',
},
viewMore: 'View more',
verifiedTip: 'Verified by Dify',
partnerTip: 'Verified by a Dify partner',
},
task: {
installing: 'Installing {{installingLength}} plugins, 0 done.',
installingWithSuccess: 'Installing {{installingLength}} plugins, {{successLength}} success.',
installingWithError: 'Installing {{installingLength}} plugins, {{successLength}} success, {{errorLength}} failed',
installError: '{{errorLength}} plugins failed to install, click to view',
installedError: '{{errorLength}} plugins failed to install',
clearAll: 'Clear all',
},
submitPlugin: 'Submit plugin',
}
export default translation

View File

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

View File

@@ -0,0 +1,31 @@
const translation = {
input: 'INPUT',
result: 'RESULT',
detail: 'DETAIL',
tracing: 'TRACING',
resultPanel: {
status: 'STATUS',
time: 'ELAPSED TIME',
tokens: 'TOTAL TOKENS',
},
meta: {
title: 'METADATA',
status: 'Status',
version: 'Version',
executor: 'Executor',
startTime: 'Start Time',
time: 'Elapsed Time',
tokens: 'Total Tokens',
steps: 'Run Steps',
},
resultEmpty: {
title: 'This run only output JSON format,',
tipLeft: 'please go to the ',
link: 'detail panel',
tipRight: ' view it.',
},
actionLogs: 'Action Logs',
circularInvocationTip: 'There is circular invocation of tools/nodes in the current workflow.',
}
export default translation

View File

@@ -0,0 +1,79 @@
const translation = {
common: {
welcome: '',
appUnavailable: 'App is unavailable',
appUnknownError: 'App is unavailable',
},
chat: {
newChat: 'Start New chat',
chatSettingsTitle: 'New chat setup',
chatFormTip: 'Chat settings cannot be modified after the chat has started.',
pinnedTitle: 'Pinned',
unpinnedTitle: 'Recent',
newChatDefaultName: 'New conversation',
resetChat: 'Reset conversation',
viewChatSettings: 'View chat settings',
poweredBy: 'Powered by',
prompt: 'Prompt',
privatePromptConfigTitle: 'Conversation settings',
publicPromptConfigTitle: 'Initial Prompt',
configStatusDes: 'Before starting, you can modify the conversation settings',
configDisabled:
'Previous session settings have been used for this session.',
startChat: 'Start Chat',
privacyPolicyLeft:
'Please read the ',
privacyPolicyMiddle:
'privacy policy',
privacyPolicyRight:
' provided by the app developer.',
deleteConversation: {
title: 'Delete conversation',
content: 'Are you sure you want to delete this conversation?',
},
tryToSolve: 'Try to solve',
temporarySystemIssue: 'Sorry, temporary system issue.',
},
generation: {
tabs: {
create: 'Run Once',
batch: 'Run Batch',
saved: 'Saved',
},
savedNoData: {
title: 'You haven\'t saved a result yet!',
description: 'Start generating content, and find your saved results here.',
startCreateContent: 'Start create content',
},
title: 'AI Completion',
queryTitle: 'Query content',
completionResult: 'Completion result',
queryPlaceholder: 'Write your query content...',
run: 'Execute',
execution: 'EXECUTION',
executions: '{{num}} EXECUTIONS',
copy: 'Copy',
resultTitle: 'AI Completion',
noData: 'AI will give you what you want here.',
csvUploadTitle: 'Drag and drop your CSV file here, or ',
browse: 'browse',
csvStructureTitle: 'The CSV file must conform to the following structure:',
downloadTemplate: 'Download the template here',
field: 'Field',
batchFailed: {
info: '{{num}} failed executions',
retry: 'Retry',
outputPlaceholder: 'No output content',
},
errorMsg: {
empty: 'Please input content in the uploaded file.',
fileStructNotMatch: 'The uploaded CSV file not match the struct.',
emptyLine: 'Row {{rowIndex}} is empty',
invalidLine: 'Row {{rowIndex}}: {{varName}} value can not be empty',
moreThanMaxLengthLine: 'Row {{rowIndex}}: {{varName}} value can not be more than {{maxLength}} characters',
atLeastOne: 'Please input at least one row in the uploaded file.',
},
},
}
export default translation

View File

@@ -0,0 +1,37 @@
const translation = {
daysInWeek: {
Sun: 'Sun',
Mon: 'Mon',
Tue: 'Tue',
Wed: 'Wed',
Thu: 'Thu',
Fri: 'Fri',
Sat: 'Sat',
},
months: {
January: 'January',
February: 'February',
March: 'March',
April: 'April',
May: 'May',
June: 'June',
July: 'July',
August: 'August',
September: 'September',
October: 'October',
November: 'November',
December: 'December',
},
operation: {
now: 'Now',
ok: 'OK',
cancel: 'Cancel',
pickDate: 'Pick Date',
},
title: {
pickTime: 'Pick Time',
},
defaultPlaceholder: 'Pick a time...',
}
export default translation

View File

@@ -0,0 +1,158 @@
const translation = {
title: 'Tools',
createCustomTool: 'Create Custom Tool',
customToolTip: 'Learn more about Dify custom tools',
type: {
all: 'All',
builtIn: 'Tools',
custom: 'Custom',
workflow: 'Workflow',
},
contribute: {
line1: 'I\'m interested in ',
line2: 'contributing tools to Dify.',
viewGuide: 'View the guide',
},
author: 'By',
auth: {
unauthorized: 'To Authorize',
authorized: 'Authorized',
setup: 'Set up authorization to use',
setupModalTitle: 'Set Up Authorization',
setupModalTitleDescription: 'After configuring credentials, all members within the workspace can use this tool when orchestrating applications.',
},
includeToolNum: '{{num}} {{action}} included',
addTool: 'Add Tool',
addToolModal: {
type: 'type',
category: 'category',
add: 'add',
added: 'added',
manageInTools: 'Manage in Tools',
emptyTitle: 'No workflow tool available',
emptyTip: 'Go to "Workflow -> Publish as Tool"',
emptyTitleCustom: 'No custom tool available',
emptyTipCustom: 'Create a custom tool',
},
createTool: {
title: 'Create Custom Tool',
editAction: 'Configure',
editTitle: 'Edit Custom Tool',
name: 'Name',
toolNamePlaceHolder: 'Enter the tool name',
nameForToolCall: 'Tool call name',
nameForToolCallPlaceHolder: 'Used for machine recognition, such as getCurrentWeather, list_pets',
nameForToolCallTip: 'Only supports numbers, letters, and underscores.',
description: 'Description',
descriptionPlaceholder: 'Brief description of the tool\'s purpose, e.g., get the temperature for a specific location.',
schema: 'Schema',
schemaPlaceHolder: 'Enter your OpenAPI schema here',
viewSchemaSpec: 'View the OpenAPI-Swagger Specification',
importFromUrl: 'Import from URL',
importFromUrlPlaceHolder: 'https://...',
urlError: 'Please enter a valid URL',
examples: 'Examples',
exampleOptions: {
json: 'Weather(JSON)',
yaml: 'Pet Store(YAML)',
blankTemplate: 'Blank Template',
},
availableTools: {
title: 'Available Tools',
name: 'Name',
description: 'Description',
method: 'Method',
path: 'Path',
action: 'Actions',
test: 'Test',
},
authMethod: {
title: 'Authorization method',
type: 'Authorization type',
keyTooltip: 'Http Header Key, You can leave it with "Authorization" if you have no idea what it is or set it to a custom value',
types: {
none: 'None',
api_key: 'API Key',
apiKeyPlaceholder: 'HTTP header name for API Key',
apiValuePlaceholder: 'Enter API Key',
},
key: 'Key',
value: 'Value',
},
authHeaderPrefix: {
title: 'Auth Type',
types: {
basic: 'Basic',
bearer: 'Bearer',
custom: 'Custom',
},
},
privacyPolicy: 'Privacy policy',
privacyPolicyPlaceholder: 'Please enter privacy policy',
toolInput: {
title: 'Tool Input',
name: 'Name',
required: 'Required',
method: 'Method',
methodSetting: 'Setting',
methodSettingTip: 'User fills in the tool configuration',
methodParameter: 'Parameter',
methodParameterTip: 'LLM fills during inference',
label: 'Tags',
labelPlaceholder: 'Choose tags(optional)',
description: 'Description',
descriptionPlaceholder: 'Description of the parameter\'s meaning',
},
customDisclaimer: 'Custom disclaimer',
customDisclaimerPlaceholder: 'Please enter custom disclaimer',
confirmTitle: 'Confirm to save ?',
confirmTip: 'Apps using this tool will be affected',
deleteToolConfirmTitle: 'Delete this Tool?',
deleteToolConfirmContent: 'Deleting the Tool is irreversible. Users will no longer be able to access your Tool.',
},
test: {
title: 'Test',
parametersValue: 'Parameters & Value',
parameters: 'Parameters',
value: 'Value',
testResult: 'Test Results',
testResultPlaceholder: 'Test result will show here',
},
thought: {
using: 'Using',
used: 'Used',
requestTitle: 'Request',
responseTitle: 'Response',
},
setBuiltInTools: {
info: 'Info',
setting: 'Setting',
toolDescription: 'Tool description',
parameters: 'parameters',
string: 'string',
number: 'number',
file: 'file',
required: 'Required',
infoAndSetting: 'Info & Settings',
},
noCustomTool: {
title: 'No custom tools!',
content: 'Add and manage your custom tools here for building AI apps.',
createTool: 'Create Tool',
},
noSearchRes: {
title: 'Sorry, no results!',
content: 'We couldn\'t find any tools that match your search.',
reset: 'Reset Search',
},
builtInPromptTitle: 'Prompt',
toolRemoved: 'Tool removed',
notAuthorized: 'Not authorized',
howToGet: 'How to get',
openInStudio: 'Open in Studio',
toolNameUsageTip: 'Tool call name for agent reasoning and prompting',
copyToolName: 'Copy Name',
noTools: 'No tools found',
}
export default translation

View File

@@ -0,0 +1,837 @@
const translation = {
common: {
undo: 'Undo',
redo: 'Redo',
editing: 'Editing',
autoSaved: 'Auto-Saved',
unpublished: 'Unpublished',
published: 'Published',
publish: 'Publish',
update: 'Update',
publishUpdate: 'Publish Update',
run: 'Run',
running: 'Running',
inRunMode: 'In Run Mode',
inPreview: 'In Preview',
inPreviewMode: 'In Preview Mode',
preview: 'Preview',
viewRunHistory: 'View run history',
runHistory: 'Run History',
goBackToEdit: 'Go back to editor',
conversationLog: 'Conversation Log',
features: 'Features',
featuresDescription: 'Enhance web app user experience',
ImageUploadLegacyTip: 'You can now create file type variables in the start form. We will no longer support the image upload feature in the future. ',
fileUploadTip: 'Image upload features have been upgraded to file upload. ',
featuresDocLink: 'Learn more',
debugAndPreview: 'Preview',
restart: 'Restart',
currentDraft: 'Current Draft',
currentDraftUnpublished: 'Current Draft Unpublished',
latestPublished: 'Latest Published',
publishedAt: 'Published',
restore: 'Restore',
versionHistory: 'Version History',
exitVersions: 'Exit Versions',
runApp: 'Run App',
batchRunApp: 'Batch Run App',
openInExplore: 'Open in Explore',
accessAPIReference: 'Access API Reference',
embedIntoSite: 'Embed Into Site',
addTitle: 'Add title...',
addDescription: 'Add description...',
noVar: 'No variable',
searchVar: 'Search variable',
variableNamePlaceholder: 'Variable name',
setVarValuePlaceholder: 'Set variable',
needConnectTip: 'This step is not connected to anything',
maxTreeDepth: 'Maximum limit of {{depth}} nodes per branch',
needEndNode: 'The End block must be added',
needAnswerNode: 'The Answer block must be added',
workflowProcess: 'Workflow Process',
notRunning: 'Not running yet',
previewPlaceholder: 'Enter content in the box below to start debugging the Chatbot',
effectVarConfirm: {
title: 'Remove Variable',
content: 'The variable is used in other nodes. Do you still want to remove it?',
},
insertVarTip: 'Press the \'/\' key to insert quickly',
processData: 'Process Data',
input: 'Input',
output: 'Output',
jinjaEditorPlaceholder: 'Type \'/\' or \'{\' to insert variable',
viewOnly: 'View Only',
showRunHistory: 'Show Run History',
enableJinja: 'Enable Jinja template support',
learnMore: 'Learn More',
copy: 'Copy',
duplicate: 'Duplicate',
addBlock: 'Add Block',
pasteHere: 'Paste Here',
pointerMode: 'Pointer Mode',
handMode: 'Hand Mode',
model: 'Model',
workflowAsTool: 'Workflow as Tool',
configureRequired: 'Configure Required',
configure: 'Configure',
manageInTools: 'Manage in Tools',
workflowAsToolTip: 'Tool reconfiguration is required after the workflow update.',
viewDetailInTracingPanel: 'View details',
syncingData: 'Syncing data, just a few seconds.',
importDSL: 'Import DSL',
importDSLTip: 'Current draft will be overwritten.\nExport workflow as backup before importing.',
backupCurrentDraft: 'Backup Current Draft',
chooseDSL: 'Choose DSL file',
overwriteAndImport: 'Overwrite and Import',
importFailure: 'Import Failed',
importWarning: 'Caution',
importWarningDetails: 'DSL version difference may affect certain features',
importSuccess: 'Import Successfully',
parallelRun: 'Parallel Run',
parallelTip: {
click: {
title: 'Click',
desc: ' to add',
},
drag: {
title: 'Drag',
desc: ' to connect',
},
limit: 'Parallelism is limited to {{num}} branches.',
depthLimit: 'Parallel nesting layer limit of {{num}} layers',
},
disconnect: 'Disconnect',
jumpToNode: 'Jump to this node',
addParallelNode: 'Add Parallel Node',
parallel: 'PARALLEL',
branch: 'BRANCH',
onFailure: 'On Failure',
addFailureBranch: 'Add Fail Branch',
loadMore: 'Load More',
noHistory: 'No History',
},
env: {
envPanelTitle: 'Environment Variables',
envDescription: 'Environment variables can be used to store private information and credentials. They are read-only and can be separated from the DSL file during export.',
envPanelButton: 'Add Variable',
modal: {
title: 'Add Environment Variable',
editTitle: 'Edit Environment Variable',
type: 'Type',
name: 'Name',
namePlaceholder: 'env name',
value: 'Value',
valuePlaceholder: 'env value',
secretTip: 'Used to define sensitive information or data, with DSL settings configured for leak prevention.',
},
export: {
title: 'Export Secret environment variables?',
checkbox: 'Export secret values',
ignore: 'Export DSL',
export: 'Export DSL with secret values ',
},
},
chatVariable: {
panelTitle: 'Conversation Variables',
panelDescription: 'Conversation Variables are used to store interactive information that LLM needs to remember, including conversation history, uploaded files, user preferences. They are read-write. ',
docLink: 'Visit our docs to learn more.',
button: 'Add Variable',
modal: {
title: 'Add Conversation Variable',
editTitle: 'Edit Conversation Variable',
name: 'Name',
namePlaceholder: 'Variable name',
type: 'Type',
value: 'Default Value',
valuePlaceholder: 'Default value, leave blank to not set',
description: 'Description',
descriptionPlaceholder: 'Describe the variable',
editInJSON: 'Edit in JSON',
oneByOne: 'Add one by one',
editInForm: 'Edit in Form',
arrayValue: 'Value',
addArrayValue: 'Add Value',
objectKey: 'Key',
objectType: 'Type',
objectValue: 'Default Value',
},
storedContent: 'Stored content',
updatedAt: 'Updated at ',
},
changeHistory: {
title: 'Change History',
placeholder: 'You haven\'t changed anything yet',
clearHistory: 'Clear History',
hint: 'Hint',
hintText: 'Your editing actions are tracked in a change history, which is stored on your device for the duration of this session. This history will be cleared when you leave the editor.',
stepBackward_one: '{{count}} step backward',
stepBackward_other: '{{count}} steps backward',
stepForward_one: '{{count}} step forward',
stepForward_other: '{{count}} steps forward',
sessionStart: 'Session Start',
currentState: 'Current State',
nodeTitleChange: 'Block title changed',
nodeDescriptionChange: 'Block description changed',
nodeDragStop: 'Block moved',
nodeChange: 'Block changed',
nodeConnect: 'Block connected',
nodePaste: 'Block pasted',
nodeDelete: 'Block deleted',
nodeAdd: 'Block added',
nodeResize: 'Block resized',
noteAdd: 'Note added',
noteChange: 'Note changed',
noteDelete: 'Note deleted',
edgeDelete: 'Block disconnected',
},
errorMsg: {
fieldRequired: '{{field}} is required',
rerankModelRequired: 'A configured Rerank Model is required',
authRequired: 'Authorization is required',
invalidJson: '{{field}} is invalid JSON',
fields: {
variable: 'Variable Name',
variableValue: 'Variable Value',
code: 'Code',
model: 'Model',
rerankModel: 'A configured Rerank Model',
visionVariable: 'Vision Variable',
},
invalidVariable: 'Invalid variable',
noValidTool: '{{field}} no valid tool selected',
toolParameterRequired: '{{field}}: parameter [{{param}}] is required',
},
singleRun: {
testRun: 'Test Run ',
startRun: 'Start Run',
running: 'Running',
testRunIteration: 'Test Run Iteration',
back: 'Back',
iteration: 'Iteration',
loop: 'Loop',
},
tabs: {
'searchBlock': 'Search block',
'blocks': 'Blocks',
'searchTool': 'Search tool',
'tools': 'Tools',
'allTool': 'All',
'plugin': 'Plugin',
'customTool': 'Custom',
'workflowTool': 'Workflow',
'question-understand': 'Question Understand',
'logic': 'Logic',
'transform': 'Transform',
'utilities': 'Utilities',
'noResult': 'No match found',
'agent': 'Agent Strategy',
},
blocks: {
'start': 'Start',
'end': 'End',
'answer': 'Answer',
'llm': 'LLM',
'knowledge-retrieval': 'Knowledge Retrieval',
'question-classifier': 'Question Classifier',
'if-else': 'IF/ELSE',
'code': 'Code',
'template-transform': 'Template',
'http-request': 'HTTP Request',
'variable-assigner': 'Variable Aggregator',
'variable-aggregator': 'Variable Aggregator',
'assigner': 'Variable Assigner',
'iteration-start': 'Iteration Start',
'iteration': 'Iteration',
'parameter-extractor': 'Parameter Extractor',
'document-extractor': 'Doc Extractor',
'list-operator': 'List Operator',
'agent': 'Agent',
'loop-start': 'Loop Start',
'loop': 'Loop',
},
blocksAbout: {
'start': 'Define the initial parameters for launching a workflow',
'end': 'Define the end and result type of a workflow',
'answer': 'Define the reply content of a chat conversation',
'llm': 'Invoking large language models to answer questions or process natural language',
'knowledge-retrieval': 'Allows you to query text content related to user questions from the Knowledge',
'question-classifier': 'Define the classification conditions of user questions, LLM can define how the conversation progresses based on the classification description',
'if-else': 'Allows you to split the workflow into two branches based on if/else conditions',
'code': 'Execute a piece of Python or NodeJS code to implement custom logic',
'template-transform': 'Convert data to string using Jinja template syntax',
'http-request': 'Allow server requests to be sent over the HTTP protocol',
'variable-assigner': 'Aggregate multi-branch variables into a single variable for unified configuration of downstream nodes.',
'assigner': 'The variable assignment node is used for assigning values to writable variables(like conversation variables).',
'variable-aggregator': 'Aggregate multi-branch variables into a single variable for unified configuration of downstream nodes.',
'iteration': 'Perform multiple steps on a list object until all results are outputted.',
'loop': 'Execute a loop of logic until the termination condition is met or the maximum loop count is reached.',
'parameter-extractor': 'Use LLM to extract structured parameters from natural language for tool invocations or HTTP requests.',
'document-extractor': 'Used to parse uploaded documents into text content that is easily understandable by LLM.',
'list-operator': 'Used to filter or sort array content.',
'agent': 'Invoking large language models to answer questions or process natural language',
},
operator: {
zoomIn: 'Zoom In',
zoomOut: 'Zoom Out',
zoomTo50: 'Zoom to 50%',
zoomTo100: 'Zoom to 100%',
zoomToFit: 'Zoom to Fit',
},
variableReference: {
noAvailableVars: 'No available variables',
noVarsForOperation: 'There are no variables available for assignment with the selected operation.',
noAssignedVars: 'No available assigned variables',
assignedVarsDescription: 'Assigned variables must be writable variables, such as ',
conversationVars: 'conversation variables',
},
panel: {
userInputField: 'User Input Field',
changeBlock: 'Change Block',
helpLink: 'Help Link',
about: 'About',
createdBy: 'Created By ',
nextStep: 'Next Step',
addNextStep: 'Add the next block in this workflow',
selectNextStep: 'Select Next Block',
runThisStep: 'Run this step',
checklist: 'Checklist',
checklistTip: 'Make sure all issues are resolved before publishing',
checklistResolved: 'All issues are resolved',
organizeBlocks: 'Organize blocks',
change: 'Change',
optional: '(optional)',
},
nodes: {
common: {
outputVars: 'Output Variables',
insertVarTip: 'Insert Variable',
memory: {
memory: 'Memory',
memoryTip: 'Chat memory settings',
windowSize: 'Window Size',
conversationRoleName: 'Conversation Role Name',
user: 'User prefix',
assistant: 'Assistant prefix',
},
memories: {
title: 'Memories',
tip: 'Chat memory',
builtIn: 'Built-in',
},
errorHandle: {
title: 'Error Handling',
tip: 'Exception handling strategy, triggered when a node encounters an exception.',
none: {
title: 'None',
desc: 'The node will stop running if an exception occurs and is not handled',
},
defaultValue: {
title: 'Default Value',
desc: 'When an error occurs, specify a static output content.',
tip: 'On error, will return below value.',
inLog: 'Node exception, outputting according to default values.',
output: 'Output Default Value',
},
failBranch: {
title: 'Fail Branch',
desc: 'When an error occurs, it will execute the exception branch',
customize: 'Go to the canvas to customize the fail branch logic.',
customizeTip: 'When the fail branch is activated, exceptions thrown by nodes will not terminate the process. Instead, it will automatically execute the predefined fail branch, allowing you to flexibly provide error messages, reports, fixes, or skip actions.',
inLog: 'Node exception, will automatically execute the fail branch. The node output will return an error type and error message and pass them to downstream.',
},
partialSucceeded: {
tip: 'There are {{num}} nodes in the process running abnormally, please go to tracing to check the logs.',
},
},
retry: {
retry: 'Retry',
retryOnFailure: 'retry on failure',
maxRetries: 'max retries',
retryInterval: 'retry interval',
retryTimes: 'Retry {{times}} times on failure',
retrying: 'Retrying...',
retrySuccessful: 'Retry successful',
retryFailed: 'Retry failed',
retryFailedTimes: '{{times}} retries failed',
times: 'times',
ms: 'ms',
retries: '{{num}} Retries',
},
},
start: {
required: 'required',
inputField: 'Input Field',
builtInVar: 'Built-in Variables',
outputVars: {
query: 'User input',
memories: {
des: 'Conversation history',
type: 'message type',
content: 'message content',
},
files: 'File list',
},
noVarTip: 'Set inputs that can be used in the Workflow',
},
end: {
outputs: 'Outputs',
output: {
type: 'output type',
variable: 'output variable',
},
type: {
'none': 'None',
'plain-text': 'Plain Text',
'structured': 'Structured',
},
},
answer: {
answer: 'Answer',
outputVars: 'Output Variables',
},
llm: {
model: 'model',
variables: 'variables',
context: 'context',
contextTooltip: 'You can import Knowledge as context',
notSetContextInPromptTip: 'To enable the context feature, please fill in the context variable in PROMPT.',
prompt: 'prompt',
roleDescription: {
system: 'Give high level instructions for the conversation',
user: 'Provide instructions, queries, or any text-based input to the model',
assistant: 'The models responses based on the user messages',
},
addMessage: 'Add Message',
vision: 'vision',
files: 'Files',
resolution: {
name: 'Resolution',
high: 'High',
low: 'Low',
},
outputVars: {
output: 'Generate content',
usage: 'Model Usage Information',
},
singleRun: {
variable: 'Variable',
},
sysQueryInUser: 'sys.query in user message is required',
},
knowledgeRetrieval: {
queryVariable: 'Query Variable',
knowledge: 'Knowledge',
outputVars: {
output: 'Retrieval segmented data',
content: 'Segmented content',
title: 'Segmented title',
icon: 'Segmented icon',
url: 'Segmented URL',
metadata: 'Other metadata',
},
},
http: {
inputVars: 'Input Variables',
api: 'API',
apiPlaceholder: 'Enter URL, type / insert variable',
extractListPlaceholder: 'Enter list item index, type / insert variable',
notStartWithHttp: 'API should start with http:// or https://',
key: 'Key',
type: 'Type',
value: 'Value',
bulkEdit: 'Bulk Edit',
keyValueEdit: 'Key-Value Edit',
headers: 'Headers',
params: 'Params',
body: 'Body',
binaryFileVariable: 'Binary File Variable',
outputVars: {
body: 'Response Content',
statusCode: 'Response Status Code',
headers: 'Response Header List JSON',
files: 'Files List',
},
authorization: {
'authorization': 'Authorization',
'authorizationType': 'Authorization Type',
'no-auth': 'None',
'api-key': 'API-Key',
'auth-type': 'Auth Type',
'basic': 'Basic',
'bearer': 'Bearer',
'custom': 'Custom',
'api-key-title': 'API Key',
'header': 'Header',
},
insertVarPlaceholder: 'type \'/\' to insert variable',
timeout: {
title: 'Timeout',
connectLabel: 'Connection Timeout',
connectPlaceholder: 'Enter connection timeout in seconds',
readLabel: 'Read Timeout',
readPlaceholder: 'Enter read timeout in seconds',
writeLabel: 'Write Timeout',
writePlaceholder: 'Enter write timeout in seconds',
},
curl: {
title: 'Import from cURL',
placeholder: 'Paste cURL string here',
},
},
code: {
inputVars: 'Input Variables',
outputVars: 'Output Variables',
advancedDependencies: 'Advanced Dependencies',
advancedDependenciesTip: 'Add some preloaded dependencies that take more time to consume or are not default built-in here',
searchDependencies: 'Search Dependencies',
},
templateTransform: {
inputVars: 'Input Variables',
code: 'Code',
codeSupportTip: 'Only supports Jinja2',
outputVars: {
output: 'Transformed content',
},
},
ifElse: {
if: 'If',
else: 'Else',
elseDescription: 'Used to define the logic that should be executed when the if condition is not met.',
and: 'and',
or: 'or',
operator: 'Operator',
notSetVariable: 'Please set variable first',
comparisonOperator: {
'contains': 'contains',
'not contains': 'not contains',
'start with': 'start with',
'end with': 'end with',
'is': 'is',
'is not': 'is not',
'empty': 'is empty',
'not empty': 'is not empty',
'null': 'is null',
'not null': 'is not null',
'in': 'in',
'not in': 'not in',
'all of': 'all of',
'exists': 'exists',
'not exists': 'not exists',
},
optionName: {
image: 'Image',
doc: 'Doc',
audio: 'Audio',
video: 'Video',
localUpload: 'Local Upload',
url: 'URL',
},
enterValue: 'Enter value',
addCondition: 'Add Condition',
conditionNotSetup: 'Condition NOT setup',
selectVariable: 'Select variable...',
addSubVariable: 'Sub Variable',
select: 'Select',
},
variableAssigner: {
title: 'Assign variables',
outputType: 'Output Type',
varNotSet: 'Variable not set',
noVarTip: 'Add the variables to be assigned',
type: {
string: 'String',
number: 'Number',
object: 'Object',
array: 'Array',
},
aggregationGroup: 'Aggregation Group',
aggregationGroupTip: 'Enabling this feature allows the variable aggregator to aggregate multiple sets of variables.',
addGroup: 'Add Group',
outputVars: {
varDescribe: '{{groupName}} output',
},
setAssignVariable: 'Set assign variable',
},
assigner: {
'assignedVariable': 'Assigned Variable',
'varNotSet': 'Variable NOT Set',
'variables': 'Variables',
'noVarTip': 'Click the "+" button to add variables',
'writeMode': 'Write Mode',
'writeModeTip': 'Append mode: Available for array variables only.',
'over-write': 'Overwrite',
'append': 'Append',
'plus': 'Plus',
'clear': 'Clear',
'setVariable': 'Set Variable',
'selectAssignedVariable': 'Select assigned variable...',
'setParameter': 'Set parameter...',
'operations': {
'title': 'Operation',
'over-write': 'Overwrite',
'overwrite': 'Overwrite',
'set': 'Set',
'clear': 'Clear',
'extend': 'Extend',
'append': 'Append',
'+=': '+=',
'-=': '-=',
'*=': '*=',
'/=': '/=',
},
'variable': 'Variable',
'noAssignedVars': 'No available assigned variables',
'assignedVarsDescription': 'Assigned variables must be writable variables, such as conversation variables.',
},
tool: {
toAuthorize: 'To authorize',
inputVars: 'Input Variables',
outputVars: {
text: 'tool generated content',
files: {
title: 'tool generated files',
type: 'Support type. Now only support image',
transfer_method: 'Transfer method.Value is remote_url or local_file',
url: 'Image url',
upload_file_id: 'Upload file id',
},
json: 'tool generated json',
},
},
questionClassifiers: {
model: 'model',
inputVars: 'Input Variables',
outputVars: {
className: 'Class Name',
},
class: 'Class',
classNamePlaceholder: 'Write your class name',
advancedSetting: 'Advanced Setting',
topicName: 'Topic Name',
topicPlaceholder: 'Write your topic name',
addClass: 'Add Class',
instruction: 'Instruction',
instructionTip: 'Input additional instructions to help the question classifier better understand how to categorize questions.',
instructionPlaceholder: 'Write your instruction',
},
parameterExtractor: {
inputVar: 'Input Variable',
extractParameters: 'Extract Parameters',
importFromTool: 'Import from tools',
addExtractParameter: 'Add Extract Parameter',
addExtractParameterContent: {
name: 'Name',
namePlaceholder: 'Extract Parameter Name',
type: 'Type',
typePlaceholder: 'Extract Parameter Type',
description: 'Description',
descriptionPlaceholder: 'Extract Parameter Description',
required: 'Required',
requiredContent: 'Required is only used as a reference for model inference, and not for mandatory validation of parameter output.',
},
extractParametersNotSet: 'Extract Parameters not setup',
instruction: 'Instruction',
instructionTip: 'Input additional instructions to help the parameter extractor understand how to extract parameters.',
advancedSetting: 'Advanced Setting',
reasoningMode: 'Reasoning Mode',
reasoningModeTip: 'You can choose the appropriate reasoning mode based on the model\'s ability to respond to instructions for function calling or prompts.',
isSuccess: 'Is Success.On success the value is 1, on failure the value is 0.',
errorReason: 'Error Reason',
},
iteration: {
deleteTitle: 'Delete Iteration Node?',
deleteDesc: 'Deleting the iteration node will delete all child nodes',
input: 'Input',
output: 'Output Variables',
iteration_one: '{{count}} Iteration',
iteration_other: '{{count}} Iterations',
currentIteration: 'Current Iteration',
comma: ', ',
error_one: '{{count}} Error',
error_other: '{{count}} Errors',
parallelMode: 'Parallel Mode',
parallelModeUpper: 'PARALLEL MODE',
parallelModeEnableTitle: 'Parallel Mode Enabled',
parallelModeEnableDesc: 'In parallel mode, tasks within iterations support parallel execution. You can configure this in the properties panel on the right.',
parallelPanelDesc: 'In parallel mode, tasks in the iteration support parallel execution.',
MaxParallelismTitle: 'Maximum parallelism',
MaxParallelismDesc: 'The maximum parallelism is used to control the number of tasks executed simultaneously in a single iteration.',
errorResponseMethod: 'Error response method',
ErrorMethod: {
operationTerminated: 'Terminated',
continueOnError: 'Continue on Error',
removeAbnormalOutput: 'Remove Abnormal Output',
},
answerNodeWarningDesc: 'Parallel mode warning: Answer nodes, conversation variable assignments, and persistent read/write operations within iterations may cause exceptions.',
},
loop: {
deleteTitle: 'Delete Loop Node?',
deleteDesc: 'Deleting the loop node will remove all child nodes',
input: 'Input',
output: 'Output Variable',
loop_one: '{{count}} Loop',
loop_other: '{{count}} Loops',
currentLoop: 'Current Loop',
breakCondition: 'Loop Termination Condition',
loopMaxCount: 'Maximum Loop Count',
loopMaxCountError: 'Please enter a valid maximum loop count, ranging from 1 to {{maxCount}}',
errorResponseMethod: 'Error Response Method',
ErrorMethod: {
operationTerminated: 'Terminated',
continueOnError: 'Continue on Error',
removeAbnormalOutput: 'Remove Abnormal Output',
},
},
note: {
addNote: 'Add Note',
editor: {
placeholder: 'Write your note...',
small: 'Small',
medium: 'Medium',
large: 'Large',
bold: 'Bold',
italic: 'Italic',
strikethrough: 'Strikethrough',
link: 'Link',
openLink: 'Open',
unlink: 'Unlink',
enterUrl: 'Enter URL...',
invalidUrl: 'Invalid URL',
bulletList: 'Bullet List',
showAuthor: 'Show Author',
},
},
docExtractor: {
inputVar: 'Input Variable',
outputVars: {
text: 'Extracted text',
},
supportFileTypes: 'Support file types: {{types}}.',
learnMore: 'Learn more',
},
listFilter: {
inputVar: 'Input Variable',
filterCondition: 'Filter Condition',
filterConditionKey: 'Filter Condition Key',
extractsCondition: 'Extract the N item',
filterConditionComparisonOperator: 'Filter Condition Comparison Operator',
filterConditionComparisonValue: 'Filter Condition value',
selectVariableKeyPlaceholder: 'Select sub variable key',
limit: 'Top N',
orderBy: 'Order by',
asc: 'ASC',
desc: 'DESC',
outputVars: {
result: 'Filter result',
first_record: 'First record',
last_record: 'Last record',
},
},
agent: {
strategy: {
label: 'Agentic Strategy',
tooltip: 'Different Agentic strategies determine how the system plans and executes multi-step tool calls',
shortLabel: 'Strategy',
configureTip: 'Please configure agentic strategy.',
configureTipDesc: 'After configuring the agentic strategy, this node will automatically load the remaining configurations. The strategy will affect the mechanism of multi-step tool reasoning. ',
selectTip: 'Select agentic strategy',
searchPlaceholder: 'Search agentic strategy',
},
learnMore: 'Learn more',
pluginNotInstalled: 'This plugin is not installed',
pluginNotInstalledDesc: 'This plugin is installed from GitHub. Please go to Plugins to reinstall',
linkToPlugin: 'Link to Plugins',
pluginInstaller: {
install: 'Install',
installing: 'Installing',
},
modelNotInMarketplace: {
title: 'Model not installed',
desc: 'This model is installed from Local or GitHub repository. Please use after installation.',
manageInPlugins: 'Manage in Plugins',
},
modelNotSupport: {
title: 'Unsupported Model',
desc: 'The installed plugin version does not provide this model.',
descForVersionSwitch: 'The installed plugin version does not provide this model. Click to switch version.',
},
configureModel: 'Configure Model',
notAuthorized: 'Not Authorized',
model: 'model',
toolbox: 'toolbox',
strategyNotSet: 'Agentic strategy Not Set',
tools: 'Tools',
maxIterations: 'Max Iterations',
modelNotSelected: 'Model not selected',
modelNotInstallTooltip: 'This model is not installed',
toolNotInstallTooltip: '{{tool}} is not installed',
toolNotAuthorizedTooltip: '{{tool}} Not Authorized',
strategyNotInstallTooltip: '{{strategy}} is not installed',
unsupportedStrategy: 'Unsupported strategy',
pluginNotFoundDesc: 'This plugin is installed from GitHub. Please go to Plugins to reinstall',
strategyNotFoundDesc: 'The installed plugin version does not provide this strategy.',
strategyNotFoundDescAndSwitchVersion: 'The installed plugin version does not provide this strategy. Click to switch version.',
modelSelectorTooltips: {
deprecated: 'This model is deprecated',
},
outputVars: {
text: 'agent generated content',
files: {
title: 'agent generated files',
type: 'Support type. Now only support image',
transfer_method: 'Transfer method.Value is remote_url or local_file',
url: 'Image url',
upload_file_id: 'Upload file id',
},
json: 'agent generated json',
},
checkList: {
strategyNotSelected: 'Strategy not selected',
},
installPlugin: {
title: 'Install Plugin',
desc: 'About to install the following plugin',
changelog: 'Change log',
install: 'Install',
cancel: 'Cancel',
},
},
},
tracing: {
stopBy: 'Stop by {{user}}',
},
versionHistory: {
title: 'Versions',
currentDraft: 'Current Draft',
latest: 'Latest',
filter: {
all: 'All',
onlyYours: 'Only yours',
onlyShowNamedVersions: 'Only show named versions',
reset: 'Reset Filter',
empty: 'No matching version history found',
},
defaultName: 'Untitled Version',
nameThisVersion: 'Name this version',
editVersionInfo: 'Edit version info',
editField: {
title: 'Title',
releaseNotes: 'Release Notes',
titleLengthLimit: 'Title can\'t exceed {{limit}} characters',
releaseNotesLengthLimit: 'Release notes can\'t exceed {{limit}} characters',
},
releaseNotesPlaceholder: 'Describe what changed',
restorationTip: 'After version restoration, the current draft will be overwritten.',
deletionTip: 'Deletion is irreversible, please confirm.',
action: {
restoreSuccess: 'Version restored',
restoreFailure: 'Failed to restore version',
deleteSuccess: 'Version deleted',
deleteFailure: 'Failed to delete version',
updateSuccess: 'Version updated',
updateFailure: 'Failed to update version',
},
},
}
export default translation

View File

@@ -0,0 +1,87 @@
const translation = {
title: 'Anotaciones',
name: 'Respuesta de Anotación',
editBy: 'Respuesta editada por {{author}}',
noData: {
title: 'Sin anotaciones',
description: 'Puedes editar anotaciones durante la depuración de la aplicación o importar anotaciones en masa aquí para obtener una respuesta de alta calidad.',
},
table: {
header: {
question: 'pregunta',
answer: 'respuesta',
createdAt: 'creado el',
hits: 'aciertos',
actions: 'acciones',
addAnnotation: 'Agregar Anotación',
bulkImport: 'Importar en Masa',
bulkExport: 'Exportar en Masa',
clearAll: 'Borrar Todas las Anotaciones',
},
},
editModal: {
title: 'Editar Respuesta de Anotación',
queryName: 'Consulta del Usuario',
answerName: 'Bot Narrador',
yourAnswer: 'Tu Respuesta',
answerPlaceholder: 'Escribe tu respuesta aquí',
yourQuery: 'Tu Consulta',
queryPlaceholder: 'Escribe tu consulta aquí',
removeThisCache: 'Eliminar esta Anotación',
createdAt: 'Creado el',
},
addModal: {
title: 'Agregar Respuesta de Anotación',
queryName: 'Pregunta',
answerName: 'Respuesta',
answerPlaceholder: 'Escribe la respuesta aquí',
queryPlaceholder: 'Escribe la pregunta aquí',
createNext: 'Agregar otra respuesta anotada',
},
batchModal: {
title: 'Importación en Masa',
csvUploadTitle: 'Arrastra y suelta tu archivo CSV aquí, o ',
browse: 'navega',
tip: 'El archivo CSV debe cumplir con la siguiente estructura:',
question: 'pregunta',
answer: 'respuesta',
contentTitle: 'contenido del fragmento',
content: 'contenido',
template: 'Descarga la plantilla aquí',
cancel: 'Cancelar',
run: 'Ejecutar Lote',
runError: 'Error al ejecutar el lote',
processing: 'En proceso de lote',
completed: 'Importación completada',
error: 'Error de importación',
ok: 'OK',
},
errorMessage: {
answerRequired: 'Se requiere una respuesta',
queryRequired: 'Se requiere una pregunta',
},
viewModal: {
annotatedResponse: 'Respuesta de Anotación',
hitHistory: 'Historial de Aciertos',
hit: 'Acierto',
hits: 'Aciertos',
noHitHistory: 'Sin historial de aciertos',
},
hitHistoryTable: {
query: 'Consulta',
match: 'Coincidencia',
response: 'Respuesta',
source: 'Fuente',
score: 'Puntuación',
time: 'Tiempo',
},
initSetup: {
title: 'Configuración Inicial de Respuesta de Anotación',
configTitle: 'Configuración de Respuesta de Anotación',
confirmBtn: 'Guardar y Habilitar',
configConfirmBtn: 'Guardar',
},
embeddingModelSwitchTip: 'Modelo de vectorización de texto de anotación, cambiar de modelo volverá a incrustar, lo que resultará en costos adicionales.',
}
export default translation

View File

@@ -0,0 +1,85 @@
const translation = {
apiServer: 'Servidor de API',
apiKey: 'Clave de API',
status: 'Estado',
disabled: 'Desactivado',
ok: 'En servicio',
copy: 'Copiar',
copied: 'Copiado',
play: 'Reproducir',
pause: 'Pausa',
playing: 'Reproduciendo',
loading: 'Cargando',
merMaid: {
rerender: 'Rehacer Rerender',
},
never: 'Nunca',
apiKeyModal: {
apiSecretKey: 'Clave secreta de API',
apiSecretKeyTips: 'Para evitar el abuso de la API, protege tu clave de API. Evita usarla como texto plano en el código del frontend. :)',
createNewSecretKey: 'Crear nueva clave secreta',
secretKey: 'Clave secreta',
created: 'CREADA',
lastUsed: 'ÚLTIMO USO',
generateTips: 'Guarda esta clave en un lugar seguro y accesible.',
},
actionMsg: {
deleteConfirmTitle: '¿Eliminar esta clave secreta?',
deleteConfirmTips: 'Esta acción no se puede deshacer.',
ok: 'OK',
},
completionMode: {
title: 'Completar App API',
info: 'Para generar texto de alta calidad, como artículos, resúmenes y traducciones, utiliza la API de mensajes de completado con la entrada del usuario. La generación de texto depende de los parámetros del modelo y las plantillas de inicio establecidas en Dify Prompt Engineering.',
createCompletionApi: 'Crear mensaje de completado',
createCompletionApiTip: 'Crea un mensaje de completado para admitir el modo de pregunta y respuesta.',
inputsTips: '(Opcional) Proporciona campos de entrada de usuario como pares clave-valor, que corresponden a las variables en Prompt Eng. La clave es el nombre de la variable, el valor es el valor del parámetro. Si el tipo de campo es Select, el valor enviado debe ser una de las opciones predefinidas.',
queryTips: 'Contenido de texto de entrada del usuario.',
blocking: 'Tipo de bloqueo, esperando a que se complete la ejecución y devuelva los resultados. (Las solicitudes pueden interrumpirse si el proceso es largo)',
streaming: 'devoluciones de transmisión. Implementación de la devolución de transmisión basada en SSE (Eventos enviados por el servidor).',
messageFeedbackApi: 'Comentarios de mensajes (me gusta)',
messageFeedbackApiTip: 'Califica los mensajes recibidos en nombre de los usuarios finales con me gusta o no me gusta. Estos datos son visibles en la página de Registros y Anotaciones y se utilizan para ajustar el modelo en el futuro.',
messageIDTip: 'ID del mensaje',
ratingTip: 'me gusta o no me gusta, null es deshacer',
parametersApi: 'Obtener información de parámetros de la aplicación',
parametersApiTip: 'Recupera los parámetros de entrada configurados, incluidos los nombres de variables, los nombres de campos, los tipos y los valores predeterminados. Normalmente se utiliza para mostrar estos campos en un formulario o completar los valores predeterminados después de que el cliente se carga.',
},
chatMode: {
title: 'Chat App API',
info: 'Para aplicaciones de conversación versátiles que utilizan un formato de preguntas y respuestas, llama a la API de mensajes de chat para iniciar el diálogo. Mantén conversaciones en curso pasando el conversation_id devuelto. Los parámetros de respuesta y las plantillas dependen de la configuración de Dify Prompt Eng.',
createChatApi: 'Crear mensaje de chat',
createChatApiTip: 'Crea un nuevo mensaje de conversación o continúa un diálogo existente.',
inputsTips: '(Opcional) Proporciona campos de entrada de usuario como pares clave-valor, que corresponden a las variables en Prompt Eng. La clave es el nombre de la variable, el valor es el valor del parámetro. Si el tipo de campo es Select, el valor enviado debe ser una de las opciones predefinidas.',
queryTips: 'Contenido de entrada/pregunta del usuario',
blocking: 'Tipo de bloqueo, esperando a que se complete la ejecución y devuelva los resultados. (Las solicitudes pueden interrumpirse si el proceso es largo)',
streaming: 'devoluciones de transmisión. Implementación de la devolución de transmisión basada en SSE (Eventos enviados por el servidor).',
conversationIdTip: '(Opcional) ID de conversación: dejar vacío para la primera conversación; pasar conversation_id del contexto para continuar el diálogo.',
messageFeedbackApi: 'Comentarios terminales de mensajes, me gusta',
messageFeedbackApiTip: 'Califica los mensajes recibidos en nombre de los usuarios finales con me gusta o no me gusta. Estos datos son visibles en la página de Registros y Anotaciones y se utilizan para ajustar el modelo en el futuro.',
messageIDTip: 'ID del mensaje',
ratingTip: 'me gusta o no me gusta, null es deshacer',
chatMsgHistoryApi: 'Obtener el historial de mensajes de chat',
chatMsgHistoryApiTip: 'La primera página devuelve las últimas `limit` barras, en orden inverso.',
chatMsgHistoryConversationIdTip: 'ID de conversación',
chatMsgHistoryFirstId: 'ID del primer registro de chat en la página actual. El valor predeterminado es ninguno.',
chatMsgHistoryLimit: 'Cuántos chats se devuelven en una solicitud',
conversationsListApi: 'Obtener lista de conversaciones',
conversationsListApiTip: 'Obtiene la lista de sesiones del usuario actual. De forma predeterminada, se devuelven las últimas 20 sesiones.',
conversationsListFirstIdTip: 'ID del último registro en la página actual, predeterminado ninguno.',
conversationsListLimitTip: 'Cuántos chats se devuelven en una solicitud',
conversationRenamingApi: 'Renombrar conversación',
conversationRenamingApiTip: 'Cambia el nombre de las conversaciones; el nombre se muestra en las interfaces de cliente de múltiples sesiones.',
conversationRenamingNameTip: 'Nuevo nombre',
parametersApi: 'Obtener información de parámetros de la aplicación',
parametersApiTip: 'Recupera los parámetros de entrada configurados, incluidos los nombres de variables, los nombres de campos, los tipos y los valores predeterminados. Normalmente se utiliza para mostrar estos campos en un formulario o completar los valores predeterminados después de que el cliente se carga.',
},
develop: {
requestBody: 'Cuerpo de la solicitud',
pathParams: 'Parámetros de ruta',
query: 'Consulta',
toc: 'Contenido',
},
regenerate: 'Regenerar',
}
export default translation

View File

@@ -0,0 +1,419 @@
const translation = {
pageTitle: {
line1: 'INDICACIÓN',
line2: 'Ingeniería',
},
orchestrate: 'Orquestar',
promptMode: {
simple: 'Cambia a Modo Experto para editar toda la INDICACIÓN',
advanced: 'Modo Experto',
switchBack: 'Volver',
advancedWarning: {
title: 'Has cambiado a Modo Experto, y una vez que modifiques la INDICACIÓN, NO PODRÁS regresar al modo básico.',
description: 'En Modo Experto, puedes editar toda la INDICACIÓN.',
learnMore: 'Aprender más',
ok: 'OK',
},
operation: {
addMessage: 'Agregar Mensaje',
},
contextMissing: 'Componente de contexto faltante, la efectividad de la indicación puede no ser buena.',
},
operation: {
applyConfig: 'Publicar',
resetConfig: 'Restablecer',
debugConfig: 'Depurar',
addFeature: 'Agregar Función',
automatic: 'Automático',
stopResponding: 'Dejar de responder',
agree: 'Me gusta',
disagree: 'No me gusta',
cancelAgree: 'Cancelar Me gusta',
cancelDisagree: 'Cancelar No me gusta',
userAction: 'Usuario ',
},
notSetAPIKey: {
title: 'La clave del proveedor LLM no se ha establecido',
trailFinished: 'Prueba terminada',
description: 'La clave del proveedor LLM no se ha establecido, y debe configurarse antes de depurar.',
settingBtn: 'Ir a configuración',
},
trailUseGPT4Info: {
title: 'No se admite GPT-4 ahora',
description: 'Para usar GPT-4, configure la clave API.',
},
feature: {
groupChat: {
title: 'Mejorar chat',
description: 'Agregar configuraciones previas a la conversación en aplicaciones puede mejorar la experiencia del usuario.',
},
groupExperience: {
title: 'Mejorar experiencia',
},
conversationOpener: {
title: 'Iniciadores de conversación',
description: 'En una aplicación de chat, la primera oración que la IA dice al usuario suele usarse como bienvenida.',
},
suggestedQuestionsAfterAnswer: {
title: 'Seguimiento',
description: 'Configurar sugerencias de próximas preguntas puede proporcionar una mejor conversación.',
resDes: '3 sugerencias para la próxima pregunta del usuario.',
tryToAsk: 'Intenta preguntar',
},
moreLikeThis: {
title: 'Más como esto',
description: 'Genera múltiples textos a la vez, luego edítalos y continúa generando',
generateNumTip: 'Número de veces generado cada vez',
tip: 'Usar esta función incurrirá en un costo adicional de tokens',
},
speechToText: {
title: 'Voz a Texto',
description: 'Una vez habilitado, puedes usar la entrada de voz.',
resDes: 'Entrada de voz habilitada',
},
textToSpeech: {
title: 'Texto a Voz',
description: 'Una vez habilitado, el texto puede convertirse en voz.',
resDes: 'Texto a Audio habilitado',
},
citation: {
title: 'Citas y Atribuciones',
description: 'Una vez habilitado, muestra el documento fuente y la sección atribuida del contenido generado.',
resDes: 'Citas y Atribuciones habilitadas',
},
annotation: {
title: 'Respuesta de Anotación',
description: 'Puedes agregar manualmente una respuesta de alta calidad a la caché para una coincidencia prioritaria con preguntas similares de los usuarios.',
resDes: 'Respuesta de Anotación habilitada',
scoreThreshold: {
title: 'Umbral de Puntuación',
description: 'Usado para establecer el umbral de similitud para la respuesta de anotación.',
easyMatch: 'Coincidencia Fácil',
accurateMatch: 'Coincidencia Precisa',
},
matchVariable: {
title: 'Variable de Coincidencia',
choosePlaceholder: 'Elige la variable de coincidencia',
},
cacheManagement: 'Anotaciones',
cached: 'Anotado',
remove: 'Eliminar',
removeConfirm: '¿Eliminar esta anotación?',
add: 'Agregar anotación',
edit: 'Editar anotación',
},
dataSet: {
title: 'Contexto',
noData: 'Puedes importar Conocimiento como contexto',
words: 'Palabras',
textBlocks: 'Bloques de Texto',
selectTitle: 'Seleccionar Conocimiento de referencia',
selected: 'Conocimiento seleccionado',
noDataSet: 'No se encontró Conocimiento',
toCreate: 'Ir a crear',
notSupportSelectMulti: 'Actualmente solo se admite un Conocimiento',
queryVariable: {
title: 'Variable de Consulta',
tip: 'Esta variable se utilizará como entrada de consulta para la recuperación de contexto, obteniendo información de contexto relacionada con la entrada de esta variable.',
choosePlaceholder: 'Elige la variable de consulta',
noVar: 'No hay variables',
noVarTip: 'por favor, crea una variable en la sección Variables',
unableToQueryDataSet: 'No se puede consultar el Conocimiento',
unableToQueryDataSetTip: 'No se puede consultar el Conocimiento con éxito, por favor elige una variable de consulta de contexto en la sección de contexto.',
ok: 'OK',
contextVarNotEmpty: 'La variable de consulta de contexto no puede estar vacía',
deleteContextVarTitle: '¿Eliminar variable "{{varName}}"?',
deleteContextVarTip: 'Esta variable ha sido establecida como una variable de consulta de contexto, y eliminarla afectará el uso normal del Conocimiento. Si aún necesitas eliminarla, por favor vuelve a seleccionarla en la sección de contexto.',
},
},
tools: {
title: 'Herramientas',
tips: 'Las herramientas proporcionan un método estándar de llamada API, tomando la entrada del usuario o variables como parámetros de solicitud para consultar datos externos como contexto.',
toolsInUse: '{{count}} herramientas en uso',
modal: {
title: 'Herramienta',
toolType: {
title: 'Tipo de Herramienta',
placeholder: 'Por favor selecciona el tipo de herramienta',
},
name: {
title: 'Nombre',
placeholder: 'Por favor ingresa el nombre',
},
variableName: {
title: 'Nombre de la Variable',
placeholder: 'Por favor ingresa el nombre de la variable',
},
},
},
conversationHistory: {
title: 'Historial de Conversaciones',
description: 'Establecer nombres de prefijo para los roles de conversación',
tip: 'El Historial de Conversaciones no está habilitado, por favor agrega <histories> en la indicación arriba.',
learnMore: 'Aprender más',
editModal: {
title: 'Editar Nombres de Roles de Conversación',
userPrefix: 'Prefijo de Usuario',
assistantPrefix: 'Prefijo de Asistente',
},
},
toolbox: {
title: 'CAJA DE HERRAMIENTAS',
},
moderation: {
title: 'Moderación de contenido',
description: 'Asegura la salida del modelo utilizando API de moderación o manteniendo una lista de palabras sensibles.',
allEnabled: 'Contenido de ENTRADA/SALIDA Habilitado',
inputEnabled: 'Contenido de ENTRADA Habilitado',
outputEnabled: 'Contenido de SALIDA Habilitado',
modal: {
title: 'Configuración de moderación de contenido',
provider: {
title: 'Proveedor',
openai: 'Moderación de OpenAI',
openaiTip: {
prefix: 'La Moderación de OpenAI requiere una clave API de OpenAI configurada en la ',
suffix: '.',
},
keywords: 'Palabras clave',
},
keywords: {
tip: 'Una por línea, separadas por saltos de línea. Hasta 100 caracteres por línea.',
placeholder: 'Una por línea, separadas por saltos de línea',
line: 'Línea',
},
content: {
input: 'Moderar Contenido de ENTRADA',
output: 'Moderar Contenido de SALIDA',
preset: 'Respuestas predefinidas',
placeholder: 'Contenido de respuestas predefinidas aquí',
condition: 'Moderar Contenido de ENTRADA y SALIDA habilitado al menos uno',
fromApi: 'Las respuestas predefinidas son devueltas por la API',
errorMessage: 'Las respuestas predefinidas no pueden estar vacías',
supportMarkdown: 'Markdown soportado',
},
openaiNotConfig: {
before: 'La Moderación de OpenAI requiere una clave API de OpenAI configurada en la',
after: '',
},
},
},
},
automatic: {
title: 'Orquestación automatizada de aplicaciones',
description: 'Describe tu escenario, Dify orquestará una aplicación para ti.',
intendedAudience: '¿Quién es el público objetivo?',
intendedAudiencePlaceHolder: 'p.ej. Estudiante',
solveProblem: '¿Qué problemas esperan que la IA pueda resolver para ellos?',
solveProblemPlaceHolder: 'p.ej. Extraer ideas y resumir información de informes y artículos largos',
generate: 'Generar',
audiencesRequired: 'Audiencia requerida',
problemRequired: 'Problema requerido',
resTitle: 'Hemos orquestado la siguiente aplicación para ti.',
apply: 'Aplicar esta orquestación',
noData: 'Describe tu caso de uso a la izquierda, la vista previa de la orquestación se mostrará aquí.',
loading: 'Orquestando la aplicación para ti...',
overwriteTitle: '¿Sobrescribir configuración existente?',
overwriteMessage: 'Aplicar esta orquestación sobrescribirá la configuración existente.',
},
resetConfig: {
title: '¿Confirmar restablecimiento?',
message: 'Restablecer descarta cambios, restaurando la última configuración publicada.',
},
errorMessage: {
nameOfKeyRequired: 'nombre de la clave: {{key}} requerido',
valueOfVarRequired: 'el valor de {{key}} no puede estar vacío',
queryRequired: 'Se requiere texto de solicitud.',
waitForResponse: 'Por favor espera la respuesta al mensaje anterior para completar.',
waitForBatchResponse: 'Por favor espera la respuesta a la tarea por lotes para completar.',
notSelectModel: 'Por favor elige un modelo',
waitForImgUpload: 'Por favor espera a que la imagen se cargue',
},
chatSubTitle: 'Instrucciones',
completionSubTitle: 'Prefijo de la Indicación',
promptTip: 'Las indicaciones guían las respuestas de la IA con instrucciones y restricciones. Inserta variables como {{input}}. Esta indicación no será visible para los usuarios.',
formattingChangedTitle: 'Formato cambiado',
formattingChangedText: 'Modificar el formato restablecerá el área de depuración, ¿estás seguro?',
variableTitle: 'Variables',
variableTip: 'Los usuarios completan las variables en un formulario, reemplazando automáticamente las variables en la indicación.',
notSetVar: 'Las variables permiten a los usuarios introducir palabras de indicación u observaciones de apertura al completar formularios. Puedes intentar ingresar "{{input}}" en las palabras de indicación.',
autoAddVar: 'Variables no definidas referenciadas en la pre-indicación, ¿quieres agregarlas en el formulario de entrada del usuario?',
variableTable: {
key: 'Clave de Variable',
name: 'Nombre del Campo de Entrada del Usuario',
optional: 'Opcional',
type: 'Tipo de Entrada',
action: 'Acciones',
typeString: 'Cadena',
typeSelect: 'Seleccionar',
},
varKeyError: {
canNoBeEmpty: 'Se requiere {{key}}',
tooLong: '{{key}} demasiado larga. No puede tener más de 30 caracteres',
notValid: '{{key}} no es válida. Solo puede contener letras, números y guiones bajos',
notStartWithNumber: '{{key}} no puede comenzar con un número',
keyAlreadyExists: '{{key}} ya existe',
},
otherError: {
promptNoBeEmpty: 'La indicación no puede estar vacía',
historyNoBeEmpty: 'El historial de conversaciones debe establecerse en la indicación',
queryNoBeEmpty: 'La consulta debe establecerse en la indicación',
},
variableConfig: {
'addModalTitle': 'Agregar Campo de Entrada',
'editModalTitle': 'Editar Campo de Entrada',
'description': 'Configuración para la variable {{varName}}',
'fieldType': 'Tipo de campo',
'string': 'Texto corto',
'text-input': 'Texto corto',
'paragraph': 'Párrafo',
'select': 'Seleccionar',
'number': 'Número',
'notSet': 'No configurado, intenta escribir {{input}} en la indicación de prefijo',
'stringTitle': 'Opciones de cuadro de texto de formulario',
'maxLength': 'Longitud máxima',
'options': 'Opciones',
'addOption': 'Agregar opción',
'apiBasedVar': 'Variable basada en API',
'varName': 'Nombre de la Variable',
'labelName': 'Nombre de la Etiqueta',
'inputPlaceholder': 'Por favor ingresa',
'content': 'Contenido',
'required': 'Requerido',
'errorMsg': {
varNameRequired: 'Nombre de la variable es requerido',
labelNameRequired: 'Nombre de la etiqueta es requerido',
varNameCanBeRepeat: 'El nombre de la variable no puede repetirse',
atLeastOneOption: 'Se requiere al menos una opción',
optionRepeat: 'Hay opciones repetidas',
},
},
vision: {
name: 'Visión',
description: 'Habilitar Visión permitirá al modelo recibir imágenes y responder preguntas sobre ellas.',
settings: 'Configuraciones',
visionSettings: {
title: 'Configuraciones de Visión',
resolution: 'Resolución',
resolutionTooltip: `Baja resolución permitirá que el modelo reciba una versión de baja resolución de 512 x 512 de la imagen, y represente la imagen con un presupuesto de 65 tokens. Esto permite que la API devuelva respuestas más rápidas y consuma menos tokens de entrada para casos de uso que no requieren alta detalle.
\n
Alta resolución permitirá primero que el modelo vea la imagen de baja resolución y luego crea recortes detallados de las imágenes de entrada como cuadrados de 512px basados en el tamaño de la imagen de entrada. Cada uno de los recortes detallados usa el doble del presupuesto de tokens para un total de 129 tokens.`,
high: 'Alta',
low: 'Baja',
uploadMethod: 'Método de carga',
both: 'Ambos',
localUpload: 'Carga Local',
url: 'URL',
uploadLimit: 'Límite de carga',
},
},
voice: {
name: 'Voz',
defaultDisplay: 'Voz Predeterminada',
description: 'Configuraciones de voz a texto',
settings: 'Configuraciones',
voiceSettings: {
title: 'Configuraciones de Voz',
language: 'Idioma',
resolutionTooltip: 'Soporte de idioma para voz a texto.',
voice: 'Voz',
autoPlay: 'Auto-reproducción',
autoPlayEnabled: 'Abierto',
autoPlayDisabled: 'Cierre',
},
},
openingStatement: {
title: 'Apertura de Conversación',
add: 'Agregar',
writeOpener: 'Escribir apertura',
placeholder: 'Escribe tu mensaje de apertura aquí, puedes usar variables, intenta escribir {{variable}}.',
openingQuestion: 'Preguntas de Apertura',
noDataPlaceHolder: 'Iniciar la conversación con el usuario puede ayudar a la IA a establecer una conexión más cercana con ellos en aplicaciones de conversación.',
varTip: 'Puedes usar variables, intenta escribir {{variable}}',
tooShort: 'Se requieren al menos 20 palabras en la indicación inicial para generar una apertura de conversación.',
notIncludeKey: 'La indicación inicial no incluye la variable: {{key}}. Por favor agrégala a la indicación inicial.',
},
modelConfig: {
model: 'Modelo',
setTone: 'Establecer tono de respuestas',
title: 'Modelo y Parámetros',
modeType: {
chat: 'Chat',
completion: 'Completar',
},
},
inputs: {
title: 'Depurar y Previsualizar',
noPrompt: 'Intenta escribir alguna indicación en la entrada de pre-indicación',
userInputField: 'Campo de Entrada del Usuario',
noVar: 'Completa el valor de la variable, que se reemplazará automáticamente en la palabra de indicación cada vez que se inicie una nueva sesión.',
chatVarTip: 'Completa el valor de la variable, que se reemplazará automáticamente en la palabra de indicación cada vez que se inicie una nueva sesión',
completionVarTip: 'Completa el valor de la variable, que se reemplazará automáticamente en las palabras de indicación cada vez que se envíe una pregunta.',
previewTitle: 'Vista previa de la indicación',
queryTitle: 'Contenido de la consulta',
queryPlaceholder: 'Por favor ingresa el texto de la solicitud.',
run: 'EJECUTAR',
},
result: 'Texto de salida',
datasetConfig: {
settingTitle: 'Configuraciones de Recuperación',
knowledgeTip: 'Haz clic en el botón “+” para agregar conocimiento',
retrieveOneWay: {
title: 'Recuperación N-a-1',
description: 'Basado en la intención del usuario y las descripciones de Conocimiento, el Agente selecciona autónomamente el mejor Conocimiento para consultar. Ideal para aplicaciones con Conocimiento limitado y distintivo.',
},
retrieveMultiWay: {
title: 'Recuperación Multi-camino',
description: 'Basado en la intención del usuario, consulta a través de todo el Conocimiento, recupera texto relevante de múltiples fuentes y selecciona los mejores resultados que coinciden con la consulta del usuario después de reordenar. Se requiere configuración de la API del modelo de Reordenar.',
},
rerankModelRequired: 'Se requiere modelo de Reordenar',
params: 'Parámetros',
top_k: 'Top K',
top_kTip: 'Usado para filtrar fragmentos que son más similares a las preguntas del usuario. El sistema también ajustará dinámicamente el valor de Top K, de acuerdo con los max_tokens del modelo seleccionado.',
score_threshold: 'Umbral de Puntuación',
score_thresholdTip: 'Usado para establecer el umbral de similitud para la filtración de fragmentos.',
retrieveChangeTip: 'Modificar el modo de índice y el modo de recuperación puede afectar las aplicaciones asociadas con este Conocimiento.',
},
debugAsSingleModel: 'Depurar como Modelo Único',
debugAsMultipleModel: 'Depurar como Múltiples Modelos',
duplicateModel: 'Duplicar',
publishAs: 'Publicar como',
assistantType: {
name: 'Tipo de Asistente',
chatAssistant: {
name: 'Asistente Básico',
description: 'Construye un asistente basado en chat usando un Modelo de Lenguaje Grande',
},
agentAssistant: {
name: 'Asistente Agente',
description: 'Construye un Agente inteligente que puede elegir herramientas autónomamente para completar tareas',
},
},
agent: {
agentMode: 'Modo Agente',
agentModeDes: 'Establecer el tipo de modo de inferencia para el agente',
agentModeType: {
ReACT: 'ReAct',
functionCall: 'Llamada de Función',
},
setting: {
name: 'Configuraciones del Agente',
description: 'Las configuraciones del Asistente Agente permiten establecer el modo del agente y funciones avanzadas como indicaciones integradas, disponibles solo en el tipo Agente.',
maximumIterations: {
name: 'Iteraciones Máximas',
description: 'Limitar el número de iteraciones que un asistente agente puede ejecutar',
},
},
buildInPrompt: 'Indicación Integrada',
firstPrompt: 'Primera Indicación',
nextIteration: 'Próxima Iteración',
promptPlaceholder: 'Escribe tu indicación aquí',
tools: {
name: 'Herramientas',
description: 'El uso de herramientas puede extender las capacidades del LLM, como buscar en internet o realizar cálculos científicos',
enabled: 'Habilitado',
},
},
}
export default translation

View File

@@ -0,0 +1,98 @@
const translation = {
title: 'Registros',
description: 'Los registros registran el estado de ejecución de la aplicación, incluyendo las entradas de usuario y las respuestas de la IA.',
dateTimeFormat: 'MM/DD/YYYY hh:mm A',
table: {
header: {
updatedTime: 'Hora actualizada',
time: 'Hora creada',
endUser: 'Usuario Final o Cuenta',
input: 'Entrada',
output: 'Salida',
summary: 'Título',
messageCount: 'Cantidad de Mensajes',
userRate: 'Tasa de Usuario',
adminRate: 'Tasa de Op.',
startTime: 'HORA DE INICIO',
status: 'ESTADO',
runtime: 'TIEMPO DE EJECUCIÓN',
tokens: 'TOKENS',
user: 'USUARIO FINAL O CUENTA',
version: 'VERSIÓN',
},
pagination: {
previous: 'Anterior',
next: 'Siguiente',
},
empty: {
noChat: 'Aún no hay conversación',
noOutput: 'Sin salida',
element: {
title: '¿Hay alguien ahí?',
content: 'Observa y anota las interacciones entre los usuarios finales y las aplicaciones de IA aquí para mejorar continuamente la precisión de la IA. Puedes probar <shareLink>compartiendo</shareLink> o <testLink>probando</testLink> la aplicación web tú mismo, y luego regresar a esta página.',
},
},
},
detail: {
time: 'Tiempo',
conversationId: 'ID de Conversación',
promptTemplate: 'Plantilla de Indicación',
promptTemplateBeforeChat: 'Plantilla de Indicación Antes de la Conversación · Como Mensaje del Sistema',
annotationTip: 'Mejoras Marcadas por {{user}}',
timeConsuming: '',
second: 's',
tokenCost: 'Tokens gastados',
loading: 'cargando',
operation: {
like: 'me gusta',
dislike: 'no me gusta',
addAnnotation: 'Agregar Mejora',
editAnnotation: 'Editar Mejora',
annotationPlaceholder: 'Ingresa la respuesta esperada que deseas que la IA responda, lo cual se puede utilizar para el ajuste del modelo y la mejora continua de la calidad de generación de texto en el futuro.',
},
variables: 'Variables',
uploadImages: 'Imágenes Cargadas',
modelParams: 'Parámetros del modelo',
},
filter: {
period: {
today: 'Hoy',
last7days: 'Últimos 7 Días',
last4weeks: 'Últimas 4 semanas',
last3months: 'Últimos 3 meses',
last12months: 'Últimos 12 meses',
monthToDate: 'Mes hasta la fecha',
quarterToDate: 'Trimestre hasta la fecha',
yearToDate: 'Año hasta la fecha',
allTime: 'Todo el tiempo',
},
annotation: {
all: 'Todos',
annotated: 'Mejoras Anotadas ({{count}} elementos)',
not_annotated: 'No Anotadas',
},
sortBy: 'Ordenar por:',
descending: 'descendente',
ascending: 'ascendente',
},
workflowTitle: 'Registros de Flujo de Trabajo',
workflowSubtitle: 'El registro registró la operación de Automate.',
runDetail: {
title: 'Registro de Conversación',
workflowTitle: 'Detalle del Registro',
fileListLabel: 'Detalles del archivo',
fileListDetail: 'Detalle',
},
promptLog: 'Registro de Indicación',
agentLog: 'Registro de Agente',
viewLog: 'Ver Registro',
agentLogDetail: {
agentMode: 'Modo de Agente',
toolUsed: 'Herramienta Utilizada',
iterations: 'Iteraciones',
iteration: 'Iteración',
finalProcessing: 'Procesamiento Final',
},
}
export default translation

View File

@@ -0,0 +1,172 @@
const translation = {
welcome: {
firstStepTip: 'Para comenzar,',
enterKeyTip: 'ingresa tu clave de API de OpenAI a continuación',
getKeyTip: 'Obtén tu clave de API desde el panel de control de OpenAI',
placeholder: 'Tu clave de API de OpenAI (ej. sk-xxxx)',
},
apiKeyInfo: {
cloud: {
trial: {
title: 'Estás utilizando la cuota de prueba de {{providerName}}.',
description: 'La cuota de prueba se proporciona para su uso de prueba. Antes de que se agoten las llamadas de la cuota de prueba, configure su propio proveedor de modelos o compre cuota adicional.',
},
exhausted: {
title: 'Tu cuota de prueba se ha agotado, por favor configura tu APIKey.',
description: 'Tu cuota de prueba se ha agotado. Por favor, configure su propio proveedor de modelos o compre cuota adicional.',
},
},
selfHost: {
title: {
row1: 'Para comenzar,',
row2: 'configura primero tu proveedor de modelos.',
},
},
callTimes: 'Veces llamadas',
usedToken: 'Token utilizados',
setAPIBtn: 'Ir a configurar proveedor de modelos',
tryCloud: 'O prueba la versión en la nube de Dify con una cotización gratuita',
},
overview: {
title: 'Resumen',
appInfo: {
explanation: 'Aplicación web de IA lista para usar',
accessibleAddress: 'URL pública',
preview: 'Vista previa',
regenerate: 'Regenerar',
regenerateNotice: '¿Deseas regenerar la URL pública?',
preUseReminder: 'Por favor, habilita la aplicación web antes de continuar.',
settings: {
entry: 'Configuración',
title: 'Configuración de la aplicación web',
webName: 'Nombre de la aplicación web',
webDesc: 'Descripción de la aplicación web',
webDescTip: 'Este texto se mostrará en el lado del cliente, proporcionando una guía básica sobre cómo usar la aplicación',
webDescPlaceholder: 'Ingresa la descripción de la aplicación web',
language: 'Idioma',
workflow: {
title: 'Pasos del flujo de trabajo',
show: 'Mostrar',
hide: 'Ocultar',
subTitle: 'Detalles del flujo de trabajo',
showDesc: 'Mostrar u ocultar detalles del flujo de trabajo en WebApp',
},
chatColorTheme: 'Tema de color del chat',
chatColorThemeDesc: 'Establece el tema de color del chatbot',
chatColorThemeInverted: 'Invertido',
invalidHexMessage: 'Valor hexadecimal no válido',
more: {
entry: 'Mostrar más configuraciones',
copyright: 'Derechos de autor',
copyRightPlaceholder: 'Ingresa el nombre del autor o la organización',
privacyPolicy: 'Política de privacidad',
privacyPolicyPlaceholder: 'Ingresa el enlace de la política de privacidad',
privacyPolicyTip: 'Ayuda a los visitantes a comprender los datos que recopila la aplicación, consulta la <privacyPolicyLink>Política de privacidad</privacyPolicyLink> de Dify.',
customDisclaimer: 'Descargo de responsabilidad personalizado',
customDisclaimerPlaceholder: 'Ingresa el texto de descargo de responsabilidad personalizado',
customDisclaimerTip: 'El texto de descargo de responsabilidad personalizado se mostrará en el lado del cliente, proporcionando información adicional sobre la aplicación',
copyrightTip: 'Mostrar información de derechos de autor en la aplicación web',
copyrightTooltip: 'Actualice al plan Profesional o superior',
},
sso: {
description: 'Todos los usuarios deben iniciar sesión con SSO antes de usar WebApp',
tooltip: 'Póngase en contacto con el administrador para habilitar el inicio de sesión único de WebApp',
label: 'Autenticación SSO',
title: 'WebApp SSO',
},
modalTip: 'Configuración de la aplicación web del lado del cliente.',
},
embedded: {
entry: 'Incrustado',
title: 'Incrustar en el sitio web',
explanation: 'Elige la forma de incrustar la aplicación de chat en tu sitio web',
iframe: 'Para agregar la aplicación de chat en cualquier lugar de tu sitio web, agrega este iframe a tu código HTML.',
scripts: 'Para agregar una aplicación de chat en la esquina inferior derecha de tu sitio web, agrega este código a tu HTML.',
chromePlugin: 'Instalar la extensión de Chrome de Dify Chatbot',
copied: 'Copiado',
copy: 'Copiar',
},
qrcode: {
title: 'Código QR para compartir',
scan: 'Escanear para compartir la aplicación',
download: 'Descargar código QR',
},
customize: {
way: 'forma',
entry: 'Personalizar',
title: 'Personalizar la aplicación web de IA',
explanation: 'Puedes personalizar el frontend de la aplicación web para adaptarlo a tus necesidades y estilo.',
way1: {
name: 'Bifurca el código del cliente, modifícalo y despliégalo en Vercel (recomendado)',
step1: 'Bifurca el código del cliente y modifícalo',
step1Tip: 'Haz clic aquí para bifurcar el código fuente en tu cuenta de GitHub y modificar el código',
step1Operation: 'Dify-WebClient',
step2: 'Despliégalo en Vercel',
step2Tip: 'Haz clic aquí para importar el repositorio en Vercel y desplegarlo',
step2Operation: 'Importar repositorio',
step3: 'Configura las variables de entorno',
step3Tip: 'Agrega las siguientes variables de entorno en Vercel',
},
way2: {
name: 'Escribe código del lado del cliente para llamar a la API y despliégalo en un servidor',
operation: 'Documentación',
},
},
launch: 'Lanzar',
},
apiInfo: {
title: 'API del servicio backend',
explanation: 'Fácilmente integrable en tu aplicación',
accessibleAddress: 'Punto de conexión de la API del servicio',
doc: 'Referencia de la API',
},
status: {
running: 'En servicio',
disable: 'Deshabilitar',
},
},
analysis: {
title: 'Análisis',
ms: 'ms',
tokenPS: 'Token/s',
totalMessages: {
title: 'Mensajes totales',
explanation: 'Recuento diario de interacciones con IA.',
},
totalConversations: {
title: 'Conversaciones totales',
explanation: 'Recuento diario de conversaciones con IA; ingeniería/depuración de prompts excluida.',
},
activeUsers: {
title: 'Usuarios activos',
explanation: 'Usuarios únicos que interactúan en preguntas y respuestas con IA; excluye la ingeniería/depuración de prompts.',
},
tokenUsage: {
title: 'Uso de tokens',
explanation: 'Refleja el uso diario de tokens del modelo de lenguaje para la aplicación, útil para el control de costos.',
consumed: 'Consumidos',
},
avgSessionInteractions: {
title: 'Interacciones promedio por sesión',
explanation: 'Recuento continuo de comunicación usuario-IA; para aplicaciones basadas en conversaciones.',
},
avgUserInteractions: {
title: 'Interacciones promedio por usuario',
explanation: 'Refleja la frecuencia de uso diario de los usuarios. Esta métrica refleja la fidelidad del usuario.',
},
userSatisfactionRate: {
title: 'Tasa de satisfacción del usuario',
explanation: 'El número de likes por cada 1,000 mensajes. Esto indica la proporción de respuestas con las que los usuarios están muy satisfechos.',
},
avgResponseTime: {
title: 'Tiempo promedio de respuesta',
explanation: 'Tiempo (ms) que tarda la IA en procesar/responder; para aplicaciones basadas en texto.',
},
tps: {
title: 'Velocidad de salida de tokens',
explanation: 'Mide el rendimiento del LLM. Cuenta la velocidad de salida de tokens del LLM desde el inicio de la solicitud hasta la finalización de la salida.',
},
},
}
export default translation

View File

@@ -0,0 +1,199 @@
const translation = {
createApp: 'CREAR APP',
types: {
all: 'Todos',
chatbot: 'Chatbot',
agent: 'Agente',
workflow: 'Flujo de trabajo',
completion: 'Finalización',
basic: 'Básico',
advanced: 'Flujo de chat',
},
duplicate: 'Duplicar',
duplicateTitle: 'Duplicar App',
export: 'Exportar DSL',
exportFailed: 'Error al exportar DSL.',
importDSL: 'Importar archivo DSL',
createFromConfigFile: 'Crear desde archivo DSL',
deleteAppConfirmTitle: '¿Eliminar esta app?',
deleteAppConfirmContent:
'Eliminar la app es irreversible. Los usuarios ya no podrán acceder a tu app y todas las configuraciones y registros de prompts se eliminarán permanentemente.',
appDeleted: 'App eliminada',
appDeleteFailed: 'Error al eliminar app',
join: 'Únete a la comunidad',
communityIntro:
'Discute con miembros del equipo, colaboradores y desarrolladores en diferentes canales.',
roadmap: 'Ver nuestro plan de desarrollo',
newApp: {
startFromBlank: 'Crear desde cero',
startFromTemplate: 'Crear desde plantilla',
captionAppType: '¿Qué tipo de app quieres crear?',
chatbotDescription: 'Crea una aplicación basada en chat. Esta app utiliza un formato de pregunta y respuesta, permitiendo múltiples rondas de conversación continua.',
completionDescription: 'Crea una aplicación que genera texto de alta calidad basado en prompts, como la generación de artículos, resúmenes, traducciones y más.',
completionWarning: 'Este tipo de app ya no será compatible.',
agentDescription: 'Crea un Agente inteligente que puede elegir herramientas de forma autónoma para completar tareas',
workflowDescription: 'Crea una aplicación que genera texto de alta calidad basado en flujos de trabajo con un alto grado de personalización. Es adecuado para usuarios experimentados.',
workflowWarning: 'Actualmente en beta',
chatbotType: 'Método de orquestación del Chatbot',
basic: 'Básico',
basicTip: 'Para principiantes, se puede cambiar a Chatflow más adelante',
basicFor: 'PARA PRINCIPIANTES',
basicDescription: 'La Orquestación Básica permite la orquestación de una app de Chatbot utilizando configuraciones simples, sin la capacidad de modificar los prompts incorporados. Es adecuado para principiantes.',
advanced: 'Chatflow',
advancedFor: 'Para usuarios avanzados',
advancedDescription: 'La Orquestación de Flujo de Trabajo orquesta Chatbots en forma de flujos de trabajo, ofreciendo un alto grado de personalización, incluida la capacidad de editar los prompts incorporados. Es adecuado para usuarios experimentados.',
captionName: 'Icono y nombre de la app',
appNamePlaceholder: 'Asigna un nombre a tu app',
captionDescription: 'Descripción',
appDescriptionPlaceholder: 'Ingresa la descripción de la app',
useTemplate: 'Usar esta plantilla',
previewDemo: 'Vista previa de demostración',
chatApp: 'Asistente',
chatAppIntro:
'Quiero construir una aplicación basada en chat. Esta app utiliza un formato de pregunta y respuesta, permitiendo múltiples rondas de conversación continua.',
agentAssistant: 'Nuevo Asistente de Agente',
completeApp: 'Generador de Texto',
completeAppIntro:
'Quiero crear una aplicación que genera texto de alta calidad basado en prompts, como la generación de artículos, resúmenes, traducciones y más.',
showTemplates: 'Quiero elegir una plantilla',
hideTemplates: 'Volver a la selección de modo',
Create: 'Crear',
Cancel: 'Cancelar',
nameNotEmpty: 'El nombre no puede estar vacío',
appTemplateNotSelected: 'Por favor, selecciona una plantilla',
appTypeRequired: 'Por favor, selecciona un tipo de app',
appCreated: 'App creada',
appCreateFailed: 'Error al crear app',
Confirm: 'Confirmar',
caution: 'Cautela',
appCreateDSLErrorTitle: 'Incompatibilidad de versiones',
appCreateDSLErrorPart2: '¿Quieres continuar?',
appCreateDSLErrorPart4: 'Versión de DSL compatible con el sistema:',
appCreateDSLErrorPart1: 'Se ha detectado una diferencia significativa en las versiones de DSL. Forzar la importación puede hacer que la aplicación no funcione correctamente.',
appCreateDSLWarning: 'Precaución: La diferencia de versión de DSL puede afectar a determinadas funciones',
appCreateDSLErrorPart3: 'Versión actual de DSL de la aplicación:',
forBeginners: 'PARA PRINCIPIANTES',
learnMore: 'Aprende más',
noTemplateFoundTip: 'Intente buscar usando diferentes palabras clave.',
chatbotShortDescription: 'Chatbot basado en LLM con una configuración sencilla',
chooseAppType: 'Elija el tipo de aplicación',
noAppsFound: 'No se han encontrado aplicaciones',
workflowUserDescription: 'Orquestación del flujo de trabajo para tareas de una sola ronda, como la automatización y el procesamiento por lotes.',
advancedShortDescription: 'Flujo de trabajo para diálogos complejos de varios turnos con memoria',
forAdvanced: 'PARA USUARIOS AVANZADOS',
completionShortDescription: 'Asistente de IA para tareas de generación de texto',
optional: 'Opcional',
noIdeaTip: '¿No tienes ideas? Echa un vistazo a nuestras plantillas',
agentUserDescription: 'Un agente inteligente capaz de realizar un razonamiento iterativo y un uso autónomo de las herramientas para alcanzar los objetivos de las tareas.',
workflowShortDescription: 'Orquestación para tareas de automatización de un solo turno',
advancedUserDescription: 'Orquestación de flujos de trabajo para tareas de diálogo complejas de varias rondas con capacidades de memoria.',
agentShortDescription: 'Agente inteligente con razonamiento y uso autónomo de herramientas',
foundResults: '{{conteo}} Resultados',
noTemplateFound: 'No se han encontrado plantillas',
foundResult: '{{conteo}} Resultado',
chatbotUserDescription: 'Cree rápidamente un chatbot basado en LLM con una configuración sencilla. Puedes cambiar a Chatflow más tarde.',
completionUserDescription: 'Cree rápidamente un asistente de IA para tareas de generación de texto con una configuración sencilla.',
},
editApp: 'Editar información',
editAppTitle: 'Editar información de la app',
editDone: 'Información de la app actualizada',
editFailed: 'Error al actualizar información de la app',
iconPicker: {
ok: 'OK',
cancel: 'Cancelar',
emoji: 'Emoji',
image: 'Imagen',
},
switch: 'Cambiar a Orquestación de Flujo de Trabajo',
switchTipStart: 'Se creará una nueva copia de la app para ti y la nueva copia cambiará a Orquestación de Flujo de Trabajo. La nueva copia no permitirá',
switchTip: 'volver',
switchTipEnd: ' a la Orquestación Básica.',
switchLabel: 'La copia de la app a crear',
removeOriginal: 'Eliminar la app original',
switchStart: 'Iniciar cambio',
typeSelector: {
all: 'Todos los tipos',
chatbot: 'Chatbot',
agent: 'Agente',
workflow: 'Flujo de trabajo',
completion: 'Finalización',
advanced: 'Flujo de chat',
},
tracing: {
title: 'Rastreo del rendimiento de la app',
description: 'Configuración de un proveedor de LLMOps de terceros y rastreo del rendimiento de la app.',
config: 'Configurar',
collapse: 'Contraer',
expand: 'Expandir',
tracing: 'Rastreo',
disabled: 'Deshabilitado',
disabledTip: 'Por favor, configura el proveedor primero',
enabled: 'En servicio',
tracingDescription: 'Captura el contexto completo de la ejecución de la app, incluyendo llamadas LLM, contexto, prompts, solicitudes HTTP y más, en una plataforma de rastreo de terceros.',
configProviderTitle: {
configured: 'Configurado',
notConfigured: 'Configurar proveedor para habilitar el rastreo',
moreProvider: 'Más proveedores',
},
langsmith: {
title: 'LangSmith',
description: 'Una plataforma de desarrollo todo en uno para cada paso del ciclo de vida de la aplicación impulsada por LLM.',
},
langfuse: {
title: 'Langfuse',
description: 'Rastrea, evalúa, gestiona prompts y métricas para depurar y mejorar tu aplicación LLM.',
},
inUse: 'En uso',
configProvider: {
title: 'Configurar ',
placeholder: 'Ingresa tu {{key}}',
project: 'Proyecto',
publicKey: 'Clave pública',
secretKey: 'Clave secreta',
viewDocsLink: 'Ver documentación de {{key}}',
removeConfirmTitle: '¿Eliminar la configuración de {{key}}?',
removeConfirmContent: 'La configuración actual está en uso, eliminarla desactivará la función de rastreo.',
},
view: 'Vista',
opik: {
description: 'Opik es una plataforma de código abierto para evaluar, probar y monitorear aplicaciones LLM.',
title: 'Opik',
},
},
answerIcon: {
title: 'Usar el icono de la aplicación web para reemplazar 🤖',
descriptionInExplore: 'Si se debe usar el icono de la aplicación web para reemplazarlo 🤖 en Explore',
description: 'Si se va a usar el icono de la aplicación web para reemplazarlo 🤖 en la aplicación compartida',
},
importFromDSLUrl: 'URL de origen',
importFromDSLUrlPlaceholder: 'Pegar enlace DSL aquí',
importFromDSL: 'Importar desde DSL',
importFromDSLFile: 'Desde el archivo DSL',
mermaid: {
handDrawn: 'Dibujado a mano',
classic: 'Clásico',
},
openInExplore: 'Abrir en Explorar',
newAppFromTemplate: {
sidebar: {
Programming: 'Programación',
Agent: 'Agente',
Writing: 'Escritura',
Assistant: 'Asistente',
Recommended: 'Recomendado',
HR: 'HR',
Workflow: 'Flujo de trabajo',
},
byCategories: 'POR CATEGORÍAS',
searchAllTemplate: 'Buscar todas las plantillas...',
},
showMyCreatedAppsOnly: 'Mostrar solo mis aplicaciones creadas',
appSelector: {
label: 'APLICACIÓN',
placeholder: 'Selecciona una aplicación...',
noParams: 'No se necesitan parámetros',
params: 'PARÁMETROS DE LA APLICACIÓN',
},
}
export default translation

View File

@@ -0,0 +1,118 @@
const translation = {
currentPlan: 'Plan Actual',
upgradeBtn: {
plain: 'Actualizar Plan',
encourage: 'Actualizar Ahora',
encourageShort: 'Actualizar',
},
viewBilling: 'Administrar facturación y suscripciones',
buyPermissionDeniedTip: 'Por favor, contacta al administrador de tu empresa para suscribirte',
plansCommon: {
title: 'Elige un plan que sea adecuado para ti',
yearlyTip: '¡Obtén 2 meses gratis al suscribirte anualmente!',
mostPopular: 'Más Popular',
planRange: {
monthly: 'Mensual',
yearly: 'Anual',
},
month: 'mes',
year: 'año',
save: 'Ahorra ',
free: 'Gratis',
currentPlan: 'Plan Actual',
contractSales: 'Contactar ventas',
contractOwner: 'Contactar al administrador del equipo',
startForFree: 'Empezar gratis',
getStartedWith: 'Empezar con ',
contactSales: 'Contactar Ventas',
talkToSales: 'Hablar con Ventas',
modelProviders: 'Proveedores de Modelos',
teamMembers: 'Miembros del Equipo',
annotationQuota: 'Cuota de Anotación',
buildApps: 'Crear Aplicaciones',
vectorSpace: 'Espacio Vectorial',
vectorSpaceBillingTooltip: 'Cada 1MB puede almacenar aproximadamente 1.2 millones de caracteres de datos vectorizados (estimado utilizando OpenAI Embeddings, varía según los modelos).',
vectorSpaceTooltip: 'El Espacio Vectorial es el sistema de memoria a largo plazo necesario para que los LLMs comprendan tus datos.',
documentsUploadQuota: 'Cuota de Carga de Documentos',
documentProcessingPriority: 'Prioridad de Procesamiento de Documentos',
documentProcessingPriorityTip: 'Para una mayor prioridad de procesamiento de documentos, por favor actualiza tu plan.',
documentProcessingPriorityUpgrade: 'Procesa más datos con mayor precisión y velocidad.',
priority: {
'standard': 'Estándar',
'priority': 'Prioridad',
'top-priority': 'Prioridad Máxima',
},
logsHistory: 'Historial de Registros',
customTools: 'Herramientas Personalizadas',
unavailable: 'No disponible',
days: 'días',
unlimited: 'Ilimitado',
support: 'Soporte',
supportItems: {
communityForums: 'Foros Comunitarios',
emailSupport: 'Soporte por Correo Electrónico',
priorityEmail: 'Soporte Prioritario por Correo Electrónico y Chat',
logoChange: 'Cambio de Logotipo',
SSOAuthentication: 'Autenticación SSO',
personalizedSupport: 'Soporte Personalizado',
dedicatedAPISupport: 'Soporte API Dedicado',
customIntegration: 'Integración y Soporte Personalizado',
ragAPIRequest: 'Solicitudes API RAG',
bulkUpload: 'Carga Masiva de Documentos',
agentMode: 'Modo Agente',
workflow: 'Flujo de Trabajo',
llmLoadingBalancing: 'Balanceo de Carga LLM',
llmLoadingBalancingTooltip: 'Agrega múltiples claves API a los modelos, evitando efectivamente los límites de velocidad de API.',
},
comingSoon: 'Próximamente',
member: 'Miembro',
memberAfter: 'Miembro',
messageRequest: {
title: 'Créditos de Mensajes',
tooltip: 'Cuotas de invocación de mensajes para varios planes utilizando modelos de OpenAI (excepto gpt4). Los mensajes que excedan el límite utilizarán tu clave API de OpenAI.',
},
annotatedResponse: {
title: 'Límites de Cuota de Anotación',
tooltip: 'Edición manual y anotación de respuestas proporciona habilidades de respuesta a preguntas personalizadas y de alta calidad para aplicaciones (aplicable solo en aplicaciones de chat).',
},
ragAPIRequestTooltip: 'Se refiere al número de llamadas API que invocan solo las capacidades de procesamiento de base de conocimientos de Dify.',
receiptInfo: 'Solo el propietario del equipo y el administrador del equipo pueden suscribirse y ver la información de facturación.',
},
plans: {
sandbox: {
name: 'Sandbox',
description: 'Prueba gratuita de 200 veces GPT',
includesTitle: 'Incluye:',
},
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:',
},
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:',
},
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:',
},
},
vectorSpace: {
fullTip: 'El Espacio Vectorial está lleno.',
fullSolution: 'Actualiza tu plan para obtener más espacio.',
},
apps: {
fullTipLine1: 'Actualiza tu plan para',
fullTipLine2: 'crear más aplicaciones.',
},
annotatedResponse: {
fullTipLine1: 'Actualiza tu plan para',
fullTipLine2: 'anotar más conversaciones.',
quotaTitle: 'Cuota de Respuesta Anotada',
},
}
export default translation

View File

@@ -0,0 +1,642 @@
const translation = {
api: {
success: 'Éxito',
actionSuccess: 'Acción exitosa',
saved: 'Guardado',
create: 'Creado',
remove: 'Eliminado',
},
operation: {
create: 'Crear',
confirm: 'Confirmar',
cancel: 'Cancelar',
clear: 'Limpiar',
save: 'Guardar',
saveAndEnable: 'Guardar y habilitar',
edit: 'Editar',
add: 'Agregar',
added: 'Agregado',
refresh: 'Reiniciar',
reset: 'Restablecer',
search: 'Buscar',
change: 'Cambiar',
remove: 'Eliminar',
send: 'Enviar',
copy: 'Copiar',
lineBreak: 'Salto de línea',
sure: 'Estoy seguro',
download: 'Descargar',
delete: 'Eliminar',
settings: 'Configuraciones',
setup: 'Configurar',
getForFree: 'Obtener gratis',
reload: 'Recargar',
ok: 'OK',
log: 'Registro',
learnMore: 'Aprender más',
params: 'Parámetros',
duplicate: 'Duplicar',
rename: 'Renombrar',
audioSourceUnavailable: 'AudioSource no está disponible',
zoomOut: 'Alejar',
zoomIn: 'Acercar',
openInNewTab: 'Abrir en una nueva pestaña',
copyImage: 'Copiar imagen',
viewMore: 'VER MÁS',
regenerate: 'Regenerar',
close: 'Cerrar',
saveAndRegenerate: 'Guardar y regenerar fragmentos secundarios',
view: 'Vista',
submit: 'Enviar',
skip: 'Navío',
imageCopied: 'Imagen copiada',
deleteApp: 'Eliminar aplicación',
in: 'en',
viewDetails: 'Ver detalles',
copied: 'Copiado',
},
errorMsg: {
fieldRequired: '{{field}} es requerido',
urlError: 'la URL debe comenzar con http:// o https://',
},
placeholder: {
input: 'Por favor ingresa',
select: 'Por favor selecciona',
},
voice: {
language: {
zhHans: 'Chino',
zhHant: 'Chino Tradicional',
enUS: 'Inglés',
deDE: 'Alemán',
frFR: 'Francés',
esES: 'Español',
itIT: 'Italiano',
thTH: 'Tailandés',
idID: 'Indonesio',
jaJP: 'Japonés',
koKR: 'Coreano',
ptBR: 'Portugués',
ruRU: 'Ruso',
ukUA: 'Ucraniano',
viVN: 'Vietnamita',
plPL: 'Polaco',
roRO: 'Rumano',
hiIN: 'Hindi',
trTR: 'Turco',
faIR: 'Persa',
},
},
unit: {
char: 'caracteres',
},
actionMsg: {
noModification: 'No hay modificaciones en este momento.',
modifiedSuccessfully: 'Modificado exitosamente',
modifiedUnsuccessfully: 'Modificación no exitosa',
copySuccessfully: 'Copiado exitosamente',
paySucceeded: 'Pago exitoso',
payCancelled: 'Pago cancelado',
generatedSuccessfully: 'Generado exitosamente',
generatedUnsuccessfully: 'Generación no exitosa',
},
model: {
params: {
temperature: 'Temperatura',
temperatureTip:
'Controla la aleatoriedad: Reducir resulta en completaciones menos aleatorias. A medida que la temperatura se acerca a cero, el modelo se vuelve determinista y repetitivo.',
top_p: 'Top P',
top_pTip:
'Controla la diversidad mediante el muestreo de núcleo: 0.5 significa que se consideran la mitad de todas las opciones ponderadas por probabilidad.',
presence_penalty: 'Penalización por presencia',
presence_penaltyTip:
'Cuánto penalizar los nuevos tokens según si aparecen en el texto hasta ahora.\nAumenta la probabilidad del modelo de hablar sobre nuevos temas.',
frequency_penalty: 'Penalización por frecuencia',
frequency_penaltyTip:
'Cuánto penalizar los nuevos tokens según su frecuencia existente en el texto hasta ahora.\nDisminuye la probabilidad del modelo de repetir la misma línea literalmente.',
max_tokens: 'Tokens máximos',
max_tokensTip:
'Se usa para limitar la longitud máxima de la respuesta, en tokens. \nValores más grandes pueden limitar el espacio disponible para palabras de indicación, registros de chat y Conocimiento. \nSe recomienda configurarlo por debajo de dos tercios\ngpt-4-1106-preview, gpt-4-vision-preview tokens máximos (entrada 128k salida 4k)',
maxTokenSettingTip: 'Tu configuración de tokens máximos es alta, lo que puede limitar el espacio para indicaciones, consultas y datos. Considera configurarlo por debajo de 2/3.',
setToCurrentModelMaxTokenTip: 'Tokens máximos actualizados al 80% del máximo de tokens del modelo actual {{maxToken}}.',
stop_sequences: 'Secuencias de parada',
stop_sequencesTip: 'Hasta cuatro secuencias donde la API dejará de generar más tokens. El texto devuelto no contendrá la secuencia de parada.',
stop_sequencesPlaceholder: 'Ingresa la secuencia y presiona Tab',
},
tone: {
Creative: 'Creativo',
Balanced: 'Equilibrado',
Precise: 'Preciso',
Custom: 'Personalizado',
},
addMoreModel: 'Ir a configuraciones para agregar más modelos',
capabilities: 'Capacidades multimodales',
settingsLink: 'Configuración del proveedor de modelos',
},
menus: {
status: 'beta',
explore: 'Explorar',
apps: 'Estudio',
plugins: 'Plugins',
pluginsTips: 'Integrar plugins de terceros o crear Plugins AI compatibles con ChatGPT.',
datasets: 'Conocimiento',
datasetsTips: 'PRÓXIMAMENTE: Importa tus propios datos de texto o escribe datos en tiempo real a través de Webhook para la mejora del contexto LLM.',
newApp: 'Nueva App',
newDataset: 'Crear Conocimiento',
tools: 'Herramientas',
exploreMarketplace: 'Explora el mercado',
},
userProfile: {
settings: 'Configuraciones',
emailSupport: 'Soporte de Correo Electrónico',
workspace: 'Espacio de trabajo',
createWorkspace: 'Crear espacio de trabajo',
helpCenter: 'Ayuda',
communityFeedback: 'Comentarios',
roadmap: 'Hoja de ruta',
community: 'Comunidad',
about: 'Acerca de',
logout: 'Cerrar sesión',
},
settings: {
accountGroup: 'CUENTA',
workplaceGroup: 'ESPACIO DE TRABAJO',
account: 'Mi cuenta',
members: 'Miembros',
billing: 'Facturación',
integrations: 'Integraciones',
language: 'Idioma',
provider: 'Proveedor de Modelo',
dataSource: 'Fuente de Datos',
plugin: 'Plugins',
apiBasedExtension: 'Extensión basada en API',
generalGroup: 'GENERAL',
},
account: {
avatar: 'Avatar',
name: 'Nombre',
email: 'Correo electrónico',
password: 'Contraseña',
passwordTip: 'Puedes establecer una contraseña permanente si no deseas usar códigos de inicio de sesión temporales',
setPassword: 'Establecer una contraseña',
resetPassword: 'Restablecer contraseña',
currentPassword: 'Contraseña actual',
newPassword: 'Nueva contraseña',
confirmPassword: 'Confirmar contraseña',
notEqual: 'Las dos contraseñas son diferentes.',
langGeniusAccount: 'Cuenta Dify',
langGeniusAccountTip: 'Tu cuenta Dify y los datos de usuario asociados.',
editName: 'Editar Nombre',
showAppLength: 'Mostrar {{length}} apps',
delete: 'Eliminar cuenta',
deleteTip: 'Eliminar tu cuenta borrará permanentemente todos tus datos y no se podrán recuperar.',
deleteConfirmTip: 'Para confirmar, por favor envía lo siguiente desde tu correo electrónico registrado a ',
account: 'Cuenta',
myAccount: 'Mi Cuenta',
studio: 'Estudio Dify',
deletePrivacyLinkTip: 'Para obtener más información sobre cómo manejamos sus datos, consulte nuestra',
deletePrivacyLink: 'Política de privacidad.',
deleteSuccessTip: 'Su cuenta necesita tiempo para terminar de eliminarse. Te enviaremos un correo electrónico cuando todo esté listo.',
deleteLabel: 'Para confirmar, escriba su correo electrónico a continuación',
deletePlaceholder: 'Por favor, introduzca su correo electrónico',
sendVerificationButton: 'Enviar código de verificación',
verificationLabel: 'Código de verificación',
verificationPlaceholder: 'Pega el código de 6 dígitos',
permanentlyDeleteButton: 'Eliminar cuenta de forma permanente',
feedbackTitle: 'Retroalimentación',
feedbackLabel: '¿Cuéntanos por qué eliminaste tu cuenta?',
feedbackPlaceholder: 'Opcional',
},
members: {
team: 'Equipo',
invite: 'Agregar',
name: 'NOMBRE',
lastActive: 'ÚLTIMA ACTIVIDAD',
role: 'ROLES',
pending: 'Pendiente...',
owner: 'Propietario',
admin: 'Administrador',
adminTip: 'Puede crear aplicaciones y administrar configuraciones del equipo',
normal: 'Normal',
normalTip: 'Solo puede usar aplicaciones, no puede crear aplicaciones',
builder: 'Constructor',
builderTip: 'Puede crear y editar sus propias aplicaciones',
editor: 'Editor',
editorTip: 'Puede crear y editar aplicaciones',
datasetOperator: 'Administrador de Conocimiento',
datasetOperatorTip: 'Solo puede administrar la base de conocimiento',
inviteTeamMember: 'Agregar miembro del equipo',
inviteTeamMemberTip: 'Pueden acceder a tus datos del equipo directamente después de iniciar sesión.',
emailNotSetup: 'El servidor de correo no está configurado, por lo que no se pueden enviar correos de invitación. En su lugar, notifique a los usuarios el enlace de invitación que se emitirá después de la invitación.',
email: 'Correo electrónico',
emailInvalid: 'Formato de correo electrónico inválido',
emailPlaceholder: 'Por favor ingresa correos electrónicos',
sendInvite: 'Enviar invitación',
invitedAsRole: 'Invitado como usuario {{role}}',
invitationSent: 'Invitación enviada',
invitationSentTip: 'Invitación enviada, y pueden iniciar sesión en Dify para acceder a tus datos del equipo.',
invitationLink: 'Enlace de invitación',
failedInvitationEmails: 'Los siguientes usuarios no fueron invitados exitosamente',
ok: 'OK',
removeFromTeam: 'Eliminar del espacio de trabajo',
removeFromTeamTip: 'Se eliminará el acceso al equipo',
setAdmin: 'Establecer como administrador',
setMember: 'Establecer como miembro ordinario',
setBuilder: 'Establecer como constructor',
setEditor: 'Establecer como editor',
disInvite: 'Cancelar la invitación',
deleteMember: 'Eliminar miembro',
you: '(Tú)',
},
integrations: {
connected: 'Conectado',
google: 'Google',
googleAccount: 'Iniciar sesión con cuenta de Google',
github: 'GitHub',
githubAccount: 'Iniciar sesión con cuenta de GitHub',
connect: 'Conectar',
},
language: {
displayLanguage: 'Idioma de visualización',
timezone: 'Zona horaria',
},
provider: {
apiKey: 'Clave API',
enterYourKey: 'Ingresa tu clave API aquí',
invalidKey: 'Clave API de OpenAI inválida',
validatedError: 'Validación fallida: ',
validating: 'Validando clave...',
saveFailed: 'Error al guardar la clave API',
apiKeyExceedBill: 'Esta CLAVE API no tiene cuota disponible, por favor lee',
addKey: 'Agregar Clave',
comingSoon: 'Próximamente',
editKey: 'Editar',
invalidApiKey: 'Clave API inválida',
azure: {
apiBase: 'Base API',
apiBasePlaceholder: 'La URL base de la API de tu Endpoint de Azure OpenAI.',
apiKey: 'Clave API',
apiKeyPlaceholder: 'Ingresa tu clave API aquí',
helpTip: 'Aprender sobre el Servicio Azure OpenAI',
},
openaiHosted: {
openaiHosted: 'OpenAI Hospedado',
onTrial: 'EN PRUEBA',
exhausted: 'CUOTA AGOTADA',
desc: 'El servicio de hospedaje OpenAI proporcionado por Dify te permite usar modelos como GPT-3.5. Antes de que se agote tu cuota de prueba, necesitas configurar otros proveedores de modelos.',
callTimes: 'Tiempos de llamada',
usedUp: 'Cuota de prueba agotada. Agrega tu propio proveedor de modelos.',
useYourModel: 'Actualmente usando tu propio proveedor de modelos.',
close: 'Cerrar',
},
anthropicHosted: {
anthropicHosted: 'Claude de Anthropíc',
onTrial: 'EN PRUEBA',
exhausted: 'CUOTA AGOTADA',
desc: 'Modelo poderoso, que se destaca en una amplia gama de tareas, desde diálogos sofisticados y generación de contenido creativo hasta instrucciones detalladas.',
callTimes: 'Tiempos de llamada',
usedUp: 'Cuota de prueba agotada. Agrega tu propio proveedor de modelos.',
useYourModel: 'Actualmente usando tu propio proveedor de modelos.',
close: 'Cerrar',
trialQuotaTip: 'Su cuota de prueba antrópica caducará el 11/03/2025 y ya no estará disponible a partir de entonces. Por favor, aprovéchelo a tiempo.',
},
anthropic: {
using: 'La capacidad de incrustación está usando',
enableTip: 'Para habilitar el modelo de Anthropíc, primero necesitas vincularte al Servicio OpenAI o Azure OpenAI.',
notEnabled: 'No habilitado',
keyFrom: 'Obtén tu clave API de Anthropíc',
},
encrypted: {
front: 'Tu CLAVE API será encriptada y almacenada usando',
back: ' tecnología.',
},
},
modelProvider: {
notConfigured: 'El modelo del sistema aún no ha sido completamente configurado, y algunas funciones pueden no estar disponibles.',
systemModelSettings: 'Configuraciones del Modelo del Sistema',
systemModelSettingsLink: '¿Por qué es necesario configurar un modelo del sistema?',
selectModel: 'Selecciona tu modelo',
setupModelFirst: 'Por favor configura tu modelo primero',
systemReasoningModel: {
key: 'Modelo de Razonamiento del Sistema',
tip: 'Establece el modelo de inferencia predeterminado para ser usado en la creación de aplicaciones, así como características como la generación de nombres de diálogo y sugerencias de la próxima pregunta también usarán el modelo de inferencia predeterminado.',
},
embeddingModel: {
key: 'Modelo de Incrustación',
tip: 'Establece el modelo predeterminado para el procesamiento de incrustación de documentos del Conocimiento, tanto la recuperación como la importación del Conocimiento utilizan este modelo de Incrustación para el procesamiento de vectorización. Cambiarlo causará que la dimensión del vector entre el Conocimiento importado y la pregunta sea inconsistente, resultando en fallos en la recuperación. Para evitar fallos en la recuperación, por favor no cambies este modelo a voluntad.',
required: 'El Modelo de Incrustación es requerido',
},
speechToTextModel: {
key: 'Modelo de Voz a Texto',
tip: 'Establece el modelo predeterminado para la entrada de voz a texto en la conversación.',
},
ttsModel: {
key: 'Modelo de Texto a Voz',
tip: 'Establece el modelo predeterminado para la entrada de texto a voz en la conversación.',
},
rerankModel: {
key: 'Modelo de Reordenar',
tip: 'El modelo de reordenar reordenará la lista de documentos candidatos basada en la coincidencia semántica con la consulta del usuario, mejorando los resultados de clasificación semántica',
},
apiKey: 'CLAVE API',
quota: 'Cuota',
searchModel: 'Modelo de búsqueda',
noModelFound: 'No se encontró modelo para {{model}}',
models: 'Modelos',
showMoreModelProvider: 'Mostrar más proveedores de modelos',
selector: {
tip: 'Este modelo ha sido eliminado. Por favor agrega un modelo o selecciona otro modelo.',
emptyTip: 'No hay modelos disponibles',
emptySetting: 'Por favor ve a configuraciones para configurar',
rerankTip: 'Por favor configura el modelo de Reordenar',
},
card: {
quota: 'CUOTA',
onTrial: 'En prueba',
paid: 'Pagado',
quotaExhausted: 'Cuota agotada',
callTimes: 'Tiempos de llamada',
tokens: 'Tokens',
buyQuota: 'Comprar Cuota',
priorityUse: 'Uso prioritario',
removeKey: 'Eliminar CLAVE API',
tip: 'Se dará prioridad al uso de la cuota pagada. La cuota de prueba se utilizará después de que se agote la cuota pagada.',
},
item: {
deleteDesc: '{{modelName}} se está utilizando como modelo de razonamiento del sistema. Algunas funciones no estarán disponibles después de la eliminación. Por favor confirma.',
freeQuota: 'CUOTA GRATUITA',
},
addApiKey: 'Agrega tu CLAVE API',
invalidApiKey: 'Clave API inválida',
encrypted: {
front: 'Tu CLAVE API será encriptada y almacenada usando',
back: ' tecnología.',
},
freeQuota: {
howToEarn: 'Cómo ganar',
},
addMoreModelProvider: 'AGREGAR MÁS PROVEEDORES DE MODELOS',
addModel: 'Agregar Modelo',
modelsNum: '{{num}} Modelos',
showModels: 'Mostrar Modelos',
showModelsNum: 'Mostrar {{num}} Modelos',
collapse: 'Colapsar',
config: 'Configurar',
modelAndParameters: 'Modelo y Parámetros',
model: 'Modelo',
featureSupported: '{{feature}} soportado',
callTimes: 'Tiempos de llamada',
credits: 'Créditos de Mensaje',
buyQuota: 'Comprar Cuota',
getFreeTokens: 'Obtener Tokens gratis',
priorityUsing: 'Uso prioritario',
deprecated: 'Desaprobado',
confirmDelete: '¿Confirmar eliminación?',
quotaTip: 'Tokens gratuitos restantes disponibles',
loadPresets: 'Cargar Presets',
parameters: 'PARÁMETROS',
loadBalancing: 'Balanceo de carga',
loadBalancingDescription: 'Reduce la presión con múltiples conjuntos de credenciales.',
loadBalancingHeadline: 'Balanceo de Carga',
configLoadBalancing: 'Configurar Balanceo de Carga',
modelHasBeenDeprecated: 'Este modelo ha sido desaprobado',
providerManaged: 'Gestionado por el proveedor',
providerManagedDescription: 'Usa el único conjunto de credenciales proporcionado por el proveedor del modelo.',
defaultConfig: 'Configuración Predeterminada',
apiKeyStatusNormal: 'El estado de la CLAVE API es normal',
apiKeyRateLimit: 'Se alcanzó el límite de velocidad, disponible después de {{seconds}}s',
addConfig: 'Agregar Configuración',
editConfig: 'Editar Configuración',
loadBalancingLeastKeyWarning: 'Para habilitar el balanceo de carga se deben habilitar al menos 2 claves.',
loadBalancingInfo: 'Por defecto, el balanceo de carga usa la estrategia Round-robin. Si se activa el límite de velocidad, se aplicará un período de enfriamiento de 1 minuto.',
upgradeForLoadBalancing: 'Actualiza tu plan para habilitar el Balanceo de Carga.',
configureTip: 'Configurar la clave de API o agregar el modelo que se va a usar',
discoverMore: 'Descubre más en',
toBeConfigured: 'A configurar',
emptyProviderTip: 'Instale primero un proveedor de modelos.',
installProvider: 'Instalación de proveedores de modelos',
emptyProviderTitle: 'Proveedor de modelos no configurado',
},
dataSource: {
add: 'Agregar una fuente de datos',
connect: 'Conectar',
configure: 'Configurar',
notion: {
title: 'Notion',
description: 'Usando Notion como fuente de datos para el Conocimiento.',
connectedWorkspace: 'Espacio de trabajo conectado',
addWorkspace: 'Agregar espacio de trabajo',
connected: 'Conectado',
disconnected: 'Desconectado',
changeAuthorizedPages: 'Cambiar páginas autorizadas',
pagesAuthorized: 'Páginas autorizadas',
sync: 'Sincronizar',
remove: 'Eliminar',
selector: {
pageSelected: 'Páginas seleccionadas',
searchPages: 'Buscar páginas...',
noSearchResult: 'No hay resultados de búsqueda',
addPages: 'Agregar páginas',
preview: 'VISTA PREVIA',
},
},
website: {
title: 'Sitio web',
description: 'Importar contenido de sitios web usando un rastreador web.',
with: 'Con',
configuredCrawlers: 'Rastreadores configurados',
active: 'Activo',
inactive: 'Inactivo',
},
},
plugin: {
serpapi: {
apiKey: 'Clave API',
apiKeyPlaceholder: 'Ingresa tu clave API',
keyFrom: 'Obtén tu clave API de SerpAPI en la página de cuenta de SerpAPI',
},
},
apiBasedExtension: {
title: 'Las extensiones basadas en API proporcionan una gestión centralizada de API, simplificando la configuración para su fácil uso en las aplicaciones de Dify.',
link: 'Aprende cómo desarrollar tu propia Extensión API.',
linkUrl: 'https://docs.dify.ai/features/extension/api_based_extension',
add: 'Agregar Extensión API',
selector: {
title: 'Extensión API',
placeholder: 'Por favor selecciona extensión API',
manage: 'Gestionar Extensión API',
},
modal: {
title: 'Agregar Extensión API',
editTitle: 'Editar Extensión API',
name: {
title: 'Nombre',
placeholder: 'Por favor ingresa el nombre',
},
apiEndpoint: {
title: 'Punto final de la API',
placeholder: 'Por favor ingresa el punto final de la API',
},
apiKey: {
title: 'Clave API',
placeholder: 'Por favor ingresa la clave API',
lengthError: 'La longitud de la clave API no puede ser menor a 5 caracteres',
},
},
type: 'Tipo',
},
about: {
changeLog: 'Registro de cambios',
updateNow: 'Actualizar ahora',
nowAvailable: 'Dify {{version}} ya está disponible.',
latestAvailable: 'Dify {{version}} es la última versión disponible.',
},
appMenus: {
overview: 'Monitoreo',
promptEng: 'Orquestar',
apiAccess: 'Acceso API',
logAndAnn: 'Registros y Anuncios',
logs: 'Registros',
},
environment: {
testing: 'PRUEBAS',
development: 'DESARROLLO',
},
appModes: {
completionApp: 'Generador de Texto',
chatApp: 'Aplicación de Chat',
},
datasetMenus: {
documents: 'Documentos',
hitTesting: 'Pruebas de Recuperación',
settings: 'Configuraciones',
emptyTip: 'El Conocimiento no ha sido asociado, por favor ve a la aplicación o plugin para completar la asociación.',
viewDoc: 'Ver documentación',
relatedApp: 'aplicaciones vinculadas',
noRelatedApp: 'No hay aplicaciones vinculadas',
},
voiceInput: {
speaking: 'Habla ahora...',
converting: 'Convirtiendo a texto...',
notAllow: 'micrófono no autorizado',
},
modelName: {
'gpt-3.5-turbo': 'GPT-3.5-Turbo',
'gpt-3.5-turbo-16k': 'GPT-3.5-Turbo-16K',
'gpt-4': 'GPT-4',
'gpt-4-32k': 'GPT-4-32K',
'text-davinci-003': 'Text-Davinci-003',
'text-embedding-ada-002': 'Text-Embedding-Ada-002',
'whisper-1': 'Whisper-1',
'claude-instant-1': 'Claude-Instant',
'claude-2': 'Claude-2',
},
chat: {
renameConversation: 'Renombrar Conversación',
conversationName: 'Nombre de la conversación',
conversationNamePlaceholder: 'Por favor ingresa el nombre de la conversación',
conversationNameCanNotEmpty: 'Nombre de la conversación requerido',
citation: {
title: 'CITAS',
linkToDataset: 'Enlace al Conocimiento',
characters: 'Caracteres:',
hitCount: 'Conteo de recuperaciones:',
vectorHash: 'Hash de vector:',
hitScore: 'Puntuación de recuperación:',
},
inputPlaceholder: 'Hablar con el bot',
thinking: 'Pensamiento...',
thought: 'Pensamiento',
},
promptEditor: {
placeholder: 'Escribe tu palabra de indicación aquí, ingresa \'{\' para insertar una variable, ingresa \'/\' para insertar un bloque de contenido de indicación',
context: {
item: {
title: 'Contexto',
desc: 'Insertar plantilla de contexto',
},
modal: {
title: '{{num}} Conocimiento en Contexto',
add: 'Agregar Contexto ',
footer: 'Puedes gestionar contextos en la sección de Contexto abajo.',
},
},
history: {
item: {
title: 'Historial de Conversación',
desc: 'Insertar plantilla de mensaje histórico',
},
modal: {
title: 'EJEMPLO',
user: 'Hola',
assistant: '¡Hola! ¿Cómo puedo asistirte hoy?',
edit: 'Editar Nombres de Roles de Conversación',
},
},
variable: {
item: {
title: 'Variables y Herramientas Externas',
desc: 'Insertar Variables y Herramientas Externas',
},
outputToolDisabledItem: {
title: 'Variables',
desc: 'Insertar Variables',
},
modal: {
add: 'Nueva variable',
addTool: 'Nueva herramienta',
},
},
query: {
item: {
title: 'Consulta',
desc: 'Insertar plantilla de consulta del usuario',
},
},
existed: 'Ya existe en la indicación',
},
imageUploader: {
uploadFromComputer: 'Cargar desde la Computadora',
uploadFromComputerReadError: 'Lectura de imagen fallida, por favor intenta nuevamente.',
uploadFromComputerUploadError: 'Carga de imagen fallida, por favor carga nuevamente.',
uploadFromComputerLimit: 'Las imágenes cargadas no pueden exceder {{size}} MB',
pasteImageLink: 'Pegar enlace de imagen',
pasteImageLinkInputPlaceholder: 'Pega el enlace de imagen aquí',
pasteImageLinkInvalid: 'Enlace de imagen inválido',
imageUpload: 'Carga de Imagen',
},
tag: {
placeholder: 'Todas las Etiquetas',
addNew: 'Agregar nueva etiqueta',
noTag: 'Sin etiquetas',
noTagYet: 'Aún sin etiquetas',
addTag: 'Agregar etiquetas',
editTag: 'Editar etiquetas',
manageTags: 'Gestionar Etiquetas',
selectorPlaceholder: 'Escribe para buscar o crear',
create: 'Crear',
delete: 'Eliminar etiqueta',
deleteTip: 'La etiqueta se está utilizando, ¿eliminarla?',
created: 'Etiqueta creada exitosamente',
failed: 'Creación de etiqueta fallida',
},
fileUploader: {
uploadFromComputer: 'Carga local',
pasteFileLink: 'Pegar enlace de archivo',
uploadFromComputerReadError: 'Error en la lectura del archivo, inténtelo de nuevo.',
uploadFromComputerUploadError: 'Error en la carga del archivo, vuelva a cargarlo.',
pasteFileLinkInvalid: 'Enlace de archivo no válido',
fileExtensionNotSupport: 'Extensión de archivo no compatible',
pasteFileLinkInputPlaceholder: 'Introduzca la URL...',
uploadFromComputerLimit: 'El archivo de carga no puede exceder {{size}}',
},
license: {
expiring: 'Caduca en un día',
expiring_plural: 'Caducando en {{count}} días',
},
pagination: {
perPage: 'Elementos por página',
},
}
export default translation

View File

@@ -0,0 +1,30 @@
const translation = {
custom: 'Personalización',
upgradeTip: {
prefix: 'Actualiza tu plan para',
suffix: 'personalizar tu marca.',
},
webapp: {
title: 'Personalizar marca de WebApp',
removeBrand: 'Eliminar Powered by Dify',
changeLogo: 'Cambiar Imagen de Marca Powered by',
changeLogoTip: 'Formato SVG o PNG con un tamaño mínimo de 40x40px',
},
app: {
title: 'Personalizar encabezado de la aplicación',
changeLogoTip: 'Formato SVG o PNG con un tamaño mínimo de 80x80px',
},
upload: 'Subir',
uploading: 'Subiendo',
uploadedFail: 'Error al subir la imagen, por favor vuelve a intentar.',
change: 'Cambiar',
apply: 'Aplicar',
restore: 'Restaurar valores predeterminados',
customize: {
contactUs: ' contáctanos ',
prefix: 'Para personalizar el logotipo de la marca dentro de la aplicación, por favor',
suffix: 'para actualizar a la edición Enterprise.',
},
}
export default translation

View File

@@ -0,0 +1,205 @@
const translation = {
steps: {
header: {
creation: 'Crear conocimiento',
update: 'Agregar datos',
fallbackRoute: 'Conocimiento',
},
one: 'Elegir fuente de datos',
two: 'Preprocesamiento y limpieza de texto',
three: 'Ejecutar y finalizar',
},
error: {
unavailable: 'Este conocimiento no está disponible',
},
firecrawl: {
configFirecrawl: 'Configurar 🔥Firecrawl',
apiKeyPlaceholder: 'Clave de API de firecrawl.dev',
getApiKeyLinkText: 'Obtener tu clave de API de firecrawl.dev',
},
stepOne: {
filePreview: 'Vista previa del archivo',
pagePreview: 'Vista previa de la página',
dataSourceType: {
file: 'Importar desde archivo',
notion: 'Sincronizar desde Notion',
web: 'Sincronizar desde sitio web',
},
uploader: {
title: 'Cargar archivo',
button: 'Arrastra y suelta el archivo, o',
browse: 'Buscar',
tip: 'Soporta {{supportTypes}}. Máximo {{size}}MB cada uno.',
validation: {
typeError: 'Tipo de archivo no soportado',
size: 'Archivo demasiado grande. El máximo es {{size}}MB',
count: 'No se admiten varios archivos',
filesNumber: 'Has alcanzado el límite de carga por lotes de {{filesNumber}}.',
},
cancel: 'Cancelar',
change: 'Cambiar',
failed: 'Error al cargar',
},
notionSyncTitle: 'Notion no está conectado',
notionSyncTip: 'Para sincronizar con Notion, primero se debe establecer la conexión con Notion.',
connect: 'Ir a conectar',
button: 'Siguiente',
emptyDatasetCreation: 'Quiero crear un conocimiento vacío',
modal: {
title: 'Crear un conocimiento vacío',
tip: 'Un conocimiento vacío no contendrá documentos y podrás cargar documentos en cualquier momento.',
input: 'Nombre del conocimiento',
placeholder: 'Por favor ingresa',
nameNotEmpty: 'El nombre no puede estar vacío',
nameLengthInvalid: 'El nombre debe tener entre 1 y 40 caracteres',
cancelButton: 'Cancelar',
confirmButton: 'Crear',
failed: 'Error al crear',
},
website: {
fireCrawlNotConfigured: 'Firecrawl no está configurado',
fireCrawlNotConfiguredDescription: 'Configura Firecrawl con la clave de API para poder utilizarlo.',
configure: 'Configurar',
run: 'Ejecutar',
firecrawlTitle: 'Extraer contenido web con 🔥Firecrawl',
firecrawlDoc: 'Documentación de Firecrawl',
firecrawlDocLink: 'https://docs.dify.ai/guides/knowledge-base/sync-from-website',
options: 'Opciones',
crawlSubPage: 'Rastrear subpáginas',
limit: 'Límite',
maxDepth: 'Profundidad máxima',
excludePaths: 'Excluir rutas',
includeOnlyPaths: 'Incluir solo rutas',
extractOnlyMainContent: 'Extraer solo el contenido principal (sin encabezados, navegación, pies de página, etc.)',
exceptionErrorTitle: 'Se produjo una excepción al ejecutar el trabajo de Firecrawl:',
unknownError: 'Error desconocido',
totalPageScraped: 'Total de páginas extraídas:',
selectAll: 'Seleccionar todo',
resetAll: 'Restablecer todo',
scrapTimeInfo: 'Se extrajeron {{total}} páginas en total en {{time}}s',
preview: 'Vista previa',
maxDepthTooltip: 'Profundidad máxima para rastrear en relación con la URL ingresada. La profundidad 0 solo extrae la página de la URL ingresada, la profundidad 1 extrae la URL y todo lo después de la URL ingresada + una /, y así sucesivamente.',
jinaReaderDocLink: 'https://jina.ai/reader',
jinaReaderNotConfigured: 'Jina Reader no está configurado',
useSitemap: 'Usar el mapa del sitio',
jinaReaderTitle: 'Convertir todo el sitio a Markdown',
jinaReaderNotConfiguredDescription: 'Configura Jina Reader introduciendo tu clave API gratuita para acceder.',
useSitemapTooltip: 'Siga el mapa del sitio para rastrear el sitio. De lo contrario, Jina Reader rastreará de forma iterativa en función de la relevancia de la página, lo que producirá menos páginas pero de mayor calidad.',
chooseProvider: 'Seleccione un proveedor',
jinaReaderDoc: 'Más información sobre Jina Reader',
},
cancel: 'Cancelar',
},
stepTwo: {
segmentation: 'Configuración de fragmentos',
auto: 'Automático',
autoDescription: 'Configura automáticamente las reglas de fragmentación y preprocesamiento. Se recomienda seleccionar esto para usuarios no familiarizados.',
custom: 'Personalizado',
customDescription: 'Personaliza las reglas de fragmentación, longitud de fragmentos y reglas de preprocesamiento, etc.',
separator: 'Identificador de segmento',
separatorPlaceholder: 'Por ejemplo, salto de línea (\\\\n) o separador especial (como "***")',
maxLength: 'Longitud máxima del fragmento',
overlap: 'Superposición de fragmentos',
overlapTip: 'Configurar la superposición de fragmentos puede mantener la relevancia semántica entre ellos, mejorando el efecto de recuperación. Se recomienda configurar el 10%-25% del tamaño máximo del fragmento.',
overlapCheck: 'La superposición de fragmentos no debe ser mayor que la longitud máxima del fragmento',
rules: 'Reglas de preprocesamiento de texto',
removeExtraSpaces: 'Reemplazar espacios, saltos de línea y tabulaciones consecutivas',
removeUrlEmails: 'Eliminar todas las URL y direcciones de correo electrónico',
removeStopwords: 'Eliminar palabras vacías como "un", "una", "el"',
preview: 'Confirmar y vista previa',
reset: 'Restablecer',
indexMode: 'Modo de índice',
qualified: 'Alta calidad',
recommend: 'Recomendado',
qualifiedTip: 'Llama a la interfaz de incrustación del sistema por defecto para proporcionar una mayor precisión cuando los usuarios realizan consultas.',
warning: 'Por favor, configura primero la clave de API del proveedor del modelo.',
click: 'Ir a configuración',
economical: 'Económico',
economicalTip: 'Utiliza motores de vector sin conexión, índices de palabras clave, etc. para reducir la precisión sin gastar tokens',
QATitle: 'Segmentación en formato de pregunta y respuesta',
QATip: 'Habilitar esta opción consumirá más tokens',
QALanguage: 'Segmentar usando',
estimateCost: 'Estimación',
estimateSegment: 'Fragmentos estimados',
segmentCount: 'fragmentos',
calculating: 'Calculando...',
fileSource: 'Preprocesar documentos',
notionSource: 'Preprocesar páginas',
websiteSource: 'Preprocesar sitio web',
other: 'y otros ',
fileUnit: ' archivos',
notionUnit: ' páginas',
webpageUnit: ' páginas',
previousStep: 'Paso anterior',
nextStep: 'Guardar y procesar',
save: 'Guardar y procesar',
cancel: 'Cancelar',
sideTipTitle: '¿Por qué fragmentar y preprocesar?',
sideTipP1: 'Al procesar datos de texto, la fragmentación y la limpieza son dos pasos de preprocesamiento importantes.',
sideTipP2: 'La segmentación divide el texto largo en párrafos para que los modelos puedan entenderlo mejor. Esto mejora la calidad y relevancia de los resultados del modelo.',
sideTipP3: 'La limpieza elimina caracteres y formatos innecesarios, haciendo que el conocimiento sea más limpio y fácil de analizar.',
sideTipP4: 'Una fragmentación y limpieza adecuadas mejoran el rendimiento del modelo, proporcionando resultados más precisos y valiosos.',
previewTitle: 'Vista previa',
previewTitleButton: 'Vista previa',
previewButton: 'Cambiar a formato de pregunta y respuesta',
previewSwitchTipStart: 'La vista previa actual del fragmento está en formato de texto, cambiar a una vista previa en formato de pregunta y respuesta',
previewSwitchTipEnd: ' consumirá tokens adicionales',
characters: 'caracteres',
indexSettingTip: 'Para cambiar el método de índice, por favor ve a la ',
retrievalSettingTip: 'Para cambiar el método de índice, por favor ve a la ',
datasetSettingLink: 'configuración del conocimiento.',
separatorTip: 'Un delimitador es el carácter que se utiliza para separar el texto. \\n\\n y \\n son delimitadores comúnmente utilizados para separar párrafos y líneas. Combinado con comas (\\n\\n,\\n), los párrafos se segmentarán por líneas cuando excedan la longitud máxima del fragmento. También puede utilizar delimitadores especiales definidos por usted mismo (por ejemplo, ***).',
maxLengthCheck: 'La longitud máxima del fragmento debe ser inferior a {{limit}}',
previewChunkTip: 'Haga clic en el botón \'Vista previa de fragmento\' a la izquierda para cargar la vista previa',
parentChildChunkDelimiterTip: 'Un delimitador es el carácter que se utiliza para separar el texto. \\n se recomienda para dividir fragmentos primarios en fragmentos secundarios pequeños. También puede utilizar delimitadores especiales definidos por usted mismo.',
parentChildTip: 'Cuando se utiliza el modo padre-hijo, el fragmento secundario se utiliza para la recuperación y el fragmento primario se utiliza para la recuperación como contexto.',
switch: 'Interruptor',
parentChild: 'Padre-hijo',
childChunkForRetrieval: 'Fragmento secundario para la recuperación',
previewChunk: 'Fragmento de vista previa',
notAvailableForParentChild: 'No disponible para el índice de elementos primarios y secundarios',
paragraph: 'Párrafo',
parentChunkForContext: 'Fragmento primario para contexto',
fullDoc: 'Documento completo',
parentChildDelimiterTip: 'Un delimitador es el carácter que se utiliza para separar el texto. \\n\\n se recomienda para dividir el documento original en grandes fragmentos principales. También puede utilizar delimitadores especiales definidos por usted mismo.',
generalTip: 'Modo de fragmentación de texto general, los fragmentos recuperados y recuperados son los mismos.',
qaSwitchHighQualityTipContent: 'Actualmente, solo el método de índice de alta calidad admite la fragmentación en formato de preguntas y respuestas. ¿Le gustaría cambiar al modo de alta calidad?',
useQALanguage: 'Fragmento usando el formato de preguntas y respuestas en',
fullDocTip: 'Todo el documento se utiliza como fragmento principal y se recupera directamente. Tenga en cuenta que, por razones de rendimiento, el texto que supere los 10000 tokens se trunqueará automáticamente.',
paragraphTip: 'Este modo divide el texto en párrafos en función de los delimitadores y la longitud máxima del fragmento, utilizando el texto dividido como fragmento principal para la recuperación.',
highQualityTip: 'Una vez finalizada la incrustación en el modo de alta calidad, no está disponible volver al modo económico.',
notAvailableForQA: 'No disponible para el índice de preguntas y respuestas',
qaSwitchHighQualityTipTitle: 'El formato de preguntas y respuestas requiere un método de indexación de alta calidad',
previewChunkCount: '{{conteo}} Fragmentos estimados',
general: 'General',
},
stepThree: {
creationTitle: '🎉 Conocimiento creado',
creationContent: 'Hemos asignado automáticamente un nombre al conocimiento, puedes modificarlo en cualquier momento',
label: 'Nombre del conocimiento',
additionTitle: '🎉 Documento cargado',
additionP1: 'El documento se ha cargado en el conocimiento',
additionP2: ', puedes encontrarlo en la lista de documentos del conocimiento.',
stop: 'Detener procesamiento',
resume: 'Reanudar procesamiento',
navTo: 'Ir al documento',
sideTipTitle: '¿Qué sigue?',
sideTipContent: 'Después de que el documento termine de indexarse, el conocimiento se puede integrar en la aplicación como contexto. Puedes encontrar la configuración de contexto en la página de orquestación de indicaciones. También puedes crearlo como un plugin de indexación ChatGPT independiente para su lanzamiento.',
modelTitle: '¿Estás seguro de detener la incrustación?',
modelContent: 'Si necesitas reanudar el procesamiento más tarde, continuarás desde donde lo dejaste.',
modelButtonConfirm: 'Confirmar',
modelButtonCancel: 'Cancelar',
},
jinaReader: {
configJinaReader: 'Configurar Jina Reader',
apiKeyPlaceholder: 'Clave de API de jina.ai',
getApiKeyLinkText: 'Obtén tu clave API gratuita en jina.ai',
},
otherDataSource: {
learnMore: 'Aprende más',
description: 'Actualmente, la base de conocimientos de Ifiy solo tiene fuentes de datos limitadas. Contribuir con una fuente de datos a la base de conocimientos de Dify es una manera fantástica de ayudar a mejorar la flexibilidad y el poder de la plataforma para todos los usuarios. Nuestra guía de contribuciones hace que sea fácil comenzar. Haga clic en el enlace a continuación para obtener más información.',
title: '¿Conectarse a otras fuentes de datos?',
},
}
export default translation

View File

@@ -0,0 +1,395 @@
const translation = {
list: {
title: 'Documentos',
desc: 'Aquí se muestran todos los archivos del Conocimiento, y todo el Conocimiento se puede vincular a citas de Dify o indexarse a través del complemento de Chat.',
addFile: 'Agregar archivo',
addPages: 'Agregar páginas',
addUrl: 'Agregar URL',
table: {
header: {
fileName: 'NOMBRE DEL ARCHIVO',
words: 'PALABRAS',
hitCount: 'CANTIDAD DE RECUPERACIÓN',
uploadTime: 'TIEMPO DE CARGA',
status: 'ESTADO',
action: 'ACCIÓN',
chunkingMode: 'MODO DE FRAGMENTACIÓN',
},
rename: 'Renombrar',
name: 'Nombre',
},
action: {
uploadFile: 'Subir nuevo archivo',
settings: 'Configuración de segmento',
addButton: 'Agregar fragmento',
add: 'Agregar un fragmento',
batchAdd: 'Agregar en lotes',
archive: 'Archivar',
unarchive: 'Desarchivar',
delete: 'Eliminar',
enableWarning: 'El archivo archivado no puede habilitarse',
sync: 'Sincronizar',
},
index: {
enable: 'Habilitar',
disable: 'Deshabilitar',
all: 'Todos',
enableTip: 'El archivo se puede indexar',
disableTip: 'El archivo no se puede indexar',
},
status: {
queuing: 'En cola',
indexing: 'Indexando',
paused: 'Pausado',
error: 'Error',
available: 'Disponible',
enabled: 'Habilitado',
disabled: 'Deshabilitado',
archived: 'Archivado',
},
empty: {
title: 'Aún no hay documentación',
upload: {
tip: 'Puedes subir archivos, sincronizar desde el sitio web o desde aplicaciones web como Notion, GitHub, etc.',
},
sync: {
tip: 'Dify descargará periódicamente archivos desde tu Notion y completará el procesamiento.',
},
},
delete: {
title: '¿Seguro que deseas eliminar?',
content: 'Si necesitas reanudar el procesamiento más tarde, continuarás desde donde lo dejaste.',
},
batchModal: {
title: 'Agregar fragmentos en lotes',
csvUploadTitle: 'Arrastra y suelta tu archivo CSV aquí, o ',
browse: 'navega',
tip: 'El archivo CSV debe cumplir con la siguiente estructura:',
question: 'pregunta',
answer: 'respuesta',
contentTitle: 'contenido del fragmento',
content: 'contenido',
template: 'Descarga la plantilla aquí',
cancel: 'Cancelar',
run: 'Ejecutar en lotes',
runError: 'Error al ejecutar en lotes',
processing: 'Procesamiento en lotes',
completed: 'Importación completada',
error: 'Error de importación',
ok: 'Aceptar',
},
learnMore: 'Aprende más',
},
metadata: {
title: 'Metadatos',
desc: 'Etiquetar metadatos para documentos permite que la IA acceda a ellos de manera oportuna y expone la fuente de referencias para los usuarios.',
dateTimeFormat: 'MMMM D, YYYY hh:mm A',
docTypeSelectTitle: 'Por favor, selecciona un tipo de documento',
docTypeChangeTitle: 'Cambiar tipo de documento',
docTypeSelectWarning:
'Si se cambia el tipo de documento, los metadatos ahora llenos ya no se conservarán.',
firstMetaAction: 'Vamos D',
placeholder: {
add: 'Agregar ',
select: 'Seleccionar ',
},
source: {
upload_file: 'Subir archivo',
notion: 'Sincronizar desde Notion',
github: 'Sincronizar desde GitHub',
},
type: {
book: 'Libro',
webPage: 'Página Web',
paper: 'Artículo',
socialMediaPost: 'Publicación en Redes Sociales',
personalDocument: 'Documento Personal',
businessDocument: 'Documento de Negocios',
IMChat: 'Chat IM',
wikipediaEntry: 'Entrada de Wikipedia',
notion: 'Sincronizar desde Notion',
github: 'Sincronizar desde GitHub',
technicalParameters: 'Parámetros Técnicos',
},
field: {
processRule: {
processDoc: 'Procesar documento',
segmentRule: 'Regla de segmentación',
segmentLength: 'Longitud de fragmentos',
processClean: 'Limpieza de texto procesado',
},
book: {
title: 'Título',
language: 'Idioma',
author: 'Autor',
publisher: 'Editorial',
publicationDate: 'Fecha de publicación',
ISBN: 'ISBN',
category: 'Categoría',
},
webPage: {
title: 'Título',
url: 'URL',
language: 'Idioma',
authorPublisher: 'Autor/Editorial',
publishDate: 'Fecha de publicación',
topicKeywords: 'Temas/Palabras clave',
description: 'Descripción',
},
paper: {
title: 'Título',
language: 'Idioma',
author: 'Autor',
publishDate: 'Fecha de publicación',
journalConferenceName: 'Nombre de la revista/conferencia',
volumeIssuePage: 'Volumen/Número/Página',
DOI: 'DOI',
topicsKeywords: 'Temas/Palabras clave',
abstract: 'Resumen',
},
socialMediaPost: {
platform: 'Plataforma',
authorUsername: 'Autor/Nombre de usuario',
publishDate: 'Fecha de publicación',
postURL: 'URL de la publicación',
topicsTags: 'Temas/Etiquetas',
},
personalDocument: {
title: 'Título',
author: 'Autor',
creationDate: 'Fecha de creación',
lastModifiedDate: 'Última fecha de modificación',
documentType: 'Tipo de documento',
tagsCategory: 'Etiquetas/Categoría',
},
businessDocument: {
title: 'Título',
author: 'Autor',
creationDate: 'Fecha de creación',
lastModifiedDate: 'Última fecha de modificación',
documentType: 'Tipo de documento',
departmentTeam: 'Departamento/Equipo',
},
IMChat: {
chatPlatform: 'Plataforma de chat',
chatPartiesGroupName: 'Partes de chat/Nombre del grupo',
participants: 'Participantes',
startDate: 'Fecha de inicio',
endDate: 'Fecha de fin',
topicsKeywords: 'Temas/Palabras clave',
fileType: 'Tipo de archivo',
},
wikipediaEntry: {
title: 'Título',
language: 'Idioma',
webpageURL: 'URL de la página web',
editorContributor: 'Editor/Contribuidor',
lastEditDate: 'Última fecha de edición',
summaryIntroduction: 'Resumen/Introducción',
},
notion: {
title: 'Título',
language: 'Idioma',
author: 'Autor',
createdTime: 'Fecha de creación',
lastModifiedTime: 'Última fecha de modificación',
url: 'URL',
tag: 'Etiqueta',
description: 'Descripción',
},
github: {
repoName: 'Nombre del repositorio',
repoDesc: 'Descripción del repositorio',
repoOwner: 'Propietario del repositorio',
fileName: 'Nombre del archivo',
filePath: 'Ruta del archivo',
programmingLang: 'Lenguaje de programación',
url: 'URL',
license: 'Licencia',
lastCommitTime: 'Última hora de compromiso',
lastCommitAuthor: 'Último autor del compromiso',
},
originInfo: {
originalFilename: 'Nombre de archivo original',
originalFileSize: 'Tamaño de archivo original',
uploadDate: 'Fecha de carga',
lastUpdateDate: 'Última fecha de actualización',
source: 'Fuente',
},
technicalParameters: {
segmentSpecification: 'Especificación de fragmentos',
segmentLength: 'Longitud de fragmentos',
avgParagraphLength: 'Longitud promedio del párrafo',
paragraphs: 'Párrafos',
hitCount: 'Cantidad de recuperación',
embeddingTime: 'Tiempo de incrustación',
embeddedSpend: 'Gasto incrustado',
},
},
languageMap: {
zh: 'Chino',
en: 'Inglés',
es: 'Español',
fr: 'Francés',
de: 'Alemán',
ja: 'Japonés',
ko: 'Coreano',
ru: 'Ruso',
ar: 'Árabe',
pt: 'Portugués',
it: 'Italiano',
nl: 'Holandés',
pl: 'Polaco',
sv: 'Sueco',
tr: 'Turco',
he: 'Hebreo',
hi: 'Hindi',
da: 'Danés',
fi: 'Finlandés',
no: 'Noruego',
hu: 'Húngaro',
el: 'Griego',
cs: 'Checo',
th: 'Tailandés',
id: 'Indonesio',
},
categoryMap: {
book: {
fiction: 'Ficción',
biography: 'Biografía',
history: 'Historia',
science: 'Ciencia',
technology: 'Tecnología',
education: 'Educación',
philosophy: 'Filosofía',
religion: 'Religión',
socialSciences: 'Ciencias Sociales',
art: 'Arte',
travel: 'Viaje',
health: 'Salud',
selfHelp: 'Autoayuda',
businessEconomics: 'Negocios y Economía',
cooking: 'Cocina',
childrenYoungAdults: 'Niños y Jóvenes Adultos',
comicsGraphicNovels: 'Cómics y Novelas Gráficas',
poetry: 'Poesía',
drama: 'Drama',
other: 'Otros',
},
personalDoc: {
notes: 'Notas',
blogDraft: 'Borrador de blog',
diary: 'Diario',
researchReport: 'Informe de investigación',
bookExcerpt: 'Extracto de libro',
schedule: 'Horario',
list: 'Lista',
projectOverview: 'Visión general del proyecto',
photoCollection: 'Colección de fotos',
creativeWriting: 'Escritura creativa',
codeSnippet: 'Fragmento de código',
designDraft: 'Borrador de diseño',
personalResume: 'Currículum personal',
other: 'Otros',
},
businessDoc: {
meetingMinutes: 'Minutos de reunión',
researchReport: 'Informe de investigación',
proposal: 'Propuesta',
employeeHandbook: 'Manual del empleado',
trainingMaterials: 'Materiales de capacitación',
requirementsDocument: 'Documento de requisitos',
designDocument: 'Documento de diseño',
productSpecification: 'Especificación del producto',
financialReport: 'Informe financiero',
marketAnalysis: 'Análisis de mercado',
projectPlan: 'Plan de proyecto',
teamStructure: 'Estructura del equipo',
policiesProcedures: 'Políticas y procedimientos',
contractsAgreements: 'Contratos y acuerdos',
emailCorrespondence: 'Correspondencia por correo electrónico',
other: 'Otros',
},
},
},
embedding: {
processing: 'Procesando incrustación...',
paused: 'Incrustación pausada',
completed: 'Incrustación completada',
error: 'Error de incrustación',
docName: 'Preprocesamiento del documento',
mode: 'Regla de segmentación',
segmentLength: 'Longitud de fragmentos',
textCleaning: 'Definición de texto y limpieza previa',
segments: 'Párrafos',
highQuality: 'Modo de alta calidad',
economy: 'Modo económico',
estimate: 'Consumo estimado',
stop: 'Detener procesamiento',
resume: 'Reanudar procesamiento',
automatic: 'Automático',
custom: 'Personalizado',
previewTip: 'La vista previa del párrafo estará disponible después de que se complete la incrustación',
pause: 'Pausa',
childMaxTokens: 'Niño',
hierarchical: 'Padre-hijo',
parentMaxTokens: 'Padre',
},
segment: {
paragraphs: 'Párrafos',
keywords: 'Palabras clave',
addKeyWord: 'Agregar palabra clave',
keywordError: 'La longitud máxima de la palabra clave es 20',
characters: 'caracteres',
hitCount: 'Cantidad de recuperación',
vectorHash: 'Hash de vector: ',
questionPlaceholder: 'agregar pregunta aquí',
questionEmpty: 'La pregunta no puede estar vacía',
answerPlaceholder: 'agregar respuesta aquí',
answerEmpty: 'La respuesta no puede estar vacía',
contentPlaceholder: 'agregar contenido aquí',
contentEmpty: 'El contenido no puede estar vacío',
newTextSegment: 'Nuevo segmento de texto',
newQaSegment: 'Nuevo segmento de preguntas y respuestas',
delete: '¿Eliminar este fragmento?',
chunks_one: 'PEDAZO',
childChunks_one: 'FRAGMENTO SECUNDARIO',
searchResults_other: 'RESULTADOS',
newChunk: 'Nuevo fragmento',
childChunk: 'Fragmento secundario',
addChunk: 'Agregar fragmento',
editParentChunk: 'Editar fragmento principal',
regenerationConfirmMessage: 'La regeneración de fragmentos secundarios sobrescribirá los fragmentos secundarios actuales, incluidos los fragmentos editados y los fragmentos recién agregados. La regeneración no se puede deshacer.',
addAnother: 'Añade otro',
regeneratingMessage: 'Esto puede tardar un momento, por favor espere...',
addChildChunk: 'Agregar fragmento secundario',
chunks_other: 'TROZOS',
editChunk: 'Editar fragmento',
searchResults_one: 'RESULTADO',
parentChunks_one: 'FRAGMENTO PRIMARIO',
edited: 'EDITADO',
childChunkAdded: 'Se ha añadido 1 fragmento secundario',
childChunks_other: 'FRAGMENTOS SECUNDARIOS',
chunkAdded: '1 trozo añadido',
parentChunk: 'Fragmento primario',
editChildChunk: 'Editar fragmento secundario',
regeneratingTitle: 'Regeneración de fragmentos secundarios',
editedAt: 'Editado en',
searchResults_zero: 'RESULTADO',
clearFilter: 'Borrar filtro',
newChildChunk: 'Nuevo fragmento secundario',
chunkDetail: 'Detalle de fragmentos',
chunk: 'Pedazo',
parentChunks_other: 'FRAGMENTOS PRINCIPALES',
expandChunks: 'Expandir fragmentos',
empty: 'No se ha encontrado ningún fragmento',
regenerationSuccessTitle: 'Regeneración completada',
collapseChunks: 'Contraer fragmentos',
characters_other: 'Caracteres',
characters_one: 'carácter',
regenerationSuccessMessage: 'Puede cerrar esta ventana.',
regenerationConfirmTitle: '¿Desea regenerar fragmentos secundarios?',
},
}
export default translation

View File

@@ -0,0 +1,35 @@
const translation = {
title: 'Prueba de recuperación',
desc: 'Prueba del efecto de impacto del conocimiento basado en el texto de consulta proporcionado.',
dateTimeFormat: 'MM/DD/YYYY hh:mm A',
recents: 'Recientes',
table: {
header: {
source: 'Fuente',
text: 'Texto',
time: 'Tiempo',
},
},
input: {
title: 'Texto fuente',
placeholder: 'Por favor ingrese un texto, se recomienda una oración declarativa corta.',
countWarning: 'Hasta 200 caracteres.',
indexWarning: 'Solo conocimiento de alta calidad.',
testing: 'Prueba',
},
hit: {
title: 'PÁRRAFOS DE RECUPERACIÓN',
emptyTip: 'Los resultados de la prueba de recuperación se mostrarán aquí',
},
noRecentTip: 'No hay resultados de consulta recientes aquí',
viewChart: 'Ver GRÁFICO VECTORIAL',
viewDetail: 'Ver Detalle',
settingTitle: 'Configuración de recuperación',
open: 'Abrir',
records: 'Archivo',
chunkDetail: 'Detalle de fragmentos',
keyword: 'Palabras clave',
hitChunks: 'Golpea {{num}} fragmentos secundarios',
}
export default translation

View File

@@ -0,0 +1,41 @@
const translation = {
title: 'Configuración del conjunto de datos',
desc: 'Aquí puedes modificar las propiedades y los métodos de trabajo del conjunto de datos.',
form: {
name: 'Nombre del conjunto de datos',
namePlaceholder: 'Por favor ingresa el nombre del conjunto de datos',
nameError: 'El nombre no puede estar vacío',
desc: 'Descripción del conjunto de datos',
descInfo: 'Por favor escribe una descripción textual clara para delinear el contenido del conjunto de datos. Esta descripción se utilizará como base para la coincidencia al seleccionar entre múltiples conjuntos de datos para la inferencia.',
descPlaceholder: 'Describe lo que hay en este conjunto de datos. Una descripción detallada permite que la IA acceda al contenido del conjunto de datos de manera oportuna. Si está vacío, Dify utilizará la estrategia de coincidencia predeterminada.',
descWrite: 'Aprende cómo escribir una buena descripción del conjunto de datos.',
permissions: 'Permisos',
permissionsOnlyMe: 'Solo yo',
permissionsAllMember: 'Todos los miembros del equipo',
permissionsInvitedMembers: 'Miembros del equipo invitados',
me: '(Tú)',
indexMethod: 'Método de indexación',
indexMethodHighQuality: 'Alta calidad',
indexMethodHighQualityTip: 'Llama al modelo de incrustación para procesar y proporcionar una mayor precisión cuando los usuarios realizan consultas.',
indexMethodEconomy: 'Económico',
indexMethodEconomyTip: 'Utiliza motores de vectores sin conexión, índices de palabras clave, etc. para reducir la precisión sin gastar tokens.',
embeddingModel: 'Modelo de incrustación',
embeddingModelTip: 'Cambia el modelo de incrustación, por favor ve a ',
embeddingModelTipLink: 'Configuración',
retrievalSetting: {
title: 'Configuración de recuperación',
learnMore: 'Aprende más',
description: ' sobre el método de recuperación.',
longDescription: ' sobre el método de recuperación, puedes cambiar esto en cualquier momento en la configuración del conjunto de datos.',
},
save: 'Guardar',
retrievalSettings: 'Configuración de recuperación',
externalKnowledgeID: 'ID de conocimiento externo',
externalKnowledgeAPI: 'API de conocimiento externo',
indexMethodChangeToEconomyDisabledTip: 'No disponible para degradar de HQ a ECO',
helpText: 'Aprenda a escribir una buena descripción del conjunto de datos.',
upgradeHighQualityTip: 'Una vez que se actualiza al modo de alta calidad, no está disponible volver al modo económico',
},
}
export default translation

View File

@@ -0,0 +1,173 @@
const translation = {
knowledge: 'Conocimiento',
documentCount: ' documentos',
wordCount: ' mil palabras',
appCount: ' aplicaciones vinculadas',
createDataset: 'Crear Conocimiento',
createDatasetIntro: 'Importa tus propios datos de texto o escribe datos en tiempo real a través de Webhook para mejorar el contexto de LLM.',
deleteDatasetConfirmTitle: '¿Eliminar este Conocimiento?',
deleteDatasetConfirmContent:
'Eliminar el Conocimiento es irreversible. Los usuarios ya no podrán acceder a tu Conocimiento y todas las configuraciones y registros de las sugerencias se eliminarán permanentemente.',
datasetUsedByApp: 'El conocimiento está siendo utilizado por algunas aplicaciones. Las aplicaciones ya no podrán utilizar este Conocimiento y todas las configuraciones y registros de las sugerencias se eliminarán permanentemente.',
datasetDeleted: 'Conocimiento eliminado',
datasetDeleteFailed: 'Error al eliminar el Conocimiento',
didYouKnow: '¿Sabías?',
intro1: 'El Conocimiento se puede integrar en la aplicación Dify ',
intro2: 'como contexto',
intro3: ',',
intro4: 'o ',
intro5: 'se puede crear',
intro6: ' como un complemento independiente de ChatGPT para publicar',
unavailable: 'No disponible',
unavailableTip: 'El modelo de incrustación no está disponible, es necesario configurar el modelo de incrustación predeterminado',
datasets: 'CONOCIMIENTO',
datasetsApi: 'ACCESO A LA API',
retrieval: {
semantic_search: {
title: 'Búsqueda Vectorial',
description: 'Genera incrustaciones de consulta y busca el fragmento de texto más similar a su representación vectorial.',
},
full_text_search: {
title: 'Búsqueda de Texto Completo',
description: 'Indexa todos los términos del documento, lo que permite a los usuarios buscar cualquier término y recuperar el fragmento de texto relevante que contiene esos términos.',
},
hybrid_search: {
title: 'Búsqueda Híbrida',
description: 'Ejecuta búsquedas de texto completo y búsquedas vectoriales simultáneamente, reordena para seleccionar la mejor coincidencia para la consulta del usuario. Es necesaria la configuración de las API del modelo de reordenamiento.',
recommend: 'Recomendar',
},
invertedIndex: {
title: 'Índice Invertido',
description: 'El Índice Invertido es una estructura utilizada para la recuperación eficiente. Organizado por términos, cada término apunta a documentos o páginas web que lo contienen.',
},
change: 'Cambiar',
changeRetrievalMethod: 'Cambiar método de recuperación',
},
docsFailedNotice: 'no se pudieron indexar los documentos',
retry: 'Reintentar',
indexingTechnique: {
high_quality: 'AC',
economy: 'ECO',
},
indexingMethod: {
semantic_search: 'VECTOR',
full_text_search: 'TEXTO COMPLETO',
hybrid_search: 'HÍBRIDO',
invertedIndex: 'INVERTIDO',
},
mixtureHighQualityAndEconomicTip: 'Se requiere el modelo de reclasificación para la mezcla de bases de conocimiento de alta calidad y económicas.',
inconsistentEmbeddingModelTip: 'Se requiere el modelo de reclasificación si los modelos de incrustación de las bases de conocimiento seleccionadas son inconsistentes.',
retrievalSettings: 'Configuración de recuperación',
rerankSettings: 'Configuración de reclasificación',
weightedScore: {
title: 'Puntuación ponderada',
description: 'Al ajustar los pesos asignados, esta estrategia de reclasificación determina si se debe priorizar la coincidencia semántica o de palabras clave.',
semanticFirst: 'Semántica primero',
keywordFirst: 'Palabra clave primero',
customized: 'Personalizado',
semantic: 'Semántico',
keyword: 'Palabra clave',
},
nTo1RetrievalLegacy: 'La recuperación N-a-1 será oficialmente obsoleta a partir de septiembre. Se recomienda utilizar la última recuperación de múltiples rutas para obtener mejores resultados.',
nTo1RetrievalLegacyLink: 'Más información',
nTo1RetrievalLegacyLinkText: 'La recuperación N-a-1 será oficialmente obsoleta en septiembre.',
defaultRetrievalTip: 'De forma predeterminada, se utiliza la recuperación de varias rutas. El conocimiento se recupera de múltiples bases de conocimiento y luego se vuelve a clasificar.',
editExternalAPIConfirmWarningContent: {
front: 'Esta API de conocimiento externo está vinculada a',
end: 'conocimiento externo, y esta modificación se aplicará a todos ellos. ¿Estás seguro de que quieres guardar este cambio?',
},
editExternalAPIFormWarning: {
end: 'Conocimiento externo',
front: 'Esta API externa está vinculada a',
},
deleteExternalAPIConfirmWarningContent: {
title: {
end: '?',
front: 'Borrar',
},
content: {
end: 'conocimiento externo. Al eliminar esta API, se invalidarán todos ellos. ¿Estás seguro de que quieres eliminar esta API?',
front: 'Esta API de conocimiento externo está vinculada a',
},
noConnectionContent: '¿Está seguro de eliminar esta API?',
},
selectExternalKnowledgeAPI: {
placeholder: 'Elegir una API de conocimiento externa',
},
connectDatasetIntro: {
content: {
link: 'Más información sobre cómo crear una API externa',
front: 'Para conectarse a una base de conocimientos externa, primero debe crear una API externa. Por favor, lea atentamente y consulte',
end: '. A continuación, busque el ID de conocimiento correspondiente y rellénelo en el formulario de la izquierda. Si toda la información es correcta, saltará automáticamente a la prueba de recuperación en la base de conocimientos después de hacer clic en el botón conectar.',
},
learnMore: 'Aprende más',
title: 'Cómo conectarse a una base de conocimientos externa',
},
connectHelper: {
helper5: 'con cuidado antes de usar esta función.',
helper2: 'Solo se admite la funcionalidad de recuperación',
helper1: 'Conéctese a bases de conocimiento externas a través de la API y el ID de la base de conocimiento. Actualmente,',
helper3: '. Le recomendamos encarecidamente que',
helper4: 'Leer la documentación de ayuda',
},
externalKnowledgeForm: {
connect: 'Conectar',
cancel: 'Cancelar',
},
externalAPIForm: {
encrypted: {
front: 'Su token de API se cifrará y almacenará mediante',
end: 'Tecnología.',
},
cancel: 'Cancelar',
apiKey: 'Clave de API',
save: 'Salvar',
edit: 'Editar',
name: 'Nombre',
endpoint: 'Punto de conexión de API',
},
externalTag: 'Externo',
externalKnowledgeDescriptionPlaceholder: 'Describa lo que hay en esta base de conocimientos (opcional)',
externalKnowledgeNamePlaceholder: 'Introduzca el nombre de la base de conocimientos',
noExternalKnowledge: 'Todavía no hay una API de conocimiento externo, haga clic aquí para crear',
editExternalAPIFormTitle: 'Editar la API de conocimiento externo',
externalKnowledgeName: 'Nombre del conocimiento externo',
allExternalTip: 'Al usar solo conocimiento externo, el usuario puede elegir si desea habilitar el modelo Rerank. Si no se habilita, los fragmentos recuperados se ordenarán en función de las puntuaciones. Cuando las estrategias de recuperación de diferentes bases de conocimiento son inconsistentes, serán inexactas.',
createExternalAPI: 'Adición de una API de conocimiento externa',
externalKnowledgeId: 'ID de conocimiento externo',
connectDataset: 'Conéctese a una base de conocimientos externa',
createNewExternalAPI: 'Creación de una nueva API de conocimiento externo',
editExternalAPITooltipTitle: 'CONOCIMIENTO VINCULADO',
externalAPIPanelTitle: 'API de conocimiento externo',
externalKnowledgeDescription: 'Descripción del conocimiento',
externalAPIPanelDescription: 'La API de conocimiento externo se utiliza para conectarse a una base de conocimiento fuera de Dify y recuperar conocimiento de esa base de conocimiento.',
externalAPI: 'API externa',
externalKnowledgeIdPlaceholder: 'Introduzca el ID de conocimiento',
learnHowToWriteGoodKnowledgeDescription: 'Aprende a escribir una buena descripción del conocimiento',
externalAPIPanelDocumentation: 'Más información sobre cómo crear una API de conocimiento externo',
mixtureInternalAndExternalTip: 'El modelo de Rerank es necesario para la mezcla de conocimiento interno y externo.',
chunkingMode: {
parentChild: 'Padre-hijo',
general: 'General',
},
parentMode: {
fullDoc: 'Documento completo',
paragraph: 'Párrafo',
},
batchAction: {
selected: 'Seleccionado',
enable: 'Habilitar',
disable: 'Inutilizar',
cancel: 'Cancelar',
archive: 'Archivo',
delete: 'Borrar',
},
enable: 'Habilitar',
documentsDisabled: '{{num}} Documentos desactivados - inactivos durante más de 30 días',
preprocessDocument: '{{num}} Documentos de preprocesamiento',
localDocs: 'Documentos locales',
allKnowledgeDescription: 'Seleccione esta opción para mostrar todos los conocimientos de este espacio de trabajo. Solo el propietario del espacio de trabajo puede administrar todo el conocimiento.',
allKnowledge: 'Todo el conocimiento',
}
export default translation

View File

@@ -0,0 +1,43 @@
const translation = {
title: 'Explorar',
sidebar: {
discovery: 'Descubrimiento',
chat: 'Chat',
workspace: 'Espacio de trabajo',
action: {
pin: 'Anclar',
unpin: 'Desanclar',
rename: 'Renombrar',
delete: 'Eliminar',
},
delete: {
title: 'Eliminar aplicación',
content: '¿Estás seguro de que quieres eliminar esta aplicación?',
},
},
apps: {
title: 'Explorar aplicaciones de Dify',
description: 'Utiliza estas aplicaciones de plantilla al instante o personaliza tus propias aplicaciones basadas en las plantillas.',
allCategories: 'Recomendado',
},
appCard: {
addToWorkspace: 'Agregar al espacio de trabajo',
customize: 'Personalizar',
},
appCustomize: {
title: 'Crear aplicación a partir de {{name}}',
subTitle: 'Icono y nombre de la aplicación',
nameRequired: 'El nombre de la aplicación es obligatorio',
},
category: {
Assistant: 'Asistente',
Writing: 'Escritura',
Translate: 'Traducción',
Programming: 'Programación',
HR: 'Recursos Humanos',
Agent: 'Agente',
Workflow: 'Flujo de trabajo',
},
}
export default translation

View File

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

View File

@@ -0,0 +1,110 @@
const translation = {
pageTitle: '¡Hola, vamos a empezar!👋',
welcome: 'Bienvenido a Dify, por favor inicia sesión para continuar.',
email: 'Correo electrónico',
emailPlaceholder: 'Tu correo electrónico',
password: 'Contraseña',
passwordPlaceholder: 'Tu contraseña',
name: 'Nombre de usuario',
namePlaceholder: 'Tu nombre de usuario',
forget: '¿Olvidaste tu contraseña?',
signBtn: 'Iniciar sesión',
sso: 'Continuar con SSO',
installBtn: 'Configurar',
setAdminAccount: 'Configurando una cuenta de administrador',
setAdminAccountDesc: 'Privilegios máximos para la cuenta de administrador, que se puede utilizar para crear aplicaciones y administrar proveedores de LLM, etc.',
createAndSignIn: 'Crear e iniciar sesión',
oneMoreStep: 'Un paso más',
createSample: 'Con esta información, crearemos una aplicación de muestra para ti',
invitationCode: 'Código de invitación',
invitationCodePlaceholder: 'Tu código de invitación',
interfaceLanguage: 'Idioma de interfaz',
timezone: 'Zona horaria',
go: 'Ir a Dify',
sendUsMail: 'Envíanos un correo electrónico con tu presentación y nosotros nos encargaremos de la solicitud de invitación.',
acceptPP: 'He leído y acepto la política de privacidad',
reset: 'Por favor, ejecuta el siguiente comando para restablecer tu contraseña',
withGitHub: 'Continuar con GitHub',
withGoogle: 'Continuar con Google',
rightTitle: 'Desbloquea todo el potencial de LLM',
rightDesc: 'Construye de manera sencilla aplicaciones de IA visualmente cautivadoras, operables y mejorables.',
tos: 'Términos de servicio',
pp: 'Política de privacidad',
tosDesc: 'Al registrarte, aceptas nuestros',
goToInit: 'Si no has inicializado la cuenta, por favor ve a la página de inicialización',
dontHave: '¿No tienes?',
invalidInvitationCode: 'Código de invitación inválido',
accountAlreadyInited: 'La cuenta ya está inicializada',
forgotPassword: '¿Olvidaste tu contraseña?',
resetLinkSent: 'Enlace de restablecimiento enviado',
sendResetLink: 'Enviar enlace de restablecimiento',
backToSignIn: 'Volver a iniciar sesión',
forgotPasswordDesc: 'Por favor, ingresa tu dirección de correo electrónico para restablecer tu contraseña. Te enviaremos un correo electrónico con instrucciones sobre cómo restablecer tu contraseña.',
checkEmailForResetLink: 'Por favor, revisa tu correo electrónico para encontrar un enlace para restablecer tu contraseña. Si no aparece en unos minutos, asegúrate de revisar tu carpeta de spam.',
passwordChanged: 'Inicia sesión ahora',
changePassword: 'Cambiar contraseña',
changePasswordTip: 'Por favor, ingresa una nueva contraseña para tu cuenta',
invalidToken: 'Token inválido o expirado',
confirmPassword: 'Confirmar contraseña',
confirmPasswordPlaceholder: 'Confirma tu nueva contraseña',
passwordChangedTip: 'Tu contraseña se ha cambiado correctamente',
error: {
emailEmpty: 'Se requiere una dirección de correo electrónico',
emailInValid: 'Por favor, ingresa una dirección de correo electrónico válida',
nameEmpty: 'Se requiere un nombre',
passwordEmpty: 'Se requiere una contraseña',
passwordLengthInValid: 'La contraseña debe tener al menos 8 caracteres',
passwordInvalid: 'La contraseña debe contener letras y números, y tener una longitud mayor a 8',
registrationNotAllowed: 'Cuenta no encontrada. Póngase en contacto con el administrador del sistema para registrarse.',
},
license: {
tip: 'Antes de comenzar con Dify Community Edition, lee la',
link: 'Licencia de código abierto de GitHub',
},
join: 'Unirse',
joinTipStart: 'Te invita a unirte al equipo de',
joinTipEnd: 'en Dify',
invalid: 'El enlace ha expirado',
explore: 'Explorar Dify',
activatedTipStart: 'Te has unido al equipo de',
activatedTipEnd: '',
activated: 'Inicia sesión ahora',
adminInitPassword: 'Contraseña de inicialización de administrador',
validate: 'Validar',
checkCode: {
verify: 'Verificar',
didNotReceiveCode: '¿No recibiste el código?',
verificationCodePlaceholder: 'Ingresa el código de 6 dígitos',
checkYourEmail: 'Revisa tu correo electrónico',
emptyCode: 'Se requiere código',
useAnotherMethod: 'Usar otro método',
resend: 'Reenviar',
tips: 'Enviamos un código de verificación a <strong>{{email}}</strong>',
verificationCode: 'Código de verificación',
validTime: 'Ten en cuenta que el código es válido durante 5 minutos',
invalidCode: 'Código no válido',
},
or: 'O',
back: 'Atrás',
continueWithCode: 'Continuar con el código',
usePassword: 'Usar contraseña',
changePasswordBtn: 'Establecer una contraseña',
withSSO: 'Continuar con SSO',
sendVerificationCode: 'Enviar código de verificación',
backToLogin: 'Volver al inicio de sesión',
resetPassword: 'Restablecer contraseña',
enterYourName: 'Por favor, introduzca su nombre de usuario',
useVerificationCode: 'Usar código de verificación',
resetPasswordDesc: 'Escriba el correo electrónico que utilizó para registrarse en Dify y le enviaremos un correo electrónico de restablecimiento de contraseña.',
noLoginMethod: 'Método de autenticación no configurado',
setYourAccount: 'Configura tu cuenta',
noLoginMethodTip: 'Póngase en contacto con el administrador del sistema para agregar un método de autenticación.',
licenseInactive: 'Licencia inactiva',
licenseInactiveTip: 'La licencia de Dify Enterprise para su espacio de trabajo está inactiva. Póngase en contacto con su administrador para seguir utilizando Dify.',
licenseExpired: 'Licencia caducada',
licenseLost: 'Licencia perdida',
licenseExpiredTip: 'La licencia de Dify Enterprise para su espacio de trabajo ha caducado. Póngase en contacto con su administrador para seguir utilizando Dify.',
licenseLostTip: 'No se pudo conectar el servidor de licencias de Dife. Póngase en contacto con su administrador para seguir utilizando Dify.',
}
export default translation

View File

@@ -0,0 +1,25 @@
const translation = {
tags: {
image: 'Imagen',
agent: 'Agente',
medical: 'Médico',
weather: 'Tiempo',
design: 'Diseño',
videos: 'Vídeos',
education: 'Educación',
finance: 'Finanzas',
entertainment: 'Diversión',
social: 'Social',
travel: 'Viajar',
utilities: 'Utilidades',
search: 'Buscar',
news: 'Noticia',
business: 'Negocio',
other: 'Otro',
productivity: 'Productividad',
},
allTags: 'Todas las etiquetas',
searchTags: 'Etiquetas de búsqueda',
}
export default translation

View File

@@ -0,0 +1,209 @@
const translation = {
category: {
bundles: 'Paquetes',
all: 'Todo',
extensions: 'Extensiones',
tools: 'Herramientas',
agents: 'Estrategias de los agentes',
models: 'Modelos',
},
categorySingle: {
bundle: 'Haz',
extension: 'Extensión',
tool: 'Herramienta',
model: 'Modelo',
agent: 'Estrategia del agente',
},
list: {
source: {
marketplace: 'Instalar desde Marketplace',
github: 'Instalar desde GitHub',
local: 'Instalar desde el archivo de paquete local',
},
noInstalled: 'No hay plugins instalados',
notFound: 'No se han encontrado plugins',
},
source: {
marketplace: 'Mercado',
local: 'Archivo de paquete local',
github: 'GitHub (en inglés)',
},
detailPanel: {
categoryTip: {
local: 'Plugin Local',
marketplace: 'Instalado desde Marketplace',
github: 'Instalado desde Github',
debugging: 'Complemento de depuración',
},
operation: {
viewDetail: 'Ver Detalle',
detail: 'Detalles',
checkUpdate: 'Comprobar actualización',
install: 'Instalar',
remove: 'Eliminar',
info: 'Información del plugin',
update: 'Actualizar',
},
toolSelector: {
toolLabel: 'Herramienta',
paramsTip1: 'Controla los parámetros de inferencia de LLM.',
settings: 'CONFIGURACIÓN DEL USUARIO',
unsupportedContent2: 'Haga clic para cambiar de versión.',
descriptionPlaceholder: 'Breve descripción del propósito de la herramienta, por ejemplo, obtener la temperatura para una ubicación específica.',
empty: 'Haga clic en el botón \'+\' para agregar herramientas. Puede agregar varias herramientas.',
paramsTip2: 'Cuando \'Automático\' está desactivado, se utiliza el valor predeterminado.',
uninstalledTitle: 'Herramienta no instalada',
descriptionLabel: 'Descripción de la herramienta',
unsupportedContent: 'La versión del plugin instalado no proporciona esta acción.',
auto: 'Automático',
title: 'Agregar herramienta',
placeholder: 'Seleccione una herramienta...',
uninstalledContent: 'Este plugin se instala desde el repositorio local/GitHub. Úselo después de la instalación.',
unsupportedTitle: 'Acción no admitida',
params: 'CONFIGURACIÓN DE RAZONAMIENTO',
uninstalledLink: 'Administrar en Plugins',
},
endpointDeleteContent: '¿Te gustaría eliminar {{nombre}}?',
endpointDisableTip: 'Deshabilitar punto de conexión',
endpointDeleteTip: 'Eliminar punto de conexión',
strategyNum: '{{num}} {{estrategia}} INCLUIDO',
disabled: 'Deshabilitado',
serviceOk: 'Servicio OK',
endpointDisableContent: '¿Te gustaría desactivar {{name}}?',
switchVersion: 'Versión del interruptor',
endpointsTip: 'Este complemento proporciona funcionalidades específicas a través de puntos finales, y puede configurar varios conjuntos de puntos finales para el espacio de trabajo actual.',
configureModel: 'Configurar modelo',
actionNum: '{{num}} {{acción}} INCLUIDO',
configureTool: 'Herramienta de configuración',
endpointModalDesc: 'Una vez configurado, se pueden utilizar las funciones proporcionadas por el complemento a través de los puntos finales de la API.',
modelNum: '{{num}} MODELOS INCLUIDOS',
endpoints: 'Extremos',
endpointModalTitle: 'Punto de conexión de configuración',
endpointsDocLink: 'Ver el documento',
endpointsEmpty: 'Haga clic en el botón \'+\' para agregar un punto de conexión',
configureApp: 'Configurar la aplicación',
},
debugInfo: {
title: 'Depuración',
viewDocs: 'Ver documentos',
},
privilege: {
everyone: 'Todos',
title: 'Preferencias del plugin',
whoCanDebug: '¿Quién puede depurar plugins?',
admins: 'Administradores',
whoCanInstall: '¿Quién puede instalar y administrar complementos?',
noone: 'Nadie',
},
pluginInfoModal: {
repository: 'Depósito',
title: 'Información del plugin',
packageName: 'Paquete',
release: 'Lanzamiento',
},
action: {
checkForUpdates: 'Buscar actualizaciones',
deleteContentLeft: '¿Le gustaría eliminar',
deleteContentRight: '¿Complemento?',
usedInApps: 'Este plugin se está utilizando en las aplicaciones {{num}}.',
delete: 'Eliminar plugin',
pluginInfo: 'Información del plugin',
},
installModal: {
labels: {
repository: 'Depósito',
version: 'Versión',
package: 'Paquete',
},
installPlugin: 'Instalar plugin',
close: 'Cerrar',
uploadingPackage: 'Subiendo {{packageName}}...',
installComplete: 'Instalación completa',
installFailed: 'Error de instalación',
fromTrustSource: 'Por favor, asegúrate de que sólo instalas plugins de una <trustSource>fuente de confianza</trustSource>.',
installedSuccessfullyDesc: 'El plugin se ha instalado correctamente.',
back: 'Atrás',
installFailedDesc: 'El plugin ha fallado en la instalación.',
installing: 'Instalar...',
next: 'Próximo',
readyToInstallPackages: 'A punto de instalar los siguientes plugins {{num}}',
cancel: 'Cancelar',
uploadFailed: 'Error de carga',
install: 'Instalar',
pluginLoadError: 'Error de carga del plugin',
pluginLoadErrorDesc: 'Este plugin no se instalará',
readyToInstall: 'A punto de instalar el siguiente plugin',
dropPluginToInstall: 'Suelte el paquete del complemento aquí para instalarlo',
readyToInstallPackage: 'A punto de instalar el siguiente plugin',
installedSuccessfully: 'Instalación exitosa',
},
installFromGitHub: {
uploadFailed: 'Error de carga',
updatePlugin: 'Actualizar plugin desde GitHub',
selectPackagePlaceholder: 'Por favor, seleccione un paquete',
installedSuccessfully: 'Instalación exitosa',
installNote: 'Por favor, asegúrate de que sólo instalas plugins de una fuente de confianza.',
gitHubRepo: 'Repositorio de GitHub',
selectPackage: 'Seleccionar paquete',
selectVersion: 'Seleccionar versión',
selectVersionPlaceholder: 'Por favor, seleccione una versión',
installPlugin: 'Instalar plugin desde GitHub',
installFailed: 'Error de instalación',
},
upgrade: {
upgrading: 'Instalar...',
close: 'Cerrar',
description: 'A punto de instalar el siguiente plugin',
upgrade: 'Instalar',
title: 'Instalar plugin',
successfulTitle: 'Instalación correcta',
usedInApps: 'Usado en aplicaciones {{num}}',
},
error: {
fetchReleasesError: 'No se pueden recuperar las versiones. Por favor, inténtelo de nuevo más tarde.',
noReleasesFound: 'No se han encontrado versiones. Compruebe el repositorio de GitHub o la URL de entrada.',
inValidGitHubUrl: 'URL de GitHub no válida. Introduzca una URL válida en el formato: https://github.com/owner/repo',
},
marketplace: {
sortOption: {
recentlyUpdated: 'Actualizado recientemente',
newlyReleased: 'Recién estrenado',
firstReleased: 'Lanzado por primera vez',
mostPopular: 'Lo más popular',
},
empower: 'Potencie su desarrollo de IA',
moreFrom: 'Más de Marketplace',
viewMore: 'Ver más',
sortBy: 'Ciudad negra',
noPluginFound: 'No se ha encontrado ningún plugin',
pluginsResult: '{{num}} resultados',
discover: 'Descubrir',
and: 'y',
difyMarketplace: 'Mercado de Dify',
},
task: {
installing: 'Instalando plugins {{installingLength}}, 0 hecho.',
clearAll: 'Borrar todo',
installingWithSuccess: 'Instalando plugins {{installingLength}}, {{successLength}} éxito.',
installedError: 'Los complementos {{errorLength}} no se pudieron instalar',
installError: 'Los complementos {{errorLength}} no se pudieron instalar, haga clic para ver',
installingWithError: 'Instalando plugins {{installingLength}}, {{successLength}} éxito, {{errorLength}} fallido',
},
fromMarketplace: 'De Marketplace',
endpointsEnabled: '{{num}} conjuntos de puntos finales habilitados',
from: 'De',
submitPlugin: 'Enviar plugin',
installAction: 'Instalar',
install: '{{num}} instalaciones',
allCategories: 'Todas las categorías',
searchCategories: 'Categorías de búsqueda',
installFrom: 'INSTALAR DESDE',
search: 'Buscar',
searchInMarketplace: 'Buscar en Marketplace',
searchTools: 'Herramientas de búsqueda...',
findMoreInMarketplace: 'Más información en Marketplace',
installPlugin: 'Instalar plugin',
searchPlugins: 'Plugins de búsqueda',
}
export default translation

View File

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

View File

@@ -0,0 +1,31 @@
const translation = {
input: 'ENTRADA',
result: 'RESULTADO',
detail: 'DETALLE',
tracing: 'TRAZADO',
resultPanel: {
status: 'ESTADO',
time: 'TIEMPO TRANSCURRIDO',
tokens: 'TOTAL DE TOKENS',
},
meta: {
title: 'METADATOS',
status: 'Estado',
version: 'Versión',
executor: 'Ejecutor',
startTime: 'Hora de inicio',
time: 'Tiempo transcurrido',
tokens: 'Total de tokens',
steps: 'Pasos de ejecución',
},
resultEmpty: {
title: 'Esta ejecución solo produce formato JSON,',
tipLeft: 'por favor ve al ',
link: 'panel de detalle',
tipRight: ' para verlo.',
},
actionLogs: 'Registros de acciones',
circularInvocationTip: 'Hay una invocación circular de herramientas/nodos en el flujo de trabajo actual.',
}
export default translation

View File

@@ -0,0 +1,74 @@
const translation = {
common: {
welcome: '',
appUnavailable: 'La aplicación no está disponible',
appUnknownError: 'La aplicación no está disponible',
},
chat: {
newChat: 'Nuevo chat',
pinnedTitle: 'Fijados',
unpinnedTitle: 'Chats',
newChatDefaultName: 'Nueva conversación',
resetChat: 'Reiniciar conversación',
poweredBy: 'Desarrollado por',
prompt: 'Indicación',
privatePromptConfigTitle: 'Configuración de la conversación',
publicPromptConfigTitle: 'Indicación inicial',
configStatusDes: 'Antes de comenzar, puedes modificar la configuración de la conversación',
configDisabled:
'Se han utilizado las configuraciones de la sesión anterior para esta sesión.',
startChat: 'Iniciar chat',
privacyPolicyLeft:
'Por favor, lee la ',
privacyPolicyMiddle:
'política de privacidad',
privacyPolicyRight:
' proporcionada por el desarrollador de la aplicación.',
deleteConversation: {
title: 'Eliminar conversación',
content: '¿Estás seguro/a de que quieres eliminar esta conversación?',
},
tryToSolve: 'Intentar resolver',
temporarySystemIssue: 'Lo sentimos, hay un problema temporal del sistema.',
},
generation: {
tabs: {
create: 'Ejecutar una vez',
batch: 'Ejecutar en lote',
saved: 'Guardado',
},
savedNoData: {
title: '¡Aún no has guardado ningún resultado!',
description: 'Comienza a generar contenido y encuentra tus resultados guardados aquí.',
startCreateContent: 'Comenzar a crear contenido',
},
title: 'Completado por IA',
queryTitle: 'Contenido de la consulta',
completionResult: 'Resultado del completado',
queryPlaceholder: 'Escribe tu contenido de consulta...',
run: 'Ejecutar',
copy: 'Copiar',
resultTitle: 'Completado por IA',
noData: 'La IA te dará lo que deseas aquí.',
csvUploadTitle: 'Arrastra y suelta tu archivo CSV aquí, o ',
browse: 'navega',
csvStructureTitle: 'El archivo CSV debe cumplir con la siguiente estructura:',
downloadTemplate: 'Descarga la plantilla aquí',
field: 'Campo',
batchFailed: {
info: '{{num}} ejecuciones fallidas',
retry: 'Reintentar',
outputPlaceholder: 'Sin contenido de salida',
},
errorMsg: {
empty: 'Por favor, ingresa contenido en el archivo cargado.',
fileStructNotMatch: 'El archivo CSV cargado no coincide con la estructura.',
emptyLine: 'La fila {{rowIndex}} está vacía',
invalidLine: 'Fila {{rowIndex}}: el valor de {{varName}} no puede estar vacío',
moreThanMaxLengthLine: 'Fila {{rowIndex}}: el valor de {{varName}} no puede tener más de {{maxLength}} caracteres',
atLeastOne: 'Por favor, ingresa al menos una fila en el archivo cargado.',
},
},
}
export default translation

View File

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

View File

@@ -0,0 +1,158 @@
const translation = {
title: 'Herramientas',
createCustomTool: 'Crear Herramienta Personalizada',
customToolTip: 'Aprende más sobre las herramientas personalizadas de Dify',
type: {
all: 'Todas',
builtIn: 'Incorporadas',
custom: 'Personalizadas',
workflow: 'Flujo de Trabajo',
},
contribute: {
line1: 'Estoy interesado en ',
line2: 'contribuir herramientas a Dify.',
viewGuide: 'Ver la guía',
},
author: 'Por',
auth: {
unauthorized: 'Para Autorizar',
authorized: 'Autorizado',
setup: 'Configurar la autorización para usar',
setupModalTitle: 'Configurar Autorización',
setupModalTitleDescription: 'Después de configurar las credenciales, todos los miembros dentro del espacio de trabajo pueden usar esta herramienta al orquestar aplicaciones.',
},
includeToolNum: '{{num}} herramientas incluidas',
addTool: 'Agregar Herramienta',
addToolModal: {
type: 'tipo',
category: 'categoría',
add: 'agregar',
added: 'agregada',
manageInTools: 'Administrar en Herramientas',
emptyTitle: 'No hay herramientas de flujo de trabajo disponibles',
emptyTip: 'Ir a "Flujo de Trabajo -> Publicar como Herramienta"',
emptyTitleCustom: 'No hay herramienta personalizada disponible',
emptyTipCustom: 'Crear una herramienta personalizada',
},
createTool: {
title: 'Crear Herramienta Personalizada',
editAction: 'Configurar',
editTitle: 'Editar Herramienta Personalizada',
name: 'Nombre',
toolNamePlaceHolder: 'Ingresa el nombre de la herramienta',
nameForToolCall: 'Nombre de llamada de la herramienta',
nameForToolCallPlaceHolder: 'Utilizado para el reconocimiento automático, como getCurrentWeather, list_pets',
nameForToolCallTip: 'Solo soporta números, letras y guiones bajos.',
description: 'Descripción',
descriptionPlaceholder: 'Breve descripción del propósito de la herramienta, por ejemplo, obtener la temperatura de una ubicación específica.',
schema: 'Esquema',
schemaPlaceHolder: 'Ingresa tu esquema OpenAPI aquí',
viewSchemaSpec: 'Ver la Especificación OpenAPI-Swagger',
importFromUrl: 'Importar desde URL',
importFromUrlPlaceHolder: 'https://...',
urlError: 'Por favor, ingresa una URL válida',
examples: 'Ejemplos',
exampleOptions: {
json: 'Clima (JSON)',
yaml: 'Tienda de Mascotas (YAML)',
blankTemplate: 'Plantilla en Blanco',
},
availableTools: {
title: 'Herramientas Disponibles',
name: 'Nombre',
description: 'Descripción',
method: 'Método',
path: 'Ruta',
action: 'Acciones',
test: 'Probar',
},
authMethod: {
title: 'Método de Autorización',
type: 'Tipo de Autorización',
keyTooltip: 'Clave del encabezado HTTP, puedes dejarla como "Authorization" si no tienes idea de qué es o configurarla con un valor personalizado',
types: {
none: 'Ninguno',
api_key: 'Clave API',
apiKeyPlaceholder: 'Nombre del encabezado HTTP para la Clave API',
apiValuePlaceholder: 'Ingresa la Clave API',
},
key: 'Clave',
value: 'Valor',
},
authHeaderPrefix: {
title: 'Tipo de Autenticación',
types: {
basic: 'Básica',
bearer: 'Bearer',
custom: 'Personalizada',
},
},
privacyPolicy: 'Política de Privacidad',
privacyPolicyPlaceholder: 'Por favor, ingresa la política de privacidad',
toolInput: {
title: 'Entrada de la Herramienta',
name: 'Nombre',
required: 'Requerido',
method: 'Método',
methodSetting: 'Configuración',
methodSettingTip: 'El usuario completa la configuración de la herramienta',
methodParameter: 'Parámetro',
methodParameterTip: 'LLM completa durante la inferencia',
label: 'Etiquetas',
labelPlaceholder: 'Elige etiquetas (opcional)',
description: 'Descripción',
descriptionPlaceholder: 'Descripción del significado del parámetro',
},
customDisclaimer: 'Descargo de responsabilidad personalizado',
customDisclaimerPlaceholder: 'Por favor, ingresa el descargo de responsabilidad personalizado',
confirmTitle: '¿Confirmar para guardar?',
confirmTip: 'Las aplicaciones que usen esta herramienta se verán afectadas',
deleteToolConfirmTitle: '¿Eliminar esta Herramienta?',
deleteToolConfirmContent: 'Eliminar la herramienta es irreversible. Los usuarios ya no podrán acceder a tu herramienta.',
},
test: {
title: 'Probar',
parametersValue: 'Parámetros y Valor',
parameters: 'Parámetros',
value: 'Valor',
testResult: 'Resultados de la Prueba',
testResultPlaceholder: 'El resultado de la prueba se mostrará aquí',
},
thought: {
using: 'Usando',
used: 'Usado',
requestTitle: 'Solicitud a',
responseTitle: 'Respuesta de',
},
setBuiltInTools: {
info: 'Información',
setting: 'Ajuste',
toolDescription: 'Descripción de la herramienta',
parameters: 'parámetros',
string: 'cadena',
number: 'número',
required: 'Requerido',
infoAndSetting: 'Información y Ajustes',
file: 'archivo',
},
noCustomTool: {
title: '¡Sin herramientas personalizadas!',
content: 'Agrega y administra tus herramientas personalizadas aquí para construir aplicaciones de inteligencia artificial.',
createTool: 'Crear Herramienta',
},
noSearchRes: {
title: '¡Lo sentimos, no hay resultados!',
content: 'No encontramos herramientas que coincidan con tu búsqueda.',
reset: 'Restablecer Búsqueda',
},
builtInPromptTitle: 'Aviso',
toolRemoved: 'Herramienta eliminada',
notAuthorized: 'Herramienta no autorizada',
howToGet: 'Cómo obtener',
openInStudio: 'Abrir en Studio',
toolNameUsageTip: 'Nombre de llamada de la herramienta para razonamiento y promoción de agentes',
copyToolName: 'Nombre de la copia',
noTools: 'No se han encontrado herramientas',
}
export default translation

View File

@@ -0,0 +1,785 @@
const translation = {
common: {
undo: 'Deshacer',
redo: 'Rehacer',
editing: 'Editando',
autoSaved: 'Guardado automático',
unpublished: 'No publicado',
published: 'Publicado',
publish: 'Publicar',
update: 'Actualizar',
run: 'Ejecutar',
running: 'Ejecutando',
inRunMode: 'En modo de ejecución',
inPreview: 'En vista previa',
inPreviewMode: 'En modo de vista previa',
preview: 'Vista previa',
viewRunHistory: 'Ver historial de ejecución',
runHistory: 'Historial de ejecución',
goBackToEdit: 'Volver al editor',
conversationLog: 'Registro de conversación',
features: 'Funcionalidades',
debugAndPreview: 'Vista previa',
restart: 'Reiniciar',
currentDraft: 'Borrador actual',
currentDraftUnpublished: 'Borrador actual no publicado',
latestPublished: 'Último publicado',
publishedAt: 'Publicado el',
restore: 'Restaurar',
runApp: 'Ejecutar aplicación',
batchRunApp: 'Ejecutar aplicación en lote',
accessAPIReference: 'Acceder a la referencia de la API',
embedIntoSite: 'Insertar en el sitio',
addTitle: 'Agregar título...',
addDescription: 'Agregar descripción...',
noVar: 'Sin variable',
searchVar: 'Buscar variable',
variableNamePlaceholder: 'Nombre de la variable',
setVarValuePlaceholder: 'Establecer variable',
needConnectTip: 'Este paso no está conectado a nada',
maxTreeDepth: 'Límite máximo de {{depth}} nodos por rama',
needEndNode: 'Debe agregarse el bloque de Fin',
needAnswerNode: 'Debe agregarse el bloque de Respuesta',
workflowProcess: 'Proceso de flujo de trabajo',
notRunning: 'Aún no se está ejecutando',
previewPlaceholder: 'Ingrese contenido en el cuadro de abajo para comenzar a depurar el Chatbot',
effectVarConfirm: {
title: 'Eliminar variable',
content: 'La variable se utiliza en otros nodos. ¿Aún quieres eliminarla?',
},
insertVarTip: 'Presiona la tecla \'/\' para insertar rápidamente',
processData: 'Procesar datos',
input: 'Entrada',
output: 'Salida',
jinjaEditorPlaceholder: 'Escribe \'/\' o \'{\' para insertar una variable',
viewOnly: 'Solo vista',
showRunHistory: 'Mostrar historial de ejecución',
enableJinja: 'Habilitar soporte de plantillas Jinja',
learnMore: 'Más información',
copy: 'Copiar',
duplicate: 'Duplicar',
addBlock: 'Agregar bloque',
pasteHere: 'Pegar aquí',
pointerMode: 'Modo puntero',
handMode: 'Modo mano',
model: 'Modelo',
workflowAsTool: 'Flujo de trabajo como herramienta',
configureRequired: 'Configuración requerida',
configure: 'Configurar',
manageInTools: 'Administrar en Herramientas',
workflowAsToolTip: 'Se requiere la reconfiguración de la herramienta después de la actualización del flujo de trabajo.',
viewDetailInTracingPanel: 'Ver detalles',
syncingData: 'Sincronizando datos, solo unos segundos.',
importDSL: 'Importar DSL',
importDSLTip: 'El borrador actual se sobrescribirá. Exporta el flujo de trabajo como respaldo antes de importar.',
backupCurrentDraft: 'Respaldar borrador actual',
chooseDSL: 'Elegir archivo DSL (yml)',
overwriteAndImport: 'Sobrescribir e importar',
importFailure: 'Error al importar',
importSuccess: 'Importación exitosa',
parallelTip: {
click: {
title: 'Clic',
desc: 'Para agregar',
},
drag: {
title: 'Arrastrar',
desc: 'Para conectarse',
},
limit: 'El paralelismo se limita a {{num}} ramas.',
depthLimit: 'Límite de capa de anidamiento paralelo de capas {{num}}',
},
parallelRun: 'Ejecución paralela',
disconnect: 'Desconectar',
jumpToNode: 'Saltar a este nodo',
addParallelNode: 'Agregar nodo paralelo',
parallel: 'PARALELO',
branch: 'RAMA',
fileUploadTip: 'Las funciones de carga de imágenes se han actualizado a la carga de archivos.',
ImageUploadLegacyTip: 'Ahora puede crear variables de tipo de archivo en el formulario de inicio. Ya no admitiremos la función de carga de imágenes en el futuro.',
featuresDescription: 'Mejorar la experiencia del usuario de la aplicación web',
featuresDocLink: 'Aprende más',
importWarning: 'Cautela',
importWarningDetails: 'La diferencia de versión de DSL puede afectar a ciertas características',
openInExplore: 'Abrir en Explorar',
onFailure: 'Sobre el fracaso',
addFailureBranch: 'Agregar rama de error',
noHistory: 'Sin historia',
loadMore: 'Cargar más flujos de trabajo',
},
env: {
envPanelTitle: 'Variables de Entorno',
envDescription: 'Las variables de entorno se pueden utilizar para almacenar información privada y credenciales. Son de solo lectura y se pueden separar del archivo DSL durante la exportación.',
envPanelButton: 'Añadir Variable',
modal: {
title: 'Añadir Variable de Entorno',
editTitle: 'Editar Variable de Entorno',
type: 'Tipo',
name: 'Nombre',
namePlaceholder: 'nombre de env',
value: 'Valor',
valuePlaceholder: 'valor de env',
secretTip: 'Se utiliza para definir información o datos sensibles, con configuraciones DSL configuradas para prevenir fugas.',
},
export: {
title: '¿Exportar variables de entorno secretas?',
checkbox: 'Exportar valores secretos',
ignore: 'Exportar DSL',
export: 'Exportar DSL con valores secretos',
},
},
chatVariable: {
panelTitle: 'Variables de Conversación',
panelDescription: 'Las Variables de Conversación se utilizan para almacenar información interactiva que el LLM necesita recordar, incluyendo el historial de conversación, archivos subidos y preferencias del usuario. Son de lectura y escritura.',
docLink: 'Visite nuestra documentación para más información.',
button: 'Añadir Variable',
modal: {
title: 'Añadir Variable de Conversación',
editTitle: 'Editar Variable de Conversación',
name: 'Nombre',
namePlaceholder: 'Nombre de la variable',
type: 'Tipo',
value: 'Valor Predeterminado',
valuePlaceholder: 'Valor predeterminado, dejar en blanco para no establecer',
description: 'Descripción',
descriptionPlaceholder: 'Describa la variable',
editInJSON: 'Editar en JSON',
oneByOne: 'Añadir uno por uno',
editInForm: 'Editar en Formulario',
arrayValue: 'Valor',
addArrayValue: 'Añadir Valor',
objectKey: 'Clave',
objectType: 'Tipo',
objectValue: 'Valor Predeterminado',
},
storedContent: 'Contenido almacenado',
updatedAt: 'Actualizado el ',
},
changeHistory: {
title: 'Historial de cambios',
placeholder: 'Aún no has realizado cambios',
clearHistory: 'Borrar historial',
hint: 'Sugerencia',
hintText: 'Tus acciones de edición se registran en un historial de cambios, que se almacena en tu dispositivo durante esta sesión. Este historial se borrará cuando salgas del editor.',
stepBackward_one: '{{count}} paso hacia atrás',
stepBackward_other: '{{count}} pasos hacia atrás',
stepForward_one: '{{count}} paso hacia adelante',
stepForward_other: '{{count}} pasos hacia adelante',
sessionStart: 'Inicio de sesión',
currentState: 'Estado actual',
nodeTitleChange: 'Se cambió el título del bloque',
nodeDescriptionChange: 'Se cambió la descripción del bloque',
nodeDragStop: 'Bloque movido',
nodeChange: 'Bloque cambiado',
nodeConnect: 'Bloque conectado',
nodePaste: 'Bloque pegado',
nodeDelete: 'Bloque eliminado',
nodeAdd: 'Bloque agregado',
nodeResize: 'Bloque redimensionado',
noteAdd: 'Nota agregada',
noteChange: 'Nota cambiada',
noteDelete: 'Nota eliminada',
edgeDelete: 'Bloque desconectado',
},
errorMsg: {
fieldRequired: 'Se requiere {{field}}',
authRequired: 'Se requiere autorización',
invalidJson: '{{field}} no es un JSON válido',
fields: {
variable: 'Nombre de la variable',
variableValue: 'Valor de la variable',
code: 'Código',
model: 'Modelo',
rerankModel: 'Modelo de reordenamiento',
visionVariable: 'Variable de visión',
},
invalidVariable: 'Variable no válida',
rerankModelRequired: 'Antes de activar el modelo de reclasificación, confirme que el modelo se ha configurado correctamente en la configuración.',
toolParameterRequired: '{{campo}}: el parámetro [{{param}}] es obligatorio',
noValidTool: '{{campo}} no se ha seleccionado ninguna herramienta válida',
},
singleRun: {
testRun: 'Ejecución de prueba',
startRun: 'Iniciar ejecución',
running: 'Ejecutando',
testRunIteration: 'Iteración de ejecución de prueba',
back: 'Atrás',
iteration: 'Iteración',
},
tabs: {
'searchBlock': 'Buscar bloque',
'blocks': 'Bloques',
'tools': 'Herramientas',
'allTool': 'Todos',
'builtInTool': 'Incorporadas',
'customTool': 'Personalizadas',
'workflowTool': 'Flujo de trabajo',
'question-understand': 'Entender pregunta',
'logic': 'Lógica',
'transform': 'Transformar',
'utilities': 'Utilidades',
'noResult': 'No se encontraron coincidencias',
'searchTool': 'Herramienta de búsqueda',
'agent': 'Estrategia del agente',
'plugin': 'Plugin',
},
blocks: {
'start': 'Inicio',
'end': 'Fin',
'answer': 'Respuesta',
'llm': 'LLM',
'knowledge-retrieval': 'Recuperación de conocimiento',
'question-classifier': 'Clasificador de preguntas',
'if-else': 'SI/SINO',
'code': 'Código',
'template-transform': 'Plantilla',
'http-request': 'Solicitud HTTP',
'variable-assigner': 'Asignador de variables',
'variable-aggregator': 'Agregador de variables',
'assigner': 'Asignador de Variables',
'iteration-start': 'Inicio de iteración',
'iteration': 'Iteración',
'parameter-extractor': 'Extractor de parámetros',
'document-extractor': 'Extractor de documentos',
'list-operator': 'Operador de lista',
'agent': 'Agente',
},
blocksAbout: {
'start': 'Define los parámetros iniciales para iniciar un flujo de trabajo',
'end': 'Define el final y el tipo de resultado de un flujo de trabajo',
'answer': 'Define el contenido de respuesta de una conversación de chat',
'llm': 'Invoca modelos de lenguaje grandes para responder preguntas o procesar lenguaje natural',
'knowledge-retrieval': 'Te permite consultar contenido de texto relacionado con las preguntas de los usuarios desde el conocimiento',
'question-classifier': 'Define las condiciones de clasificación de las preguntas de los usuarios, LLM puede definir cómo progresa la conversación en función de la descripción de clasificación',
'if-else': 'Te permite dividir el flujo de trabajo en dos ramas basadas en condiciones SI/SINO',
'code': 'Ejecuta un fragmento de código Python o NodeJS para implementar lógica personalizada',
'template-transform': 'Convierte datos en una cadena utilizando la sintaxis de plantillas Jinja',
'http-request': 'Permite enviar solicitudes al servidor a través del protocolo HTTP',
'variable-assigner': 'Agrega variables de múltiples ramas en una sola variable para configurar de manera unificada los nodos descendentes.',
'assigner': 'El nodo de asignación de variables se utiliza para asignar valores a variables escribibles (como variables de conversación).',
'variable-aggregator': 'Agrega variables de múltiples ramas en una sola variable para configurar de manera unificada los nodos descendentes.',
'iteration': 'Realiza múltiples pasos en un objeto de lista hasta que se generen todos los resultados.',
'parameter-extractor': 'Utiliza LLM para extraer parámetros estructurados del lenguaje natural para invocaciones de herramientas o solicitudes HTTP.',
'list-operator': 'Se utiliza para filtrar u ordenar el contenido de la matriz.',
'document-extractor': 'Se utiliza para analizar documentos cargados en contenido de texto que es fácilmente comprensible por LLM.',
'agent': 'Invocar modelos de lenguaje de gran tamaño para responder preguntas o procesar el lenguaje natural',
},
operator: {
zoomIn: 'Acercar',
zoomOut: 'Alejar',
zoomTo50: 'Zoom al 50%',
zoomTo100: 'Zoom al 100%',
zoomToFit: 'Ajustar al tamaño',
},
panel: {
userInputField: 'Campo de entrada del usuario',
changeBlock: 'Cambiar bloque',
helpLink: 'Enlace de ayuda',
about: 'Acerca de',
createdBy: 'Creado por ',
nextStep: 'Siguiente paso',
addNextStep: 'Agregar el siguiente bloque en este flujo de trabajo',
selectNextStep: 'Seleccionar siguiente bloque',
runThisStep: 'Ejecutar este paso',
checklist: 'Lista de verificación',
checklistTip: 'Asegúrate de resolver todos los problemas antes de publicar',
checklistResolved: 'Se resolvieron todos los problemas',
organizeBlocks: 'Organizar bloques',
change: 'Cambiar',
optional: '(opcional)',
},
nodes: {
common: {
outputVars: 'Variables de salida',
insertVarTip: 'Insertar variable',
memory: {
memory: 'Memoria',
memoryTip: 'Configuración de memoria de chat',
windowSize: 'Tamaño de ventana',
conversationRoleName: 'Nombre del rol de conversación',
user: 'Prefijo de usuario',
assistant: 'Prefijo de asistente',
},
memories: {
title: 'Memorias',
tip: 'Memoria de chat',
builtIn: 'Incorporada',
},
errorHandle: {
none: {
title: 'Ninguno',
desc: 'El nodo dejará de ejecutarse si se produce una excepción y no se controla',
},
defaultValue: {
title: 'Valor predeterminado',
desc: 'Cuando se produzca un error, especifique un contenido de salida estático.',
tip: 'En caso de error, devolverá un valor inferior.',
inLog: 'Excepción de nodo, salida según los valores predeterminados.',
output: 'Valor predeterminado de salida',
},
failBranch: {
title: 'Rama de error',
desc: 'Cuando se produce un error, ejecutará la rama de excepción',
customize: 'Vaya al lienzo para personalizar la lógica de la rama de error.',
customizeTip: 'Cuando se activa la rama fail, las excepciones lanzadas por los nodos no finalizarán el proceso. En su lugar, ejecutará automáticamente la rama de error predefinida, lo que le permitirá proporcionar de forma flexible mensajes de error, informes, correcciones u omitir acciones.',
inLog: 'Node, ejecutará automáticamente la rama de error. La salida del nodo devolverá un tipo de error y un mensaje de error y los pasará a la versión posterior.',
},
partialSucceeded: {
tip: 'Hay nodos {{num}} en el proceso que se ejecutan de manera anormal, vaya a rastreo para verificar los registros.',
},
title: 'Manejo de errores',
tip: 'Estrategia de control de excepciones, que se desencadena cuando un nodo encuentra una excepción.',
},
retry: {
retryOnFailure: 'Volver a intentarlo en caso de error',
maxRetries: 'Número máximo de reintentos',
retryInterval: 'Intervalo de reintento',
retryTimes: 'Reintentar {{times}} veces en caso de error',
retrying: 'Reintentando...',
retrySuccessful: 'Volver a intentarlo correctamente',
retryFailed: 'Error en el reintento',
retryFailedTimes: '{{veces}} reintentos fallidos',
times: 'veces',
ms: 'Sra.',
retries: '{{num}} Reintentos',
retry: 'Reintentar',
},
},
start: {
required: 'requerido',
inputField: 'Campo de entrada',
builtInVar: 'Variables incorporadas',
outputVars: {
query: 'Entrada del usuario',
memories: {
des: 'Historial de conversación',
type: 'tipo de mensaje',
content: 'contenido del mensaje',
},
files: 'Lista de archivos',
},
noVarTip: 'Establece las entradas que se pueden utilizar en el flujo de trabajo',
},
end: {
outputs: 'Salidas',
output: {
type: 'tipo de salida',
variable: 'variable de salida',
},
type: {
'none': 'Ninguno',
'plain-text': 'Texto sin formato',
'structured': 'Estructurado',
},
},
answer: {
answer: 'Respuesta',
outputVars: 'Variables de salida',
},
llm: {
model: 'modelo',
variables: 'variables',
context: 'contexto',
contextTooltip: 'Puedes importar el conocimiento como contexto',
notSetContextInPromptTip: 'Para habilitar la función de contexto, completa la variable de contexto en PROMPT.',
prompt: 'indicación',
roleDescription: {
system: 'Proporciona instrucciones generales para la conversación',
user: 'Proporciona instrucciones, consultas o cualquier entrada basada en texto al modelo',
assistant: 'Las respuestas del modelo basadas en los mensajes del usuario',
},
addMessage: 'Agregar mensaje',
vision: 'visión',
files: 'Archivos',
resolution: {
name: 'Resolución',
high: 'Alta',
low: 'Baja',
},
outputVars: {
output: 'Generar contenido',
usage: 'Información de uso del modelo',
},
singleRun: {
variable: 'Variable',
},
sysQueryInUser: 'se requiere sys.query en el mensaje del usuario',
},
knowledgeRetrieval: {
queryVariable: 'Variable de consulta',
knowledge: 'Conocimiento',
outputVars: {
output: 'Datos segmentados de recuperación',
content: 'Contenido segmentado',
title: 'Título segmentado',
icon: 'Ícono segmentado',
url: 'URL segmentada',
metadata: 'Metadatos adicionales',
},
},
http: {
inputVars: 'Variables de entrada',
api: 'API',
apiPlaceholder: 'Ingresa la URL, escribe \'/\' para insertar una variable',
notStartWithHttp: 'La API debe comenzar con http:// o https://',
key: 'Clave',
value: 'Valor',
bulkEdit: 'Edición masiva',
keyValueEdit: 'Edición clave-valor',
headers: 'Encabezados',
params: 'Parámetros',
body: 'Cuerpo',
outputVars: {
body: 'Contenido de la respuesta',
statusCode: 'Código de estado de la respuesta',
headers: 'Lista de encabezados de respuesta en formato JSON',
files: 'Lista de archivos',
},
authorization: {
'authorization': 'Autorización',
'authorizationType': 'Tipo de autorización',
'no-auth': 'Ninguna',
'api-key': 'Clave de API',
'auth-type': 'Tipo de autenticación',
'basic': 'Básica',
'bearer': 'Bearer',
'custom': 'Personalizada',
'api-key-title': 'Clave de API',
'header': 'Encabezado',
},
insertVarPlaceholder: 'escribe \'/\' para insertar una variable',
timeout: {
title: 'Tiempo de espera',
connectLabel: 'Tiempo de espera de conexión',
connectPlaceholder: 'Ingresa el tiempo de espera de conexión en segundos',
readLabel: 'Tiempo de espera de lectura',
readPlaceholder: 'Ingresa el tiempo de espera de lectura en segundos',
writeLabel: 'Tiempo de espera de escritura',
writePlaceholder: 'Ingresa el tiempo de espera de escritura en segundos',
},
type: 'Tipo',
binaryFileVariable: 'Variable de archivo binario',
extractListPlaceholder: 'Introduzca el índice de elementos de la lista, escriba \'/\' insertar variable',
curl: {
title: 'Importar desde cURL',
placeholder: 'Pegar la cadena cURL aquí',
},
},
code: {
inputVars: 'Variables de entrada',
outputVars: 'Variables de salida',
advancedDependencies: 'Dependencias avanzadas',
advancedDependenciesTip: 'Agrega algunas dependencias precargadas que consumen más tiempo o no son incorporadas por defecto aquí',
searchDependencies: 'Buscar dependencias',
},
templateTransform: {
inputVars: 'Variables de entrada',
code: 'Código',
codeSupportTip: 'Solo admite Jinja2',
outputVars: {
output: 'Contenido transformado',
},
},
ifElse: {
if: 'Si',
else: 'Sino',
elseDescription: 'Se utiliza para definir la lógica que se debe ejecutar cuando no se cumple la condición del si.',
and: 'y',
or: 'o',
operator: 'Operador',
notSetVariable: 'Por favor, establece primero la variable',
comparisonOperator: {
'contains': 'contiene',
'not contains': 'no contiene',
'start with': 'comienza con',
'end with': 'termina con',
'is': 'es',
'is not': 'no es',
'empty': 'está vacío',
'not empty': 'no está vacío',
'null': 'es nulo',
'not null': 'no es nulo',
'regex match': 'Coincidencia de expresiones regulares',
'not in': 'no en',
'in': 'en',
'exists': 'Existe',
'all of': 'Todos los',
'not exists': 'no existe',
},
enterValue: 'Ingresa un valor',
addCondition: 'Agregar condición',
conditionNotSetup: 'Condición NO configurada',
selectVariable: 'Seleccionar variable...',
optionName: {
audio: 'Audio',
image: 'Imagen',
doc: 'Doc',
localUpload: 'Carga local',
video: 'Vídeo',
url: 'URL',
},
select: 'Escoger',
addSubVariable: 'Sub Variable',
},
variableAssigner: {
title: 'Asignar variables',
outputType: 'Tipo de salida',
varNotSet: 'Variable no establecida',
noVarTip: 'Agrega las variables que se asignarán',
type: {
string: 'Cadena',
number: 'Número',
object: 'Objeto',
array: 'Arreglo',
},
aggregationGroup: 'Grupo de agregación',
aggregationGroupTip: 'Al habilitar esta función, el agregador de variables puede agregar múltiples conjuntos de variables.',
addGroup: 'Agregar grupo',
outputVars: {
varDescribe: 'Salida de {{groupName}}',
},
setAssignVariable: 'Establecer variable asignada',
},
assigner: {
'assignedVariable': 'Variable Asignada',
'writeMode': 'Modo de Escritura',
'writeModeTip': 'Cuando la VARIABLE ASIGNADA es un array, el modo de anexar agrega al final.',
'over-write': 'Sobrescribir',
'append': 'Anexar',
'plus': 'Más',
'clear': 'Limpiar',
'setVariable': 'Establecer Variable',
'variable': 'Variable',
'operations': {
'clear': 'Claro',
'*=': '*=',
'-=': '-=',
'title': 'Operación',
'extend': 'Extender',
'append': 'Añadir',
'+=': '+=',
'over-write': 'Sobrescribir',
'overwrite': 'Sobrescribir',
'/=': '/=',
'set': 'Poner',
},
'variables': 'Variables',
'setParameter': 'Establecer parámetro...',
'noVarTip': 'Haga clic en el botón "+" para agregar variables',
'varNotSet': 'Variable NO establecida',
'noAssignedVars': 'No hay variables asignadas disponibles',
'selectAssignedVariable': 'Seleccione la variable asignada...',
'assignedVarsDescription': 'Las variables asignadas deben ser variables grabables, como las variables de conversación.',
},
tool: {
toAuthorize: 'Para autorizar',
inputVars: 'Variables de entrada',
outputVars: {
text: 'Contenido generado por la herramienta',
files: {
title: 'Archivos generados por la herramienta',
type: 'Tipo de soporte. Ahora solo admite imágenes',
transfer_method: 'Método de transferencia. El valor es remote_url o local_file',
url: 'URL de la imagen',
upload_file_id: 'ID de archivo cargado',
},
json: 'JSON generado por la herramienta',
},
},
questionClassifiers: {
model: 'modelo',
inputVars: 'Variables de entrada',
outputVars: {
className: 'Nombre de la clase',
},
class: 'Clase',
classNamePlaceholder: 'Escribe el nombre de tu clase',
advancedSetting: 'Configuración avanzada',
topicName: 'Nombre del tema',
topicPlaceholder: 'Escribe el nombre de tu tema',
addClass: 'Agregar clase',
instruction: 'Instrucción',
instructionTip: 'Input additional instructions to help the question classifier better understand how to categorize questions.',
instructionPlaceholder: 'Write your instruction',
},
parameterExtractor: {
inputVar: 'Variable de entrada',
extractParameters: 'Extraer parámetros',
importFromTool: 'Importar desde herramientas',
addExtractParameter: 'Agregar parámetro de extracción',
addExtractParameterContent: {
name: 'Nombre',
namePlaceholder: 'Nombre del parámetro de extracción',
type: 'Tipo',
typePlaceholder: 'Tipo de parámetro de extracción',
description: 'Descripción',
descriptionPlaceholder: 'Descripción del parámetro de extracción',
required: 'Requerido',
requiredContent: 'El campo requerido se utiliza solo como referencia para la inferencia del modelo, y no para la validación obligatoria de la salida del parámetro.',
},
extractParametersNotSet: 'Parámetros de extracción no configurados',
instruction: 'Instrucción',
instructionTip: 'Ingrese instrucciones adicionales para ayudar al extractor de parámetros a entender cómo extraer parámetros.',
advancedSetting: 'Configuración avanzada',
reasoningMode: 'Modo de razonamiento',
reasoningModeTip: 'Puede elegir el modo de razonamiento apropiado basado en la capacidad del modelo para responder a instrucciones para llamadas de funciones o indicaciones.',
isSuccess: 'Es éxito. En caso de éxito el valor es 1, en caso de fallo el valor es 0.',
errorReason: 'Motivo del error',
},
iteration: {
deleteTitle: '¿Eliminar nodo de iteración?',
deleteDesc: 'Eliminar el nodo de iteración eliminará todos los nodos secundarios',
input: 'Entrada',
output: 'Variables de salida',
iteration_one: '{{count}} Iteración',
iteration_other: '{{count}} Iteraciones',
currentIteration: 'Iteración actual',
ErrorMethod: {
operationTerminated: 'Terminado',
continueOnError: 'Continuar en el error',
removeAbnormalOutput: 'eliminar-salida-anormal',
},
comma: ',',
errorResponseMethod: 'Método de respuesta a errores',
error_one: '{{conteo}} Error',
parallelPanelDesc: 'En el modo paralelo, las tareas de la iteración admiten la ejecución en paralelo.',
MaxParallelismTitle: 'Máximo paralelismo',
error_other: '{{conteo}} Errores',
parallelMode: 'Modo paralelo',
parallelModeEnableDesc: 'En el modo paralelo, las tareas dentro de las iteraciones admiten la ejecución en paralelo. Puede configurar esto en el panel de propiedades a la derecha.',
parallelModeUpper: 'MODO PARALELO',
MaxParallelismDesc: 'El paralelismo máximo se utiliza para controlar el número de tareas ejecutadas simultáneamente en una sola iteración.',
answerNodeWarningDesc: 'Advertencia de modo paralelo: Los nodos de respuesta, las asignaciones de variables de conversación y las operaciones de lectura/escritura persistentes dentro de las iteraciones pueden provocar excepciones.',
parallelModeEnableTitle: 'Modo paralelo habilitado',
},
note: {
addNote: 'Agregar nota',
editor: {
placeholder: 'Escribe tu nota...',
small: 'Pequeño',
medium: 'Mediano',
large: 'Grande',
bold: 'Negrita',
italic: 'Itálica',
strikethrough: 'Tachado',
link: 'Enlace',
openLink: 'Abrir',
unlink: 'Quitar enlace',
enterUrl: 'Introducir URL...',
invalidUrl: 'URL inválida',
bulletList: 'Lista de viñetas',
showAuthor: 'Mostrar autor',
},
},
tracing: {
stopBy: 'Detenido por {{user}}',
},
docExtractor: {
outputVars: {
text: 'Texto extraído',
},
learnMore: 'Aprende más',
supportFileTypes: 'Tipos de archivos de soporte: {{tipos}}.',
inputVar: 'Variable de entrada',
},
listFilter: {
outputVars: {
first_record: 'Primer registro',
last_record: 'Último registro',
result: 'Filtrar resultado',
},
filterCondition: 'Condición del filtro',
filterConditionComparisonValue: 'Valor de la condición de filtro',
inputVar: 'Variable de entrada',
desc: 'DESC',
limit: 'Arriba N',
filterConditionKey: 'Clave de condición de filtro',
orderBy: 'Ordenar por',
filterConditionComparisonOperator: 'Operador de comparación de condiciones de filtro',
asc: 'ASC',
selectVariableKeyPlaceholder: 'Seleccione la clave de subvariable',
extractsCondition: 'Extraiga el elemento N',
},
agent: {
strategy: {
configureTip: 'Configure la estrategia de agentes.',
tooltip: 'Diferentes estrategias agentic determinan cómo el sistema planifica y ejecuta las llamadas a herramientas de varios pasos',
label: 'Estrategia Agentica',
shortLabel: 'Estrategia',
configureTipDesc: 'Después de configurar la estrategia agentica, este nodo cargará automáticamente las configuraciones restantes. La estrategia afectará el mecanismo de razonamiento de herramientas de varios pasos.',
selectTip: 'Seleccionar estrategia agentica',
searchPlaceholder: 'Estrategia de agentes de búsqueda',
},
pluginInstaller: {
install: 'Instalar',
installing: 'Instalar',
},
modelNotInMarketplace: {
manageInPlugins: 'Administrar en Plugins',
desc: 'Este modelo se instala desde el repositorio local o de GitHub. Úselo después de la instalación.',
title: 'Modelo no instalado',
},
modelNotSupport: {
descForVersionSwitch: 'La versión del plugin instalado no proporciona este modelo. Haga clic para cambiar de versión.',
desc: 'La versión del plugin instalado no proporciona este modelo.',
title: 'Modelo no compatible',
},
modelSelectorTooltips: {
deprecated: 'Este modelo está en desuso',
},
outputVars: {
files: {
url: 'URL de la imagen',
title: 'Archivos generados por el agente',
upload_file_id: 'Cargar ID de archivo',
transfer_method: 'Método de transferencia. El valor es remote_url o local_file',
type: 'Tipo de soporte. Ahora solo admite imagen',
},
json: 'JSON generado por el agente',
text: 'Contenido generado por el agente',
},
checkList: {
strategyNotSelected: 'Estrategia no seleccionada',
},
installPlugin: {
install: 'Instalar',
desc: 'A punto de instalar el siguiente plugin',
changelog: 'Registro de cambios',
title: 'Instalar plugin',
cancel: 'Cancelar',
},
tools: 'Herramientas',
pluginNotFoundDesc: 'Este plugin se instala desde GitHub. Por favor, vaya a Plugins para reinstalar',
strategyNotFoundDesc: 'La versión del plugin instalado no proporciona esta estrategia.',
strategyNotInstallTooltip: '{{estrategia}} no está instalado',
modelNotInstallTooltip: 'Este modelo no está instalado',
maxIterations: 'Iteraciones máximas',
notAuthorized: 'No autorizado',
toolNotInstallTooltip: '{{herramienta}} no está instalada',
toolbox: 'caja de herramientas',
strategyNotSet: 'Estrategia agentica No establecida',
unsupportedStrategy: 'Estrategia no respaldada',
linkToPlugin: 'Enlace a los plugins',
learnMore: 'Aprende más',
configureModel: 'Configurar modelo',
pluginNotInstalled: 'Este plugin no está instalado',
model: 'modelo',
pluginNotInstalledDesc: 'Este plugin se instala desde GitHub. Por favor, vaya a Plugins para reinstalar',
strategyNotFoundDescAndSwitchVersion: 'La versión del plugin instalado no proporciona esta estrategia. Haga clic para cambiar de versión.',
toolNotAuthorizedTooltip: '{{herramienta}} No autorizado',
modelNotSelected: 'Modelo no seleccionado',
},
},
tracing: {
stopBy: 'Pásate por {{usuario}}',
},
variableReference: {
noAvailableVars: 'No hay variables disponibles',
assignedVarsDescription: 'Las variables asignadas deben ser variables grabables, como',
noVarsForOperation: 'No hay variables disponibles para la asignación con la operación seleccionada.',
noAssignedVars: 'No hay variables asignadas disponibles',
conversationVars: 'Variables de conversación',
},
}
export default translation

View File

@@ -0,0 +1,87 @@
const translation = {
title: 'یادداشت‌ها',
name: 'پاسخ یادداشت',
editBy: 'پاسخ ویرایش شده توسط {{author}}',
noData: {
title: 'بدون یادداشت',
description: 'شما می‌توانید یادداشت‌ها را در حین اشکال‌زدایی برنامه ویرایش کنید یا یادداشت‌ها را به صورت انبوه در اینجا برای پاسخگویی با کیفیت بالا وارد کنید.',
},
table: {
header: {
question: 'سوال',
answer: 'پاسخ',
createdAt: 'ایجاد شده در',
hits: 'بازدیدها',
actions: 'اقدامات',
addAnnotation: 'افزودن یادداشت',
bulkImport: 'واردات انبوه',
bulkExport: 'صادرات انبوه',
clearAll: 'پاک کردن همه یادداشت‌ها',
},
},
editModal: {
title: 'ویرایش پاسخ یادداشت',
queryName: 'پرسش کاربر',
answerName: 'ربات داستان‌سرا',
yourAnswer: 'پاسخ شما',
answerPlaceholder: 'پاسخ خود را اینجا بنویسید',
yourQuery: 'پرسش شما',
queryPlaceholder: 'پرسش خود را اینجا بنویسید',
removeThisCache: 'حذف این یادداشت',
createdAt: 'ایجاد شده در',
},
addModal: {
title: 'افزودن پاسخ یادداشت',
queryName: 'سوال',
answerName: 'پاسخ',
answerPlaceholder: 'پاسخ را اینجا بنویسید',
queryPlaceholder: 'پرسش را اینجا بنویسید',
createNext: 'افزودن پاسخ یادداشت‌شده دیگر',
},
batchModal: {
title: 'واردات انبوه',
csvUploadTitle: 'فایل CSV خود را اینجا بکشید و رها کنید، یا ',
browse: 'مرور کنید',
tip: 'فایل CSV باید از ساختار زیر پیروی کند:',
question: 'سوال',
answer: 'پاسخ',
contentTitle: 'محتوای تکه',
content: 'محتوا',
template: 'الگو را از اینجا دانلود کنید',
cancel: 'لغو',
run: 'اجرای دسته‌ای',
runError: 'اجرای دسته‌ای ناموفق بود',
processing: 'در حال پردازش دسته‌ای',
completed: 'واردات تکمیل شد',
error: 'خطای واردات',
ok: 'تایید',
},
errorMessage: {
answerRequired: 'پاسخ الزامی است',
queryRequired: 'سوال الزامی است',
},
viewModal: {
annotatedResponse: 'پاسخ یادداشت‌شده',
hitHistory: 'تاریخچه بازدید',
hit: 'بازدید',
hits: 'بازدیدها',
noHitHistory: 'بدون تاریخچه بازدید',
},
hitHistoryTable: {
query: 'پرسش',
match: 'تطابق',
response: 'پاسخ',
source: 'منبع',
score: 'امتیاز',
time: 'زمان',
},
initSetup: {
title: 'راه‌اندازی اولیه پاسخ یادداشت',
configTitle: 'تنظیمات پاسخ یادداشت',
confirmBtn: 'ذخیره و فعال‌سازی',
configConfirmBtn: 'ذخیره',
},
embeddingModelSwitchTip: 'مدل برداری‌سازی متن یادداشت، تغییر مدل‌ها باعث جاسازی مجدد خواهد شد و هزینه‌های اضافی به همراه خواهد داشت.',
}
export default translation

View File

@@ -0,0 +1,85 @@
const translation = {
apiServer: 'سرور API',
apiKey: 'کلید API',
status: 'وضعیت',
disabled: 'غیرفعال',
ok: 'در سرویس',
copy: 'کپی',
copied: 'کپی شد',
play: 'پخش',
pause: 'مکث',
playing: 'در حال پخش',
loading: 'در حال بارگذاری',
merMaid: {
rerender: 'بازسازی مجدد',
},
never: 'هرگز',
apiKeyModal: {
apiSecretKey: 'کلید مخفی API',
apiSecretKeyTips: 'برای جلوگیری از سوء استفاده از API، از کلید API خود محافظت کنید. از استفاده از آن به صورت متن ساده در کد فرانت‌اند خودداری کنید. :)',
createNewSecretKey: 'ایجاد کلید مخفی جدید',
secretKey: 'کلید مخفی',
created: 'ایجاد شده',
lastUsed: 'آخرین استفاده',
generateTips: 'این کلید را در مکانی امن و قابل دسترس نگه دارید.',
},
actionMsg: {
deleteConfirmTitle: 'این کلید مخفی حذف شود؟',
deleteConfirmTips: 'این عمل قابل بازگشت نیست.',
ok: 'تایید',
},
completionMode: {
title: 'API برنامه تکمیل',
info: 'برای تولید متن با کیفیت بالا، مانند مقالات، خلاصه‌ها و ترجمه‌ها، از API پیام‌های تکمیلی با ورودی کاربر استفاده کنید. تولید متن به پارامترهای مدل و قالب‌های پرامپت تنظیم شده در مهندسی پرامپت Dify بستگی دارد.',
createCompletionApi: 'ایجاد پیام تکمیلی',
createCompletionApiTip: 'یک پیام تکمیلی برای پشتیبانی از حالت سوال و جواب ایجاد کنید.',
inputsTips: '(اختیاری) فیلدهای ورودی کاربر را به صورت جفت‌های کلید-مقدار ارائه دهید که با متغیرهای موجود در مهندسی پرامپت مطابقت دارند. کلید نام متغیر است و مقدار، مقدار پارامتر است. اگر نوع فیلد انتخابی باشد، مقدار ارسال شده باید یکی از گزینه‌های از پیش تعیین شده باشد.',
queryTips: 'محتوای متن ورودی کاربر.',
blocking: 'نوع مسدودکننده، منتظر اتمام اجرا و بازگشت نتایج. (درخواست‌ها ممکن است در صورت طولانی بودن فرآیند قطع شوند)',
streaming: 'بازگشت جریانی. پیاده‌سازی بازگشت جریانی بر اساس SSE (رویدادهای ارسالی سرور).',
messageFeedbackApi: 'بازخورد پیام (لایک)',
messageFeedbackApiTip: 'پیام‌های دریافتی را از طرف کاربران نهایی با لایک یا دیسلایک ارزیابی کنید. این داده‌ها در صفحه گزارش‌ها و یادداشت‌ها قابل مشاهده هستند و برای تنظیم دقیق مدل در آینده استفاده می‌شوند.',
messageIDTip: 'شناسه پیام',
ratingTip: 'لایک یا دیسلایک، null برای لغو',
parametersApi: 'دریافت اطلاعات پارامترهای برنامه',
parametersApiTip: 'بازیابی پارامترهای ورودی پیکربندی شده، شامل نام‌های متغیر، نام‌های فیلد، انواع و مقادیر پیش‌فرض. معمولاً برای نمایش این فیلدها در یک فرم یا پر کردن مقادیر پیش‌فرض پس از بارگیری کلاینت استفاده می‌شود.',
},
chatMode: {
title: 'API برنامه چت',
info: 'برای برنامه‌های مکالمه‌ای چندمنظوره با استفاده از فرمت سوال و جواب، API پیام‌های چت را برای شروع گفتگو فراخوانی کنید. با ارسال شناسه مکالمه بازگشتی، گفتگوهای مداوم را حفظ کنید. پارامترهای پاسخ و قالب‌ها به تنظیمات مهندسی پرامپت Dify بستگی دارند.',
createChatApi: 'ایجاد پیام چت',
createChatApiTip: 'یک پیام مکالمه جدید ایجاد کنید یا یک گفتگوی موجود را ادامه دهید.',
inputsTips: '(اختیاری) فیلدهای ورودی کاربر را به صورت جفت‌های کلید-مقدار ارائه دهید که با متغیرهای موجود در مهندسی پرامپت مطابقت دارند. کلید نام متغیر است و مقدار، مقدار پارامتر است. اگر نوع فیلد انتخابی باشد، مقدار ارسال شده باید یکی از گزینه‌های از پیش تعیین شده باشد.',
queryTips: 'محتوای ورودی/سوال کاربر',
blocking: 'نوع مسدودکننده، منتظر اتمام اجرا و بازگشت نتایج. (درخواست‌ها ممکن است در صورت طولانی بودن فرآیند قطع شوند)',
streaming: 'بازگشت جریانی. پیاده‌سازی بازگشت جریانی بر اساس SSE (رویدادهای ارسالی سرور).',
conversationIdTip: '(اختیاری) شناسه مکالمه: برای اولین مکالمه خالی بگذارید؛ برای ادامه گفتگو، شناسه مکالمه را از متن ارسال کنید.',
messageFeedbackApi: 'بازخورد کاربر نهایی پیام، لایک',
messageFeedbackApiTip: 'پیام‌های دریافتی را از طرف کاربران نهایی با لایک یا دیسلایک ارزیابی کنید. این داده‌ها در صفحه گزارش‌ها و یادداشت‌ها قابل مشاهده هستند و برای تنظیم دقیق مدل در آینده استفاده می‌شوند.',
messageIDTip: 'شناسه پیام',
ratingTip: 'لایک یا دیسلایک، null برای لغو',
chatMsgHistoryApi: 'دریافت تاریخچه پیام‌های چت',
chatMsgHistoryApiTip: 'صفحه اول آخرین `limit` پیام را به صورت معکوس برمی‌گرداند.',
chatMsgHistoryConversationIdTip: 'شناسه مکالمه',
chatMsgHistoryFirstId: 'شناسه اولین رکورد چت در صفحه فعلی. پیش‌فرض هیچ است.',
chatMsgHistoryLimit: 'تعداد چت‌هایی که در یک درخواست برگردانده می‌شوند',
conversationsListApi: 'دریافت لیست مکالمات',
conversationsListApiTip: 'لیست جلسات کاربر فعلی را دریافت می‌کند. به طور پیش‌فرض، 20 جلسه آخر برگردانده می‌شود.',
conversationsListFirstIdTip: 'شناسه آخرین رکورد در صفحه فعلی، پیش‌فرض هیچ.',
conversationsListLimitTip: 'تعداد چت‌هایی که در یک درخواست برگردانده می‌شوند',
conversationRenamingApi: 'تغییر نام مکالمه',
conversationRenamingApiTip: 'تغییر نام مکالمات؛ نام در رابط‌های کاربری چند جلسه‌ای نمایش داده می‌شود.',
conversationRenamingNameTip: 'نام جدید',
parametersApi: 'دریافت اطلاعات پارامترهای برنامه',
parametersApiTip: 'بازیابی پارامترهای ورودی پیکربندی شده، شامل نام‌های متغیر، نام‌های فیلد، انواع و مقادیر پیش‌فرض. معمولاً برای نمایش این فیلدها در یک فرم یا پر کردن مقادیر پیش‌فرض پس از بارگیری کلاینت استفاده می‌شود.',
},
develop: {
requestBody: 'بدنه درخواست',
pathParams: 'پارامترهای مسیر',
query: 'پرس‌وجو',
toc: 'محتویات',
},
regenerate: 'بازسازی',
}
export default translation

View File

@@ -0,0 +1,455 @@
const translation = {
pageTitle: {
line1: 'پرومپت',
line2: 'مهندسی',
},
orchestrate: 'هماهنگ کردن',
promptMode: {
simple: 'برای ویرایش کل پرومپت به حالت کارشناس بروید',
advanced: 'حالت کارشناس',
switchBack: 'بازگشت',
advancedWarning: {
title: 'شما به حالت کارشناس رفته‌اید، و پس از تغییر پرومپت، نمی‌توانید به حالت ساده برگردید.',
description: 'در حالت کارشناس، می‌توانید کل پرومپت را ویرایش کنید.',
learnMore: 'بیشتر بدانید',
ok: 'باشه',
},
operation: {
addMessage: 'اضافه کردن پیام',
},
contextMissing: 'مولفه زمینه‌ای از دست رفته است، اثر بخشی پرومپت ممکن است خوب نباشد.',
},
operation: {
applyConfig: 'انتشار',
resetConfig: 'تنظیم مجدد',
debugConfig: 'دیباگ',
addFeature: 'اضافه کردن ویژگی',
automatic: 'تولید کردن',
stopResponding: 'توقف پاسخ‌دهی',
agree: 'پسندیدن',
disagree: 'نپسندیدن',
cancelAgree: 'لغو پسندیدن',
cancelDisagree: 'لغو نپسندیدن',
userAction: 'عمل کاربر',
},
notSetAPIKey: {
title: 'کلید ارائه‌دهنده LLM تنظیم نشده است',
trailFinished: 'آزمایش تمام شد',
description: 'کلید ارائه‌دهنده LLM تنظیم نشده است و باید قبل از دیباگ تنظیم شود.',
settingBtn: 'به تنظیمات بروید',
},
trailUseGPT4Info: {
title: 'در حال حاضر پشتیبانی نمی‌شود gpt-4',
description: 'برای استفاده از gpt-4، لطفاً کلید API را تنظیم کنید.',
},
feature: {
groupChat: {
title: 'تقویت گفتگو',
description: 'افزودن تنظیمات پیش از گفتگو برای برنامه‌ها می‌تواند تجربه کاربری را بهبود بخشد.',
},
groupExperience: {
title: 'تقویت تجربه',
},
conversationOpener: {
title: 'شروع‌کننده گفتگو',
description: 'در یک برنامه چت، اولین جمله‌ای که AI فعالانه با کاربر صحبت می‌کند، معمولاً به عنوان خوشامدگویی استفاده می‌شود.',
},
suggestedQuestionsAfterAnswer: {
title: 'پیگیری',
description: 'تنظیم پیشنهاد سوالات بعدی می‌تواند به کاربران یک چت بهتر ارائه دهد.',
resDes: '3 پیشنهاد برای سوال بعدی کاربر.',
tryToAsk: 'سعی کنید بپرسید',
},
moreLikeThis: {
title: 'بیشتر از این',
description: 'تولید چندین متن به طور همزمان، و سپس ویرایش و ادامه تولید',
generateNumTip: 'تعداد تولید هر بار',
tip: 'استفاده از این ویژگی هزینه‌های اضافی توکن‌ها را به همراه دارد',
},
speechToText: {
title: 'تبدیل گفتار به متن',
description: 'پس از فعال شدن، می‌توانید از ورودی صوتی استفاده کنید.',
resDes: 'ورودی صوتی فعال شده است',
},
textToSpeech: {
title: 'تبدیل متن به گفتار',
description: 'پس از فعال شدن، متن می‌تواند به گفتار تبدیل شود.',
resDes: 'تبدیل متن به صدا فعال شده است',
},
citation: {
title: 'ارجاعات و استنادات',
description: 'پس از فعال شدن، سند منبع و بخش استناد شده از محتوای تولید شده را نشان می‌دهد.',
resDes: 'ارجاعات و استنادات فعال شده است',
},
annotation: {
title: 'پاسخ حاشیه‌نویسی',
description: 'می‌توانید پاسخ‌های با کیفیت بالا را به صورت دستی به حافظه کش اضافه کنید تا با سوالات مشابه کاربران تطبیق یابد.',
resDes: 'پاسخ حاشیه‌نویسی فعال شده است',
scoreThreshold: {
title: 'آستانه امتیاز',
description: 'Used to set the similarity threshold for annotation reply.',
easyMatch: 'تطابق آسان',
accurateMatch: 'تطابق دقیق',
},
matchVariable: {
title: 'تغییر متغیر',
choosePlaceholder: 'انتخاب متغیر تغییر',
},
cacheManagement: 'حاشیه نویسی',
cached: 'حاشیه نویسی شده',
remove: 'حذف',
removeConfirm: 'این حاشیه نویسی را حذف کنید؟',
add: 'افزودن حاشیه نویسی',
edit: 'ویرایش حاشیه نویسی',
},
dataSet: {
title: 'زمینه',
noData: 'شما می‌توانید دانش را به عنوان زمینه وارد کنید',
words: 'کلمات',
textBlocks: 'بلوک‌های متن',
selectTitle: 'انتخاب دانش مرجع',
selected: 'دانش انتخاب شده',
noDataSet: 'هیچ دانشی یافت نشد',
toCreate: 'برای ایجاد بروید',
notSupportSelectMulti: 'در حال حاضر فقط یک دانش پشتیبانی می‌شود',
queryVariable: {
title: 'متغیر پرس و جو',
tip: 'این متغیر به عنوان ورودی پرس و جو برای بازیابی زمینه استفاده خواهد شد و اطلاعات زمینه مرتبط با ورودی این متغیر را به دست می‌آورد.',
choosePlaceholder: 'انتخاب متغیر پرس و جو',
noVar: 'بدون متغیر',
noVarTip: 'لطفاً متغیری را در بخش متغیرها ایجاد کنید',
unableToQueryDataSet: 'عدم امکان پرس و جو از دانش',
unableToQueryDataSetTip: 'پرس و جوی موفقیت آمیز دانش ممکن نیست، لطفاً یک متغیر پرس و جو زمینه را در بخش زمینه انتخاب کنید.',
ok: 'باشه',
contextVarNotEmpty: 'متغیر پرس و جو زمینه نمی‌تواند خالی باشد',
deleteContextVarTitle: 'متغیر "{{varName}}" را حذف کنید؟',
deleteContextVarTip: 'این متغیر به عنوان متغیر پرس و جو زمینه تنظیم شده است و حذف آن بر استفاده عادی از دانش تأثیر می‌گذارد. اگر هنوز نیاز به حذف دارید، لطفاً آن را در بخش زمینه دوباره انتخاب کنید.',
},
},
tools: {
title: 'ابزارها',
tips: 'ابزارها یک روش استاندارد برای فراخوانی API فراهم می‌کنند و ورودی کاربر یا متغیرها را به عنوان پارامترهای درخواست برای پرس و جو داده‌های خارجی به عنوان زمینه می‌گیرند.',
toolsInUse: '{{count}} ابزار در حال استفاده',
modal: {
title: 'ابزار',
toolType: {
title: 'نوع ابزار',
placeholder: 'لطفاً نوع ابزار را انتخاب کنید',
},
name: {
title: 'نام',
placeholder: 'لطفاً نام را وارد کنید',
},
variableName: {
title: 'نام متغیر',
placeholder: 'لطفاً نام متغیر را وارد کنید',
},
},
},
conversationHistory: {
title: 'تاریخچه مکالمه',
description: 'تنظیم پیشوند نام‌ها برای نقش‌های مکالمه',
tip: 'تاریخچه مکالمه فعال نشده است، لطفاً <histories> را در فراخوانی بالا اضافه کنید.',
learnMore: 'بیشتر بدانید',
editModal: {
title: 'ویرایش نام نقش‌های مکالمه',
userPrefix: 'پیشوند کاربر',
assistantPrefix: 'پیشوند دستیار',
},
},
toolbox: {
title: 'جعبه ابزار',
},
moderation: {
title: 'مدیریت محتوا',
description: 'خروجی مدل را با استفاده از API مدیریت یا نگهداری فهرست کلمات حساس امن کنید.',
allEnabled: 'محتوای ورودی/خروجی فعال شده',
inputEnabled: 'محتوای ورودی فعال شده',
outputEnabled: 'محتوای خروجی فعال شده',
modal: {
title: 'تنظیمات مدیریت محتوا',
provider: {
title: 'ارائه دهنده',
openai: 'مدیریت OpenAI',
openaiTip: {
prefix: 'مدیریت OpenAI نیاز به کلید API OpenAI دارد که در ',
suffix: ' تنظیم شده باشد.',
},
keywords: 'کلمات کلیدی',
},
keywords: {
tip: 'هر خط یک کلمه، با شکست خطوط جدا شده. حداکثر 100 کاراکتر در هر خط.',
placeholder: 'هر خط یک کلمه، با شکست خطوط جدا شده',
line: 'خط',
},
content: {
input: 'مدیریت محتوای ورودی',
output: 'مدیریت محتوای خروجی',
preset: 'پاسخ‌های پیش فرض',
placeholder: 'محتوای پاسخ‌های پیش فرض در اینجا',
condition: 'مدیریت محتوای ورودی و خروجی حداقل یک مورد فعال شده است',
fromApi: 'پاسخ‌های پیش فرض از API برگردانده می‌شود',
errorMessage: 'پاسخ‌های پیش فرض نمی‌تواند خالی باشد',
supportMarkdown: 'پشتیبانی از Markdown',
},
openaiNotConfig: {
before: 'مدیریت OpenAI نیاز به کلید API OpenAI دارد که در',
after: '',
},
},
},
generate: {
title: 'تولید کننده دستورالعمل',
description: 'تولید کننده دستورالعمل از مدل تنظیم شده برای بهینه سازی دستورالعمل‌ها برای کیفیت بالاتر و ساختار بهتر استفاده می‌کند. لطفاً دستورالعمل‌های واضح و دقیقی بنویسید.',
tryIt: 'امتحان کنید',
instruction: 'دستورالعمل‌ها',
instructionPlaceHolder: 'دستورالعمل‌های واضح و خاصی بنویسید.',
generate: 'تولید',
resTitle: 'دستورالعمل تولید شده',
noDataLine1: 'موارد استفاده خود را در سمت چپ توصیف کنید،',
noDataLine2: 'پیش‌نمایش ارکستراسیون در اینجا نشان داده خواهد شد.',
apply: 'اعمال',
loading: 'در حال ارکستراسیون برنامه برای شما...',
overwriteTitle: 'آیا تنظیمات موجود را لغو می‌کنید؟',
overwriteMessage: 'اعمال این دستورالعمل تنظیمات موجود را لغو خواهد کرد.',
template: {
pythonDebugger: {
name: 'اشکال‌زدای پایتون',
instruction: 'یک بات که می‌تواند بر اساس دستورالعمل شما کد تولید و اشکال‌زدایی کند',
},
translation: {
name: 'ترجمه',
instruction: 'یک مترجم که می‌تواند چندین زبان را ترجمه کند',
},
professionalAnalyst: {
name: 'تحلیلگر حرفه‌ای',
instruction: 'استخراج بینش‌ها، شناسایی ریسک و خلاصه‌سازی اطلاعات کلیدی از گزارش‌های طولانی به یک یادداشت کوتاه',
},
excelFormulaExpert: {
name: 'کارشناس فرمول اکسل',
instruction: 'یک چت‌بات که می‌تواند به کاربران مبتدی کمک کند فرمول‌های اکسل را بر اساس دستورالعمل‌های کاربر درک، استفاده و ایجاد کنند',
},
travelPlanning: {
name: 'برنامه‌ریزی سفر',
instruction: 'دستیار برنامه‌ریزی سفر یک ابزار هوشمند است که به کاربران کمک می‌کند سفرهای خود را به راحتی برنامه‌ریزی کنند',
},
SQLSorcerer: {
name: 'جادوگر SQL',
instruction: 'تبدیل زبان روزمره به پرس و جوهای SQL',
},
GitGud: {
name: 'Git gud',
instruction: 'تولید دستورات مناسب Git بر اساس اقدامات توصیف شده توسط کاربر در کنترل نسخه',
},
meetingTakeaways: {
name: 'نتایج جلسات',
instruction: 'خلاصه‌سازی جلسات به صورت مختصر شامل موضوعات بحث، نکات کلیدی و موارد اقدام',
},
writingsPolisher: {
name: 'پولیش‌گر نوشته‌ها',
instruction: 'استفاده از تکنیک‌های ویرایش پیشرفته برای بهبود نوشته‌های شما',
},
},
},
resetConfig: {
title: 'بازنشانی تأیید می‌شود؟',
message: 'بازنشانی تغییرات را لغو کرده و تنظیمات منتشر شده آخر را بازیابی می‌کند.',
},
errorMessage: {
nameOfKeyRequired: 'نام کلید: {{key}} مورد نیاز است',
valueOfVarRequired: 'مقدار {{key}} نمی‌تواند خالی باشد',
queryRequired: 'متن درخواست مورد نیاز است.',
waitForResponse: 'لطفاً منتظر پاسخ به پیام قبلی بمانید.',
waitForBatchResponse: 'لطفاً منتظر پاسخ به کار دسته‌ای بمانید.',
notSelectModel: 'لطفاً یک مدل را انتخاب کنید',
waitForImgUpload: 'لطفاً منتظر بارگذاری تصویر بمانید',
},
chatSubTitle: 'دستورالعمل‌ها',
completionSubTitle: 'پیشوند پرس و جو',
promptTip: 'دستورالعمل‌ها و محدودیت‌ها پاسخ‌های AI را هدایت می‌کنند. متغیرهایی مانند {{input}} را درج کنید. این دستورالعمل برای کاربران قابل مشاهده نخواهد بود.',
formattingChangedTitle: 'قالب‌بندی تغییر کرد',
formattingChangedText: 'تغییر قالب‌بندی منطقه اشکال‌زدایی را بازنشانی خواهد کرد، آیا مطمئن هستید؟',
variableTitle: 'متغیرها',
variableTip: 'کاربران متغیرها را در فرم پر می‌کنند و به طور خودکار متغیرها را در دستورالعمل‌ها جایگزین می‌کنند.',
notSetVar: 'متغیرها به کاربران اجازه می‌دهند که کلمات پرس و جو یا جملات ابتدایی را هنگام پر کردن فرم معرفی کنند. شما می‌توانید سعی کنید "{{input}}" را در کلمات پرس و جو وارد کنید.',
autoAddVar: 'متغیرهای تعریف نشده‌ای که در پیش‌پرسش ذکر شده‌اند، آیا می‌خواهید آنها را به فرم ورودی کاربر اضافه کنید؟',
variableTable: {
key: 'کلید متغیر',
name: 'نام فیلد ورودی کاربر',
optional: 'اختیاری',
type: 'نوع ورودی',
action: 'اقدامات',
typeString: 'رشته',
typeSelect: 'انتخاب',
},
varKeyError: {
canNoBeEmpty: '{{key}} مطلوب',
tooLong: '{{key}} طولانی است. نمی‌تواند بیش از 30 کاراکتر باشد',
notValid: '{{key}} نامعتبر است. فقط می‌تواند شامل حروف، اعداد و زیرخط باشد',
notStartWithNumber: '{{key}} نمی‌تواند با عدد شروع شود',
keyAlreadyExists: '{{key}} از قبل وجود دارد',
},
otherError: {
promptNoBeEmpty: 'پرس و جو نمی‌تواند خالی باشد',
historyNoBeEmpty: 'تاریخچه مکالمه باید در پرس و جو تنظیم شود',
queryNoBeEmpty: 'پرس و جو باید در پرس و جو تنظیم شود',
},
variableConfig: {
'addModalTitle': 'افزودن فیلد ورودی',
'editModalTitle': 'ویرایش فیلد ورودی',
'description': 'تنظیم برای متغیر {{varName}}',
'fieldType': 'نوع فیلد',
'string': 'متن کوتاه',
'text-input': 'متن کوتاه',
'paragraph': 'پاراگراف',
'select': 'انتخاب',
'number': 'عدد',
'notSet': 'تنظیم نشده، سعی کنید {{input}} را در پرس و جو وارد کنید',
'stringTitle': 'گزینه‌های جعبه متن فرم',
'maxLength': 'حداکثر طول',
'options': 'گزینه‌ها',
'addOption': 'افزودن گزینه',
'apiBasedVar': 'متغیر مبتنی بر API',
'varName': 'نام متغیر',
'labelName': 'نام برچسب',
'inputPlaceholder': 'لطفاً وارد کنید',
'content': 'محتوا',
'required': 'مورد نیاز',
'errorMsg': {
varNameRequired: 'نام متغیر مورد نیاز است',
labelNameRequired: 'نام برچسب مورد نیاز است',
varNameCanBeRepeat: 'نام متغیر نمی‌تواند تکراری باشد',
atLeastOneOption: 'حداقل یک گزینه مورد نیاز است',
optionRepeat: 'گزینه‌های تکراری وجود دارد',
},
},
vision: {
name: 'بینایی',
description: 'فعال کردن بینایی به مدل اجازه می‌دهد تصاویر را دریافت کند و به سوالات مربوط به آنها پاسخ دهد.',
settings: 'تنظیمات',
visionSettings: {
title: 'تنظیمات بینایی',
resolution: 'وضوح',
resolutionTooltip: `وضوح پایین به مدل اجازه می‌دهد نسخه 512x512 کم‌وضوح تصویر را دریافت کند و تصویر را با بودجه 65 توکن نمایش دهد. این به API اجازه می‌دهد پاسخ‌های سریع‌تری بدهد و توکن‌های ورودی کمتری برای موارد استفاده که نیاز به جزئیات بالا ندارند مصرف کند.
\n
وضوح بالا ابتدا به مدل اجازه می‌دهد تصویر کم‌وضوح را ببیند و سپس قطعات جزئیات تصویر ورودی را به عنوان مربع‌های 512px ایجاد کند. هر کدام از قطعات جزئیات از بودجه توکن دو برابر استفاده می‌کنند که در مجموع 129 توکن است.`,
high: 'بالا',
low: 'پایین',
uploadMethod: 'روش بارگذاری',
both: 'هر دو',
localUpload: 'بارگذاری محلی',
url: 'URL',
uploadLimit: 'محدودیت بارگذاری',
},
},
voice: {
name: 'صدا',
defaultDisplay: 'صدا پیش فرض',
description: 'تنظیمات تبدیل متن به گفتار',
settings: 'تنظیمات',
voiceSettings: {
title: 'تنظیمات صدا',
language: 'زبان',
resolutionTooltip: 'پشتیبانی از زبان صدای تبدیل متن به گفتار.',
voice: 'صدا',
autoPlay: 'پخش خودکار',
autoPlayEnabled: 'روشن کردن',
autoPlayDisabled: 'خاموش کردن',
},
},
openingStatement: {
title: 'شروع مکالمه',
add: 'افزودن',
writeOpener: 'نوشتن آغازگر',
placeholder: 'پیام آغازگر خود را اینجا بنویسید، می‌توانید از متغیرها استفاده کنید، سعی کنید {{variable}} را تایپ کنید.',
openingQuestion: 'سوالات آغازین',
noDataPlaceHolder: 'شروع مکالمه با کاربر می‌تواند به AI کمک کند تا ارتباط نزدیک‌تری با آنها برقرار کند.',
varTip: 'می‌توانید از متغیرها استفاده کنید، سعی کنید {{variable}} را تایپ کنید',
tooShort: 'حداقل 20 کلمه از پرسش اولیه برای تولید نظرات آغازین مکالمه مورد نیاز است.',
notIncludeKey: 'پرسش اولیه شامل متغیر: {{key}} نمی‌شود. لطفاً آن را به پرسش اولیه اضافه کنید.',
},
modelConfig: {
model: 'مدل',
setTone: 'تنظیم لحن پاسخ‌ها',
title: 'مدل و پارامترها',
modeType: {
chat: 'چت',
completion: 'تکمیل',
},
},
inputs: {
title: 'اشکال‌زدایی و پیش‌نمایش',
noPrompt: 'سعی کنید پرسش‌هایی را در ورودی پیش‌پرسش بنویسید',
userInputField: 'فیلد ورودی کاربر',
noVar: 'مقدار متغیر را پر کنید، که به طور خودکار در کلمات پرس و جو در هر بار شروع یک جلسه جدید جایگزین می‌شود.',
chatVarTip: 'مقدار متغیر را پر کنید، که به طور خودکار در کلمات پرس و جو در هر بار شروع یک جلسه جدید جایگزین می‌شود',
completionVarTip: 'مقدار متغیر را پر کنید، که به طور خودکار در کلمات پرس و جو در هر بار ارسال سوال جایگزین می‌شود.',
previewTitle: 'پیش‌نمایش پرس و جو',
queryTitle: 'محتوای پرس و جو',
queryPlaceholder: 'لطفاً متن درخواست را وارد کنید.',
run: 'اجرا',
},
result: 'متن خروجی',
datasetConfig: {
settingTitle: 'تنظیمات بازیابی',
knowledgeTip: 'روی دکمه "+" کلیک کنید تا دانش اضافه شود',
retrieveOneWay: {
title: 'بازیابی N به 1',
description: 'بر اساس نیت کاربر و توصیفات دانش، عامل بهترین دانش را برای پرس و جو به طور خودکار انتخاب می‌کند. بهترین برای برنامه‌هایی با دانش محدود و مشخص.',
},
retrieveMultiWay: {
title: 'بازیابی چند مسیره',
description: 'بر اساس نیت کاربر، از تمام دانش پرس و جو می‌کند، متن‌های مرتبط از منابع چندگانه بازیابی می‌کند و بهترین نتایج مطابقت با پرس و جوی کاربر را پس از مرتب‌سازی مجدد انتخاب می‌کند.',
},
rerankModelRequired: 'مدل مرتب‌سازی مجدد مورد نیاز است',
params: 'پارامترها',
top_k: 'Top K',
top_kTip: 'برای فیلتر کردن تکه‌هایی که بیشترین شباهت به سوالات کاربر دارند استفاده می‌شود. سیستم همچنین به طور دینامیک مقدار Top K را بر اساس max_tokens مدل انتخاب شده تنظیم می‌کند.',
score_threshold: 'آستانه نمره',
score_thresholdTip: 'برای تنظیم آستانه شباهت برای فیلتر کردن تکه‌ها استفاده می‌شود.',
retrieveChangeTip: 'تغییر حالت شاخص و حالت بازیابی ممکن است بر برنامه‌های مرتبط با این دانش تأثیر بگذارد.',
},
debugAsSingleModel: 'اشکال‌زدایی به عنوان مدل تک',
debugAsMultipleModel: 'اشکال‌زدایی به عنوان مدل چندگانه',
duplicateModel: 'تکراری',
publishAs: 'انتشار به عنوان',
assistantType: {
name: 'نوع دستیار',
chatAssistant: {
name: 'دستیار پایه',
description: 'ساخت دستیار مبتنی بر چت با استفاده از مدل زبان بزرگ',
},
agentAssistant: {
name: 'دستیار عامل',
description: 'ساخت یک عامل هوشمند که می‌تواند ابزارها را به طور خودکار برای تکمیل وظایف انتخاب کند',
},
},
agent: {
agentMode: 'حالت عامل',
agentModeDes: 'تنظیم نوع حالت استنتاج برای عامل',
agentModeType: {
ReACT: 'ReAct',
functionCall: 'فراخوانی تابع',
},
setting: {
name: 'تنظیمات عامل',
description: 'تنظیمات دستیار عامل به شما اجازه می‌دهد حالت عامل و ویژگی‌های پیشرفته مانند پرسش‌های ساخته شده را تنظیم کنید، فقط در نوع عامل موجود است.',
maximumIterations: {
name: 'حداکثر تکرارها',
description: 'محدود کردن تعداد تکرارهایی که دستیار عامل می‌تواند اجرا کند',
},
},
buildInPrompt: 'پرسش‌های ساخته شده',
firstPrompt: 'اولین پرسش',
nextIteration: 'تکرار بعدی',
promptPlaceholder: 'پرسش خود را اینجا بنویسید',
tools: {
name: 'ابزارها',
description: 'استفاده از ابزارها می‌تواند قابلیت‌های LLM را گسترش دهد، مانند جستجو در اینترنت یا انجام محاسبات علمی',
enabled: 'فعال',
},
},
},
}
export default translation

View File

@@ -0,0 +1,98 @@
const translation = {
title: 'لاگ‌ها',
description: 'لاگ‌ها وضعیت اجرایی برنامه را ثبت می‌کنند، شامل ورودی‌های کاربر و پاسخ‌های هوش مصنوعی.',
dateTimeFormat: 'MM/DD/YYYY hh:mm A',
table: {
header: {
updatedTime: 'زمان به‌روزرسانی',
time: 'زمان ایجاد',
endUser: 'کاربر نهایی یا حساب',
input: 'ورودی',
output: 'خروجی',
summary: 'عنوان',
messageCount: 'تعداد پیام',
userRate: 'امتیاز کاربر',
adminRate: 'امتیاز اپراتور',
startTime: 'زمان شروع',
status: 'وضعیت',
runtime: 'زمان اجرا',
tokens: 'توکن‌ها',
user: 'کاربر نهایی یا حساب',
version: 'نسخه',
},
pagination: {
previous: 'قبلی',
next: 'بعدی',
},
empty: {
noChat: 'هنوز مکالمه‌ای وجود ندارد',
noOutput: 'خروجی وجود ندارد',
element: {
title: 'کسی هست؟',
content: 'در اینجا تعاملات بین کاربران نهایی و برنامه‌های هوش مصنوعی را مشاهده و حاشیه‌نویسی کنید تا دقت هوش مصنوعی بهبود یابد. می‌توانید <shareLink>به اشتراک بگذارید</shareLink> یا <testLink>برنامه وب را تست کنید</testLink> و سپس به این صفحه برگردید.',
},
},
},
detail: {
time: 'زمان',
conversationId: 'شناسه مکالمه',
promptTemplate: 'قالب درخواست',
promptTemplateBeforeChat: 'قالب درخواست قبل از چت · به عنوان پیام سیستمی',
annotationTip: 'بهبودها توسط {{user}} علامت‌گذاری شده است',
timeConsuming: '',
second: 'ثانیه',
tokenCost: 'توکن مصرفی',
loading: 'در حال بارگذاری',
operation: {
like: 'پسندیدن',
dislike: 'نپسندیدن',
addAnnotation: 'اضافه کردن بهبود',
editAnnotation: 'ویرایش بهبود',
annotationPlaceholder: 'پاسخ مورد انتظاری که می‌خواهید هوش مصنوعی بدهد را وارد کنید، که می‌تواند برای بهبود مدل و کیفیت تولید متن در آینده استفاده شود.',
},
variables: 'متغیرها',
uploadImages: 'تصاویر آپلود شده',
modelParams: 'پارامترهای مدل',
},
filter: {
period: {
today: 'امروز',
last7days: '7 روز گذشته',
last4weeks: '4 هفته گذشته',
last3months: '3 ماه گذشته',
last12months: '12 ماه گذشته',
monthToDate: 'از ابتدای ماه تاکنون',
quarterToDate: 'از ابتدای فصل تاکنون',
yearToDate: 'از ابتدای سال تاکنون',
allTime: 'همه زمان‌ها',
},
annotation: {
all: 'همه',
annotated: 'بهبودهای حاشیه‌نویسی شده ({{count}} آیتم)',
not_annotated: 'حاشیه‌نویسی نشده',
},
sortBy: 'مرتب‌سازی بر اساس:',
descending: 'نزولی',
ascending: 'صعودی',
},
workflowTitle: 'لاگ‌های جریان کاری',
workflowSubtitle: 'لاگ عملیات خودکار را ثبت کرده است.',
runDetail: {
title: 'لاگ مکالمه',
workflowTitle: 'جزئیات لاگ',
fileListLabel: 'جزئیات فایل',
fileListDetail: 'جزئیات',
},
promptLog: 'لاگ درخواست',
agentLog: 'لاگ عامل',
viewLog: 'مشاهده لاگ',
agentLogDetail: {
agentMode: 'حالت عامل',
toolUsed: 'ابزار استفاده شده',
iterations: 'تکرارها',
iteration: 'تکرار',
finalProcessing: 'پردازش نهایی',
},
}
export default translation

View File

@@ -0,0 +1,172 @@
const translation = {
welcome: {
firstStepTip: 'برای شروع،',
enterKeyTip: 'کلید API خود را در زیر وارد کنید',
getKeyTip: 'کلید API خود را از داشبورد OpenAI دریافت کنید',
placeholder: 'کلید API خود را وارد کنید (مثلاً sk-xxxx)',
},
apiKeyInfo: {
cloud: {
trial: {
title: 'شما از سهمیه آزمایشی {{providerName}} استفاده می‌کنید.',
description: 'سهمیه آزمایشی برای اهداف تست شما ارائه شده است. قبل از اینکه سهمیه آزمایشی تمام شود، لطفاً ارائه‌دهنده مدل خود را تنظیم کنید یا سهمیه اضافی خریداری کنید.',
},
exhausted: {
title: 'سهمیه آزمایشی شما تمام شده است، لطفاً کلید API خود را تنظیم کنید.',
description: 'شما سهمیه آزمایشی خود را مصرف کرده‌اید. لطفاً ارائه‌دهنده مدل خود را تنظیم کنید یا سهمیه اضافی خریداری کنید.',
},
},
selfHost: {
title: {
row1: 'برای شروع،',
row2: 'ابتدا ارائه‌دهنده مدل خود را تنظیم کنید.',
},
},
callTimes: 'تعداد تماس‌ها',
usedToken: 'توکن‌های مصرف‌شده',
setAPIBtn: 'برو به تنظیمات ارائه‌دهنده مدل',
tryCloud: 'یا نسخه ابری Dify با سهمیه رایگان را امتحان کنید',
},
overview: {
title: 'نمای کلی',
appInfo: {
explanation: 'برنامه وب AI آماده به کار',
accessibleAddress: 'آدرس عمومی',
preview: 'پیش‌نمایش',
regenerate: 'تولید مجدد',
regenerateNotice: 'آیا می‌خواهید آدرس عمومی را دوباره تولید کنید؟',
preUseReminder: 'لطفاً قبل از ادامه، WebApp را فعال کنید.',
settings: {
entry: 'تنظیمات',
title: 'تنظیمات WebApp',
webName: 'نام WebApp',
webDesc: 'توضیحات WebApp',
webDescTip: 'این متن در سمت مشتری نمایش داده می‌شود و راهنمایی‌های اولیه در مورد نحوه استفاده از برنامه را ارائه می‌دهد',
webDescPlaceholder: 'توضیحات WebApp را وارد کنید',
language: 'زبان',
workflow: {
title: 'مراحل کاری',
show: 'نمایش',
hide: 'مخفی کردن',
showDesc: 'نمایش یا پنهان کردن جزئیات گردش کار در WebApp',
subTitle: 'جزئیات گردش کار',
},
chatColorTheme: 'تم رنگی چت',
chatColorThemeDesc: 'تم رنگی چت‌بات را تنظیم کنید',
chatColorThemeInverted: 'معکوس',
invalidHexMessage: 'مقدار هگز نامعتبر',
more: {
entry: 'نمایش تنظیمات بیشتر',
copyright: 'حق نسخه‌برداری',
copyRightPlaceholder: 'نام نویسنده یا سازمان را وارد کنید',
privacyPolicy: 'سیاست حفظ حریم خصوصی',
privacyPolicyPlaceholder: 'لینک سیاست حفظ حریم خصوصی را وارد کنید',
privacyPolicyTip: 'به بازدیدکنندگان کمک می‌کند تا بفهمند برنامه چه داده‌هایی را جمع‌آوری می‌کند، به سیاست حفظ حریم خصوصی Dify نگاه کنید <privacyPolicyLink>Privacy Policy</privacyPolicyLink>.',
customDisclaimer: 'سلب مسئولیت سفارشی',
customDisclaimerPlaceholder: 'متن سلب مسئولیت سفارشی را وارد کنید',
customDisclaimerTip: 'متن سلب مسئولیت سفارشی در سمت مشتری نمایش داده می‌شود و اطلاعات بیشتری درباره برنامه ارائه می‌دهد',
copyrightTip: 'نمایش اطلاعات حق نسخه برداری در برنامه وب',
copyrightTooltip: 'لطفا به طرح حرفه ای یا بالاتر ارتقا دهید',
},
sso: {
title: 'WebApp SSO',
label: 'احراز هویت SSO',
description: 'همه کاربران باید قبل از استفاده از WebApp با SSO وارد شوند',
tooltip: 'برای فعال کردن WebApp SSO با سرپرست تماس بگیرید',
},
modalTip: 'تنظیمات برنامه وب سمت مشتری.',
},
embedded: {
entry: 'جاسازی شده',
title: 'جاسازی در وب‌سایت',
explanation: 'روش‌های جاسازی برنامه چت در وب‌سایت خود را انتخاب کنید',
iframe: 'برای افزودن برنامه چت در هرجای وب‌سایت خود، این iframe را به کد HTML خود اضافه کنید.',
scripts: 'برای افزودن برنامه چت به گوشه پایین سمت راست وب‌سایت خود، این کد را به HTML خود اضافه کنید.',
chromePlugin: 'نصب افزونه Chrome Chatbot Dify',
copied: 'کپی شد',
copy: 'کپی',
},
qrcode: {
title: 'کد QR لینک',
scan: 'اسکن برای اشتراک‌گذاری',
download: 'دانلود کد QR',
},
customize: {
way: 'راه',
entry: 'سفارشی‌سازی',
title: 'سفارشی‌سازی WebApp AI',
explanation: 'شما می‌توانید ظاهر جلویی برنامه وب را برای برآوردن نیازهای سناریو و سبک خود سفارشی کنید.',
way1: {
name: 'کلاینت را شاخه کنید، آن را تغییر دهید و در Vercel مستقر کنید (توصیه می‌شود)',
step1: 'کلاینت را شاخه کنید و آن را تغییر دهید',
step1Tip: 'برای شاخه کردن کد منبع به حساب GitHub خود و تغییر کد اینجا کلیک کنید',
step1Operation: 'Dify-WebClient',
step2: 'استقرار در Vercel',
step2Tip: 'برای وارد کردن مخزن به Vercel و استقرار اینجا کلیک کنید',
step2Operation: 'وارد کردن مخزن',
step3: 'پیکربندی متغیرهای محیطی',
step3Tip: 'متغیرهای محیطی زیر را در Vercel اضافه کنید',
},
way2: {
name: 'نوشتن کد سمت کلاینت برای فراخوانی API و استقرار آن بر روی سرور',
operation: 'مستندات',
},
},
launch: 'راه اندازی',
},
apiInfo: {
title: 'API سرویس بک‌اند',
explanation: 'به راحتی در برنامه خود یکپارچه می‌شود',
accessibleAddress: 'نقطه پایانی سرویس API',
doc: 'مرجع API',
},
status: {
running: 'در حال سرویس‌دهی',
disable: 'غیرفعال',
},
},
analysis: {
title: 'تحلیل',
ms: 'میلی‌ثانیه',
tokenPS: 'توکن/ثانیه',
totalMessages: {
title: 'کل پیام‌ها',
explanation: 'تعداد تعاملات روزانه با هوش مصنوعی.',
},
totalConversations: {
title: 'کل مکالمات',
explanation: 'تعداد مکالمات روزانه با هوش مصنوعی؛ مهندسی/اشکال‌زدایی پرامپت مستثنی است.',
},
activeUsers: {
title: 'کاربران فعال',
explanation: 'کاربران منحصر به فردی که در پرسش و پاسخ با AI شرکت می‌کنند؛ مهندسی/اشکال‌زدایی دستورات مستثنی هستند.',
},
tokenUsage: {
title: 'استفاده از توکن',
explanation: 'مصرف روزانه توکن‌های مدل زبان برای برنامه را نشان می‌دهد، که برای کنترل هزینه‌ها مفید است.',
consumed: 'مصرف‌شده',
},
avgSessionInteractions: {
title: 'میانگین تعاملات جلسه',
explanation: 'تعداد تعاملات پیوسته کاربر-AI؛ برای برنامه‌های مبتنی بر گفتگو.',
},
avgUserInteractions: {
title: 'میانگین تعاملات کاربران',
explanation: 'تکرار استفاده روزانه کاربران را نشان می‌دهد. این معیار چسبندگی کاربران را نشان می‌دهد.',
},
userSatisfactionRate: {
title: 'نرخ رضایت کاربران',
explanation: 'تعداد لایک‌ها به ازای هر ۱۰۰۰ پیام. این نشان‌دهنده نسبت پاسخ‌هایی است که کاربران به شدت رضایت دارند.',
},
avgResponseTime: {
title: 'میانگین زمان پاسخ',
explanation: 'زمان (میلی‌ثانیه) برای پردازش/پاسخ AI؛ برای برنامه‌های مبتنی بر متن.',
},
tps: {
title: 'سرعت خروجی توکن',
explanation: 'عملکرد مدل زبان بزرگ را اندازه‌گیری می‌کند. سرعت خروجی توکن‌های مدل زبان بزرگ از آغاز درخواست تا تکمیل خروجی را بشمارید.',
},
},
}
export default translation

View File

@@ -0,0 +1,199 @@
const translation = {
createApp: 'ایجاد برنامه',
types: {
all: 'همه',
chatbot: 'چت‌بات',
agent: 'نماینده',
workflow: 'گردش کار',
completion: 'تکمیل',
basic: 'اساسی',
advanced: 'چت‌فلو',
},
duplicate: 'تکرار',
duplicateTitle: 'تکرار برنامه',
export: 'صادر کردن DSL',
exportFailed: 'صادر کردن DSL ناموفق بود.',
importDSL: 'وارد کردن فایل DSL',
createFromConfigFile: 'ایجاد از فایل DSL',
importFromDSL: 'وارد کردن از DSL',
importFromDSLFile: 'از فایل DSL',
importFromDSLUrl: 'از URL',
importFromDSLUrlPlaceholder: 'لینک DSL را اینجا بچسبانید',
deleteAppConfirmTitle: 'آیا این برنامه حذف شود؟',
deleteAppConfirmContent:
'حذف برنامه غیرقابل برگشت است. کاربران دیگر قادر به دسترسی به برنامه شما نخواهند بود و تمام تنظیمات و گزارشات درخواست‌ها به صورت دائم حذف خواهند شد.',
appDeleted: 'برنامه حذف شد',
appDeleteFailed: 'حذف برنامه ناموفق بود',
join: 'پیوستن به جامعه',
communityIntro:
'در کانال‌های مختلف با اعضای تیم، مشارکت‌کنندگان و توسعه‌دهندگان بحث کنید.',
roadmap: 'نقشه راه ما را ببینید',
newApp: {
startFromBlank: 'ایجاد از خالی',
startFromTemplate: 'ایجاد از قالب',
captionAppType: 'چه نوع برنامه‌ای می‌خواهید ایجاد کنید؟',
chatbotDescription: 'ساخت برنامه‌ای مبتنی بر چت. این برنامه از قالب پرسش و پاسخ استفاده می‌کند و امکان چندین دور مکالمه مداوم را فراهم می‌کند.',
completionDescription: 'ساخت برنامه‌ای که متن با کیفیت بالا بر اساس درخواست‌ها تولید می‌کند، مانند تولید مقالات، خلاصه‌ها، ترجمه‌ها و بیشتر.',
completionWarning: 'این نوع برنامه دیگر پشتیبانی نمی‌شود.',
agentDescription: 'ساخت نماینده هوشمند که می‌تواند ابزارها را برای انجام وظایف به طور خودمختار انتخاب کند',
workflowDescription: 'ساخت برنامه‌ای که متن با کیفیت بالا بر اساس گردش کار با درجه بالای سفارشی‌سازی تولید می‌کند. مناسب برای کاربران با تجربه.',
workflowWarning: 'در حال حاضر در نسخه بتا',
chatbotType: 'روش سازماندهی چت‌بات',
basic: 'اساسی',
basicTip: 'برای مبتدیان، می‌توان بعداً به Chatflow تغییر داد',
basicFor: 'برای مبتدیان',
basicDescription: 'سازماندهی اساسی به شما اجازه می‌دهد تا یک برنامه چت‌بات را با تنظیمات ساده و بدون امکان تغییر درخواست‌های داخلی سازماندهی کنید. مناسب برای مبتدیان است.',
advanced: 'Chatflow',
advancedFor: 'برای کاربران پیشرفته',
advancedDescription: 'سازماندهی گردش کار، چت‌بات‌ها را به صورت گردش کار سازماندهی می‌کند و درجه بالایی از سفارشی‌سازی، از جمله امکان ویرایش درخواست‌های داخلی را فراهم می‌کند. مناسب برای کاربران با تجربه است.',
captionName: 'آیکون و نام برنامه',
appNamePlaceholder: 'به برنامه خود یک نام بدهید',
captionDescription: 'توضیحات',
appDescriptionPlaceholder: 'توضیحات برنامه را وارد کنید',
useTemplate: 'استفاده از این قالب',
previewDemo: 'پیش‌نمایش دمو',
chatApp: 'دستیار',
chatAppIntro:
'می‌خواهم یک برنامه مبتنی بر چت بسازم. این برنامه از قالب پرسش و پاسخ استفاده می‌کند و امکان چندین دور مکالمه مداوم را فراهم می‌کند.',
agentAssistant: 'دستیار نماینده جدید',
completeApp: 'تولید کننده متن',
completeAppIntro:
'می‌خواهم برنامه‌ای بسازم که متن با کیفیت بالا بر اساس درخواست‌ها تولید کند، مانند تولید مقالات، خلاصه‌ها، ترجمه‌ها و بیشتر.',
showTemplates: 'می‌خواهم از یک قالب انتخاب کنم',
hideTemplates: 'بازگشت به انتخاب حالت',
Create: 'ایجاد',
Cancel: 'لغو',
nameNotEmpty: 'نام نمی‌تواند خالی باشد',
appTemplateNotSelected: 'لطفاً یک قالب انتخاب کنید',
appTypeRequired: 'لطفاً نوع برنامه را انتخاب کنید',
appCreated: 'برنامه ایجاد شد',
appCreateFailed: 'ایجاد برنامه ناموفق بود',
Confirm: 'تایید',
appCreateDSLErrorTitle: 'ناسازگاری نسخه',
caution: 'احتیاط',
appCreateDSLErrorPart3: 'نسخه DSL برنامه فعلی:',
appCreateDSLErrorPart2: 'آیا می خواهید ادامه دهید؟',
appCreateDSLErrorPart4: 'نسخه DSL پشتیبانی شده توسط سیستم:',
appCreateDSLErrorPart1: 'تفاوت قابل توجهی در نسخه های DSL مشاهده شده است. اجبار به واردات ممکن است باعث اختلال در عملکرد برنامه شود.',
appCreateDSLWarning: 'احتیاط: تفاوت نسخه DSL ممکن است بر ویژگی های خاصی تأثیر بگذارد',
completionShortDescription: 'دستیار هوش مصنوعی برای تسک های تولید متن',
foundResult: '{{تعداد}} نتیجه',
chatbotUserDescription: 'به سرعت یک چت بات مبتنی بر LLM با پیکربندی ساده بسازید. بعدا می توانید به Chatflow بروید.',
chooseAppType: 'نوع برنامه را انتخاب کنید',
foundResults: '{{تعداد}} نتیجه',
noIdeaTip: 'ایده ای ندارید؟ قالب های ما را بررسی کنید',
forBeginners: 'برای مبتدیان',
noAppsFound: 'هیچ برنامه ای یافت نشد',
chatbotShortDescription: 'چت بات مبتنی بر LLM با راه اندازی ساده',
optional: 'اختیاری',
learnMore: 'بیشتر بدانید',
agentShortDescription: 'عامل هوشمند با استدلال و استفاده از ابزار مستقل',
noTemplateFoundTip: 'سعی کنید با استفاده از کلمات کلیدی مختلف جستجو کنید.',
noTemplateFound: 'هیچ الگویی یافت نشد',
forAdvanced: 'برای کاربران پیشرفته',
workflowShortDescription: 'ارکستراسیون برای تسک های اتوماسیون تک نوبت',
workflowUserDescription: 'ارکستراسیون گردش کار برای کارهای تک مرحله ای مانند اتوماسیون و پردازش دسته ای.',
advancedUserDescription: 'ارکستراسیون گردش کار برای کارهای گفتگوی پیچیده چند مرحله ای با قابلیت های حافظه.',
completionUserDescription: 'به سرعت یک دستیار هوش مصنوعی برای وظایف تولید متن با پیکربندی ساده بسازید.',
advancedShortDescription: 'گردش کار برای دیالوگ های پیچیده چند چرخشی با حافظه',
agentUserDescription: 'یک عامل هوشمند که قادر به استدلال تکراری و استفاده از ابزار مستقل برای دستیابی به اهداف وظیفه است.',
},
editApp: 'ویرایش اطلاعات',
editAppTitle: 'ویرایش اطلاعات برنامه',
editDone: 'اطلاعات برنامه به‌روزرسانی شد',
editFailed: 'به‌روزرسانی اطلاعات برنامه ناموفق بود',
iconPicker: {
ok: 'باشه',
cancel: 'لغو',
emoji: 'ایموجی',
image: 'تصویر',
},
switch: 'تغییر به سازماندهی گردش کار',
switchTipStart: 'یک نسخه جدید از برنامه برای شما ایجاد خواهد شد و نسخه جدید به سازماندهی گردش کار تغییر خواهد کرد. نسخه جدید ',
switchTip: 'اجازه نمی‌دهد',
switchTipEnd: ' تغییر به سازماندهی اساسی بازگردد.',
switchLabel: 'نسخه برنامه که ایجاد می‌شود',
removeOriginal: 'حذف برنامه اصلی',
switchStart: 'شروع تغییر',
typeSelector: {
all: 'همه انواع',
chatbot: 'چت‌بات',
agent: 'نماینده',
workflow: 'گردش کار',
completion: 'تکمیل',
advanced: 'چت‌فلو',
},
tracing: {
title: 'ردیابی عملکرد برنامه',
description: 'پیکربندی ارائه‌دهنده شخص ثالث LLMOps و ردیابی عملکرد برنامه.',
config: 'پیکربندی',
collapse: 'بستن',
expand: 'باز کردن',
tracing: 'ردیابی',
disabled: 'غیرفعال',
disabledTip: 'لطفاً ابتدا ارائه‌دهنده را پیکربندی کنید',
enabled: 'در حال خدمت',
tracingDescription: 'ثبت کامل متن اجرای برنامه، از جمله تماس‌های LLM، متن، درخواست‌های HTTP و بیشتر، به یک پلتفرم ردیابی شخص ثالث.',
configProviderTitle: {
configured: 'پیکربندی شده',
notConfigured: 'برای فعال‌سازی ردیابی ارائه‌دهنده را پیکربندی کنید',
moreProvider: 'ارائه‌دهندگان بیشتر',
},
langsmith: {
title: 'LangSmith',
description: 'یک پلتفرم همه‌کاره برای هر مرحله از چرخه عمر برنامه‌های مبتنی بر LLM.',
},
langfuse: {
title: 'Langfuse',
description: 'ردیابی، ارزیابی، مدیریت درخواست‌ها و معیارها برای رفع اشکال و بهبود برنامه LLM شما.',
},
inUse: 'در حال استفاده',
configProvider: {
title: 'پیکربندی',
placeholder: 'کلید {{key}} خود را وارد کنید',
project: 'پروژه',
publicKey: 'کلید عمومی',
secretKey: 'کلید محرمانه',
viewDocsLink: 'مشاهده مستندات {{key}}',
removeConfirmTitle: 'حذف پیکربندی {{key}}؟',
removeConfirmContent: 'پیکربندی فعلی در حال استفاده است، حذف آن ویژگی ردیابی را غیرفعال خواهد کرد.',
},
view: 'مشاهده',
opik: {
title: 'اوپیک',
description: 'Opik یک پلت فرم منبع باز برای ارزیابی، آزمایش و نظارت بر برنامه های LLM است.',
},
},
answerIcon: {
descriptionInExplore: 'آیا از نماد WebApp برای جایگزینی 🤖 در Explore استفاده کنیم یا خیر',
description: 'آیا از نماد WebApp برای جایگزینی 🤖 در برنامه مشترک استفاده کنیم یا خیر',
title: 'از نماد WebApp برای جایگزینی 🤖 استفاده کنید',
},
mermaid: {
handDrawn: 'دست کشیده شده',
classic: 'کلاسیک',
},
openInExplore: 'باز کردن در کاوش',
newAppFromTemplate: {
sidebar: {
Agent: 'عامل',
Programming: 'برنامه نویسی',
Recommended: 'توصیه',
Assistant: 'دستیار',
Workflow: 'گردش',
HR: 'ساعت',
Writing: 'نوشتن',
},
byCategories: 'بر اساس دسته بندی ها',
searchAllTemplate: 'همه قالب ها را جستجو کنید...',
},
showMyCreatedAppsOnly: 'فقط برنامه‌های ایجاد شده توسط من را نشان بده',
appSelector: {
params: 'پارامترهای برنامه',
noParams: 'بدون پارامتر مورد نیاز است',
label: 'برنامه',
placeholder: 'برنامه ای را انتخاب کنید...',
},
}
export default translation

View File

@@ -0,0 +1,118 @@
const translation = {
currentPlan: 'طرح فعلی',
upgradeBtn: {
plain: 'ارتقاء طرح',
encourage: 'هم اکنون ارتقاء دهید',
encourageShort: 'ارتقاء دهید',
},
viewBilling: 'مدیریت صورتحساب‌ها و اشتراک‌ها',
buyPermissionDeniedTip: 'لطفاً با مدیر سازمان خود تماس بگیرید تا اشتراک تهیه کنید',
plansCommon: {
title: 'یک طرح مناسب برای خود انتخاب کنید',
yearlyTip: 'با اشتراک سالانه 2 ماه رایگان دریافت کنید!',
mostPopular: 'محبوب‌ترین',
planRange: {
monthly: 'ماهانه',
yearly: 'سالانه',
},
month: 'ماه',
year: 'سال',
save: 'صرفه‌جویی کنید ',
free: 'رایگان',
currentPlan: 'طرح فعلی',
contractSales: 'تماس با فروش',
contractOwner: 'تماس با مدیر تیم',
startForFree: 'رایگان شروع کنید',
getStartedWith: 'شروع کنید با ',
contactSales: 'تماس با فروش',
talkToSales: 'صحبت با فروش',
modelProviders: 'ارائه‌دهندگان مدل',
teamMembers: 'اعضای تیم',
annotationQuota: 'سهمیه حاشیه‌نویسی',
buildApps: 'ساخت اپلیکیشن‌ها',
vectorSpace: 'فضای وکتور',
vectorSpaceBillingTooltip: 'هر 1 مگابایت می‌تواند حدود 1.2 میلیون کاراکتر از داده‌های وکتور شده را ذخیره کند (براساس تخمین با استفاده از OpenAI Embeddings، متفاوت بر اساس مدل‌ها).',
vectorSpaceTooltip: 'فضای وکتور سیستم حافظه بلند مدت است که برای درک داده‌های شما توسط LLMها مورد نیاز است.',
documentsUploadQuota: 'سهمیه بارگذاری مستندات',
documentProcessingPriority: 'اولویت پردازش مستندات',
documentProcessingPriorityTip: 'برای اولویت پردازش بالاتر مستندات، لطفاً طرح خود را ارتقاء دهید.',
documentProcessingPriorityUpgrade: 'داده‌های بیشتری را با دقت بالاتر و سرعت بیشتر پردازش کنید.',
priority: {
'standard': 'استاندارد',
'priority': 'اولویت',
'top-priority': 'اولویت بالا',
},
logsHistory: 'تاریخچه گزارشات',
customTools: 'ابزارهای سفارشی',
unavailable: 'غیرقابل دسترس',
days: 'روز',
unlimited: 'نامحدود',
support: 'پشتیبانی',
supportItems: {
communityForums: 'انجمن‌های اجتماعی',
emailSupport: 'پشتیبانی ایمیل',
priorityEmail: 'پشتیبانی ایمیل و چت با اولویت',
logoChange: 'تغییر لوگو',
SSOAuthentication: 'تأیید هویت SSO',
personalizedSupport: 'پشتیبانی شخصی‌سازی شده',
dedicatedAPISupport: 'پشتیبانی API اختصاصی',
customIntegration: 'یکپارچه‌سازی و پشتیبانی سفارشی',
ragAPIRequest: 'درخواست‌های API RAG',
bulkUpload: 'بارگذاری دسته‌ای مستندات',
agentMode: 'حالت Agent',
workflow: 'جریان کار',
llmLoadingBalancing: 'توزیع بار LLM',
llmLoadingBalancingTooltip: 'اضافه کردن چندین کلید API به مدل‌ها، به طور مؤثر از محدودیت‌های نرخ API عبور می‌کند.',
},
comingSoon: 'به زودی',
member: 'عضو',
memberAfter: 'عضو',
messageRequest: {
title: 'اعتبارات پیام',
tooltip: 'سهمیه‌های فراخوانی پیام برای طرح‌های مختلف با استفاده از مدل‌های OpenAI (به جز gpt4). پیام‌های بیش از حد محدودیت از کلید API OpenAI شما استفاده می‌کنند.',
},
annotatedResponse: {
title: 'محدودیت‌های سهمیه حاشیه‌نویسی',
tooltip: 'ویرایش دستی و حاشیه‌نویسی پاسخ‌ها، قابلیت‌های پرسش و پاسخ با کیفیت بالا و قابل تنظیم برای اپلیکیشن‌ها را فراهم می‌کند. (فقط در اپلیکیشن‌های چت اعمال می‌شود)',
},
ragAPIRequestTooltip: 'به تعداد درخواست‌های API که فقط قابلیت‌های پردازش پایگاه دانش Dify را فراخوانی می‌کنند اشاره دارد.',
receiptInfo: 'فقط صاحب تیم و مدیر تیم می‌توانند اشتراک تهیه کنند و اطلاعات صورتحساب را مشاهده کنند',
},
plans: {
sandbox: {
name: 'محیط آزمایشی',
description: '200 بار آزمایش رایگان GPT',
includesTitle: 'شامل:',
},
professional: {
name: 'حرفه‌ای',
description: 'برای افراد و تیم‌های کوچک برای باز کردن قدرت بیشتر به طور مقرون به صرفه.',
includesTitle: 'همه چیز در طرح رایگان، به علاوه:',
},
team: {
name: 'تیم',
description: 'همکاری بدون محدودیت و لذت بردن از عملکرد برتر.',
includesTitle: 'همه چیز در طرح حرفه‌ای، به علاوه:',
},
enterprise: {
name: 'سازمانی',
description: 'دریافت کامل‌ترین قابلیت‌ها و پشتیبانی برای سیستم‌های بزرگ و بحرانی.',
includesTitle: 'همه چیز در طرح تیم، به علاوه:',
},
},
vectorSpace: {
fullTip: 'فضای وکتور پر است.',
fullSolution: 'طرح خود را ارتقاء دهید تا فضای بیشتری دریافت کنید.',
},
apps: {
fullTipLine1: 'طرح خود را ارتقاء دهید تا',
fullTipLine2: 'اپلیکیشن‌های بیشتری بسازید.',
},
annotatedResponse: {
fullTipLine1: 'طرح خود را ارتقاء دهید تا',
fullTipLine2: 'مکالمات بیشتری را حاشیه‌نویسی کنید.',
quotaTitle: 'سهمیه پاسخ حاشیه‌نویسی',
},
}
export default translation

View File

@@ -0,0 +1,642 @@
const translation = {
api: {
success: 'موفقیت',
actionSuccess: 'عملیات موفق',
saved: 'ذخیره شد',
create: 'ایجاد شد',
remove: 'حذف شد',
},
operation: {
create: 'ایجاد',
confirm: 'تایید',
cancel: 'لغو',
clear: 'پاک کردن',
save: 'ذخیره',
saveAndEnable: 'ذخیره و فعال سازی',
edit: 'ویرایش',
add: 'افزودن',
added: 'اضافه شد',
refresh: 'شروع مجدد',
reset: 'بازنشانی',
search: 'جستجو',
change: 'تغییر',
remove: 'حذف',
send: 'ارسال',
copy: 'کپی',
lineBreak: 'خط جدید',
sure: 'مطمئن هستم',
download: 'دانلود',
delete: 'حذف',
settings: 'تنظیمات',
setup: 'راه اندازی',
getForFree: 'دریافت رایگان',
reload: 'بارگذاری مجدد',
ok: 'تایید',
log: 'گزارش',
learnMore: 'اطلاعات بیشتر',
params: 'پارامترها',
duplicate: 'تکرار',
rename: 'تغییر نام',
audioSourceUnavailable: 'منبع صوتی در دسترس نیست',
zoomIn: 'بزرگنمایی',
copyImage: 'کپی تصویر',
openInNewTab: 'باز کردن در برگه جدید',
zoomOut: 'کوچک نمایی',
close: 'نزدیک',
regenerate: 'بازسازی',
view: 'مشاهده',
viewMore: 'بیشتر ببینید',
saveAndRegenerate: 'ذخیره و بازسازی تکه های فرزند',
submit: 'ارسال',
skip: 'کشتی',
imageCopied: 'تصویر کپی شده',
deleteApp: 'حذف برنامه',
copied: 'کپی',
viewDetails: 'دیدن جزئیات',
in: 'در',
},
errorMsg: {
fieldRequired: '{{field}} الزامی است',
urlError: 'آدرس باید با http:// یا https:// شروع شود',
},
placeholder: {
input: 'لطفا وارد کنید',
select: 'لطفا انتخاب کنید',
},
voice: {
language: {
zhHans: 'چینی',
zhHant: 'چینی سنتی',
enUS: 'انگلیسی',
deDE: 'آلمانی',
frFR: 'فرانسوی',
esES: 'اسپانیایی',
itIT: 'ایتالیایی',
thTH: 'تایلندی',
idID: 'اندونزیایی',
jaJP: 'ژاپنی',
koKR: 'کره‌ای',
ptBR: 'پرتغالی',
ruRU: 'روسی',
ukUA: 'اوکراینی',
viVN: 'ویتنامی',
plPL: 'لهستانی',
roRO: 'رومانیایی',
hiIN: 'هندی',
trTR: 'ترکی',
faIR: 'فارسی',
},
},
unit: {
char: 'کاراکتر',
},
actionMsg: {
noModification: 'در حال حاضر تغییری وجود ندارد.',
modifiedSuccessfully: 'با موفقیت تغییر یافت',
modifiedUnsuccessfully: 'تغییر ناموفق بود',
copySuccessfully: 'با موفقیت کپی شد',
paySucceeded: 'پرداخت موفق',
payCancelled: 'پرداخت لغو شد',
generatedSuccessfully: 'با موفقیت تولید شد',
generatedUnsuccessfully: 'تولید ناموفق بود',
},
model: {
params: {
temperature: 'دما',
temperatureTip:
'تصادفی بودن را کنترل می‌کند: کاهش آن منجر به تکمیل‌های کمتر تصادفی می‌شود. با نزدیک شدن دما به صفر، مدل قطعی و تکراری می‌شود.',
top_p: 'بالاترین P',
top_pTip:
'تنوع را از طریق نمونه‌گیری هسته کنترل می‌کند: 0.5 به این معنی است که نیمی از همه گزینه‌های وزن‌دار احتمالی در نظر گرفته می‌شوند.',
presence_penalty: 'جریمه حضور',
presence_penaltyTip:
'چقدر توکن‌های جدید را بر اساس اینکه آیا در متن تاکنون ظاهر شده‌اند جریمه کنیم.\nاحتمال مدل برای صحبت در مورد موضوعات جدید را افزایش می‌دهد.',
frequency_penalty: 'جریمه تکرار',
frequency_penaltyTip:
'چقدر توکن‌های جدید را بر اساس فراوانی موجود آنها در متن تاکنون جریمه کنیم.\nاحتمال تکرار دقیق همان خط توسط مدل را کاهش می‌دهد.',
max_tokens: 'حداکثر توکن',
max_tokensTip:
'برای محدود کردن حداکثر طول پاسخ، در توکن‌ها استفاده می‌شود. \nمقادیر بزرگتر ممکن است فضای باقیمانده برای کلمات راهنما، گزارش‌های چت و دانش را محدود کند. \nتوصیه می‌شود آن را کمتر از دو سوم تنظیم کنید\ngpt-4-1106-preview، gpt-4-vision-preview حداکثر توکن (ورودی 128k خروجی 4k)',
maxTokenSettingTip: 'تنظیم حداکثر توکن شما بالاست، که ممکن است فضا را برای راهنماها، پرس و جوها و داده‌ها محدود کند. در نظر بگیرید آن را زیر 2/3 تنظیم کنید.',
setToCurrentModelMaxTokenTip: 'حداکثر توکن به 80٪ حداکثر توکن مدل فعلی {{maxToken}} به‌روزرسانی شد.',
stop_sequences: 'توالی‌های توقف',
stop_sequencesTip: 'حداکثر چهار توالی که API تولید توکن‌های بیشتر را متوقف می‌کند. متن برگردانده شده شامل توالی توقف نخواهد بود.',
stop_sequencesPlaceholder: 'توالی را وارد کنید و Tab را فشار دهید',
},
tone: {
Creative: 'خلاقانه',
Balanced: 'متعادل',
Precise: 'دقیق',
Custom: 'سفارشی',
},
addMoreModel: 'برای افزودن مدل‌های بیشتر به تنظیمات بروید',
settingsLink: 'تنظیمات ارائه دهنده مدل',
capabilities: 'قابلیت های چند وجهی',
},
menus: {
status: 'بتا',
explore: 'کاوش',
apps: 'استودیو',
plugins: 'افزونه‌ها',
pluginsTips: 'افزونه‌های شخص ثالث را ادغام کنید یا افزونه‌های هوش مصنوعی سازگار با ChatGPT ایجاد کنید.',
datasets: 'دانش',
datasetsTips: 'به زودی: داده‌های متنی خود را وارد کنید یا از طریق Webhook داده‌ها را در زمان واقعی برای بهبود زمینه LLM بنویسید.',
newApp: 'برنامه جدید',
newDataset: 'ایجاد دانش',
tools: 'ابزارها',
exploreMarketplace: 'بازار را کاوش کنید',
},
userProfile: {
settings: 'تنظیمات',
emailSupport: 'پشتیبانی ایمیل',
workspace: 'فضای کاری',
createWorkspace: 'ایجاد فضای کاری',
helpCenter: 'راهنما',
communityFeedback: 'بازخورد',
roadmap: 'نقشه راه',
community: 'انجمن',
about: 'درباره',
logout: 'خروج',
},
settings: {
accountGroup: 'حساب کاربری',
workplaceGroup: 'فضای کاری',
account: 'حساب من',
members: 'اعضا',
billing: 'صورتحساب',
integrations: 'ادغام‌ها',
language: 'زبان',
provider: 'ارائه دهنده مدل',
dataSource: 'منبع داده',
plugin: 'افزونه‌ها',
apiBasedExtension: 'توسعه مبتنی بر API',
generalGroup: 'عمومی',
},
account: {
avatar: 'آواتار',
name: 'نام',
email: 'ایمیل',
password: 'رمز عبور',
passwordTip: 'اگر نمی‌خواهید از کدهای ورود موقت استفاده کنید، می‌توانید یک رمز عبور دائمی تنظیم کنید',
setPassword: 'تنظیم رمز عبور',
resetPassword: 'بازنشانی رمز عبور',
currentPassword: 'رمز عبور فعلی',
newPassword: 'رمز عبور جدید',
confirmPassword: 'تأیید رمز عبور',
notEqual: 'دو رمز عبور متفاوت هستند.',
langGeniusAccount: 'حساب Dify',
langGeniusAccountTip: 'حساب Dify شما و داده‌های کاربری مرتبط.',
editName: 'ویرایش نام',
showAppLength: 'نمایش {{length}} برنامه',
delete: 'حذف حساب کاربری',
deleteTip: 'حذف حساب کاربری شما تمام داده‌های شما را به طور دائمی پاک می‌کند و قابل بازیابی نیست.',
deleteConfirmTip: 'برای تأیید، لطفاً موارد زیر را از ایمیل ثبت‌نام شده خود به این آدرس ارسال کنید ',
account: 'حساب',
myAccount: 'حساب من',
studio: 'استودیو Dify',
feedbackTitle: 'بازخورد',
verificationPlaceholder: 'کد 6 رقمی را جایگذاری کنید',
deletePlaceholder: 'لطفا ایمیل خود را وارد کنید',
permanentlyDeleteButton: 'حذف دائمی حساب',
verificationLabel: 'کد تأیید',
feedbackPlaceholder: 'اختیاری',
sendVerificationButton: 'ارسال کد تأیید',
deletePrivacyLink: 'سیاست حفظ حریم خصوصی.',
deleteLabel: 'برای تایید، لطفا ایمیل خود را در زیر تایپ کنید',
deleteSuccessTip: 'حساب شما برای پایان دادن به حذف به زمان نیاز دارد. وقتی همه چیز تمام شد به شما ایمیل خواهیم زد.',
deletePrivacyLinkTip: 'برای کسب اطلاعات بیشتر در مورد نحوه مدیریت داده های شما، لطفا به ما مراجعه کنید',
feedbackLabel: 'به ما بگویید چرا حساب خود را حذف کرده اید؟',
},
members: {
team: 'تیم',
invite: 'افزودن',
name: 'نام',
lastActive: 'آخرین فعالیت',
role: 'نقش‌ها',
pending: 'در انتظار...',
owner: 'مالک',
admin: 'مدیر',
adminTip: 'می‌تواند برنامه‌ها را بسازد و تنظیمات تیم را مدیریت کند',
normal: 'عادی',
normalTip: 'فقط می‌تواند از برنامه‌ها استفاده کند، نمی‌تواند برنامه بسازد',
builder: 'سازنده',
builderTip: 'می‌تواند برنامه‌های خود را بسازد و ویرایش کند',
editor: 'ویرایشگر',
editorTip: 'می‌تواند برنامه‌ها را بسازد و ویرایش کند',
datasetOperator: 'مدیر دانش',
datasetOperatorTip: 'فقط می‌تواند پایگاه دانش را مدیریت کند',
inviteTeamMember: 'افزودن عضو تیم',
inviteTeamMemberTip: 'آنها می‌توانند پس از ورود به سیستم، مستقیماً به داده‌های تیم شما دسترسی پیدا کنند.',
emailNotSetup: 'سرور ایمیل راه‌اندازی نشده است، بنابراین ایمیل‌های دعوت نمی‌توانند ارسال شوند. لطفاً کاربران را از لینک دعوت که پس از دعوت صادر خواهد شد مطلع کنید。',
email: 'ایمیل',
emailInvalid: 'فرمت ایمیل نامعتبر است',
emailPlaceholder: 'لطفاً ایمیل‌ها را وارد کنید',
sendInvite: 'ارسال دعوت',
invitedAsRole: 'به عنوان کاربر {{role}} دعوت شده',
invitationSent: 'دعوت‌نامه ارسال شد',
invitationSentTip: 'دعوت‌نامه ارسال شد و آنها می‌توانند وارد Dify شوند تا به داده‌های تیم شما دسترسی پیدا کنند.',
invitationLink: 'لینک دعوت',
failedInvitationEmails: 'کاربران زیر با موفقیت دعوت نشدند',
ok: 'تایید',
removeFromTeam: 'حذف از تیم',
removeFromTeamTip: 'دسترسی تیم را حذف می‌کند',
setAdmin: 'تنظیم به عنوان مدیر',
setMember: 'تنظیم به عنوان عضو عادی',
setBuilder: 'تنظیم به عنوان سازنده',
setEditor: 'تنظیم به عنوان ویرایشگر',
disInvite: 'لغو دعوت',
deleteMember: 'حذف عضو',
you: '(شما)',
},
integrations: {
connected: 'متصل شده',
google: 'گوگل',
googleAccount: 'ورود با حساب گوگل',
github: 'گیت‌هاب',
githubAccount: 'ورود با حساب گیت‌هاب',
connect: 'اتصال',
},
language: {
displayLanguage: 'زبان نمایش',
timezone: 'منطقه زمانی',
},
provider: {
apiKey: 'کلید API',
enterYourKey: 'کلید API خود را اینجا وارد کنید',
invalidKey: 'کلید API OpenAI نامعتبر است',
validatedError: 'اعتبارسنجی ناموفق بود: ',
validating: 'در حال اعتبارسنجی کلید...',
saveFailed: 'ذخیره کلید API ناموفق بود',
apiKeyExceedBill: 'این کلید API سهمیه موجود ندارد، لطفاً بخوانید',
addKey: 'افزودن کلید',
comingSoon: 'به زودی',
editKey: 'ویرایش',
invalidApiKey: 'کلید API نامعتبر',
azure: {
apiBase: 'پایه API',
apiBasePlaceholder: 'آدرس پایه API نقطه پایانی Azure OpenAI شما.',
apiKey: 'کلید API',
apiKeyPlaceholder: 'کلید API خود را اینجا وارد کنید',
helpTip: 'آشنایی با سرویس Azure OpenAI',
},
openaiHosted: {
openaiHosted: 'OpenAI میزبانی شده',
onTrial: 'در حال آزمایش',
exhausted: 'سهمیه تمام شده',
desc: 'سرویس میزبانی OpenAI ارائه شده توسط Dify به شما اجازه می‌دهد از مدل‌هایی مانند GPT-3.5 استفاده کنید. قبل از اتمام سهمیه آزمایشی خود، باید سایر ارائه‌دهندگان مدل را تنظیم کنید.',
callTimes: 'تعداد فراخوانی',
usedUp: 'سهمیه آزمایشی تمام شده است. ارائه‌دهنده مدل خود را اضافه کنید.',
useYourModel: 'در حال حاضر از ارائه‌دهنده مدل خود استفاده می‌کنید.',
close: 'بستن',
},
anthropicHosted: {
anthropicHosted: 'Anthropic Claude',
onTrial: 'در حال آزمایش',
exhausted: 'سهمیه تمام شده',
desc: 'مدل قدرتمند که در طیف گسترده‌ای از وظایف از گفتگوی پیشرفته و تولید محتوای خلاقانه تا دستورالعمل‌های دقیق عالی عمل می‌کند.',
callTimes: 'تعداد فراخوانی',
usedUp: 'سهمیه آزمایشی تمام شده است. ارائه‌دهنده مدل خود را اضافه کنید.',
useYourModel: 'در حال حاضر از ارائه‌دهنده مدل خود استفاده می‌کنید.',
close: 'بستن',
trialQuotaTip: 'سهمیه آزمایشی Anthropic شما در تاریخ 2025/03/11 منقضی می شود و پس از آن دیگر در دسترس نخواهد بود. لطفا به موقع از آن استفاده کنید.',
},
anthropic: {
using: 'قابلیت تعبیه از این استفاده می‌کند',
enableTip: 'برای فعال‌سازی مدل Anthropic، ابتدا باید به OpenAI یا سرویس Azure OpenAI متصل شوید.',
notEnabled: 'فعال نشده',
keyFrom: 'کلید API خود را از Anthropic دریافت کنید',
},
encrypted: {
front: 'کلید API شما با استفاده از فناوری',
back: ' رمزگذاری و ذخیره خواهد شد.',
},
},
modelProvider: {
notConfigured: 'مدل سیستم هنوز به طور کامل پیکربندی نشده است و برخی از عملکردها ممکن است در دسترس نباشند.',
systemModelSettings: 'تنظیمات مدل سیستم',
systemModelSettingsLink: 'چرا تنظیم مدل سیستم ضروری است؟',
selectModel: 'مدل خود را انتخاب کنید',
setupModelFirst: 'لطفاً ابتدا مدل خود را تنظیم کنید',
systemReasoningModel: {
key: 'مدل استدلال سیستم',
tip: 'مدل استنتاج پیش‌فرض را برای ایجاد برنامه‌ها تنظیم کنید. ویژگی‌هایی مانند تولید نام گفتگو و پیشنهاد سوال بعدی نیز از مدل استنتاج پیش‌فرض استفاده خواهند کرد.',
},
embeddingModel: {
key: 'مدل تعبیه',
tip: 'مدل پیش‌فرض را برای پردازش تعبیه اسناد دانش تنظیم کنید. هر دو بازیابی و وارد کردن دانش از این مدل تعبیه برای پردازش برداری استفاده می‌کنند. تغییر باعث ناسازگاری بُعد برداری بین دانش وارد شده و سوال می‌شود که منجر به شکست بازیابی می‌شود. برای جلوگیری از شکست بازیابی، لطفاً این مدل را به دلخواه تغییر ندهید.',
required: 'مدل تعبیه الزامی است',
},
speechToTextModel: {
key: 'مدل تبدیل گفتار به متن',
tip: 'مدل پیش‌فرض را برای ورودی گفتار به متن در مکالمه تنظیم کنید.',
},
ttsModel: {
key: 'مدل تبدیل متن به گفتار',
tip: 'مدل پیش‌فرض را برای ورودی متن به گفتار در مکالمه تنظیم کنید.',
},
rerankModel: {
key: 'مدل رتبه‌بندی مجدد',
tip: 'مدل رتبه‌بندی مجدد، لیست اسناد کاندید را بر اساس تطابق معنایی با پرسش کاربر مرتب می‌کند و نتایج رتبه‌بندی معنایی را بهبود می‌بخشد',
},
apiKey: 'کلید API',
quota: 'سهمیه',
searchModel: 'جستجوی مدل',
noModelFound: 'هیچ مدلی برای {{model}} یافت نشد',
models: 'مدل‌ها',
showMoreModelProvider: 'نمایش ارائه‌دهندگان مدل بیشتر',
selector: {
tip: 'این مدل حذف شده است. لطفاً یک مدل اضافه کنید یا مدل دیگری را انتخاب کنید.',
emptyTip: 'هیچ مدل موجودی وجود ندارد',
emptySetting: 'لطفاً به تنظیمات بروید تا پیکربندی کنید',
rerankTip: 'لطفاً مدل رتبه‌بندی مجدد را تنظیم کنید',
},
card: {
quota: 'سهمیه',
onTrial: 'در حال آزمایش',
paid: 'پرداخت شده',
quotaExhausted: 'سهمیه تمام شده',
callTimes: 'تعداد فراخوانی',
tokens: 'توکن‌ها',
buyQuota: 'خرید سهمیه',
priorityUse: 'استفاده با اولویت',
removeKey: 'حذف کلید API',
tip: 'اولویت به سهمیه پرداخت شده داده می‌شود. سهمیه آزمایشی پس از اتمام سهمیه پرداخت شده استفاده خواهد شد.',
},
item: {
deleteDesc: '{{modelName}} به عنوان مدل‌های استدلال سیستم استفاده می‌شوند. برخی از عملکردها پس از حذف در دسترس نخواهند بود. لطفاً تأیید کنید.',
freeQuota: 'سهمیه رایگان',
},
addApiKey: 'کلید API خود را اضافه کنید',
invalidApiKey: 'کلید API نامعتبر',
encrypted: {
front: 'کلید API شما با استفاده از فناوری',
back: ' رمزگذاری و ذخیره خواهد شد.',
},
freeQuota: {
howToEarn: 'چگونه کسب کنیم',
},
addMoreModelProvider: 'افزودن ارائه‌دهنده مدل بیشتر',
addModel: 'افزودن مدل',
modelsNum: '{{num}} مدل',
showModels: 'نمایش مدل‌ها',
showModelsNum: 'نمایش {{num}} مدل',
collapse: 'جمع کردن',
config: 'پیکربندی',
modelAndParameters: 'مدل و پارامترها',
model: 'مدل',
featureSupported: '{{feature}} پشتیبانی می‌شود',
callTimes: 'تعداد فراخوانی',
credits: 'اعتبار پیام',
buyQuota: 'خرید سهمیه',
getFreeTokens: 'دریافت توکن‌های رایگان',
priorityUsing: 'استفاده با اولویت',
deprecated: 'منسوخ شده',
confirmDelete: 'تأیید حذف؟',
quotaTip: 'توکن‌های رایگان باقی‌مانده در دسترس',
loadPresets: 'بارگیری تنظیمات از پیش تعیین شده',
parameters: 'پارامترها',
loadBalancing: 'تعادل بار',
loadBalancingDescription: 'کاهش فشار با چندین مجموعه اعتبارنامه.',
loadBalancingHeadline: 'تعادل بار',
configLoadBalancing: 'پیکربندی تعادل بار',
modelHasBeenDeprecated: 'این مدل منسوخ شده است',
providerManaged: 'مدیریت شده توسط ارائه‌دهنده',
providerManagedDescription: 'استفاده از مجموعه واحد اعتبارنامه ارائه شده توسط ارائه‌دهنده مدل.',
defaultConfig: 'پیکربندی پیش‌فرض',
apiKeyStatusNormal: 'وضعیت کلید API عادی است',
apiKeyRateLimit: 'محدودیت نرخ به دست آمد، پس از {{seconds}} ثانیه در دسترس خواهد بود',
addConfig: 'افزودن پیکربندی',
editConfig: 'ویرایش پیکربندی',
loadBalancingLeastKeyWarning: 'برای فعال کردن تعادل بار، حداقل 2 کلید باید فعال باشند.',
loadBalancingInfo: 'به طور پیش‌فرض، تعادل بار از استراتژی Round-robin استفاده می‌کند. اگر محدودیت نرخ فعال شود، یک دوره خنک شدن 1 دقیقه‌ای اعمال خواهد شد.',
upgradeForLoadBalancing: 'برای فعال کردن تعادل بار، طرح خود را ارتقا دهید.',
emptyProviderTitle: 'ارائه دهنده مدل راه اندازی نشده است',
toBeConfigured: 'پیکربندی شود',
configureTip: 'api-key را راه اندازی کنید یا مدل را برای استفاده اضافه کنید',
installProvider: 'نصب ارائه دهندگان مدل',
discoverMore: 'اطلاعات بیشتر در',
emptyProviderTip: 'لطفا ابتدا یک ارائه دهنده مدل نصب کنید.',
},
dataSource: {
add: 'افزودن منبع داده',
connect: 'اتصال',
configure: 'پیکربندی',
notion: {
title: 'نوشن',
description: 'استفاده از نوشن به عنوان منبع داده برای دانش.',
connectedWorkspace: 'فضای کاری متصل',
addWorkspace: 'افزودن فضای کاری',
connected: 'متصل شده',
disconnected: 'قطع شده',
changeAuthorizedPages: 'تغییر صفحات مجاز',
pagesAuthorized: 'صفحات مجاز',
sync: 'همگام‌سازی',
remove: 'حذف',
selector: {
pageSelected: 'صفحات انتخاب شده',
searchPages: 'جستجوی صفحات...',
noSearchResult: 'نتیجه جستجویی یافت نشد',
addPages: 'افزودن صفحات',
preview: 'پیش‌نمایش',
},
},
website: {
title: 'وب‌سایت',
description: 'وارد کردن محتوا از وب‌سایت‌ها با استفاده از خزنده وب.',
with: 'با',
configuredCrawlers: 'خزنده‌های پیکربندی شده',
active: 'فعال',
inactive: 'غیرفعال',
},
},
plugin: {
serpapi: {
apiKey: 'کلید API',
apiKeyPlaceholder: 'کلید API خود را وارد کنید',
keyFrom: 'کلید SerpAPI خود را از صفحه حساب SerpAPI دریافت کنید',
},
},
apiBasedExtension: {
title: 'افزونه‌های مبتنی بر API مدیریت متمرکز API را فراهم می‌کنند و پیکربندی را برای استفاده آسان در برنامه‌های Dify ساده می‌کنند.',
link: 'نحوه توسعه افزونه API خود را بیاموزید.',
linkUrl: 'https://docs.dify.ai/features/extension/api_based_extension',
add: 'افزودن افزونه API',
selector: {
title: 'افزونه API',
placeholder: 'لطفاً افزونه API را انتخاب کنید',
manage: 'مدیریت افزونه API',
},
modal: {
title: 'افزودن افزونه API',
editTitle: 'ویرایش افزونه API',
name: {
title: 'نام',
placeholder: 'لطفاً نام را وارد کنید',
},
apiEndpoint: {
title: 'نقطه پایانی API',
placeholder: 'لطفاً نقطه پایانی API را وارد کنید',
},
apiKey: {
title: 'کلید API',
placeholder: 'لطفاً کلید API را وارد کنید',
lengthError: 'طول کلید API نمی‌تواند کمتر از ۵ کاراکتر باشد',
},
},
type: 'نوع',
},
about: {
changeLog: 'تغییرات',
updateNow: 'به‌روزرسانی اکنون',
nowAvailable: 'Dify {{version}} اکنون در دسترس است.',
latestAvailable: 'Dify {{version}} آخرین نسخه در دسترس است.',
},
appMenus: {
overview: 'نظارت',
promptEng: 'هماهنگ‌سازی',
apiAccess: 'دسترسی API',
logAndAnn: 'گزارش‌ها و اعلانات',
logs: 'گزارش‌ها',
},
environment: {
testing: 'آزمایشی',
development: 'توسعه',
},
appModes: {
completionApp: 'تولیدکننده متن',
chatApp: 'برنامه چت',
},
datasetMenus: {
documents: 'اسناد',
hitTesting: 'آزمایش بازیابی',
settings: 'تنظیمات',
emptyTip: 'دانش مرتبط نشده است، لطفاً به برنامه یا افزونه بروید تا ارتباط را کامل کنید.',
viewDoc: 'مشاهده مستندات',
relatedApp: 'برنامه‌های مرتبط',
noRelatedApp: 'هیچ برنامه پیوندی وجود ندارد',
},
voiceInput: {
speaking: 'اکنون صحبت کنید...',
converting: 'در حال تبدیل به متن...',
notAllow: 'میکروفون مجاز نیست',
},
modelName: {
'gpt-3.5-turbo': 'جی‌پی‌تی-۳.۵-توربو',
'gpt-3.5-turbo-16k': 'جی‌پی‌تی-۳.۵-توربو-۱۶کا',
'gpt-4': 'جی‌پی‌تی-۴',
'gpt-4-32k': 'جی‌پی‌تی-۴-۳۲کا',
'text-davinci-003': 'متن-داوینچی-۰۰۳',
'text-embedding-ada-002': 'متن-تعبیه-آدا-۰۰۲',
'whisper-1': 'ویسپر-۱',
'claude-instant-1': 'کلاود-فوری',
'claude-2': 'کلاود-۲',
},
chat: {
renameConversation: 'تغییر نام مکالمه',
conversationName: 'نام مکالمه',
conversationNamePlaceholder: 'لطفاً نام مکالمه را وارد کنید',
conversationNameCanNotEmpty: 'نام مکالمه الزامی است',
citation: {
title: 'استنادها',
linkToDataset: 'پیوند به دانش',
characters: 'کاراکترها:',
hitCount: 'تعداد بازیابی:',
vectorHash: 'هش بردار:',
hitScore: 'امتیاز بازیابی:',
},
inputPlaceholder: 'با ربات صحبت کنید',
thought: 'فکر',
thinking: 'تفکر...',
},
promptEditor: {
placeholder: 'دستور خود را اینجا بنویسید، «{» را وارد کنید تا یک متغیر درج کنید، «/» را وارد کنید تا یک بلوک محتوای دستور درج کنید',
context: {
item: {
title: 'زمینه',
desc: 'درج الگوی زمینه',
},
modal: {
title: '{{num}} دانش در زمینه',
add: 'افزودن زمینه',
footer: 'شما می‌توانید زمینه‌ها را در بخش زمینه در زیر مدیریت کنید.',
},
},
history: {
item: {
title: 'تاریخچه مکالمه',
desc: 'درج الگوی پیام تاریخی',
},
modal: {
title: 'مثال',
user: 'سلام',
assistant: 'سلام! چطور می‌توانم امروز به شما کمک کنم؟',
edit: 'ویرایش نام‌های نقش مکالمه',
},
},
variable: {
item: {
title: 'متغیرها و ابزارهای خارجی',
desc: 'درج متغیرها و ابزارهای خارجی',
},
outputToolDisabledItem: {
title: 'متغیرها',
desc: 'درج متغیرها',
},
modal: {
add: 'متغیر جدید',
addTool: 'ابزار جدید',
},
},
query: {
item: {
title: 'پرس‌وجو',
desc: 'درج الگوی پرس‌وجوی کاربر',
},
},
existed: 'در حال حاضر در دستور وجود دارد',
},
imageUploader: {
uploadFromComputer: 'بارگذاری از کامپیوتر',
uploadFromComputerReadError: 'خواندن تصویر ناموفق بود، لطفاً دوباره تلاش کنید.',
uploadFromComputerUploadError: 'بارگذاری تصویر ناموفق بود، لطفاً دوباره بارگذاری کنید.',
uploadFromComputerLimit: 'بارگذاری تصاویر نمی‌تواند از {{size}} مگابایت بیشتر باشد',
pasteImageLink: 'پیوند تصویر را بچسبانید',
pasteImageLinkInputPlaceholder: 'پیوند تصویر را اینجا بچسبانید',
pasteImageLinkInvalid: 'پیوند تصویر نامعتبر',
imageUpload: 'بارگذاری تصویر',
},
tag: {
placeholder: 'همه برچسب‌ها',
addNew: 'افزودن برچسب جدید',
noTag: 'بدون برچسب',
noTagYet: 'هنوز برچسبی وجود ندارد',
addTag: 'افزودن برچسب‌ها',
editTag: 'ویرایش برچسب‌ها',
manageTags: 'مدیریت برچسب‌ها',
selectorPlaceholder: 'برای جستجو یا ایجاد تایپ کنید',
create: 'ایجاد',
delete: 'حذف برچسب',
deleteTip: 'برچسب در حال استفاده است، آیا آن را حذف می‌کنید؟',
created: 'برچسب با موفقیت ایجاد شد',
failed: 'ایجاد برچسب ناموفق بود',
},
fileUploader: {
uploadFromComputer: 'آپلود محلی',
pasteFileLinkInputPlaceholder: 'URL را وارد کنید...',
pasteFileLinkInvalid: 'پیوند فایل نامعتبر',
fileExtensionNotSupport: 'پسوند فایل پشتیبانی نمی شود',
uploadFromComputerReadError: 'خواندن فایل انجام نشد، لطفا دوباره امتحان کنید.',
uploadFromComputerUploadError: 'آپلود فایل انجام نشد، لطفا دوباره آپلود کنید.',
pasteFileLink: 'پیوند فایل را جایگذاری کنید',
uploadFromComputerLimit: 'آپلود فایل نمی تواند از {{size}} تجاوز کند',
},
license: {
expiring_plural: 'انقضا در {{count}} روز',
expiring: 'انقضا در یک روز',
},
pagination: {
perPage: 'موارد در هر صفحه',
},
}
export default translation

View File

@@ -0,0 +1,30 @@
const translation = {
custom: 'سفارشی سازی',
upgradeTip: {
prefix: 'طرح خود را ارتقا دهید به',
suffix: 'تا برند خود را سفارشی کنید.',
},
webapp: {
title: 'سفارشی سازی برند وب اپ',
removeBrand: 'حذف "Powered by Dify"',
changeLogo: 'تغییر تصویر برند "Powered by"',
changeLogoTip: 'فرمت SVG یا PNG با حداقل اندازه 40x40px',
},
app: {
title: 'سفارشی سازی برند هدر اپلیکیشن',
changeLogoTip: 'فرمت SVG یا PNG با حداقل اندازه 80x80px',
},
upload: 'بارگذاری',
uploading: 'در حال بارگذاری',
uploadedFail: 'بارگذاری تصویر ناموفق بود، لطفاً دوباره بارگذاری کنید.',
change: 'تغییر',
apply: 'اعمال',
restore: 'بازگرداندن به پیشفرضها',
customize: {
contactUs: ' با ما تماس بگیرید ',
prefix: 'برای سفارشیسازی لوگوی برند در اپلیکیشن، لطفاً',
suffix: 'برای ارتقا به نسخه Enterprise.',
},
}
export default translation

View File

@@ -0,0 +1,205 @@
const translation = {
steps: {
header: {
creation: 'ایجاد دانش',
update: 'افزودن داده',
fallbackRoute: 'دانش',
},
one: 'انتخاب منبع داده',
two: 'پیشپردازش و پاکسازی متن',
three: 'اجرا و پایان',
},
error: {
unavailable: 'این دانش در دسترس نیست',
},
firecrawl: {
configFirecrawl: 'پیکربندی fireFirecrawl',
apiKeyPlaceholder: 'کلید API از firecrawl.dev',
getApiKeyLinkText: 'کلید API خود را از firecrawl.dev دریافت کنید',
},
stepOne: {
filePreview: 'پیشنمایش فایل',
pagePreview: 'پیشنمایش صفحه',
dataSourceType: {
file: 'وارد کردن از فایل',
notion: 'همگامسازی از Notion',
web: 'همگامسازی از وبسایت',
},
uploader: {
title: 'بارگذاری فایل',
button: 'کشیدن و رها کردن فایل، یا',
browse: 'مرور',
tip: 'پشتیبانی از {{supportTypes}}. حداکثر {{size}}MB هر کدام.',
validation: {
typeError: 'نوع فایل پشتیبانی نمیشود',
size: 'فایل خیلی بزرگ است. حداکثر {{size}}MB',
count: 'چندین فایل پشتیبانی نمیشود',
filesNumber: 'شما به حد مجاز بارگذاری دستهای {{filesNumber}} رسیدهاید.',
},
cancel: 'لغو',
change: 'تغییر',
failed: 'بارگذاری ناموفق بود',
},
notionSyncTitle: 'Notion متصل نیست',
notionSyncTip: 'برای همگامسازی با Notion، ابتدا باید اتصال به Notion برقرار شود.',
connect: 'رفتن به اتصال',
button: 'بعدی',
emptyDatasetCreation: 'میخواهم یک دانش خالی ایجاد کنم',
modal: {
title: 'ایجاد یک دانش خالی',
tip: 'یک دانش خالی هیچ سندی نخواهد داشت و شما میتوانید هر زمان اسناد را بارگذاری کنید.',
input: 'نام دانش',
placeholder: 'لطفاً وارد کنید',
nameNotEmpty: 'نام نمیتواند خالی باشد',
nameLengthInvalid: 'نام باید بین 1 تا 40 کاراکتر باشد',
cancelButton: 'لغو',
confirmButton: 'ایجاد',
failed: 'ایجاد ناموفق بود',
},
website: {
fireCrawlNotConfigured: 'Firecrawl پیکربندی نشده است',
fireCrawlNotConfiguredDescription: 'برای استفاده از Firecrawl با کلید API پیکربندی کنید.',
configure: 'پیکربندی',
run: 'اجرا',
firecrawlTitle: 'استخراج محتوای وب با fireFirecrawl',
firecrawlDoc: 'مستندات Firecrawl',
firecrawlDocLink: '<a href="https://docs.dify.ai/guides/knowledge-base/sync-from-website">https://docs.dify.ai/guides/knowledge-base/sync-from-website</a>',
options: 'گزینهها',
crawlSubPage: 'خزش صفحات فرعی',
limit: 'محدودیت',
maxDepth: 'حداکثر عمق',
excludePaths: 'مسیرهای مستثنی',
includeOnlyPaths: 'فقط مسیرهای شامل',
extractOnlyMainContent: 'فقط محتوای اصلی را استخراج کنید (بدون هدرها، ناوبریها، پاورقیها و غیره)',
exceptionErrorTitle: 'یک استثنا در حین اجرای کار Firecrawl رخ داد:',
unknownError: 'خطای ناشناخته',
totalPageScraped: 'کل صفحات خراشیده شده:',
selectAll: 'انتخاب همه',
resetAll: 'بازنشانی همه',
scrapTimeInfo: 'در مجموع {{total}} صفحه در {{time}} ثانیه خراشیده شد',
preview: 'پیشنمایش',
maxDepthTooltip: 'حداکثر عمق برای خزش نسبت به URL وارد شده. عمق 0 فقط صفحه URL وارد شده را خراش میدهد، عمق 1 URL و همه چیز بعد از URL وارد شده + یک / را خراش میدهد، و غیره.',
jinaReaderDocLink: 'https://jina.ai/reader',
chooseProvider: 'یک ارائه دهنده را انتخاب کنید',
jinaReaderTitle: 'کل سایت را به Markdown تبدیل کنید',
jinaReaderNotConfigured: 'Jina Reader پیکربندی نشده است',
jinaReaderDoc: 'درباره Jina Reader بیشتر بدانید',
useSitemap: 'از نقشه سایت استفاده کنید',
jinaReaderNotConfiguredDescription: 'با وارد کردن کلید API رایگان خود برای دسترسی، Jina Reader را راه اندازی کنید.',
useSitemapTooltip: 'نقشه سایت را دنبال کنید تا سایت را بخزید. در غیر این صورت، Jina Reader بر اساس ارتباط صفحه به صورت تکراری می خزد و صفحات کمتر اما با کیفیت بالاتر را به دست می آورد.',
},
cancel: 'لغو',
},
stepTwo: {
segmentation: 'تنظیمات بخشبندی',
auto: 'خودکار',
autoDescription: 'به طور خودکار قوانین بخشبندی و پیشپردازش را تنظیم کنید. به کاربران ناآشنا توصیه میشود این گزینه را انتخاب کنند.',
custom: 'سفارشی',
customDescription: 'قوانین بخشبندی، طول بخشها و قوانین پیشپردازش را سفارشی کنید، و غیره.',
separator: 'شناسه بخش',
separatorPlaceholder: 'برای مثال، خط جدید (\\\\n) یا جداکننده خاص (مانند "***")',
maxLength: 'حداکثر طول بخش',
overlap: 'همپوشانی بخش',
overlapTip: 'تنظیم همپوشانی بخش میتواند ارتباط معنایی بین آنها را حفظ کند و اثر بازیابی را افزایش دهد. توصیه میشود 10%-25% از حداکثر اندازه بخش تنظیم شود.',
overlapCheck: 'همپوشانی بخش نباید بزرگتر از طول حداکثر بخش باشد',
rules: 'قوانین پیشپردازش متن',
removeExtraSpaces: 'جایگزینی فضاهای متوالی، خطوط جدید و تبها',
removeUrlEmails: 'حذف همه URLها و آدرسهای ایمیل',
removeStopwords: 'حذف کلمات توقف مانند "a"، "an"، "the"',
preview: 'تأیید و پیشنمایش',
reset: 'بازنشانی',
indexMode: 'حالت شاخص',
qualified: 'کیفیت بالا',
recommend: 'توصیه شده',
qualifiedTip: 'رابط جاسازی سیستم پیشفرض را برای پردازش فراخوانی کنید تا دقت بالاتری هنگام پرسش کاربران فراهم شود.',
warning: 'لطفاً ابتدا کلید API ارائهدهنده مدل را تنظیم کنید.',
click: 'رفتن به تنظیمات',
economical: 'اقتصادی',
economicalTip: 'از موتورهای برداری آفلاین، شاخصهای کلیدواژه و غیره استفاده کنید تا دقت را بدون صرف توکنها کاهش دهید',
QATitle: 'بخشبندی در قالب پرسش و پاسخ',
QATip: 'فعال کردن این گزینه توکنهای بیشتری مصرف خواهد کرد',
QALanguage: 'بخشبندی با استفاده از',
estimateCost: 'برآورد',
estimateSegment: 'بخشهای برآورد شده',
segmentCount: 'بخشها',
calculating: 'در حال محاسبه...',
fileSource: 'پیشپردازش اسناد',
notionSource: 'پیشپردازش صفحات',
websiteSource: 'پیشپردازش وبسایت',
other: 'و سایر',
fileUnit: ' فایلها',
notionUnit: ' صفحات',
webpageUnit: ' صفحات',
previousStep: 'مرحله قبلی',
nextStep: 'ذخیره و پردازش',
save: 'ذخیره و پردازش',
cancel: 'لغو',
sideTipTitle: 'چرا بخشبندی و پیشپردازش؟',
sideTipP1: 'هنگام پردازش دادههای متنی، بخشبندی و پاکسازی دو مرحله مهم پیشپردازش هستند.',
sideTipP2: 'بخشبندی متن طولانی را به پاراگرافها تقسیم میکند تا مدلها بهتر بتوانند آن را درک کنند. این کیفیت و ارتباط نتایج مدل را بهبود میبخشد.',
sideTipP3: 'پاکسازی کاراکترها و فرمتهای غیرضروری را حذف میکند و دانش را پاکتر و آسانتر برای تجزیه میکند.',
sideTipP4: 'بخشبندی و پاکسازی مناسب عملکرد مدل را بهبود میبخشد و نتایج دقیقتر و ارزشمندتری ارائه میدهد.',
previewTitle: 'پیشنمایش',
previewTitleButton: 'پیشنمایش',
previewButton: 'تغییر به قالب پرسش و پاسخ',
previewSwitchTipStart: 'پیشنمایش بخش فعلی در قالب متن است، تغییر به پیشنمایش قالب پرسش و پاسخ',
previewSwitchTipEnd: ' توکنهای اضافی مصرف خواهد کرد',
characters: 'کاراکترها',
indexSettingTip: 'برای تغییر روش شاخص، لطفاً به',
retrievalSettingTip: 'برای تغییر روش شاخص، لطفاً به',
datasetSettingLink: 'تنظیمات دانش بروید.',
separatorTip: 'جداکننده نویسه ای است که برای جداسازی متن استفاده می شود. \\n\\n و \\n معمولا برای جداسازی پاراگراف ها و خطوط استفاده می شوند. همراه با کاما (\\n\\n,\\n)، پاراگراف ها زمانی که از حداکثر طول تکه فراتر می روند، با خطوط تقسیم بندی می شوند. همچنین می توانید از جداکننده های خاصی که توسط خودتان تعریف شده اند استفاده کنید (مثلا ***).',
maxLengthCheck: 'حداکثر طول تکه باید کمتر از {{limit}} باشد',
notAvailableForQA: 'برای شاخص پرسش و پاسخ در دسترس نیست',
parentChild: 'پدر و مادر و فرزند',
qaSwitchHighQualityTipContent: 'در حال حاضر، فقط روش شاخص با کیفیت بالا از تکه تکه کردن فرمت پرسش و پاسخ پشتیبانی می کند. آیا می خواهید به حالت با کیفیت بالا بروید؟',
previewChunk: 'پیش نمایش تکه',
previewChunkCount: '{{تعداد}} تکه های تخمینی',
previewChunkTip: 'روی دکمه "پیش نمایش قطعه" در سمت چپ کلیک کنید تا پیش نمایش بارگیری شود',
general: 'عمومی',
paragraphTip: 'این حالت متن را بر اساس جداکننده ها و حداکثر طول تکه به پاراگراف ها تقسیم می کند و از متن تقسیم شده به عنوان تکه والد برای بازیابی استفاده می کند.',
parentChunkForContext: 'تکه والد برای زمینه',
fullDoc: 'مستند کامل',
switch: 'سوئیچ',
parentChildChunkDelimiterTip: 'جداکننده نویسه ای است که برای جداسازی متن استفاده می شود. \\n برای تقسیم تکه های والد به تکه های کوچک کودک توصیه می شود. همچنین می توانید از جداکننده های ویژه ای که توسط خودتان تعریف شده است استفاده کنید.',
generalTip: 'حالت تکه تکه کردن متن عمومی، تکه های بازیابی شده و فراخوانی شده یکسان هستند.',
paragraph: 'پاراگراف',
highQualityTip: 'پس از اتمام جاسازی در حالت کیفیت بالا، بازگشت به حالت اقتصادی در دسترس نیست.',
parentChildTip: 'هنگام استفاده از حالت والد-فرزند، تکه فرزند برای بازیابی و تکه والد برای یادآوری به عنوان زمینه استفاده می شود.',
notAvailableForParentChild: 'برای نمایه والد-فرزند در دسترس نیست',
parentChildDelimiterTip: 'جداکننده نویسه ای است که برای جداسازی متن استفاده می شود. \\n\\n برای تقسیم سند اصلی به تکه های والد بزرگ توصیه می شود. همچنین می توانید از جداکننده های ویژه ای که توسط خودتان تعریف شده است استفاده کنید.',
childChunkForRetrieval: 'تکه کودک برای بازیابی',
fullDocTip: 'کل سند به عنوان تکه والد استفاده می شود و مستقیما بازیابی می شود. لطفا توجه داشته باشید که به دلایل عملکردی، متن بیش از 10000 توکن به طور خودکار کوتاه می شود.',
qaSwitchHighQualityTipTitle: 'فرمت پرسش و پاسخ به روش نمایه سازی با کیفیت بالا نیاز دارد',
useQALanguage: 'تکه با استفاده از فرمت پرسش و پاسخ در',
},
stepThree: {
creationTitle: ' دانش ایجاد شد',
creationContent: 'ما به طور خودکار نام دانش را تعیین کردیم، شما میتوانید هر زمان آن را تغییر دهید',
label: 'نام دانش',
additionTitle: ' سند بارگذاری شد',
additionP1: 'سند به دانش بارگذاری شده است',
additionP2: '، میتوانید آن را در لیست اسناد دانش پیدا کنید.',
stop: 'توقف پردازش',
resume: 'ادامه پردازش',
navTo: 'رفتن به سند',
sideTipTitle: 'بعدی چیست',
sideTipContent: 'پس از اتمام فهرستبندی سند، دانش میتواند به عنوان زمینه در برنامه یکپارچه شود، میتوانید تنظیمات زمینه را در صفحه ارکستراسیون درخواست پیدا کنید. همچنین میتوانید آن را به عنوان یک افزونه فهرستبندی مستقل ChatGPT برای انتشار ایجاد کنید.',
modelTitle: 'آیا مطمئن هستید که میخواهید جاسازی را متوقف کنید؟',
modelContent: 'اگر نیاز به ادامه پردازش بعداً دارید، از جایی که متوقف شدهاید ادامه خواهید داد.',
modelButtonConfirm: 'تأیید',
modelButtonCancel: 'لغو',
},
jinaReader: {
configJinaReader: 'پیکربندی Jina Reader',
apiKeyPlaceholder: 'کلید API از jina.ai',
getApiKeyLinkText: 'کلید API رایگان خود را در jina.ai دریافت کنید',
},
otherDataSource: {
learnMore: 'بیشتر بدانید',
description: 'در حال حاضر، پایگاه دانش Dify فقط منابع داده محدودی دارد. کمک به یک منبع داده به پایگاه دانش Dify راهی فوق العاده برای کمک به افزایش انعطاف پذیری و قدرت پلتفرم برای همه کاربران است. راهنمای مشارکت ما شروع کار را آسان می کند. لطفا برای کسب اطلاعات بیشتر روی لینک زیر کلیک کنید.',
title: 'به منابع داده دیگر متصل شوید؟',
},
}
export default translation

View File

@@ -0,0 +1,394 @@
const translation = {
list: {
title: 'اسناد',
desc: 'تمامی فایل‌های دانش در اینجا نمایش داده می‌شوند و کل دانش می‌تواند به ارجاعات Dify متصل شود یا از طریق افزونه چت ایندکس شود.',
addFile: 'اضافه کردن فایل',
addPages: 'اضافه کردن صفحات',
addUrl: 'اضافه کردن URL',
table: {
header: {
fileName: 'نام فایل',
words: 'کلمات',
hitCount: 'تعداد بازیابی',
uploadTime: 'زمان بارگذاری',
status: 'وضعیت',
action: 'اقدام',
chunkingMode: 'حالت تکه تکه کردن',
},
rename: 'تغییر نام',
name: 'نام',
},
action: {
uploadFile: 'بارگذاری فایل جدید',
settings: 'تنظیمات بخش‌بندی',
addButton: 'اضافه کردن قطعه',
add: 'اضافه کردن یک قطعه',
batchAdd: 'افزودن گروهی',
archive: 'بایگانی',
unarchive: 'خارج کردن از بایگانی',
delete: 'حذف',
enableWarning: 'فایل بایگانی شده نمی‌تواند فعال شود',
sync: 'همگام‌سازی',
},
index: {
enable: 'فعال کردن',
disable: 'غیرفعال کردن',
all: 'همه',
enableTip: 'فایل می‌تواند ایندکس شود',
disableTip: 'فایل نمی‌تواند ایندکس شود',
},
status: {
queuing: 'در صف',
indexing: 'ایندکس‌سازی',
paused: 'متوقف شده',
error: 'خطا',
available: 'موجود',
enabled: 'فعال شده',
disabled: 'غیرفعال شده',
archived: 'بایگانی شده',
},
empty: {
title: 'هنوز هیچ سندی وجود ندارد',
upload: {
tip: 'شما می‌توانید فایل‌ها را بارگذاری کنید، از وب‌سایت همگام‌سازی کنید، یا از برنامه‌های وبی مانند Notion، GitHub و غیره.',
},
sync: {
tip: 'Dify به‌طور دوره‌ای فایل‌ها را از Notion شما دانلود و پردازش را کامل می‌کند.',
},
},
delete: {
title: 'آیا مطمئن هستید که حذف شود؟',
content: 'اگر بعداً نیاز به ادامه پردازش داشتید، از همان جایی که مانده بودید ادامه می‌دهید',
},
batchModal: {
title: 'افزودن گروهی قطعات',
csvUploadTitle: 'فایل CSV خود را اینجا بکشید و رها کنید، یا ',
browse: 'مرور کنید',
tip: 'فایل CSV باید به ساختار زیر مطابقت داشته باشد:',
question: 'سؤال',
answer: 'پاسخ',
contentTitle: 'محتوای قطعه',
content: 'محتوا',
template: 'الگو را از اینجا دانلود کنید',
cancel: 'لغو',
run: 'اجرای گروهی',
runError: 'اجرای گروهی ناموفق بود',
processing: 'در حال پردازش گروهی',
completed: 'واردات کامل شد',
error: 'خطای واردات',
ok: 'تأیید',
},
learnMore: 'بیشتر بدانید',
},
metadata: {
title: 'اطلاعات متا',
desc: 'برچسب‌گذاری متادیتا برای اسناد به هوش مصنوعی اجازه می‌دهد تا به موقع به آن‌ها دسترسی پیدا کند و منبع ارجاعات را برای کاربران آشکار کند.',
dateTimeFormat: 'D MMMM YYYY hh:mm A',
docTypeSelectTitle: 'لطفاً یک نوع سند را انتخاب کنید',
docTypeChangeTitle: 'تغییر نوع سند',
docTypeSelectWarning: 'اگر نوع سند تغییر کند، متادیتای پر شده فعلی دیگر حفظ نخواهد شد',
firstMetaAction: 'بزن بریم',
placeholder: {
add: 'اضافه کردن ',
select: 'انتخاب ',
},
source: {
upload_file: 'بارگذاری فایل',
notion: 'همگام‌سازی از Notion',
github: 'همگام‌سازی از Github',
},
type: {
book: 'کتاب',
webPage: 'صفحه وب',
paper: 'مقاله',
socialMediaPost: 'پست شبکه‌های اجتماعی',
personalDocument: 'سند شخصی',
businessDocument: 'سند تجاری',
IMChat: 'چت IM',
wikipediaEntry: 'ورودی ویکی‌پدیا',
notion: 'همگام‌سازی از Notion',
github: 'همگام‌سازی از Github',
technicalParameters: 'پارامترهای فنی',
},
field: {
processRule: {
processDoc: 'پردازش سند',
segmentRule: 'قانون قطعه‌بندی',
segmentLength: 'طول قطعات',
processClean: 'تمیز کردن پردازش متن',
},
book: {
title: 'عنوان',
language: 'زبان',
author: 'نویسنده',
publisher: 'ناشر',
publicationDate: 'تاریخ انتشار',
ISBN: 'ISBN',
category: 'دسته‌بندی',
},
webPage: {
title: 'عنوان',
url: 'URL',
language: 'زبان',
authorPublisher: 'نویسنده/ناشر',
publishDate: 'تاریخ انتشار',
topicKeywords: 'موضوعات/کلیدواژه‌ها',
description: 'توضیحات',
},
paper: {
title: 'عنوان',
language: 'زبان',
author: 'نویسنده',
publishDate: 'تاریخ انتشار',
journalConferenceName: 'نام ژورنال/کنفرانس',
volumeIssuePage: 'جلد/شماره/صفحه',
DOI: 'DOI',
topicsKeywords: 'موضوعات/کلیدواژه‌ها',
abstract: 'چکیده',
},
socialMediaPost: {
platform: 'پلتفرم',
authorUsername: 'نویسنده/نام کاربری',
publishDate: 'تاریخ انتشار',
postURL: 'URL پست',
topicsTags: 'موضوعات/برچسب‌ها',
},
personalDocument: {
title: 'عنوان',
author: 'نویسنده',
creationDate: 'تاریخ ایجاد',
lastModifiedDate: 'تاریخ آخرین ویرایش',
documentType: 'نوع سند',
tagsCategory: 'برچسب‌ها/دسته‌بندی',
},
businessDocument: {
title: 'عنوان',
author: 'نویسنده',
creationDate: 'تاریخ ایجاد',
lastModifiedDate: 'تاریخ آخرین ویرایش',
documentType: 'نوع سند',
departmentTeam: 'دپارتمان/تیم',
},
IMChat: {
chatPlatform: 'پلتفرم چت',
chatPartiesGroupName: 'طرفین چت/نام گروه',
participants: 'شرکت‌کنندگان',
startDate: 'تاریخ شروع',
endDate: 'تاریخ پایان',
topicsKeywords: 'موضوعات/کلیدواژه‌ها',
fileType: 'نوع فایل',
},
wikipediaEntry: {
title: 'عنوان',
language: 'زبان',
webpageURL: 'URL صفحه وب',
editorContributor: 'ویرایشگر/همکار',
lastEditDate: 'تاریخ آخرین ویرایش',
summaryIntroduction: 'خلاصه/مقدمه',
},
notion: {
title: 'عنوان',
language: 'زبان',
author: 'نویسنده',
createdTime: 'زمان ایجاد',
lastModifiedTime: 'زمان آخرین ویرایش',
url: 'URL',
tag: 'برچسب',
description: 'توضیحات',
},
github: {
repoName: 'نام مخزن',
repoDesc: 'توضیحات مخزن',
repoOwner: 'مالک مخزن',
fileName: 'نام فایل',
filePath: 'مسیر فایل',
programmingLang: 'زبان برنامه‌نویسی',
url: 'URL',
license: 'مجوز',
lastCommitTime: 'زمان آخرین کامیت',
lastCommitAuthor: 'نویسنده آخرین کامیت',
},
originInfo: {
originalFilename: 'نام فایل اصلی',
originalFileSize: 'اندازه فایل اصلی',
uploadDate: 'تاریخ بارگذاری',
lastUpdateDate: 'تاریخ آخرین بروزرسانی',
source: 'منبع',
},
technicalParameters: {
segmentSpecification: 'مشخصات قطعات',
segmentLength: 'طول قطعات',
avgParagraphLength: 'طول متوسط پاراگراف',
paragraphs: 'پاراگراف‌ها',
hitCount: 'تعداد بازیابی',
embeddingTime: 'زمان جاسازی',
embeddedSpend: 'هزینه جاسازی',
},
},
languageMap: {
zh: 'چینی',
en: 'انگلیسی',
es: 'اسپانیایی',
fr: 'فرانسوی',
de: 'آلمانی',
ja: 'ژاپنی',
ko: 'کره‌ای',
ru: 'روسی',
ar: 'عربی',
pt: 'پرتغالی',
it: 'ایتالیایی',
nl: 'هلندی',
pl: 'لهستانی',
sv: 'سوئدی',
tr: 'ترکی',
he: 'عبری',
hi: 'هندی',
da: 'دانمارکی',
fi: 'فنلاندی',
no: 'نروژی',
hu: 'مجاری',
el: 'یونانی',
cs: 'چکی',
th: 'تایلندی',
id: 'اندونزیایی',
},
categoryMap: {
book: {
fiction: 'داستان',
biography: 'زندگی‌نامه',
history: 'تاریخ',
science: 'علم',
technology: 'فناوری',
education: 'آموزش',
philosophy: 'فلسفه',
religion: 'دین',
socialSciences: 'علوم اجتماعی',
art: 'هنر',
travel: 'سفر',
health: 'سلامت',
selfHelp: 'خودیاری',
businessEconomics: 'اقتصاد کسب‌وکار',
cooking: 'آشپزی',
childrenYoungAdults: 'کودکان و نوجوانان',
comicsGraphicNovels: 'کمیک‌ها و رمان‌های گرافیکی',
poetry: 'شعر',
drama: 'نمایشنامه',
other: 'دیگر',
},
personalDoc: {
notes: 'یادداشت‌ها',
blogDraft: 'پیش‌نویس وبلاگ',
diary: 'دفتر خاطرات',
researchReport: 'گزارش پژوهش',
bookExcerpt: 'گزیده کتاب',
schedule: 'برنامه‌ریزی',
list: 'فهرست',
projectOverview: 'نمای کلی پروژه',
photoCollection: 'مجموعه عکس',
creativeWriting: 'نوشته خلاقانه',
codeSnippet: 'قطعه کد',
designDraft: 'پیش‌نویس طراحی',
personalResume: 'رزومه شخصی',
other: 'دیگر',
},
businessDoc: {
meetingMinutes: 'صورتجلسه',
researchReport: 'گزارش پژوهش',
proposal: 'پیشنهاد',
employeeHandbook: 'راهنمای کارمند',
trainingMaterials: 'مواد آموزشی',
requirementsDocument: 'سند نیازمندی‌ها',
designDocument: 'سند طراحی',
productSpecification: 'مشخصات محصول',
financialReport: 'گزارش مالی',
marketAnalysis: 'تحلیل بازار',
projectPlan: 'طرح پروژه',
teamStructure: 'ساختار تیم',
policiesProcedures: 'سیاست‌ها و رویه‌ها',
contractsAgreements: 'قراردادها و توافق‌نامه‌ها',
emailCorrespondence: 'مکاتبات ایمیلی',
other: 'دیگر',
},
},
},
embedding: {
processing: 'در حال پردازش جاسازی...',
paused: 'جاسازی متوقف شده',
completed: 'جاسازی کامل شد',
error: 'خطای جاسازی',
docName: 'پیش‌پردازش سند',
mode: 'قانون بخش‌بندی',
segmentLength: 'طول قطعات',
textCleaning: 'پیش‌تعریف و تمیز کردن متن',
segments: 'پاراگراف‌ها',
highQuality: 'حالت با کیفیت بالا',
economy: 'حالت اقتصادی',
estimate: 'مصرف تخمینی',
stop: 'توقف پردازش',
resume: 'ادامه پردازش',
automatic: 'خودکار',
custom: 'سفارشی',
previewTip: 'پیش‌نمایش پاراگراف پس از اتمام جاسازی در دسترس خواهد بود',
parentMaxTokens: 'مادر',
pause: 'مکث',
childMaxTokens: 'کودک',
hierarchical: 'پدر و مادر و فرزند',
},
segment: {
paragraphs: 'پاراگراف‌ها',
keywords: 'کلیدواژه‌ها',
addKeyWord: 'اضافه کردن کلیدواژه',
keywordError: 'حداکثر طول کلیدواژه ۲۰ کاراکتر است',
characters: 'کاراکترها',
hitCount: 'تعداد بازیابی',
vectorHash: 'هش برداری: ',
questionPlaceholder: 'سؤال را اینجا اضافه کنید',
questionEmpty: 'سؤال نمی‌تواند خالی باشد',
answerPlaceholder: 'پاسخ را اینجا اضافه کنید',
answerEmpty: 'پاسخ نمی‌تواند خالی باشد',
contentPlaceholder: 'محتوا را اینجا اضافه کنید',
contentEmpty: 'محتوا نمی‌تواند خالی باشد',
newTextSegment: 'قطعه متن جدید',
newQaSegment: 'قطعه پرسش و پاسخ جدید',
delete: 'حذف این قطعه؟',
chunks_other: 'تکه',
characters_one: 'شخصیت',
editedAt: 'ویرایش شده در',
parentChunks_other: 'تکه های والدین',
editChunk: 'ویرایش تکه',
collapseChunks: 'جمع کردن تکه ها',
clearFilter: 'فیلتر را پاک کنید',
characters_other: 'کاراکتر',
chunkDetail: 'جزئیات تکه',
searchResults_other: 'نتیجه',
addAnother: 'اضافه کردن دیگری',
parentChunks_one: 'تکه والدین',
childChunk: 'تکه کودک',
regenerationSuccessTitle: 'بازسازی به پایان رسید',
chunk: 'تکه',
addChildChunk: 'افزودن تکه فرزند',
chunkAdded: '1 تکه اضافه شد',
childChunks_one: 'تکه کودک',
edited: 'ویرایش',
editParentChunk: 'ویرایش تکه والد',
regeneratingTitle: 'بازسازی تکه های فرزند',
expandChunks: 'تکه ها را گسترش دهید',
childChunks_other: 'تکه های کودک',
newChildChunk: 'تکه کودک جدید',
editChildChunk: 'ویرایش Child Chunk',
parentChunk: 'تکه والدین',
chunks_one: 'تکه',
empty: 'هیچ تکه ای یافت نشد',
addChunk: 'افزودن تکه',
searchResults_one: 'نتیجه',
regenerationConfirmMessage: 'بازآفرینی تکه های فرزند تکه های فرزند فعلی، از جمله تکه های ویرایش شده و تکه های تازه اضافه شده را بازنویسی می کند. بازسازی را نمی توان خنثی کرد.',
childChunkAdded: '1 تکه کودک اضافه شد',
searchResults_zero: 'نتیجه',
newChunk: 'تکه جدید',
regeneratingMessage: 'این ممکن است یک لحظه طول بکشد، لطفا صبر کنید...',
regenerationConfirmTitle: 'آیا می خواهید تکه های کودک را بازسازی کنید؟',
regenerationSuccessMessage: 'می توانید این پنجره را ببندید.',
},
}
export default translation

View File

@@ -0,0 +1,35 @@
const translation = {
title: 'آزمون بازیابی',
desc: 'آزمون اثرگذاری دانش بر اساس متن پرسش داده شده.',
dateTimeFormat: 'MM/DD/YYYY hh:mm A',
recents: 'اخیرها',
table: {
header: {
source: 'منبع',
text: 'متن',
time: 'زمان',
},
},
input: {
title: 'متن منبع',
placeholder: 'لطفاً یک متن وارد کنید، یک جمله کوتاه خبری توصیه می‌شود.',
countWarning: 'تا ۲۰۰ کاراکتر.',
indexWarning: 'فقط دانش با کیفیت بالا.',
testing: 'در حال آزمون',
},
hit: {
title: 'پاراگراف‌های بازیابی',
emptyTip: 'نتایج آزمون بازیابی اینجا نمایش داده می‌شوند',
},
noRecentTip: 'اینجا نتیجه پرسش اخیر وجود ندارد',
viewChart: 'مشاهده نمودار بُرداری',
settingTitle: 'تنظیمات بازیابی',
viewDetail: 'نمایش جزئیات',
records: 'سوابق',
keyword: 'کليدواژه',
hitChunks: '{{num}} را بزنید تکه های فرزند',
chunkDetail: 'جزئیات تکه',
open: 'باز',
}
export default translation

View File

@@ -0,0 +1,41 @@
const translation = {
title: 'تنظیمات دانش',
desc: 'اینجا می‌توانید ویژگی‌ها و روش‌های کاری دانش را تغییر دهید.',
form: {
name: 'نام دانش',
namePlaceholder: 'لطفاً نام دانش را وارد کنید',
nameError: 'نام نمی‌تواند خالی باشد',
desc: 'توضیحات دانش',
descInfo: 'لطفاً یک توضیح متنی واضح بنویسید تا محتوای دانش را مشخص کند. این توضیحات به عنوان مبنایی برای تطبیق هنگام انتخاب از چندین دانش برای استنتاج استفاده خواهد شد.',
descPlaceholder: 'توضیح دهید که در این دانش چه چیزی وجود دارد. توضیحات دقیق به هوش مصنوعی اجازه می‌دهد تا به موقع به محتوای دانش دسترسی پیدا کند. اگر خالی باشد، دیفی از استراتژی پیش‌فرض استفاده خواهد کرد.',
descWrite: 'یاد بگیرید چگونه یک توضیح دانش خوب بنویسید.',
permissions: 'مجوزها',
permissionsOnlyMe: 'فقط من',
permissionsAllMember: 'تمام اعضای تیم',
permissionsInvitedMembers: 'برخی از اعضای تیم',
me: '(شما)',
indexMethod: 'روش نمایه‌سازی',
indexMethodHighQuality: 'کیفیت بالا',
indexMethodHighQualityTip: 'مدل تعبیه را برای پردازش فراخوانی کنید تا دقت بالاتری هنگام جستجوی کاربران فراهم شود.',
indexMethodEconomy: 'اقتصادی',
indexMethodEconomyTip: 'استفاده از موتورهای برداری آفلاین، شاخص‌های کلمات کلیدی و غیره برای کاهش دقت بدون صرف توکن‌ها',
embeddingModel: 'مدل تعبیه',
embeddingModelTip: 'برای تغییر مدل تعبیه، لطفاً به ',
embeddingModelTipLink: 'تنظیمات',
retrievalSetting: {
title: 'تنظیمات بازیابی',
learnMore: 'بیشتر بدانید',
description: ' درباره روش بازیابی.',
longDescription: ' درباره روش بازیابی، می‌توانید در هر زمانی در تنظیمات دانش این را تغییر دهید.',
},
save: 'ذخیره',
externalKnowledgeAPI: 'API دانش خارجی',
retrievalSettings: 'تنظیمات بازیابی',
externalKnowledgeID: 'شناسه دانش خارجی',
indexMethodChangeToEconomyDisabledTip: 'برای تنزل رتبه از HQ به ECO در دسترس نیست',
helpText: 'یاد بگیرید که چگونه یک توضیحات مجموعه داده خوب بنویسید.',
upgradeHighQualityTip: 'پس از ارتقاء به حالت کیفیت بالا، بازگشت به حالت اقتصادی در دسترس نیست',
},
}
export default translation

View File

@@ -0,0 +1,173 @@
const translation = {
knowledge: 'دانش',
documentCount: ' سند',
wordCount: ' هزار کلمه',
appCount: ' برنامه‌های متصل',
createDataset: 'ایجاد دانش',
createDatasetIntro: 'داده‌های متنی خود را وارد کنید یا از طریق Webhook در زمان واقعی برای بهبود زمینه LLM بنویسید.',
deleteDatasetConfirmTitle: 'حذف این دانش؟',
deleteDatasetConfirmContent:
'حذف دانش غیر قابل برگشت است. کاربران دیگر نمی‌توانند به دانش شما دسترسی پیدا کنند و تمام تنظیمات درخواست و گزارش‌ها به طور دائم حذف خواهند شد.',
datasetUsedByApp: 'دانش توسط برخی برنامه‌ها استفاده می‌شود. برنامه‌ها دیگر نمی‌توانند از این دانش استفاده کنند و تمام تنظیمات درخواست و گزارش‌ها به طور دائم حذف خواهند شد.',
datasetDeleted: 'دانش حذف شد',
datasetDeleteFailed: 'حذف دانش ناموفق بود',
didYouKnow: 'آیا می‌دانستید؟',
intro1: 'دانش می‌تواند در برنامه Dify ',
intro2: 'به عنوان یک زمینه',
intro3: 'ادغام شود',
intro4: 'یا می‌تواند ',
intro5: 'به عنوان یک افزونه مستقل ChatGPT برای انتشار',
intro6: 'ایجاد شود',
unavailable: 'در دسترس نیست',
unavailableTip: 'مدل جاسازی در دسترس نیست، نیاز است مدل جاسازی پیش‌فرض پیکربندی شود',
datasets: 'دانش',
datasetsApi: 'دسترسی API',
retrieval: {
semantic_search: {
title: 'جستجوی برداری',
description: 'تولید جاسازی‌های جستجو و جستجوی بخش متنی که بیشترین شباهت را به نمایش برداری آن دارد.',
},
full_text_search: {
title: 'جستجوی متن کامل',
description: 'فهرست کردن تمام اصطلاحات در سند، به کاربران اجازه می‌دهد هر اصطلاحی را جستجو کنند و بخش متنی مربوط به آن اصطلاحات را بازیابی کنند.',
},
hybrid_search: {
title: 'جستجوی هیبریدی',
description: 'جستجوی متن کامل و برداری را همزمان اجرا می‌کند، دوباره رتبه‌بندی می‌کند تا بهترین تطابق برای درخواست کاربر انتخاب شود. کاربران می‌توانند وزن‌ها را تنظیم کنند یا به یک مدل دوباره رتبه‌بندی تنظیم کنند.',
recommend: 'توصیه',
},
invertedIndex: {
title: 'فهرست معکوس',
description: 'فهرست معکوس یک ساختار برای بازیابی کارآمد است. توسط اصطلاحات سازماندهی شده، هر اصطلاح به اسناد یا صفحات وب حاوی آن اشاره می‌کند.',
},
change: 'تغییر',
changeRetrievalMethod: 'تغییر روش بازیابی',
},
docsFailedNotice: 'اسناد نتوانستند فهرست‌بندی شوند',
retry: 'تلاش مجدد',
indexingTechnique: {
high_quality: 'HQ',
economy: 'ECO',
},
indexingMethod: {
semantic_search: 'برداری',
full_text_search: 'متن کامل',
hybrid_search: 'هیبریدی',
invertedIndex: 'معکوس',
},
mixtureHighQualityAndEconomicTip: 'مدل دوباره رتبه‌بندی برای ترکیب پایگاه‌های دانش با کیفیت بالا و اقتصادی لازم است.',
inconsistentEmbeddingModelTip: 'مدل دوباره رتبه‌بندی لازم است اگر مدل‌های جاسازی پایگاه‌های دانش انتخابی ناسازگار باشند.',
retrievalSettings: 'تنظیمات بازیابی',
rerankSettings: 'تنظیمات دوباره رتبه‌بندی',
weightedScore: {
title: 'امتیاز وزنی',
description: 'با تنظیم وزن‌های اختصاص داده شده، این استراتژی دوباره رتبه‌بندی تعیین می‌کند که آیا اولویت با تطابق معنایی یا کلمات کلیدی است.',
semanticFirst: 'اولویت معنایی',
keywordFirst: 'اولویت کلمه کلیدی',
customized: 'سفارشی‌سازی شده',
semantic: 'معنایی',
keyword: 'کلمه کلیدی',
},
nTo1RetrievalLegacy: 'بازیابی N-to-1 از سپتامبر به طور رسمی منسوخ خواهد شد. توصیه می‌شود از بازیابی چند مسیر جدید استفاده کنید تا نتایج بهتری بدست آورید.',
nTo1RetrievalLegacyLink: 'بیشتر بدانید',
nTo1RetrievalLegacyLinkText: ' بازیابی N-to-1 از سپتامبر به طور رسمی منسوخ خواهد شد.',
defaultRetrievalTip: 'بازیابی چند مسیره به طور پیش فرض استفاده می شود. دانش از چندین پایگاه دانش بازیابی می شود و سپس دوباره رتبه بندی می شود.',
editExternalAPIConfirmWarningContent: {
front: 'این API دانش خارجی به',
end: 'دانش خارجی ، و این اصلاح برای همه آنها اعمال خواهد شد. آیا مطمئن هستید که می خواهید این تغییر را ذخیره کنید؟',
},
editExternalAPIFormWarning: {
front: 'این API خارجی به',
end: 'دانش بیرونی',
},
deleteExternalAPIConfirmWarningContent: {
title: {
front: 'حذف',
end: '?',
},
content: {
front: 'این API دانش خارجی به',
end: 'دانش بیرونی. حذف این API همه آنها را باطل می کند. آیا مطمئن هستید که می خواهید این API را حذف کنید؟',
},
noConnectionContent: 'آیا مطمئن هستید که این API را حذف خواهید کرد؟',
},
selectExternalKnowledgeAPI: {
placeholder: 'یک API دانش خارجی را انتخاب کنید',
},
connectDatasetIntro: {
content: {
link: 'یادگیری نحوه ایجاد یک API خارجی',
front: 'برای اتصال به یک پایگاه دانش خارجی، ابتدا باید یک API خارجی ایجاد کنید. لطفا با دقت بخوانید و به',
end: '. سپس شناسه دانش مربوطه را پیدا کرده و آن را در فرم سمت چپ پر کنید. اگر تمام اطلاعات صحیح باشد، پس از کلیک بر روی دکمه اتصال، به طور خودکار به آزمون بازیابی در پایگاه دانش می رود.',
},
learnMore: 'بیشتر بدانید',
title: 'چگونه به یک پایگاه دانش خارجی متصل شویم؟',
},
connectHelper: {
helper5: 'قبل از استفاده از این ویژگی با دقت',
helper3: '. اکیدا توصیه می کنیم که',
helper2: 'فقط قابلیت بازیابی پشتیبانی می شود',
helper4: 'مستندات راهنما را بخوانید',
helper1: 'از طریق API و شناسه پایگاه دانش به پایگاه های دانش خارجی متصل شوید. در حال حاضر،',
},
externalKnowledgeForm: {
cancel: 'لغو',
connect: 'اتصال',
},
externalAPIForm: {
encrypted: {
front: 'توکن API شما رمزگذاری و با استفاده از',
end: 'فناوری.',
},
apiKey: 'کلید API',
edit: 'ویرایش',
save: 'ذخیره',
cancel: 'لغو',
endpoint: 'نقطه پایانی API',
name: 'نام',
},
editExternalAPITooltipTitle: 'دانش مرتبط',
externalKnowledgeNamePlaceholder: 'لطفا نام پایگاه دانش را وارد کنید',
externalAPIPanelDocumentation: 'یادگیری نحوه ایجاد یک API دانش خارجی',
externalKnowledgeDescriptionPlaceholder: 'آنچه در این پایگاه دانش وجود دارد را توضیح دهید (اختیاری)',
externalKnowledgeDescription: 'توضیحات دانش',
externalTag: 'خارجی',
externalKnowledgeIdPlaceholder: 'لطفا شناسه دانش را وارد کنید',
noExternalKnowledge: 'هنوز هیچ API دانش خارجی وجود ندارد، برای ایجاد اینجا را کلیک کنید',
externalAPIPanelTitle: 'API دانش خارجی',
connectDataset: 'اتصال به یک پایگاه دانش خارجی',
externalKnowledgeId: 'شناسه دانش خارجی',
externalAPI: 'API خارجی',
externalKnowledgeName: 'نام دانش خارجی',
createExternalAPI: 'افزودن یک API دانش خارجی',
createNewExternalAPI: 'ایجاد یک API دانش خارجی جدید',
learnHowToWriteGoodKnowledgeDescription: 'یاد بگیرید که چگونه یک توضیحات دانش خوب بنویسید.',
editExternalAPIFormTitle: 'ویرایش API دانش خارجی',
externalAPIPanelDescription: 'API دانش خارجی برای اتصال به یک پایگاه دانش خارج از Dify و بازیابی دانش از آن پایگاه دانش استفاده می شود.',
allExternalTip: 'هنگامی که فقط از دانش خارجی استفاده می کنید، کاربر می تواند انتخاب کند که آیا مدل Rerank را فعال کند یا خیر. اگر فعال نباشد، تکه های بازیابی شده بر اساس امتیازات مرتب می شوند. هنگامی که استراتژی های بازیابی پایگاه های دانش مختلف متناقض باشد، نادرست خواهد بود.',
mixtureInternalAndExternalTip: 'مدل Rerank برای آمیختگی دانش درونی و بیرونی مورد نیاز است.',
chunkingMode: {
parentChild: 'پدر و مادر و فرزند',
general: 'عمومی',
},
parentMode: {
fullDoc: 'مستند کامل',
paragraph: 'پاراگراف',
},
batchAction: {
disable: 'غیر فعال کردن',
cancel: 'لغو',
selected: 'انتخاب',
enable: 'فعال',
delete: 'حذف',
archive: 'بایگانی',
},
enable: 'فعال',
documentsDisabled: '{{num}} اسناد غیرفعال - غیرفعال برای بیش از 30 روز',
preprocessDocument: '{{عدد}} اسناد پیش پردازش',
localDocs: 'اسناد محلی',
allKnowledge: 'همه دانش ها',
allKnowledgeDescription: 'برای نمایش تمام دانش در این فضای کاری انتخاب کنید. فقط مالک فضای کاری می تواند تمام دانش را مدیریت کند.',
}
export default translation

View File

@@ -0,0 +1,43 @@
const translation = {
title: 'کاوش',
sidebar: {
discovery: 'کشف',
chat: 'چت',
workspace: 'فضای کاری',
action: {
pin: 'سنجاق کردن',
unpin: 'برداشتن سنجاق',
rename: 'تغییر نام',
delete: 'حذف',
},
delete: {
title: 'حذف برنامه',
content: 'آیا مطمئن هستید که می‌خواهید این برنامه را حذف کنید؟',
},
},
apps: {
title: 'کاوش برنامه‌ها توسط دیفی',
description: 'از این برنامه‌های قالبی بلافاصله استفاده کنید یا برنامه‌های خود را بر اساس این قالب‌ها سفارشی کنید.',
allCategories: 'پیشنهاد شده',
},
appCard: {
addToWorkspace: 'افزودن به فضای کاری',
customize: 'سفارشی کردن',
},
appCustomize: {
title: 'ایجاد برنامه از {{name}}',
subTitle: 'آیکون و نام برنامه',
nameRequired: 'نام برنامه الزامی است',
},
category: {
Assistant: 'دستیار',
Writing: 'نوشتن',
Translate: 'ترجمه',
Programming: 'برنامه‌نویسی',
HR: 'منابع انسانی',
Agent: 'عامل',
Workflow: 'گردش',
},
}
export default translation

View File

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

View File

@@ -0,0 +1,110 @@
const translation = {
pageTitle: 'هی، بیایید شروع کنیم!👋',
welcome: 'به Dify خوش آمدید، لطفا برای ادامه وارد شوید.',
email: 'آدرس ایمیل',
emailPlaceholder: 'ایمیل شما',
password: 'رمز عبور',
passwordPlaceholder: 'رمز عبور شما',
name: 'نام کاربری',
namePlaceholder: 'نام کاربری شما',
forget: 'رمز عبور خود را فراموش کرده‌اید؟',
signBtn: 'ورود',
sso: 'ادامه با SSO',
installBtn: 'راه‌اندازی',
setAdminAccount: 'راه‌اندازی حساب مدیر',
setAdminAccountDesc: 'بیشترین امتیازات برای حساب مدیر، که می‌تواند برای ایجاد برنامه‌ها و مدیریت ارائه‌دهندگان LLM و غیره استفاده شود.',
createAndSignIn: 'ایجاد و ورود',
oneMoreStep: 'یک مرحله دیگر',
createSample: 'بر اساس این اطلاعات، ما برای شما یک نمونه برنامه ایجاد خواهیم کرد',
invitationCode: 'کد دعوت',
invitationCodePlaceholder: 'کد دعوت شما',
interfaceLanguage: 'زبان رابط کاربری',
timezone: 'منطقه زمانی',
go: 'برو به Dify',
sendUsMail: 'ایمیل معرفی خود را برای ما ارسال کنید، و ما درخواست دعوت را بررسی خواهیم کرد.',
acceptPP: 'من سیاست حفظ حریم خصوصی را خوانده و قبول می‌کنم',
reset: 'لطفاً برای بازنشانی رمز عبور خود دستور زیر را اجرا کنید',
withGitHub: 'ادامه با GitHub',
withGoogle: 'ادامه با Google',
rightTitle: 'پتانسیل کامل LLM را باز کنید',
rightDesc: 'به راحتی برنامه‌های AI با ظاهری جذاب، قابل اجرا و بهبود پذیر ایجاد کنید.',
tos: 'شرایط خدمات',
pp: 'سیاست حفظ حریم خصوصی',
tosDesc: 'با ثبت نام، شما با شرایط ما موافقت می‌کنید',
goToInit: 'اگر حساب را اولیه نکرده‌اید، لطفاً به صفحه اولیه‌سازی بروید',
dontHave: 'ندارید؟',
invalidInvitationCode: 'کد دعوت نامعتبر است',
accountAlreadyInited: 'حساب قبلاً اولیه شده است',
forgotPassword: 'رمز عبور خود را فراموش کرده‌اید؟',
resetLinkSent: 'لینک بازنشانی ارسال شد',
sendResetLink: 'ارسال لینک بازنشانی',
backToSignIn: 'بازگشت به ورود',
forgotPasswordDesc: 'لطفاً آدرس ایمیل خود را وارد کنید تا رمز عبور خود را بازنشانی کنید. ما یک ایمیل با دستورالعمل‌های بازنشانی برای شما ارسال خواهیم کرد.',
checkEmailForResetLink: 'لطفاً ایمیل خود را برای لینک بازنشانی رمز عبور بررسی کنید. اگر در عرض چند دقیقه ظاهر نشد، پوشه اسپم خود را بررسی کنید.',
passwordChanged: 'اکنون وارد شوید',
changePassword: 'تغییر رمز عبور',
changePasswordTip: 'لطفاً یک رمز عبور جدید برای حساب خود وارد کنید',
invalidToken: 'توکن نامعتبر یا منقضی شده است',
confirmPassword: 'تایید رمز عبور',
confirmPasswordPlaceholder: 'رمز عبور جدید خود را تایید کنید',
passwordChangedTip: 'رمز عبور شما با موفقیت تغییر یافت',
error: {
emailEmpty: 'آدرس ایمیل لازم است',
emailInValid: 'لطفاً یک آدرس ایمیل معتبر وارد کنید',
nameEmpty: 'نام لازم است',
passwordEmpty: 'رمز عبور لازم است',
passwordLengthInValid: 'رمز عبور باید حداقل ۸ کاراکتر باشد',
passwordInvalid: 'رمز عبور باید شامل حروف و اعداد باشد و طول آن بیشتر از ۸ کاراکتر باشد',
registrationNotAllowed: 'حساب پیدا نشد. لطفا برای ثبت نام با مدیر سیستم تماس حاصل فرمایید.',
},
license: {
tip: 'قبل از شروع Dify Community Edition، GitHub را بخوانید',
link: 'مجوز منبع باز',
},
join: 'عضویت',
joinTipStart: 'شما را دعوت می‌کنیم به',
joinTipEnd: 'تیم در Dify',
invalid: 'لینک منقضی شده است',
explore: 'کاوش Dify',
activatedTipStart: 'شما به',
activatedTipEnd: 'تیم پیوسته‌اید',
activated: 'اکنون وارد شوید',
adminInitPassword: 'رمز عبور اولیه مدیر',
validate: 'اعتبارسنجی',
checkCode: {
verify: 'تایید',
verificationCode: 'کد تأیید',
invalidCode: 'کد نامعتبر',
emptyCode: 'کد مورد نیاز است',
didNotReceiveCode: 'کد را دریافت نکردید؟',
verificationCodePlaceholder: 'کد 6 رقمی را وارد کنید',
useAnotherMethod: 'از روش دیگری استفاده کنید',
checkYourEmail: 'ایمیل خود را بررسی کنید',
validTime: 'به خاطر داشته باشید که کد 5 دقیقه اعتبار دارد',
tips: 'کد درستی سنجی را به <strong>{{email}}</strong> ارسال می کنیم',
resend: 'ارسال مجدد',
},
or: 'یا',
back: 'بازگشت',
backToLogin: 'بازگشت به ورود',
changePasswordBtn: 'تنظیم رمز عبور',
continueWithCode: 'با کد ادامه دهید',
withSSO: 'با SSO ادامه دهید',
resetPassword: 'بازنشانی رمز عبور',
usePassword: 'از رمز عبور استفاده کنید',
enterYourName: 'لطفا نام کاربری خود را وارد کنید',
useVerificationCode: 'از کد تأیید استفاده کنید',
sendVerificationCode: 'ارسال کد تأیید',
setYourAccount: 'حساب خود را تنظیم کنید',
noLoginMethod: 'روش احراز هویت پیکربندی نشده است',
noLoginMethodTip: 'لطفا برای افزودن روش احراز هویت با مدیر سیستم تماس بگیرید.',
resetPasswordDesc: 'ایمیلی را که برای ثبت نام در Dify استفاده کرده اید تایپ کنید و ما یک ایمیل بازنشانی رمز عبور برای شما ارسال خواهیم کرد.',
licenseInactive: 'مجوز غیر فعال',
licenseLost: 'مجوز گم شده است',
licenseExpired: 'مجوز منقضی شده است',
licenseExpiredTip: 'مجوز Dify Enterprise برای فضای کاری شما منقضی شده است. لطفا برای ادامه استفاده از Dify با سرپرست خود تماس بگیرید.',
licenseInactiveTip: 'مجوز Dify Enterprise برای فضای کاری شما غیرفعال است. لطفا برای ادامه استفاده از Dify با سرپرست خود تماس بگیرید.',
licenseLostTip: 'اتصال سرور مجوز Dify انجام نشد. لطفا برای ادامه استفاده از Dify با سرپرست خود تماس بگیرید.',
}
export default translation

View File

@@ -0,0 +1,25 @@
const translation = {
tags: {
productivity: 'بهره وری',
news: 'اخبار',
medical: 'پزشکی',
image: 'تصویر',
search: 'جستجو',
other: 'دیگر',
utilities: 'تاسیسات',
design: 'طراحی',
entertainment: 'سرگرمی',
social: 'اجتماعی',
education: 'آموزش',
business: 'تجاری',
finance: 'مالی',
weather: 'هوا',
travel: 'سفر',
videos: 'فیلم',
agent: 'عامل',
},
searchTags: 'جستجو برچسب ها',
allTags: 'همه برچسب ها',
}
export default translation

View File

@@ -0,0 +1,209 @@
const translation = {
category: {
all: 'همه',
models: 'مدل',
bundles: 'بسته',
agents: 'استراتژی های عامل',
tools: 'ابزار',
extensions: 'پسوند',
},
categorySingle: {
tool: 'ابزار',
agent: 'استراتژی نمایندگی',
extension: 'فرمت',
model: 'مدل',
bundle: 'بسته',
},
list: {
source: {
marketplace: 'از Marketplace نصب کنید',
github: 'نصب از GitHub',
local: 'نصب از فایل بسته محلی',
},
notFound: 'هیچ افزونه ای یافت نشد',
noInstalled: 'هیچ افزونه ای نصب نشده است',
},
source: {
github: 'گیت‌هاب',
marketplace: 'بازار',
local: 'فایل بسته محلی',
},
detailPanel: {
categoryTip: {
debugging: 'اشکال زدایی پلاگین',
marketplace: 'نصب شده از Marketplace',
local: 'پلاگین محلی',
github: 'نصب شده از Github',
},
operation: {
checkUpdate: 'به روز رسانی را بررسی کنید',
info: 'اطلاعات پلاگین',
remove: 'حذف',
update: 'روز رسانی',
detail: 'جزئیات',
viewDetail: 'نمایش جزئیات',
install: 'نصب',
},
toolSelector: {
descriptionPlaceholder: 'شرح مختصری از هدف ابزار، به عنوان مثال، دما را برای یک مکان خاص دریافت کنید.',
auto: 'خودکار',
unsupportedContent: 'نسخه افزونه نصب شده این عمل را ارائه نمی دهد.',
paramsTip1: 'پارامترهای استنتاج LLM را کنترل می کند.',
params: 'پیکربندی استدلال',
placeholder: 'یک ابزار را انتخاب کنید...',
paramsTip2: 'وقتی «خودکار» خاموش باشد، از مقدار پیش فرض استفاده می شود.',
descriptionLabel: 'توضیحات ابزار',
title: 'ابزار افزودن',
settings: 'تنظیمات کاربر',
empty: 'برای افزودن ابزارها روی دکمه "+" کلیک کنید. می توانید چندین ابزار اضافه کنید.',
toolLabel: 'ابزار',
uninstalledTitle: 'ابزار نصب نشده است',
uninstalledLink: 'مدیریت در پلاگین ها',
uninstalledContent: 'این افزونه از مخزن local/GitHub نصب شده است. لطفا پس از نصب استفاده کنید.',
unsupportedTitle: 'اکشن پشتیبانی نشده',
unsupportedContent2: 'برای تغییر نسخه کلیک کنید.',
},
endpointDeleteTip: 'حذف نقطه پایانی',
disabled: 'غیر فعال',
strategyNum: '{{عدد}} {{استراتژی}} شامل',
configureApp: 'پیکربندی اپلیکیشن',
endpoints: 'نقاط پایانی',
endpointsDocLink: 'مشاهده سند',
actionNum: '{{عدد}} {{اقدام}} شامل',
endpointDisableContent: 'آیا می خواهید {{name}} را غیرفعال کنید؟',
endpointModalTitle: 'راه اندازی اندپوینت',
endpointsTip: 'این افزونه عملکردهای خاصی را از طریق نقاط پایانی ارائه می دهد و می توانید چندین مجموعه نقطه پایانی را برای فضای کاری فعلی پیکربندی کنید.',
serviceOk: 'خدمات خوب',
modelNum: '{{عدد}} مدل های گنجانده شده است',
endpointDisableTip: 'غیرفعال کردن نقطه پایانی',
configureModel: 'مدل را پیکربندی کنید',
configureTool: 'ابزار پیکربندی',
endpointsEmpty: 'برای افزودن نقطه پایانی روی دکمه "+" کلیک کنید',
endpointModalDesc: 'پس از پیکربندی، می توان از ویژگی های ارائه شده توسط افزونه از طریق نقاط پایانی API استفاده کرد.',
switchVersion: 'نسخه سوئیچ',
endpointDeleteContent: 'آیا می خواهید {{name}} را حذف کنید؟',
},
debugInfo: {
title: 'اشکال زدایی',
viewDocs: 'مشاهده اسناد',
},
privilege: {
everyone: 'همه',
admins: 'مدیران',
whoCanInstall: 'چه کسی می تواند افزونه ها را نصب و مدیریت کند؟',
title: 'تنظیمات پلاگین',
noone: 'هیچ',
whoCanDebug: 'چه کسی می تواند افزونه ها را اشکال زدایی کند؟',
},
pluginInfoModal: {
repository: 'مخزن',
packageName: 'بسته',
title: 'اطلاعات پلاگین',
release: 'انتشار',
},
action: {
pluginInfo: 'اطلاعات پلاگین',
usedInApps: 'این افزونه در برنامه های {{num}} استفاده می شود.',
deleteContentLeft: 'آیا می خواهید',
checkForUpdates: 'بررسی به روزرسانی ها',
delete: 'حذف افزونه',
deleteContentRight: 'افزونه?',
},
installModal: {
labels: {
package: 'بسته',
version: 'نسخهٔ',
repository: 'مخزن',
},
back: 'بازگشت',
next: 'بعدی',
cancel: 'لغو',
uploadingPackage: 'آپلود {{packageName}}...',
fromTrustSource: 'لطفا مطمئن شوید که افزونه ها را فقط از <trustSource>یک منبع قابل اعتماد</trustSource> نصب می کنید.',
readyToInstall: 'در مورد نصب افزونه زیر',
install: 'نصب',
pluginLoadError: 'خطای بارگذاری افزونه',
pluginLoadErrorDesc: 'این افزونه نصب نخواهد شد',
close: 'نزدیک',
installFailed: 'نصب ناموفق بود',
installFailedDesc: 'افزونه نصب شده است ناموفق است.',
installedSuccessfullyDesc: 'این افزونه با موفقیت نصب شد.',
dropPluginToInstall: 'بسته افزونه را برای نصب اینجا رها کنید',
installing: 'نصب...',
readyToInstallPackage: 'در مورد نصب افزونه زیر',
readyToInstallPackages: 'در شرف نصب افزونه های {{num}} زیر',
installedSuccessfully: 'نصب موفقیت آمیز بود',
installPlugin: 'افزونه را نصب کنید',
installComplete: 'نصب کامل شد',
uploadFailed: 'آپلود انجام نشد',
},
installFromGitHub: {
installPlugin: 'افزونه را از GitHub نصب کنید',
selectPackagePlaceholder: 'لطفا یک بسته را انتخاب کنید',
gitHubRepo: 'مخزن GitHub',
updatePlugin: 'افزونه را از GitHub به روز کنید',
uploadFailed: 'آپلود انجام نشد',
installedSuccessfully: 'نصب موفقیت آمیز بود',
installNote: 'لطفا مطمئن شوید که افزونه ها را فقط از یک منبع قابل اعتماد نصب می کنید.',
installFailed: 'نصب ناموفق بود',
selectVersionPlaceholder: 'لطفا یک نسخه را انتخاب کنید',
selectPackage: 'بسته را انتخاب کنید',
selectVersion: 'انتخاب نسخه',
},
upgrade: {
usedInApps: 'استفاده شده در برنامه های {{num}}',
successfulTitle: 'نصب موفقیت آمیز',
close: 'نزدیک',
title: 'افزونه را نصب کنید',
upgrading: 'نصب...',
upgrade: 'نصب',
description: 'در مورد نصب افزونه زیر',
},
error: {
noReleasesFound: 'هیچ نسخه ای یافت نشد. لطفا مخزن GitHub یا URL ورودی را بررسی کنید.',
inValidGitHubUrl: 'URL GitHub نامعتبر است. لطفا یک URL معتبر را در قالب وارد کنید: https://github.com/owner/repo',
fetchReleasesError: 'امکان بازیابی نسخه ها وجود ندارد. لطفا بعدا دوباره امتحان کنید.',
},
marketplace: {
sortOption: {
firstReleased: 'اولین منتشر شد',
recentlyUpdated: 'اخیرا به روز شده است',
mostPopular: 'محبوب ترین',
newlyReleased: 'تازه منتشر شده',
},
and: 'و',
viewMore: 'بیشتر ببینید',
moreFrom: 'اطلاعات بیشتر از Marketplace',
pluginsResult: 'نتایج {{num}}',
noPluginFound: 'هیچ افزونه ای یافت نشد',
sortBy: 'شهر سیاه',
difyMarketplace: 'بازار دیفی',
empower: 'توسعه هوش مصنوعی خود را توانمند کنید',
discover: 'کشف',
},
task: {
installing: 'نصب پلاگین های {{installingLength}}، 0 انجام شد.',
clearAll: 'پاک کردن همه',
installedError: 'افزونه های {{errorLength}} نصب نشدند',
installError: 'پلاگین های {{errorLength}} نصب نشدند، برای مشاهده کلیک کنید',
installingWithSuccess: 'نصب پلاگین های {{installingLength}}، {{successLength}} موفقیت آمیز است.',
installingWithError: 'نصب پلاگین های {{installingLength}}، {{successLength}} با موفقیت مواجه شد، {{errorLength}} ناموفق بود',
},
searchTools: 'ابزارهای جستجو...',
findMoreInMarketplace: 'اطلاعات بیشتر در Marketplace',
searchInMarketplace: 'جستجو در Marketplace',
submitPlugin: 'ارسال افزونه',
searchCategories: 'دسته بندی ها را جستجو کنید',
fromMarketplace: 'از بازار',
installPlugin: 'افزونه را نصب کنید',
from: 'از',
install: '{{num}} نصب می شود',
endpointsEnabled: '{{num}} مجموعه نقاط پایانی فعال شده است',
searchPlugins: 'جستجوی افزونه ها',
installFrom: 'نصب از',
installAction: 'نصب',
allCategories: 'همه دسته بندی ها',
search: 'جستجو',
}
export default translation

View File

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

View File

@@ -0,0 +1,31 @@
const translation = {
input: 'ورودی',
result: 'نتیجه',
detail: 'جزئیات',
tracing: 'ردیابی',
resultPanel: {
status: 'وضعیت',
time: 'زمان گذشته',
tokens: 'کل توکن‌ها',
},
meta: {
title: 'فراداده',
status: 'وضعیت',
version: 'نسخه',
executor: 'اجراکننده',
startTime: 'زمان شروع',
time: 'زمان گذشته',
tokens: 'کل توکن‌ها',
steps: 'گام‌های اجرا',
},
resultEmpty: {
title: 'این اجرا فقط خروجی به فرمت JSON دارد،',
tipLeft: 'لطفاً به ',
link: 'پنل جزئیات',
tipRight: ' بروید و آن را مشاهده کنید.',
},
actionLogs: 'گزارش های اکشن',
circularInvocationTip: 'فراخوانی دایره ای ابزارها/گره ها در گردش کار فعلی وجود دارد.',
}
export default translation

View File

@@ -0,0 +1,70 @@
const translation = {
common: {
welcome: '',
appUnavailable: 'اپ در دسترس نیست',
appUnknownError: 'اپ در دسترس نیست',
},
chat: {
newChat: 'چت جدید',
pinnedTitle: 'پین شده',
unpinnedTitle: 'چت‌ها',
newChatDefaultName: 'مکالمه جدید',
resetChat: 'بازنشانی مکالمه',
poweredBy: 'قدرت‌گرفته از',
prompt: 'پیشنهاد',
privatePromptConfigTitle: 'تنظیمات مکالمه',
publicPromptConfigTitle: 'پیشنهاد اولیه',
configStatusDes: 'قبل از شروع، می‌توانید تنظیمات مکالمه را تغییر دهید',
configDisabled: 'تنظیمات جلسه قبلی برای این جلسه استفاده شده است.',
startChat: 'شروع چت',
privacyPolicyLeft: 'لطفاً ',
privacyPolicyMiddle: 'سیاست حریم خصوصی',
privacyPolicyRight: ' ارائه شده توسط توسعه‌دهنده اپ را بخوانید.',
deleteConversation: {
title: 'حذف مکالمه',
content: 'آیا مطمئن هستید که می‌خواهید این مکالمه را حذف کنید؟',
},
tryToSolve: 'سعی کنید حل کنید',
temporarySystemIssue: 'ببخشید، مشکل موقت سیستمی.',
},
generation: {
tabs: {
create: 'یک‌بار اجرا کن',
batch: 'اجرا به صورت گروهی',
saved: 'ذخیره شده',
},
savedNoData: {
title: 'شما هنوز نتیجه‌ای ذخیره نکرده‌اید!',
description: 'شروع به تولید محتوا کنید و نتایج ذخیره شده خود را اینجا پیدا کنید.',
startCreateContent: 'شروع به تولید محتوا',
},
title: 'تکمیل هوش مصنوعی',
queryTitle: 'محتوای درخواست',
completionResult: 'نتیجه تکمیل',
queryPlaceholder: 'محتوای درخواست خود را بنویسید...',
run: 'اجرا',
copy: 'کپی',
resultTitle: 'تکمیل هوش مصنوعی',
noData: 'هوش مصنوعی آنچه را که می‌خواهید اینجا به شما می‌دهد.',
csvUploadTitle: 'فایل CSV خود را اینجا بکشید و رها کنید، یا ',
browse: 'جستجو',
csvStructureTitle: 'فایل CSV باید با ساختار زیر مطابقت داشته باشد:',
downloadTemplate: 'الگو را اینجا دانلود کنید',
field: 'فیلد',
batchFailed: {
info: '{{num}} اجرای ناموفق',
retry: 'تلاش مجدد',
outputPlaceholder: 'محتوای خروجی وجود ندارد',
},
errorMsg: {
empty: 'لطفاً محتوا را در فایل بارگذاری شده وارد کنید.',
fileStructNotMatch: 'فایل CSV بارگذاری شده با ساختار مطابقت ندارد.',
emptyLine: 'ردیف {{rowIndex}} خالی است',
invalidLine: 'ردیف {{rowIndex}}: مقدار {{varName}} نمی‌تواند خالی باشد',
moreThanMaxLengthLine: 'ردیف {{rowIndex}}: مقدار {{varName}} نمی‌تواند بیشتر از {{maxLength}} کاراکتر باشد',
atLeastOne: 'لطفاً حداقل یک ردیف در فایل بارگذاری شده وارد کنید.',
},
},
}
export default translation

Some files were not shown because too many files have changed in this diff Show More