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,7 +1,7 @@
const translation = {
common: {
editing: 'Editando',
autoSaved: 'Auto-salvo',
autoSaved: 'Salvo automaticamente',
unpublished: 'Não publicado',
published: 'Publicado',
publish: 'Publicar',
@@ -9,15 +9,15 @@ const translation = {
run: 'Executar',
running: 'Executando',
inRunMode: 'No modo de execução',
inPreview: 'Na prévia',
inPreviewMode: 'No modo de prévia',
preview: 'Prévia',
inPreview: 'Em visualização',
inPreviewMode: 'No modo de visualização',
preview: 'Visualizar',
viewRunHistory: 'Ver histórico de execução',
runHistory: 'Histórico de execução',
goBackToEdit: 'Voltar para a edição',
goBackToEdit: 'Voltar para o editor',
conversationLog: 'Registro de conversa',
features: 'Recursos',
debugAndPreview: 'Depurar e pré-visualizar',
debugAndPreview: 'Depurar e visualizar',
restart: 'Reiniciar',
currentDraft: 'Rascunho atual',
currentDraftUnpublished: 'Rascunho atual não publicado',
@@ -27,50 +27,57 @@ const translation = {
runApp: 'Executar aplicativo',
batchRunApp: 'Executar aplicativo em lote',
accessAPIReference: 'Acessar referência da API',
embedIntoSite: 'Incorporar no site',
embedIntoSite: 'Incorporar ao site',
addTitle: 'Adicionar título...',
addDescription: 'Adicionar descrição...',
noVar: 'Sem variável',
searchVar: 'Buscar variável',
variableNamePlaceholder: 'Nome da variável',
setVarValuePlaceholder: 'Definir variável',
needConnecttip: 'Esta etapa não está conectada a nada',
maxTreeDepth: 'Limite máximo de {{depth}} nós por ramificação',
setVarValuePlaceholder: 'Definir valor da variável',
needConnecttip: 'Este passo não está conectado a nada',
maxTreeDepth: 'Limite máximo de {{depth}} nós por ramo',
needEndNode: 'O bloco de fim deve ser adicionado',
needAnswerNode: 'O bloco de resposta deve ser adicionado',
workflowProcess: 'Processo de fluxo de trabalho',
notRunning: 'Ainda não em execução',
previewPlaceholder: 'Digite o conteúdo na caixa abaixo para iniciar a depuração do Chatbot',
notRunning: 'Ainda não está em execução',
previewPlaceholder: 'Digite o conteúdo na caixa abaixo para começar a depurar o Chatbot',
effectVarConfirm: {
title: 'Remover variável',
content: 'A variável está sendo usada em outros nós. Deseja removê-la mesmo assim?',
content: 'A variável é usada em outros nós. Você ainda deseja removê-la?',
},
insertVarTip: 'Pressione a tecla \'/\' para inserir rapidamente',
processData: 'Processar dados',
input: 'Entrada',
output: 'Saída',
jinjaEditorPlaceholder: 'Digite \'/\' ou \'{\' para inserir variável',
viewOnly: 'Apenas Visualização',
showRunHistory: 'Mostrar Histórico de Execuções',
enableJinja: 'Ativar suporte a templates Jinja',
learnMore: 'Saiba Mais',
viewOnly: 'Apenas visualização',
showRunHistory: 'Mostrar histórico de execução',
enableJinja: 'Ativar suporte ao template Jinja',
learnMore: 'Saiba mais',
copy: 'Copiar',
duplicate: 'Duplicar',
addBlock: 'Adicionar Bloco',
pasteHere: 'Colar Aqui',
pointerMode: 'Modo Ponteiro',
handMode: 'Modo Manual',
addBlock: 'Adicionar bloco',
pasteHere: 'Colar aqui',
pointerMode: 'Modo ponteiro',
handMode: 'Modo mão',
model: 'Modelo',
workflowAsTool: 'Fluxo de trabalho como ferramenta',
configureRequired: 'Configuração necessária',
configure: 'Configurar',
manageInTools: 'Gerenciar nas ferramentas',
workflowAsToolTip: 'É necessária a reconfiguração da ferramenta após a atualização do fluxo de trabalho.',
viewDetailInTracingPanel: 'Ver detalhes',
},
errorMsg: {
fieldRequired: '{{field}} é obrigatório',
authRequired: 'Autorização é necessária',
invalidJson: '{{field}} é JSON inválido',
invalidJson: '{{field}} é um JSON inválido',
fields: {
variable: 'Nome da Variável',
variableValue: 'Valor da Variável',
variable: 'Nome da variável',
variableValue: 'Valor da variável',
code: 'Código',
model: 'Modelo',
rerankModel: 'Modelo de Re-ordenação',
rerankModel: 'Modelo de reordenação',
},
invalidVariable: 'Variável inválida',
},
@@ -78,50 +85,63 @@ const translation = {
testRun: 'Execução de teste ',
startRun: 'Iniciar execução',
running: 'Executando',
testRunIteration: 'Iteração de execução de teste',
back: 'Voltar',
iteration: 'Iteração',
},
tabs: {
'searchBlock': 'Buscar bloco',
'blocks': 'Blocos',
'builtInTool': 'Ferramenta incorporada',
'customTool': 'Ferramenta personalizada',
'question-understand': 'Entendimento da pergunta',
'tools': 'Ferramentas',
'allTool': 'Todos',
'builtInTool': 'Integrado',
'customTool': 'Personalizado',
'workflowTool': 'Fluxo de trabalho',
'question-understand': 'Compreensão de perguntas',
'logic': 'Lógica',
'transform': 'Transformar',
'utilities': 'Utilitários',
'noResult': 'Nenhum resultado encontrado',
},
blocks: {
'start': 'Início',
'start': 'Iniciar',
'end': 'Fim',
'answer': 'Resposta',
'llm': 'LLM',
'knowledge-retrieval': 'Recuperação de conhecimento',
'question-classifier': 'Classificador de perguntas',
'if-else': 'Se/Senão',
'if-else': 'SE/SENÃO',
'code': 'Código',
'template-transform': 'Modelo',
'http-request': 'Requisição HTTP',
'variable-assigner': 'Atribuidor de variáveis',
'variable-aggregator': 'Agregador de variáveis',
'iteration-start': 'Início de iteração',
'iteration': 'Iteração',
'parameter-extractor': 'Extrator de parâmetros',
},
blocksAbout: {
'start': 'Defina os parâmetros iniciais para iniciar um fluxo de trabalho',
'end': 'Defina o final e o tipo de resultado de um fluxo de trabalho',
'answer': 'Defina o conteúdo da resposta de uma conversa no chat',
'start': 'Definir os parâmetros iniciais para iniciar um fluxo de trabalho',
'end': 'Definir o fim e o tipo de resultado de um fluxo de trabalho',
'answer': 'Definir o conteúdo da resposta de uma conversa',
'llm': 'Invocar grandes modelos de linguagem para responder perguntas ou processar linguagem natural',
'knowledge-retrieval': 'Permite consultar conteúdo de texto relacionado a perguntas de usuário do conhecimento',
'question-classifier': 'Define as condições de classificação de perguntas do usuário, LLM pode definir como a conversa progride com base na descrição da classificação',
'if-else': 'Permite dividir o fluxo de trabalho em dois ramos com base em condições if/else',
'code': 'Execute um trecho de código Python ou NodeJS para implementar lógica personalizada',
'template-transform': 'Converta dados em string usando a sintaxe do modelo Jinja',
'http-request': 'Permite enviar solicitações de servidor sobre o protocolo HTTP',
'variable-assigner': 'Atribua variáveis em diferentes ramos à mesma variável para alcançar uma configuração unificada de pós-nós',
'knowledge-retrieval': 'Permite consultar conteúdo de texto relacionado a perguntas do usuário a partir da base de conhecimento',
'question-classifier': 'Definir as condições de classificação das perguntas dos usuários, LLM pode definir como a conversa progride com base na descrição da classificação',
'if-else': 'Permite dividir o fluxo de trabalho em dois ramos com base nas condições if/else',
'code': 'Executar um pedaço de código Python ou NodeJS para implementar lógica personalizada',
'template-transform': 'Converter dados em string usando a sintaxe de template Jinja',
'http-request': 'Permitir que solicitações de servidor sejam enviadas pelo protocolo HTTP',
'variable-assigner': 'Agregue variáveis de vários ramos em uma única variável para configuração unificada dos nós finais.',
'variable-aggregator': 'Agregue variáveis de vários ramos em uma única variável para configuração unificada dos nós finais.',
'iteration': 'Execute múltiplos passos em um objeto lista até que todos os resultados sejam produzidos.',
'parameter-extractor': 'Use LLM para extrair parâmetros estruturados da linguagem natural para invocações de ferramentas ou requisições HTTP.',
},
operator: {
zoomIn: 'Aumentar zoom',
zoomOut: 'Diminuir zoom',
zoomTo50: 'Zoom para 50%',
zoomTo100: 'Zoom para 100%',
zoomToFit: 'Zoom para ajustar',
zoomIn: 'Aproximar',
zoomOut: 'Afastar',
zoomTo50: 'Aproximar para 50%',
zoomTo100: 'Aproximar para 100%',
zoomToFit: 'Aproximar para ajustar',
},
panel: {
userInputField: 'Campo de entrada do usuário',
@@ -134,18 +154,18 @@ const translation = {
selectNextStep: 'Selecionar próximo bloco',
runThisStep: 'Executar este passo',
checklist: 'Lista de verificação',
checklistTip: 'Certifique-se de resolver todos os problemas antes de publicar',
checklistResolved: 'Todos os problemas estão resolvidos',
checklistTip: 'Certifique-se de que todos os problemas foram resolvidos antes de publicar',
checklistResolved: 'Todos os problemas foram resolvidos',
organizeBlocks: 'Organizar blocos',
change: 'Mudar',
},
nodes: {
common: {
outputVars: 'Variáveis de saída',
insertVarTip: 'Pressione a tecla \'/\' para inserir',
insertVarTip: 'Inserir variável',
memory: {
memory: 'Memória',
memoryTip: 'Configurações de memória do chat',
memoryTip: 'Configurações de memória de conversa',
windowSize: 'Tamanho da janela',
conversationRoleName: 'Nome do papel na conversa',
user: 'Prefixo do usuário',
@@ -153,30 +173,30 @@ const translation = {
},
memories: {
title: 'Memórias',
tip: 'Memória do chat',
builtIn: 'Incorporada',
tip: 'Memória de conversa',
builtIn: 'Integrado',
},
},
start: {
required: 'obrigatório',
required: 'requerido',
inputField: 'Campo de entrada',
builtInVar: 'Variáveis incorporadas',
builtInVar: 'Variáveis integradas',
outputVars: {
query: 'Entrada do usuário',
memories: {
des: 'Histórico da conversa',
type: 'Tipo de mensagem',
content: 'Conteúdo da mensagem',
type: 'tipo de mensagem',
content: 'conteúdo da mensagem',
},
files: 'Lista de arquivos',
},
noVarTip: 'Defina as entradas que podem ser usadas no fluxo de trabalho',
noVarTip: 'Defina as entradas que podem ser usadas no Fluxo de Trabalho',
},
end: {
outputs: 'Saídas',
output: {
type: 'Tipo de saída',
variable: 'Variável de saída',
type: 'tipo de saída',
variable: 'variável de saída',
},
type: {
'none': 'Nenhum',
@@ -192,13 +212,13 @@ const translation = {
model: 'modelo',
variables: 'variáveis',
context: 'contexto',
contextTooltip: 'Você pode importar conhecimento como contexto',
notSetContextInPromptTip: 'Para habilitar o recurso de contexto, preencha a variável de contexto em PROMPT.',
contextTooltip: 'Você pode importar Conhecimento como contexto',
notSetContextInPromptTip: 'Para ativar o recurso de contexto, preencha a variável de contexto no PROMPT.',
prompt: 'prompt',
roleDescription: {
system: 'Dar instruções de alto nível para a conversa',
user: 'Fornecer instruções, consultas ou qualquer entrada baseada em texto para o modelo',
assistant: 'Respostas do modelo com base nas mensagens do usuário',
assistant: 'As respostas do modelo baseadas nas mensagens do usuário',
},
addMessage: 'Adicionar mensagem',
vision: 'visão',
@@ -209,73 +229,73 @@ const translation = {
low: 'Baixa',
},
outputVars: {
output: 'Gerar conteúdo',
output: 'Conteúdo gerado',
usage: 'Informações de uso do modelo',
},
singleRun: {
variable: 'Variável',
},
sysQueryInUser: 'sys.query em user é inválido',
sysQueryInUser: 'sys.query na mensagem do usuário é necessário',
},
knowledgeRetrieval: {
queryVariable: 'Variável de consulta',
knowledge: 'Conhecimento',
outputVars: {
output: 'Dados segmentados de recuperação',
output: 'Dados segmentados recuperados',
content: 'Conteúdo segmentado',
title: 'Título segmentado',
icon: 'Ícone segmentado',
url: 'URL segmentada',
url: 'URL segmentado',
metadata: 'Outros metadados',
},
},
http: {
inputVars: 'Variáveis de entrada',
api: 'API',
apiPlaceholder: 'Insira o URL, digite \'/\' para inserir a variável',
notStartWithHttp: 'A API deve começar com http:// ou https://',
apiPlaceholder: 'Digite a URL, digite / para inserir variável',
notStartWithHttp: 'API deve começar com http:// ou https://',
key: 'Chave',
value: 'Valor',
bulkEdit: 'Editar em massa',
keyValueEdit: 'Edição de chave-valor',
bulkEdit: 'Edição em massa',
keyValueEdit: 'Edição chave-valor',
headers: 'Cabeçalhos',
params: 'Parâmetros',
body: 'Corpo',
outputVars: {
body: 'Conteúdo da resposta',
statusCode: 'Código de status da resposta',
headers: 'Lista de cabeçalhos de resposta JSON',
headers: 'Lista de cabeçalhos da resposta em JSON',
files: 'Lista de arquivos',
},
authorization: {
'authorization': 'Autorização',
'authorizationType': 'Tipo de autorização',
'no-auth': 'Nenhum',
'api-key': 'Chave da API',
'auth-type': 'Tipo de autenticação',
'no-auth': 'Nenhuma',
'api-key': 'Chave API',
'auth-type': 'Tipo de autorização',
'basic': 'Básica',
'bearer': 'Bearer',
'custom': 'Personalizada',
'api-key-title': 'Chave da API',
'api-key-title': 'Chave API',
'header': 'Cabeçalho',
},
insertVarPlaceholder: 'digite \'/\' para inserir variável',
timeout: {
title: 'Tempo esgotado',
connectLabel: 'Tempo de conexão',
connectPlaceholder: 'Insira o tempo de conexão em segundos',
readLabel: 'Tempo de leitura',
readPlaceholder: 'Insira o tempo de leitura em segundos',
writeLabel: 'Tempo de escrita',
writePlaceholder: 'Insira o tempo de escrita em segundos',
title: 'Timeout',
connectLabel: 'Timeout de conexão',
connectPlaceholder: 'Digite o timeout de conexão em segundos',
readLabel: 'Timeout de leitura',
readPlaceholder: 'Digite o timeout de leitura em segundos',
writeLabel: 'Timeout de escrita',
writePlaceholder: 'Digite o timeout de escrita em segundos',
},
},
code: {
inputVars: 'Variáveis de entrada',
outputVars: 'Variáveis de saída',
advancedDependencies: 'Dependências Avançadas',
advancedDependenciesTip: 'Adicione algumas dependências pré-carregadas que demoram mais para serem consumidas ou que não são padrão aqui',
searchDependencies: 'Pesquisar Dependências',
advancedDependencies: 'Dependências avançadas',
advancedDependenciesTip: 'Adicione algumas dependências pré-carregadas que levam mais tempo para consumir ou não são padrão aqui',
searchDependencies: 'Buscar dependências',
},
templateTransform: {
inputVars: 'Variáveis de entrada',
@@ -300,9 +320,9 @@ const translation = {
'end with': 'termina com',
'is': 'é',
'is not': 'não é',
'empty': 'vazio',
'empty': 'está vazio',
'not empty': 'não está vazio',
'null': 'nulo',
'null': 'é nulo',
'not null': 'não é nulo',
},
enterValue: 'Digite o valor',
@@ -312,7 +332,6 @@ const translation = {
variableAssigner: {
title: 'Atribuir variáveis',
outputType: 'Tipo de saída',
outputVarType: 'Tipo de variável de saída',
varNotSet: 'Variável não definida',
noVarTip: 'Adicione as variáveis a serem atribuídas',
type: {
@@ -321,21 +340,25 @@ const translation = {
object: 'Objeto',
array: 'Array',
},
aggregationGroup: 'Grupo de agregação',
aggregationGroupTip: 'Habilitar este recurso permite que o agregador de variáveis agregue múltiplos conjuntos de variáveis.',
addGroup: 'Adicionar grupo',
outputVars: {
output: 'Valor da variável atribuída',
varDescribe: 'Saída de {{groupName}}',
},
setAssignVariable: 'Definir variável atribuída',
},
tool: {
toAuthorize: 'Para autorizar',
toAuthorize: 'Autorizar',
inputVars: 'Variáveis de entrada',
outputVars: {
text: 'conteúdo gerado pela ferramenta',
files: {
title: 'arquivos gerados pela ferramenta',
type: 'Tipo de suporte. Agora apenas suporte a imagem',
type: 'Tipo de suporte. Agora suporta apenas imagem',
transfer_method: 'Método de transferência. O valor é remote_url ou local_file',
url: 'URL da imagem',
upload_file_id: 'ID de upload do arquivo',
upload_file_id: 'ID do arquivo enviado',
},
},
},
@@ -346,14 +369,48 @@ const translation = {
className: 'Nome da classe',
},
class: 'Classe',
classNamePlaceholder: 'Escreva o nome da classe',
classNamePlaceholder: 'Escreva o nome da sua classe',
advancedSetting: 'Configuração avançada',
topicName: 'Nome do tópico',
topicPlaceholder: 'Escreva o nome do tópico',
topicPlaceholder: 'Escreva o nome do seu tópico',
addClass: 'Adicionar classe',
instruction: 'Instrução',
instructionTip: 'Insira instruções adicionais para ajudar o classificador de perguntas a entender melhor como categorizar perguntas.',
instructionPlaceholder: 'Escreva sua instrução',
},
parameterExtractor: {
inputVar: 'Variável de entrada',
extractParameters: 'Extrair parâmetros',
importFromTool: 'Importar das ferramentas',
addExtractParameter: 'Adicionar parâmetro de extração',
addExtractParameterContent: {
name: 'Nome',
namePlaceholder: 'Nome do parâmetro de extração',
type: 'Tipo',
typePlaceholder: 'Tipo de parâmetro de extração',
description: 'Descrição',
descriptionPlaceholder: 'Descrição do parâmetro de extração',
required: 'Obrigatório',
requiredContent: 'Obrigatório é usado apenas como referência para inferência do modelo, e não para validação obrigatória da saída do parâmetro.',
},
extractParametersNotSet: 'Parâmetros de extração não configurados',
instruction: 'Instrução',
instructionTip: 'Insira instruções adicionais para ajudar o extrator de parâmetros a entender como extrair parâmetros.',
advancedSetting: 'Configuração avançada',
reasoningMode: 'Modo de raciocínio',
reasoningModeTip: 'Você pode escolher o modo de raciocínio apropriado com base na capacidade do modelo de responder a instruções para chamadas de função ou prompts.',
isSuccess: 'É sucesso. Em caso de sucesso, o valor é 1, em caso de falha, o valor é 0.',
errorReason: 'Motivo do erro',
},
iteration: {
deleteTitle: 'Excluir nó de iteração?',
deleteDesc: 'Excluir o nó de iteração excluirá todos os nós filhos',
input: 'Entrada',
output: 'Variáveis de saída',
iteration_one: '{{count}} Iteração',
iteration_other: '{{count}} Iterações',
currentIteration: 'Iteração atual',
},
},
tracing: {
stopBy: 'Parado por {{user}}',