Feat/i18n workflow (#4819)

This commit is contained in:
crazywoola
2024-05-30 21:03:32 +08:00
committed by GitHub
parent 38a470a873
commit 3de8e8fd6a
9 changed files with 1517 additions and 1062 deletions

View File

@@ -1,58 +1,58 @@
const translation = {
common: {
editing: 'Bearbeiten',
editing: 'Bearbeitung',
autoSaved: 'Automatisch gespeichert',
unpublished: 'Nicht veröffentlicht',
unpublished: 'Unveröffentlicht',
published: 'Veröffentlicht',
publish: 'Veröffentlichen',
update: 'Aktualisieren',
run: 'Starten',
running: 'Läuft',
inRunMode: 'Im Start-Modus',
inPreview: 'In Vorschau',
inPreviewMode: 'Im Vorschau-Modus',
run: 'Ausführen',
running: 'Wird ausgeführt',
inRunMode: 'Im Ausführungsmodus',
inPreview: 'In der Vorschau',
inPreviewMode: 'Im Vorschaumodus',
preview: 'Vorschau',
viewRunHistory: 'Verlauf ansehen',
runHistory: 'Verlauf',
goBackToEdit: 'Zurück zum Bearbeiten',
viewRunHistory: 'Ausführungsverlauf anzeigen',
runHistory: 'Ausführungsverlauf',
goBackToEdit: 'Zurück zum Editor',
conversationLog: 'Konversationsprotokoll',
features: 'Funktionen',
debugAndPreview: 'Debuggen und Vorschau',
restart: 'Neustarten',
currentDraft: 'Aktueller Entwurf',
currentDraftUnpublished: 'Aktueller Entwurf nicht veröffentlicht',
currentDraftUnpublished: 'Aktueller Entwurf unveröffentlicht',
latestPublished: 'Zuletzt veröffentlicht',
publishedAt: 'Veröffentlicht am',
restore: 'Wiederherstellen',
runApp: 'App starten',
batchRunApp: 'Batch-App starten',
runApp: 'App ausführen',
batchRunApp: 'App im Batch-Modus ausführen',
accessAPIReference: 'API-Referenz aufrufen',
embedIntoSite: 'In Website einbetten',
embedIntoSite: 'In die Webseite einbetten',
addTitle: 'Titel hinzufügen...',
addDescription: 'Beschreibung hinzufügen...',
noVar: 'Keine Variable',
searchVar: 'Variable suchen',
variableNamePlaceholder: 'Variablenname',
setVarValuePlaceholder: 'Variable festlegen',
setVarValuePlaceholder: 'Variable setzen',
needConnecttip: 'Dieser Schritt ist mit nichts verbunden',
maxTreeDepth: 'Maximale Grenze von {{depth}} Knoten pro Zweig',
maxTreeDepth: 'Maximales Limit von {{depth}} Knoten pro Ast',
needEndNode: 'Der Endblock muss hinzugefügt werden',
needAnswerNode: 'Der Antwortblock muss hinzugefügt werden',
workflowProcess: 'Workflow-Prozess',
notRunning: 'Läuft noch nicht',
previewPlaceholder: 'Geben Sie unten Inhalte ein, um das Debugging des Chatbots zu starten',
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, um schnell einzufügen',
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 Ansicht',
viewOnly: 'Nur anzeigen',
showRunHistory: 'Ausführungsverlauf anzeigen',
enableJinja: 'Jinja-Template-Unterstützung aktivieren',
enableJinja: 'Jinja-Vorlagenunterstützung aktivieren',
learnMore: 'Mehr erfahren',
copy: 'Kopieren',
duplicate: 'Duplizieren',
@@ -60,35 +60,48 @@ const translation = {
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',
},
errorMsg: {
fieldRequired: '{{field}} wird benötigt',
authRequired: 'Autorisierung erforderlich',
invalidJson: '{{field}} ist ungültiges JSON',
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: 'Rerank-Modell',
rerankModel: 'Neusortierungsmodell',
},
invalidVariable: 'Ungültige Variable',
},
singleRun: {
testRun: 'Testlauf',
testRun: 'Testlauf ',
startRun: 'Lauf starten',
running: 'Läuft',
running: 'Wird ausgeführt',
testRunIteration: 'Testlaufiteration',
back: 'Zurück',
iteration: 'Iteration',
},
tabs: {
'searchBlock': 'Suchblock',
'searchBlock': 'Block suchen',
'blocks': 'Blöcke',
'builtInTool': 'Integriertes Werkzeug',
'customTool': 'Benutzerdefiniertes Werkzeug',
'question-understand': 'Fragenverständnis',
'tools': 'Werkzeuge',
'allTool': 'Alle',
'builtInTool': 'Eingebaut',
'customTool': 'Benutzerdefiniert',
'workflowTool': 'Arbeitsablauf',
'question-understand': 'Fragen verstehen',
'logic': 'Logik',
'transform': 'Transformieren',
'utilities': 'Dienstprogramme',
'noResult': 'Keine Übereinstimmung gefunden',
'noResult': 'Kein Ergebnis gefunden',
},
blocks: {
'start': 'Start',
@@ -97,45 +110,52 @@ const translation = {
'llm': 'LLM',
'knowledge-retrieval': 'Wissensabruf',
'question-classifier': 'Fragenklassifizierer',
'if-else': 'IF/ELSE',
'if-else': 'WENN/SONST',
'code': 'Code',
'template-transform': 'Vorlage',
'http-request': 'HTTP-Anfrage',
'variable-assigner': 'Variablenzuweiser',
'variable-assigner': 'Variablen-Zuweiser',
'variable-aggregator': 'Variablen-Aggregator',
'iteration-start': 'Iterationsstart',
'iteration': 'Iteration',
'parameter-extractor': 'Parameter-Extraktor',
},
blocksAbout: {
'start': 'Definieren der Startparameter zum Starten eines Workflows',
'end': 'Definieren des Endes und des Ergebnistyps eines Workflows',
'answer': 'Definieren des Antwortinhalts eines Chat-Gesprächs',
'llm': 'Aufrufen von großen Sprachmodellen, um Fragen zu beantworten oder natürliche Sprache zu verarbeiten',
'knowledge-retrieval': 'Ermöglicht das Abfragen von Textinhalten in Bezug auf Benutzerfragen aus dem Wissen',
'question-classifier': 'Definieren der Klassifizierungsbedingungen von Benutzerfragen, LLM kann basierend auf der Klassifizierungsbeschreibung festlegen, wie das Gespräch fortschreitet',
'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': 'Ausführen eines Stücks Python- oder NodeJS-Code, um benutzerdefinierte Logik zu implementieren',
'template-transform': 'Daten mithilfe der Jinja-Vorlagensyntax in einen String konvertieren',
'http-request': 'Ermöglicht das Senden von Serveranfragen über das HTTP-Protokoll',
'variable-assigner': 'Variablen in verschiedenen Zweigen derselben Variable zuweisen, um eine einheitliche Konfiguration von Nachknoten zu erreichen',
'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.',
'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.',
},
operator: {
zoomIn: 'Vergrößern',
zoomOut: 'Verkleinern',
zoomTo50: 'Auf 50% zoomen',
zoomTo100: 'Auf 100% zoomen',
zoomToFit: 'An Fenstergröße anpassen',
zoomTo50: 'Auf 50% vergrößern',
zoomTo100: 'Auf 100% vergrößern',
zoomToFit: 'An Bildschirm anpassen',
},
panel: {
userInputField: 'Benutzereingabefeld',
changeBlock: 'Block ändern',
helpLink: 'Hilfe-Link',
helpLink: 'Hilfelink',
about: 'Über',
createdBy: 'Erstellt von',
createdBy: 'Erstellt von ',
nextStep: 'Nächster Schritt',
addNextStep: 'Fügen Sie den nächsten Block in diesem Workflow hinzu',
selectNextStep: 'Nächsten Block wählen',
selectNextStep: 'Nächsten Block auswählen',
runThisStep: 'Diesen Schritt ausführen',
checklist: 'Checkliste',
checklistTip: 'Stellen Sie sicher, dass alle Probleme gelöst sind, bevor Sie veröffentlichen',
checklistResolved: 'Alle Probleme gelöst',
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',
},
@@ -145,11 +165,11 @@ const translation = {
insertVarTip: 'Variable einfügen',
memory: {
memory: 'Speicher',
memoryTip: 'Chat-Speichereinstellungen',
memoryTip: 'Einstellungen des Chat-Speichers',
windowSize: 'Fenstergröße',
conversationRoleName: 'Gesprächsrollenname',
user: 'Benutzerprefix',
assistant: 'Assistentenprefix',
conversationRoleName: 'Rollenname in der Konversation',
user: 'Benutzer-Präfix',
assistant: 'Assistenten-Präfix',
},
memories: {
title: 'Erinnerungen',
@@ -164,7 +184,7 @@ const translation = {
outputVars: {
query: 'Benutzereingabe',
memories: {
des: 'Gesprächsverlauf',
des: 'Konversationsverlauf',
type: 'Nachrichtentyp',
content: 'Nachrichteninhalt',
},
@@ -193,11 +213,11 @@ const translation = {
variables: 'Variablen',
context: 'Kontext',
contextTooltip: 'Sie können Wissen als Kontext importieren',
notSetContextInPromptTip: 'Um die Kontextfunktion zu aktivieren, füllen Sie bitte die Kontextvariable in PROMPT aus.',
prompt: 'Aufforderung',
notSetContextInPromptTip: 'Um die Kontextfunktion zu aktivieren, füllen Sie die Kontextvariable im PROMPT aus.',
prompt: 'Prompt',
roleDescription: {
system: 'Geben Sie hochrangige Anweisungen für das Gespräch',
user: 'Stellen Sie Anweisungen, Anfragen oder jegliche textbasierte Eingabe für das Modell bereit',
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',
@@ -209,13 +229,13 @@ const translation = {
low: 'Niedrig',
},
outputVars: {
output: 'Inhalt generieren',
usage: 'Modellnutzungsinformation',
output: 'Generierter Inhalt',
usage: 'Nutzungsinformationen des Modells',
},
singleRun: {
variable: 'Variable',
},
sysQueryInUser: 'sys.query in der Benutzeranfrage ist erforderlich',
sysQueryInUser: 'sys.query in Benutzernachricht erforderlich',
},
knowledgeRetrieval: {
queryVariable: 'Abfragevariable',
@@ -232,19 +252,19 @@ const translation = {
http: {
inputVars: 'Eingabevariablen',
api: 'API',
apiPlaceholder: 'Geben Sie die URL ein, tippen Sie /, um eine Variable einzufügen',
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: 'Massenbearbeitung',
keyValueEdit: 'Schlüssel-Wert-Bearbeitung',
headers: 'Kopfzeilen',
bulkEdit: 'Massenerfassung',
keyValueEdit: 'Schlüssel-Wert-Erfassung',
headers: 'Header',
params: 'Parameter',
body: 'Körper',
body: 'Body',
outputVars: {
body: 'Antwortinhalt',
statusCode: 'Antwortstatuscode',
headers: 'Antwortkopfzeilenliste JSON',
headers: 'Antwort-Header-Liste im JSON-Format',
files: 'Dateiliste',
},
authorization: {
@@ -252,29 +272,29 @@ const translation = {
'authorizationType': 'Autorisierungstyp',
'no-auth': 'Keine',
'api-key': 'API-Schlüssel',
'auth-type': 'Authentifizierungstyp',
'basic': 'Basic',
'auth-type': 'Autorisierungstyp',
'basic': 'Basis',
'bearer': 'Bearer',
'custom': 'Benutzerdefiniert',
'api-key-title': 'API-Schlüssel',
'header': 'Kopfzeile',
'header': 'Header',
},
insertVarPlaceholder: 'Tippen Sie /, um eine Variable einzufügen',
insertVarPlaceholder: 'tippen Sie /, um Variable einzufügen',
timeout: {
title: 'Zeitüberschreitung',
connectLabel: 'Verbindungszeitüberschreitung',
connectPlaceholder: 'Geben Sie die Verbindungszeitüberschreitung in Sekunden ein',
readLabel: 'Lesezeitüberschreitung',
readPlaceholder: 'Geben Sie die Lesezeitüberschreitung in Sekunden ein',
writeLabel: 'Schreibzeitüberschreitung',
writePlaceholder: 'Geben Sie die Schreibzeitüberschreitung in Sekunden ein',
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',
},
},
code: {
inputVars: 'Eingabevariablen',
outputVars: 'Ausgabevariablen',
advancedDependencies: 'Erweiterte Abhängigkeiten',
advancedDependenciesTip: 'Fügen Sie einige vorab geladene Abhängigkeiten hinzu, die mehr Zeit benötigen oder hier nicht standardmäßig integriert sind',
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: {
@@ -288,11 +308,11 @@ const translation = {
ifElse: {
if: 'Wenn',
else: 'Sonst',
elseDescription: 'Wird verwendet, um die Logik zu definieren, die ausgeführt werden soll, wenn die Wenn-Bedingung nicht erfüllt ist.',
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 zuerst Variable festlegen',
notSetVariable: 'Bitte setzen Sie zuerst die Variable',
comparisonOperator: {
'contains': 'enthält',
'not contains': 'enthält nicht',
@@ -312,28 +332,31 @@ const translation = {
variableAssigner: {
title: 'Variablen zuweisen',
outputType: 'Ausgabetyp',
outputVarType: 'Ausgabevariablentyp',
varNotSet: 'Variable nicht gesetzt',
noVarTip: 'Fügen Sie die zuzuweisenden Variablen hinzu',
type: {
string: 'Zeichenkette',
number: 'Zahl',
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: {
output: 'Zugewiesener Variablenwert',
varDescribe: 'Ausgabe {{groupName}}',
},
setAssignVariable: 'Zuweisungsvariable festlegen',
},
tool: {
toAuthorize: 'Zur Autorisierung',
toAuthorize: 'Autorisieren',
inputVars: 'Eingabevariablen',
outputVars: {
text: 'vom Werkzeug generierter Inhalt',
text: 'durch das Tool generierter Inhalt',
files: {
title: 'vom Werkzeug generierte Dateien',
type: 'Unterstützter Typ. Aktuell nur Bild unterstützt',
transfer_method: 'Übertragungsmethode. Wert ist remote_url oder local_file',
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',
},
@@ -343,20 +366,54 @@ const translation = {
model: 'Modell',
inputVars: 'Eingabevariablen',
outputVars: {
className: 'Klassenname',
className: 'Klassennamen',
},
class: 'Klasse',
classNamePlaceholder: 'Schreiben Sie Ihren Klassennamen',
classNamePlaceholder: 'Geben Sie Ihren Klassennamen ein',
advancedSetting: 'Erweiterte Einstellung',
topicName: 'Themenname',
topicPlaceholder: 'Schreiben Sie Ihren Themenname',
topicPlaceholder: 'Geben Sie Ihren Themennamen ein',
addClass: 'Klasse hinzufügen',
instruction: 'Anweisung',
instructionPlaceholder: 'Schreiben Sie Ihre 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',
},
},
tracing: {
stopBy: 'Angehalten von {{user}}',
stopBy: 'Gestoppt von {{user}}',
},
}