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,87 @@
const translation = {
title: 'Anotações',
name: 'Resposta de Anotação',
editBy: 'Resposta editada por {{author}}',
noData: {
title: 'Sem anotações',
description: 'Você pode editar anotações no depuração do aplicativo ou importar anotações em massa aqui para obter uma resposta de alta qualidade.',
},
table: {
header: {
question: 'pergunta',
answer: 'resposta',
createdAt: 'criado em',
hits: 'acessos',
actions: 'ações',
addAnnotation: 'Adicionar Anotação',
bulkImport: 'Importação em Massa',
bulkExport: 'Exportação em Massa',
clearAll: 'Limpar Todas as Anotações',
},
},
editModal: {
title: 'Editar Resposta de Anotação',
queryName: 'Consulta do Usuário',
answerName: 'Bot Contador de Histórias',
yourAnswer: 'Sua Resposta',
answerPlaceholder: 'Digite sua resposta aqui',
yourQuery: 'Sua Consulta',
queryPlaceholder: 'Digite sua consulta aqui',
removeThisCache: 'Remover esta Anotação',
createdAt: 'Criado em',
},
addModal: {
title: 'Adicionar Resposta de Anotação',
queryName: 'Pergunta',
answerName: 'Resposta',
answerPlaceholder: 'Digite a resposta aqui',
queryPlaceholder: 'Digite a pergunta aqui',
createNext: 'Adicionar outra resposta anotada',
},
batchModal: {
title: 'Importação em Massa',
csvUploadTitle: 'Arraste e solte seu arquivo CSV aqui, ou ',
browse: 'navegue',
tip: 'O arquivo CSV deve seguir a seguinte estrutura:',
question: 'pergunta',
answer: 'resposta',
contentTitle: 'conteúdo do fragmento',
content: 'conteúdo',
template: 'Baixe o modelo aqui',
cancel: 'Cancelar',
run: 'Executar em Lote',
runError: 'Falha na execução em lote',
processing: 'Processando em lote',
completed: 'Importação concluída',
error: 'Erro na importação',
ok: 'OK',
},
errorMessage: {
answerRequired: 'A resposta é obrigatória',
queryRequired: 'A pergunta é obrigatória',
},
viewModal: {
annotatedResponse: 'Resposta de Anotação',
hitHistory: 'Histórico de Acessos',
hit: 'Acesso',
hits: 'Acessos',
noHitHistory: 'Nenhum histórico de acesso',
},
hitHistoryTable: {
query: 'Consulta',
match: 'Correspondência',
response: 'Resposta',
source: 'Origem',
score: 'Pontuação',
time: 'Tempo',
},
initSetup: {
title: 'Configuração Inicial da Resposta de Anotação',
configTitle: 'Configuração da Resposta de Anotação',
confirmBtn: 'Salvar e Habilitar',
configConfirmBtn: 'Salvar',
},
embeddingModelSwitchTip: 'Modelo de vetorização de texto de anotação, a troca de modelos será refeita, resultando em custos adicionais.',
}
export default translation

View File

@@ -0,0 +1,85 @@
const translation = {
apiServer: 'Servidor da API',
apiKey: 'Chave da API',
status: 'Status',
disabled: 'Desativado',
ok: 'Em Serviço',
copy: 'Copiar',
copied: 'Copiado',
merMaid: {
rerender: 'Refazer Rerender',
},
never: 'Nunca',
apiKeyModal: {
apiSecretKey: 'Chave Secreta da API',
apiSecretKeyTips: 'Para evitar abuso da API, proteja sua Chave da API. Evite usá-la como texto simples no código front-end. :)',
createNewSecretKey: 'Criar nova Chave Secreta',
secretKey: 'Chave Secreta',
created: 'CRIADA',
lastUsed: 'ÚLTIMO USO',
generateTips: 'Mantenha esta chave em um local seguro e acessível.',
},
actionMsg: {
deleteConfirmTitle: 'Excluir esta chave secreta?',
deleteConfirmTips: 'Esta ação não pode ser desfeita.',
ok: 'OK',
},
completionMode: {
title: 'Completar App API',
info: 'Para geração de texto de alta qualidade, como artigos, resumos e traduções, use a API de mensagens de conclusão com entrada do usuário. A geração de texto depende dos parâmetros do modelo e dos modelos de prompt definidos no Dify Prompt Engineering.',
createCompletionApi: 'Criar Mensagem de Conclusão',
createCompletionApiTip: 'Crie uma Mensagem de Conclusão para suportar o modo pergunta e resposta.',
inputsTips: '(Opcional) Forneça campos de entrada do usuário como pares chave-valor, correspondendo a variáveis no Prompt Eng. A chave é o nome da variável, o valor é o valor do parâmetro. Se o tipo do campo for Select, o Valor enviado deve ser uma das opções predefinidas.',
queryTips: 'Conteúdo de texto de entrada do usuário.',
blocking: 'Tipo de bloqueio, aguardando a conclusão da execução e retornando os resultados. (As solicitações podem ser interrompidas se o processo for longo)',
streaming: 'Retorno de streaming. Implementação de retorno de streaming com base em SSE (Server-Sent Events).',
messageFeedbackApi: 'Feedback de mensagem (curtir)',
messageFeedbackApiTip: 'Avalie as mensagens recebidas em nome dos usuários finais com curtidas ou descurtidas. Esses dados são visíveis na página de Logs e Anotações e são usados para ajustes futuros no modelo.',
messageIDTip: 'ID da mensagem',
ratingTip: 'curtir ou descurtir, null desfaz',
parametersApi: 'Obter informações de parâmetros do aplicativo',
parametersApiTip: 'Recupere os parâmetros de entrada configurados, incluindo nomes de variáveis, nomes de campos, tipos e valores padrão. Geralmente usado para exibir esses campos em um formulário ou preencher valores padrão após o carregamento do cliente.',
},
chatMode: {
title: 'Chat App API',
info: 'Para aplicativos de conversação versáteis usando um formato de pergunta e resposta, chame a API de mensagens de chat para iniciar o diálogo. Mantenha conversas em andamento passando o conversation_id retornado. Os parâmetros de resposta e modelos dependem das configurações do Dify Prompt Eng.',
createChatApi: 'Criar mensagem de chat',
createChatApiTip: 'Crie uma nova mensagem de conversa ou continue um diálogo existente.',
inputsTips: '(Opcional) Forneça campos de entrada do usuário como pares chave-valor, correspondendo a variáveis no Prompt Eng. A chave é o nome da variável, o valor é o valor do parâmetro. Se o tipo do campo for Select, o Valor enviado deve ser uma das opções predefinidas.',
queryTips: 'Conteúdo de entrada/pergunta do usuário',
blocking: 'Tipo de bloqueio, aguardando a conclusão da execução e retornando os resultados. (As solicitações podem ser interrompidas se o processo for longo)',
streaming: 'Retorno de streaming. Implementação de retorno de streaming com base em SSE (Server-Sent Events).',
conversationIdTip: '(Opcional) ID da conversa: deixe vazio para a primeira conversa; passe conversation_id do contexto para continuar o diálogo.',
messageFeedbackApi: 'Feedback do usuário final da mensagem, curtir',
messageFeedbackApiTip: 'Avalie as mensagens recebidas em nome dos usuários finais com curtidas ou descurtidas. Esses dados são visíveis na página de Logs e Anotações e são usados para ajustes futuros no modelo.',
messageIDTip: 'ID da mensagem',
ratingTip: 'curtir ou descurtir, null desfaz',
chatMsgHistoryApi: 'Obter histórico de mensagens de chat',
chatMsgHistoryApiTip: 'A primeira página retorna as últimas `limit` mensagens, em ordem reversa.',
chatMsgHistoryConversationIdTip: 'ID da conversa',
chatMsgHistoryFirstId: 'ID do primeiro registro de chat na página atual. O padrão é nenhum.',
chatMsgHistoryLimit: 'Quantos chats são retornados em uma solicitação',
conversationsListApi: 'Obter lista de conversas',
conversationsListApiTip: 'Obtém a lista de sessões do usuário atual. Por padrão, as últimas 20 sessões são retornadas.',
conversationsListFirstIdTip: 'O ID do último registro na página atual, padrão nenhum.',
conversationsListLimitTip: 'Quantos chats são retornados em uma solicitação',
conversationRenamingApi: 'Renomear conversa',
conversationRenamingApiTip: 'Renomeie conversas; o nome é exibido nas interfaces de cliente com várias sessões.',
conversationRenamingNameTip: 'Novo nome',
parametersApi: 'Obter informações de parâmetros do aplicativo',
parametersApiTip: 'Recupere os parâmetros de entrada configurados, incluindo nomes de variáveis, nomes de campos, tipos e valores padrão. Geralmente usado para exibir esses campos em um formulário ou preencher valores padrão após o carregamento do cliente.',
},
develop: {
requestBody: 'Corpo da Solicitação',
pathParams: 'Parâmetros de Caminho',
query: 'Consulta',
toc: 'Conteúdo',
},
play: 'Brincar',
loading: 'Carregamento',
pause: 'Pausa',
playing: 'Jogar',
regenerate: 'Regenerar',
}
export default translation

View File

@@ -0,0 +1,423 @@
const translation = {
pageTitle: {
line1: 'PROMPT',
line2: 'Engenharia',
},
orchestrate: 'Orquestrar',
promptMode: {
simple: 'Mudar para o Modo Especialista para editar todo o PROMPT',
advanced: 'Modo Especialista',
switchBack: 'Voltar',
advancedWarning: {
title: 'Você mudou para o Modo Especialista e, uma vez que você modifique o PROMPT, NÃO poderá retornar ao modo básico.',
description: 'No Modo Especialista, você pode editar todo o PROMPT.',
learnMore: 'Saiba mais',
ok: 'OK',
},
operation: {
addMessage: 'Adicionar Mensagem',
},
contextMissing: 'Componente de contexto ausente, a eficácia do prompt pode não ser boa.',
},
operation: {
applyConfig: 'Publicar',
resetConfig: 'Redefinir',
debugConfig: 'Depurar',
addFeature: 'Adicionar Recurso',
automatic: 'Automático',
stopResponding: 'Parar de responder',
agree: 'gostar',
disagree: 'não gostar',
cancelAgree: 'Cancelar gostar',
cancelDisagree: 'Cancelar não gostar',
userAction: 'Usuário ',
},
notSetAPIKey: {
title: 'A chave do provedor LLM não foi definida',
trailFinished: 'Trilha finalizada',
description: 'A chave do provedor LLM não foi definida e precisa ser definida antes da depuração.',
settingBtn: 'Ir para configurações',
},
trailUseGPT4Info: {
title: 'Não suporta gpt-4 agora',
description: 'Use gpt-4, por favor defina a chave da API.',
},
feature: {
groupChat: {
title: 'Melhoria do Chat',
description: 'Adicione configurações pré-conversa para aplicativos que podem melhorar a experiência do usuário.',
},
groupExperience: {
title: 'Melhoria da Experiência',
},
conversationOpener: {
title: 'Remodeladores de Conversa',
description: 'Em um aplicativo de chat, a primeira frase que a IA fala ativamente para o usuário geralmente é usada como uma saudação.',
},
suggestedQuestionsAfterAnswer: {
title: 'Perguntas de Acompanhamento',
description: 'Configurar sugestões de próximas perguntas pode proporcionar um melhor chat aos usuários.',
resDes: '3 sugestões para a próxima pergunta do usuário.',
tryToAsk: 'Tente perguntar',
},
moreLikeThis: {
title: 'Mais como isso',
description: 'Gere vários textos de uma vez e, em seguida, edite e continue a gerar',
generateNumTip: 'Número de vezes geradas',
tip: 'Usar esse recurso incorrerá em sobrecarga adicional de tokens',
},
speechToText: {
title: 'Fala para Texto',
description: 'Uma vez ativado, você pode usar entrada de voz.',
resDes: 'Entrada de voz está ativada',
},
textToSpeech: {
title: 'Texto para voz',
description: 'Quando ativado, o texto pode ser convertido em fala.',
resDes: 'Texto para áudio ativado',
},
citation: {
title: 'Citações e Atribuições',
description: 'Uma vez ativado, mostra o documento de origem e a seção atribuída do conteúdo gerado.',
resDes: 'Citações e Atribuições estão ativadas',
},
annotation: {
title: 'Resposta de Anotação',
description: 'Você pode adicionar manualmente uma resposta de alta qualidade ao cache para correspondência prioritária com perguntas semelhantes do usuário.',
resDes: 'Resposta de Anotação está ativada',
scoreThreshold: {
title: 'Limiar de Pontuação',
description: 'Usado para definir o limiar de similaridade para resposta de anotação.',
easyMatch: 'Correspondência Fácil',
accurateMatch: 'Correspondência Precisa',
},
matchVariable: {
title: 'Variável de Correspondência',
choosePlaceholder: 'Escolha a variável de correspondência',
},
cacheManagement: 'Anotações',
cached: 'Anotado',
remove: 'Remover',
removeConfirm: 'Excluir esta anotação?',
add: 'Adicionar anotação',
edit: 'Editar anotação',
},
dataSet: {
title: 'Contexto',
noData: 'Você pode importar Conhecimento como contexto',
words: 'Palavras',
textBlocks: 'Blocos de Texto',
selectTitle: 'Selecionar Conhecimento de referência',
selected: 'Conhecimento selecionado',
noDataSet: 'Nenhum Conhecimento encontrado',
toCreate: 'Ir para criar',
notSupportSelectMulti: 'Atualmente, suporta apenas um Conhecimento',
queryVariable: {
title: 'Variável de Consulta',
tip: 'Essa variável será usada como entrada de consulta para recuperação de contexto, obtendo informações de contexto relacionadas à entrada dessa variável.',
choosePlaceholder: 'Escolha a variável de consulta',
noVar: 'Nenhuma variável',
noVarTip: 'por favor, crie uma variável na seção Variáveis',
unableToQueryDataSet: 'Não é possível consultar o Conhecimento',
unableToQueryDataSetTip: 'Não é possível consultar o Conhecimento com sucesso, por favor escolha uma variável de consulta de contexto na seção de contexto.',
ok: 'OK',
contextVarNotEmpty: 'variável de consulta de contexto não pode estar vazia',
deleteContextVarTitle: 'Excluir variável "{{varName}}"?',
deleteContextVarTip: 'Esta variável foi definida como uma variável de consulta de contexto e removê-la afetará o uso normal do Conhecimento. Se você ainda precisa excluí-la, por favor, selecione-a novamente na seção de contexto.',
},
},
tools: {
title: 'Tools',
tips: 'Tools provide a standard API call method, taking user input or variables as request parameters for querying external data as context.',
toolsInUse: '{{count}} tools in use',
modal: {
title: 'Tool',
toolType: {
title: 'Tool Type',
placeholder: 'Por favor, selecione o tipo de ferramenta',
},
name: {
title: 'Nome',
placeholder: 'Por favor, insira o nome',
},
variableName: {
title: 'Nome da Variável',
placeholder: 'Por favor, insira o nome da variável',
},
},
},
conversationHistory: {
title: 'Histórico da Conversa',
description: 'Defina os nomes dos prefixos para os papéis da conversa',
tip: 'O Histórico da Conversa não está habilitado, por favor adicione <histories> na solicitação acima.',
learnMore: 'Saiba mais',
editModal: {
title: 'Editar Nomes dos Papéis da Conversa',
userPrefix: 'Prefixo do Usuário',
assistantPrefix: 'Prefixo do Assistente',
},
},
toolbox: {
title: 'CAIXA DE FERRAMENTAS',
},
moderation: {
title: 'Moderação de Conteúdo',
description: 'Proteja a saída do modelo usando a API de moderação ou mantendo uma lista de palavras sensíveis.',
allEnabled: 'Conteúdo de ENTRADA/SAÍDA Habilitado',
inputEnabled: 'Conteúdo de ENTRADA Habilitado',
outputEnabled: 'Conteúdo de SAÍDA Habilitado',
modal: {
title: 'Configurações de Moderação de Conteúdo',
provider: {
title: 'Provedor',
openai: 'Moderação OpenAI',
openaiTip: {
prefix: 'A Moderação OpenAI requer uma chave de API da OpenAI configurada em ',
suffix: '.',
},
keywords: 'Palavras-chave',
},
keywords: {
tip: 'Uma por linha, separadas por quebras de linha. Até 100 caracteres por linha.',
placeholder: 'Uma por linha, separadas por quebras de linha',
line: 'Linha',
},
content: {
input: 'Moderar Conteúdo de ENTRADA',
output: 'Moderar Conteúdo de SAÍDA',
preset: 'Respostas pré-definidas',
placeholder: 'Insira o conteúdo das respostas pré-definidas aqui',
condition: 'Moderar Conteúdo de ENTRADA e SAÍDA habilitado pelo menos uma',
fromApi: 'As respostas pré-definidas são retornadas pela API',
errorMessage: 'As respostas pré-definidas não podem estar vazias',
supportMarkdown: 'Suporte a Markdown',
},
openaiNotConfig: {
before: 'A Moderação OpenAI requer uma chave de API da OpenAI configurada em ',
after: '',
},
},
},
},
automatic: {
title: 'Orquestração Automatizada de Aplicativos',
description: 'Descreva o seu cenário, o Dify irá orquestrar um aplicativo para você.',
intendedAudience: 'Qual é o público-alvo?',
intendedAudiencePlaceHolder: 'ex: Estudante',
solveProblem: 'Quais problemas eles esperam que a IA possa resolver para eles?',
solveProblemPlaceHolder: 'ex: Avaliar o desempenho acadêmico',
generate: 'Gerar',
audiencesRequired: 'Públicos-alvo necessários',
problemRequired: 'Problema necessário',
resTitle: 'Orquestramos o seguinte aplicativo para você.',
apply: 'Aplicar esta orquestração',
noData: 'Descreva o seu caso de uso à esquerda, a visualização da orquestração será exibida aqui.',
loading: 'Orquestrando o aplicativo para você...',
overwriteTitle: 'Substituir configuração existente?',
overwriteMessage: 'Aplicar esta orquestração irá substituir a configuração existente.',
},
resetConfig: {
title: 'Confirmar redefinição?',
message:
'A redefinição descarta as alterações, restaurando a última configuração publicada.',
},
errorMessage: {
nameOfKeyRequired: 'nome da chave: {{key}} obrigatório',
valueOfVarRequired: 'valor de {{key}} não pode estar vazio',
queryRequired: 'Texto da solicitação é obrigatório.',
waitForResponse:
'Aguarde a resposta à mensagem anterior ser concluída.',
waitForBatchResponse:
'Aguarde a resposta à tarefa em lote ser concluída.',
notSelectModel: 'Por favor, escolha um modelo',
waitForImgUpload: 'Aguarde o upload da imagem',
},
chatSubTitle: 'Instruções',
completionSubTitle: 'Prefixo da Solicitação',
promptTip:
'As solicitações guiam as respostas da IA com instruções e restrições. Insira variáveis como {{input}}. Este prompt não será visível para os usuários.',
formattingChangedTitle: 'Formatação alterada',
formattingChangedText:
'Modificar a formatação redefinirá a área de depuração, você tem certeza?',
variableTitle: 'Variáveis',
variableTip:
'Os usuários preenchem as variáveis em um formulário, substituindo automaticamente as variáveis na solicitação.',
notSetVar: 'As variáveis permitem que os usuários introduzam palavras de solicitação ou observações iniciais ao preencher formulários. Você pode tentar digitar "{{input}}" nas palavras de solicitação.',
autoAddVar: 'Variáveis indefinidas referenciadas na pré-solicitação, você deseja adicioná-las no formulário de entrada do usuário?',
variableTable: {
key: 'Chave da Variável',
name: 'Nome do Campo de Entrada do Usuário',
optional: 'Opcional',
type: 'Tipo de Entrada',
action: 'Ações',
typeString: 'Texto',
typeSelect: 'Selecionar',
},
varKeyError: {
canNoBeEmpty: '{{key}} é obrigatório',
tooLong: '{{key}} é muito longa. Não pode ter mais de 30 caracteres',
notValid: '{{key}} é inválida. Pode conter apenas letras, números e sublinhados',
notStartWithNumber: '{{key}} não pode começar com um número',
keyAlreadyExists: '{{key}} já existe',
},
otherError: {
promptNoBeEmpty: 'A solicitação não pode estar vazia',
historyNoBeEmpty: 'O histórico da conversa deve ser definido na solicitação',
queryNoBeEmpty: 'A consulta deve ser definida na solicitação',
},
variableConfig: {
'addModalTitle': 'Adicionar Campo de Entrada',
'editModalTitle': 'Editar Campo de Entrada',
'description': 'Configuração para a variável {{varName}}',
'fieldType': 'Tipo de Campo',
'string': 'Texto Curto',
'text-input': 'Texto Curto',
'paragraph': 'Parágrafo',
'select': 'Selecionar',
'number': 'Número',
'notSet': 'Não definido, tente digitar {{input}} no prompt de prefixo',
'stringTitle': 'Opções da caixa de texto do formulário',
'maxLength': 'Comprimento Máximo',
'options': 'Opções',
'addOption': 'Adicionar opção',
'apiBasedVar': 'Variável Baseada em API',
'varName': 'Nome da Variável',
'labelName': 'Nome do Rótulo',
'inputPlaceholder': 'Por favor, insira',
'required': 'Obrigatório',
'errorMsg': {
varNameRequired: 'O nome da variável é obrigatório',
labelNameRequired: 'O nome do rótulo é obrigatório',
varNameCanBeRepeat: 'O nome da variável não pode ser repetido',
atLeastOneOption: 'Pelo menos uma opção é obrigatória',
optionRepeat: 'Tem opções repetidas',
},
},
vision: {
name: 'Visão',
description: 'Habilitar a Visão permite que o modelo receba imagens e responda perguntas sobre elas.',
settings: 'Configurações',
visionSettings: {
title: 'Configurações de Visão',
resolution: 'Resolução',
resolutionTooltip: `Baixa resolução permitirá que o modelo receba uma versão de baixa resolução de 512 x 512 da imagem e represente a imagem com um orçamento de 65 tokens. Isso permite que a API retorne respostas mais rápidas e consuma menos tokens de entrada para casos de uso que não exigem alta precisão.
\n
Alta resolução permitirá que o modelo veja a imagem de baixa resolução e crie recortes detalhados das imagens de entrada como quadrados de 512px com base no tamanho da imagem de entrada. Cada um dos recortes detalhados usa o dobro do orçamento de tokens, totalizando 129 tokens.`,
high: 'Alta',
low: 'Baixa',
uploadMethod: 'Método de Upload',
both: 'Ambos',
localUpload: 'Upload Local',
url: 'URL',
uploadLimit: 'Limite de Upload',
},
},
voice: {
name: 'voz',
defaultDisplay: 'Voz padrão',
description: 'Texto para configurações de timbre de voz',
settings: 'As configurações',
voiceSettings: {
title: 'voz As configurações',
language: 'línguas',
resolutionTooltip: 'Texto para voz timbre suporta idiomas.',
voice: 'voz',
autoPlay: 'Reprodução automática',
autoPlayEnabled: 'ligar',
autoPlayDisabled: 'fecho',
},
},
openingStatement: {
title: 'Abertura da Conversa',
add: 'Adicionar',
writeOpener: 'Escrever abertura',
placeholder: 'Escreva sua mensagem de abertura aqui, você pode usar variáveis, tente digitar {{variável}}.',
openingQuestion: 'Perguntas de Abertura',
noDataPlaceHolder:
'Iniciar a conversa com o usuário pode ajudar a IA a estabelecer uma conexão mais próxima com eles em aplicativos de conversação.',
varTip: 'Você pode usar variáveis, tente digitar {{variável}}',
tooShort: 'São necessárias pelo menos 20 palavras de prompt inicial para gerar observações de abertura para a conversa.',
notIncludeKey: 'O prompt inicial não inclui a variável: {{key}}. Por favor, adicione-a ao prompt inicial.',
},
modelConfig: {
model: 'Modelo',
setTone: 'Definir tom das respostas',
title: 'Modelo e Parâmetros',
modeType: {
chat: 'Chat',
completion: 'Completar',
},
},
inputs: {
title: 'Depuração e Visualização',
noPrompt: 'Tente escrever algum prompt na entrada de pré-prompt',
userInputField: 'Campo de Entrada do Usuário',
noVar: 'Preencha o valor da variável, que será substituída automaticamente na palavra de solicitação sempre que uma nova sessão for iniciada.',
chatVarTip:
'Preencha o valor da variável, que será substituída automaticamente na palavra de solicitação sempre que uma nova sessão for iniciada',
completionVarTip:
'Preencha o valor da variável, que será substituída automaticamente nas palavras de solicitação sempre que uma pergunta for enviada.',
previewTitle: 'Visualização do Prompt',
queryTitle: 'Conteúdo da Consulta',
queryPlaceholder: 'Por favor, insira o texto da solicitação.',
run: 'EXECUTAR',
},
result: 'Texto de Saída',
datasetConfig: {
settingTitle: 'Configurações de Recuperação',
knowledgeTip: 'Clique no botão “+” para adicionar conhecimento',
retrieveOneWay: {
title: 'Recuperação N-para-1',
description: 'Com base na intenção do usuário e nas descrições do Conhecimento, o Agente seleciona autonomamente o melhor Conhecimento para consulta. Melhor para aplicativos com Conhecimento distinto e limitado.',
},
retrieveMultiWay: {
title: 'Recuperação Multi-caminho',
description: 'Com base na intenção do usuário, consulta todos os Conhecimentos, recupera texto relevante de várias fontes e seleciona os melhores resultados que correspondem à consulta do usuário após a reclassificação. É necessária a configuração da API do modelo de reclassificação.',
},
rerankModelRequired: 'Modelo de reclassificação é necessário',
params: 'Parâmetros',
top_k: 'Top K',
top_kTip: 'Usado para filtrar os trechos mais semelhantes às perguntas do usuário. O sistema também ajustará dinamicamente o valor de Top K, de acordo com max_tokens do modelo selecionado.',
score_threshold: 'Limiar de Pontuação',
score_thresholdTip: 'Usado para definir o limiar de similaridade para filtragem de trechos.',
retrieveChangeTip: 'Modificar o modo de índice e o modo de recuperação pode afetar os aplicativos associados a este Conhecimento.',
},
assistantType: {
name: 'Tipo de Assistente',
chatAssistant: {
name: 'Assistente Básico',
description: 'Construa um assistente baseado em chat usando um Modelo de Linguagem Grande',
},
agentAssistant: {
name: 'Assistente de Agente',
description: 'Construa um Agente inteligente que pode escolher autonomamente ferramentas para concluir as tarefas',
},
},
agent: {
agentMode: 'Modo do Agente',
agentModeDes: 'Defina o tipo de modo de inferência para o agente',
agentModeType: {
ReACT: 'ReAct',
functionCall: 'Chamada de Função',
},
setting: {
name: 'Configurações do Agente',
description: 'As configurações do Assistente de Agente permitem definir o modo do agente e recursos avançados como prompts incorporados, disponíveis apenas no tipo de Agente.',
maximumIterations: {
name: 'Número Máximo de Iterações',
description: 'Limite o número de iterações que um assistente de agente pode executar',
},
},
buildInPrompt: 'Prompt Incorporado',
firstPrompt: 'Primeiro Prompt',
nextIteration: 'Próxima Iteração',
promptPlaceholder: 'Escreva seu prompt aqui',
tools: {
name: 'Ferramentas',
description: 'O uso de ferramentas pode ampliar as capacidades do LLM, como pesquisar na internet ou realizar cálculos científicos',
enabled: 'Habilitado',
},
},
}
export default translation

View File

@@ -0,0 +1,105 @@
const translation = {
title: 'Registros',
description: 'Os registros registram o status de execução do aplicativo, incluindo entradas do usuário e respostas do AI.',
dateTimeFormat: 'MM/DD/YYYY hh:mm A',
table: {
header: {
updatedTime: 'Hora de atualização',
time: 'Hora de criação',
endUser: 'Usuário final ou conta',
input: 'Entrada',
output: 'Saída',
summary: 'Título',
messageCount: 'Contagem de Mensagens',
userRate: 'Taxa de Usuário',
adminRate: 'Taxa de Op.',
startTime: 'HORA DE INÍCIO',
status: 'STATUS',
runtime: 'TEMPO DE EXECUÇÃO',
tokens: 'TOKENS',
user: 'USUÁRIO FINAL OU CONTA',
version: 'VERSÃO',
},
pagination: {
previous: 'Anterior',
next: 'Próximo',
},
empty: {
noChat: 'Ainda não há conversas',
noOutput: 'Sem saída',
element: {
title: 'Tem alguém aí?',
content: 'Observe e anote as interações entre os usuários finais e os aplicativos de IA aqui para melhorar continuamente a precisão da IA. Você pode tentar <shareLink>compartilhar</shareLink> ou <testLink>testar</testLink> o aplicativo da Web você mesmo, e depois voltar para esta página.',
},
},
},
detail: {
time: 'Hora',
conversationId: 'ID da Conversa',
promptTemplate: 'Modelo de Prompt',
promptTemplateBeforeChat: 'Modelo de Prompt Antes do Chat · Como Mensagem do Sistema',
annotationTip: 'Melhorias Marcadas por {{user}}',
timeConsuming: '',
second: 's',
tokenCost: 'Token gasto',
loading: 'carregando',
operation: {
like: 'curtir',
dislike: 'não curtir',
addAnnotation: 'Adicionar Melhoria',
editAnnotation: 'Editar Melhoria',
annotationPlaceholder: 'Digite a resposta esperada que você deseja que o AI responda, o que pode ser usado para ajustar o modelo e melhorar continuamente a qualidade da geração de texto no futuro.',
},
variables: 'Variáveis',
uploadImages: 'Imagens Carregadas',
modelParams: 'Parâmetros do modelo',
},
filter: {
period: {
today: 'Hoje',
last7days: 'Últimos 7 dias',
last4weeks: 'Últimas 4 semanas',
last3months: 'Últimos 3 meses',
last12months: 'Últimos 12 meses',
monthToDate: 'Mês até hoje',
quarterToDate: 'Trimestre até hoje',
yearToDate: 'Ano até hoje',
allTime: 'Todo o tempo',
},
annotation: {
all: 'Tudo',
annotated: 'Melhorias Anotadas ({{count}} itens)',
not_annotated: 'Não Anotado',
},
sortBy: 'Ordenar por:',
descending: 'decrescente',
ascending: 'crescente',
},
workflowTitle: 'Registros de Fluxo de Trabalho',
workflowSubtitle: 'O registro registrou a operação do Automate.',
runDetail: {
title: 'Registro de Conversa',
workflowTitle: 'Detalhes do Registro',
fileListLabel: 'Detalhes do arquivo',
fileListDetail: 'Detalhe',
},
promptLog: 'Registro de Prompt',
agentLog: 'Registro do agente',
viewLog: 'Ver Registro',
agenteLogDetail: {
agentMode: 'Modo Agente',
toolUsed: 'Ferramenta usada',
iterations: 'Iterações',
iteration: 'Iteração',
finalProcessing: 'Processamento Final',
},
agentLogDetail: {
iterations: 'Iterações',
agentMode: 'Modo Agente',
finalProcessing: 'Processamento final',
iteration: 'Iteração',
toolUsed: 'Ferramenta usada',
},
}
export default translation

View File

@@ -0,0 +1,171 @@
const translation = {
welcome: {
firstStepTip: 'Para começar,',
enterKeyTip: 'insira sua chave de API OpenAI abaixo',
getKeyTip: 'Obtenha sua chave de API no painel da OpenAI',
placeholder: 'Sua chave de API OpenAI (ex. sk-xxxx)',
},
apiKeyInfo: {
cloud: {
trial: {
title: 'Você está usando a cota de teste da {{providerName}}.',
description: 'A cota de teste é fornecida para seu uso de teste. Antes que as chamadas de cota de teste se esgotem, configure seu próprio provedor de modelo ou compre cota adicional.',
},
exhausted: {
title: 'Sua cota de teste foi usada, configure sua chave de API.',
description: 'Sua cota de teste foi esgotada. Configure seu próprio provedor de modelo ou compre cota adicional.',
},
},
selfHost: {
title: {
row1: 'Para começar,',
row2: 'configure primeiro seu provedor de modelo.',
},
},
callTimes: 'Número de chamadas',
usedToken: 'Tokens usados',
setAPIBtn: 'Ir para configurar o provedor de modelo',
tryCloud: 'Ou experimente a versão em nuvem do Dify com cota gratuita',
},
overview: {
title: 'Visão Geral',
appInfo: {
explanation: 'WebApp de IA Pronta para Uso',
accessibleAddress: 'URL Pública',
preview: 'Visualização',
regenerate: 'Regenerar',
regenerateNotice: 'Você deseja regenerar a URL pública?',
preUseReminder: 'Por favor, ative o WebApp antes de continuar.',
settings: {
entry: 'Configurações',
title: 'Configurações do WebApp',
webName: 'Nome do WebApp',
webDesc: 'Descrição do WebApp',
webDescTip: 'Este texto será exibido no lado do cliente, fornecendo orientações básicas sobre como usar o aplicativo',
webDescPlaceholder: 'Insira a descrição do WebApp',
language: 'Idioma',
workflow: {
title: 'Etapas do fluxo de trabalho',
show: 'Mostrar',
hide: 'Ocultar',
subTitle: 'Detalhes do fluxo de trabalho',
showDesc: 'Mostrar ou ocultar detalhes do fluxo de trabalho no WebApp',
},
chatColorTheme: 'Tema de cor do chatbot',
chatColorThemeDesc: 'Defina o tema de cor do chatbot',
chatColorThemeInverted: 'Inve',
invalidHexMessage: 'Valor hex inválido',
more: {
entry: 'Mostrar mais configurações',
copyright: 'Direitos autorais',
copyRightPlaceholder: 'Insira o nome do autor ou organização',
privacyPolicy: 'Política de Privacidade',
privacyPolicyPlaceholder: 'Insira o link da política de privacidade',
privacyPolicyTip: 'Ajuda os visitantes a entender os dados coletados pelo aplicativo, consulte a <privacyPolicyLink>Política de Privacidade</privacyPolicyLink> do Dify.',
customDisclaimer: 'Aviso Legal Personalizado',
customDisclaimerPlaceholder: 'Insira o texto do aviso legal',
customDisclaimerTip: 'O texto do aviso legal personalizado será exibido no lado do cliente, fornecendo informações adicionais sobre o aplicativo',
copyrightTip: 'Exibir informações de direitos autorais no webapp',
copyrightTooltip: 'Por favor, atualize para o plano Professional ou superior',
},
sso: {
tooltip: 'Entre em contato com o administrador para habilitar o SSO do WebApp',
label: 'Autenticação SSO',
title: 'WebApp SSO',
description: 'Todos os usuários devem fazer login com SSO antes de usar o WebApp',
},
modalTip: 'Configurações do aplicativo Web do lado do cliente.',
},
embedded: {
entry: 'Embutido',
title: 'Incorporar no site',
explanation: 'Escolha a maneira de incorporar o aplicativo de chat ao seu site',
iframe: 'Para adicionar o aplicativo de chat em qualquer lugar do seu site, adicione este iframe ao seu código HTML.',
scripts: 'Para adicionar um aplicativo de chat no canto inferior direito do seu site, adicione este código ao seu HTML.',
chromePlugin: 'Instalar a Extensão do Chrome Dify Chatbot',
copied: 'Copiado',
copy: 'Copiar',
},
qrcode: {
title: 'Código QR para compartilhar',
scan: 'Digitalizar e compartilhar o aplicativo',
download: 'Baixar código QR',
},
customize: {
way: 'modo',
entry: 'Personalizar',
title: 'Personalizar WebApp de IA',
explanation: 'Você pode personalizar a interface do usuário do Web App para atender às suas necessidades de cenário e estilo.',
way1: {
name: 'Faça um fork do código do cliente, modifique-o e implante-o no Vercel (recomendado)',
step1: 'Faça um fork do código do cliente e modifique-o',
step1Tip: 'Clique aqui para fazer um fork do código-fonte na sua conta GitHub e modificar o código',
step1Operation: 'Cliente-Web-Dify',
step2: 'Implantar no Vercel',
step2Tip: 'Clique aqui para importar o repositório no Vercel e implantar',
step2Operation: 'Importar repositório',
step3: 'Configurar as variáveis de ambiente',
step3Tip: 'Adicione as seguintes variáveis de ambiente no Vercel',
},
way2: {
name: 'Escreva código do lado do cliente para chamar a API e implante-o em um servidor',
operation: 'Documentação',
},
},
},
apiInfo: {
title: 'API de Serviço de Back-end',
explanation: 'Facilmente integrado em sua aplicação',
accessibleAddress: 'Endpoint do Serviço API',
doc: 'Referência da API',
},
status: {
running: 'Em serviço',
disable: 'Desabilitar',
},
},
analysis: {
title: 'Análise',
ms: 'ms',
tokenPS: 'Token/s',
totalMessages: {
title: 'Total de Mensagens',
explanation: 'Contagem diária de interações com IA.',
},
totalConversations: {
title: 'Total de Conversas',
explanation: 'Contagem diária de conversas com IA; engenharia/depuração de prompts excluída.',
},
activeUsers: {
title: 'Usuários Ativos',
explanation: 'Usuários únicos engajando em Q&A com AI; engenharia/de depuração excluída.',
},
tokenUsage: {
title: 'Uso de Token',
explanation: 'Reflete o uso diário do token do modelo de linguagem para o aplicativo, útil para fins de controle de custos.',
consumed: 'Consumido',
},
avgSessionInteractions: {
title: 'Média de Interações por Sessão',
explanation: 'Contagem de comunicação contínua entre usuário e AI; para aplicativos baseados em conversação.',
},
avgUserInteractions: {
title: 'Média de Interações por Usuário',
explanation: 'Reflete a frequência de uso diário dos usuários. Essa métrica reflete a fidelidade do usuário.',
},
userSatisfactionRate: {
title: 'Taxa de Satisfação do Usuário',
explanation: 'O número de curtidas por 1.000 mensagens. Isso indica a proporção de respostas com as quais os usuários estão altamente satisfeitos.',
},
avgResponseTime: {
title: 'Tempo Médio de Resposta',
explanation: 'Tempo (ms) para o AI processar/responder; para aplicativos baseados em texto.',
},
tps: {
title: 'Velocidade de Saída do Token',
explanation: 'Mede o desempenho do LLM. Conta a velocidade de saída de tokens do LLM desde o início da solicitação até a conclusão da saída.',
},
},
}
export default translation

View File

@@ -0,0 +1,193 @@
const translation = {
createApp: 'CRIAR APLICATIVO',
types: {
all: 'Todos',
chatbot: 'Chatbot',
agent: 'Agente',
workflow: 'Fluxo de trabalho',
completion: 'Conclusão',
basic: 'Básico',
advanced: 'Fluxo de bate-papo',
},
duplicate: 'Duplicar',
duplicateTitle: 'Duplicar Aplicativo',
export: 'Exportar DSL',
exportFailed: 'Falha ao exportar DSL.',
importDSL: 'Importar arquivo DSL',
createFromConfigFile: 'Criar a partir do arquivo DSL',
deleteAppConfirmTitle: 'Excluir este aplicativo?',
deleteAppConfirmContent:
'A exclusão do aplicativo é irreversível. Os usuários não poderão mais acessar seu aplicativo e todas as configurações de prompt e logs serão permanentemente excluídas.',
appDeleted: 'Aplicativo excluído',
appDeleteFailed: 'Falha ao excluir aplicativo',
join: 'Participe da comunidade',
communityIntro:
'Discuta com membros da equipe, colaboradores e desenvolvedores em diferentes canais.',
roadmap: 'Veja nosso roteiro',
newApp: {
startFromBlank: 'Criar do zero',
startFromTemplate: 'Criar do modelo',
captionAppType: 'Que tipo de aplicativo você deseja criar?',
chatbotDescription: 'Construa um aplicativo baseado em chat. Este aplicativo usa um formato de pergunta e resposta, permitindo várias rodadas de conversa contínua.',
completionDescription: 'Construa um aplicativo que gera texto de alta qualidade com base em prompts, como geração de artigos, resumos, traduções e muito mais.',
completionWarning: 'Este tipo de aplicativo não será mais suportado.',
agentDescription: 'Construa um Agente inteligente que pode escolher ferramentas para completar as tarefas autonomamente',
workflowDescription: 'Construa um aplicativo que gera texto de alta qualidade com base em fluxo de trabalho com alto grau de personalização. É adequado para usuários experientes.',
workflowWarning: 'Atualmente em beta',
chatbotType: 'Método de orquestração do Chatbot',
basic: 'Básico',
basicTip: 'Para iniciantes, pode mudar para o Chatflow mais tarde',
basicFor: 'PARA INICIANTES',
basicDescription: 'A Orquestração Básica permite orquestrar um aplicativo Chatbot usando configurações simples, sem a capacidade de modificar prompts integrados. É adequado para iniciantes.',
advanced: 'Chatflow',
advancedFor: 'Para usuários avançados',
advancedDescription: 'A Orquestração de Fluxo de Trabalho orquestra Chatbots na forma de fluxos de trabalho, oferecendo um alto grau de personalização, incluindo a capacidade de editar prompts integrados. É adequado para usuários experientes.',
captionName: 'Ícone e nome do aplicativo',
appNamePlaceholder: 'Dê um nome para o seu aplicativo',
captionDescription: 'Descrição',
appDescriptionPlaceholder: 'Digite a descrição do aplicativo',
useTemplate: 'Usar este modelo',
previewDemo: 'Visualizar demonstração',
chatApp: 'Assistente',
chatAppIntro:
'Eu quero construir um aplicativo baseado em chat. Este aplicativo usa um formato de pergunta e resposta, permitindo várias rodadas de conversa contínua.',
agentAssistant: 'Novo Assistente de Agente',
completeApp: 'Gerador de Texto',
completeAppIntro:
'Eu quero criar um aplicativo que gera texto de alta qualidade com base em prompts, como geração de artigos, resumos, traduções e muito mais.',
showTemplates: 'Quero escolher a partir de um modelo',
hideTemplates: 'Voltar para a seleção de modo',
Create: 'Criar',
Cancel: 'Cancelar',
nameNotEmpty: 'O nome não pode estar vazio',
appTemplateNotSelected: 'Por favor, selecione um modelo',
appTypeRequired: 'Por favor, selecione um tipo de aplicativo',
appCreated: 'Aplicativo criado',
appCreateFailed: 'Falha ao criar aplicativo',
caution: 'Cuidado',
appCreateDSLErrorPart1: 'Uma diferença significativa nas versões DSL foi detectada. Forçar a importação pode causar mau funcionamento do aplicativo.',
appCreateDSLErrorPart4: 'Versão DSL suportada pelo sistema:',
Confirm: 'Confirmar',
appCreateDSLErrorTitle: 'Incompatibilidade de versão',
appCreateDSLWarning: 'Cuidado: a diferença de versão DSL pode afetar determinados recursos',
appCreateDSLErrorPart3: 'Versão DSL do aplicativo atual:',
appCreateDSLErrorPart2: 'Você quer continuar?',
learnMore: 'Saiba Mais',
optional: 'Opcional',
chooseAppType: 'Escolha o tipo de aplicativo',
forBeginners: 'PARA INICIANTES',
noTemplateFound: 'Nenhum modelo encontrado',
foundResults: '{{contagem}} Resultados',
foundResult: '{{contagem}} Resultado',
completionUserDescription: 'Crie rapidamente um assistente de IA para tarefas de geração de texto com configuração simples.',
noIdeaTip: 'Sem ideias? Confira nossos modelos',
workflowUserDescription: 'Orquestração de fluxo de trabalho para tarefas de rodada única, como automação e processamento em lote.',
chatbotUserDescription: 'Crie rapidamente um chatbot baseado em LLM com configuração simples. Você pode alternar para o fluxo de chat mais tarde.',
agentShortDescription: 'Agente inteligente com raciocínio e uso de ferramenta autônoma',
forAdvanced: 'PARA USUÁRIOS AVANÇADOS',
chatbotShortDescription: 'Chatbot baseado em LLM com configuração simples',
advancedUserDescription: 'Orquestração de fluxo de trabalho para tarefas de diálogo complexas de várias rodadas com recursos de memória.',
noTemplateFoundTip: 'Tente pesquisar usando palavras-chave diferentes.',
agentUserDescription: 'Um agente inteligente capaz de raciocínio iterativo e uso autônomo de ferramentas para atingir os objetivos da tarefa.',
completionShortDescription: 'Assistente de IA para tarefas de geração de texto',
workflowShortDescription: 'Orquestração para tarefas de automação de turno único',
noAppsFound: 'Nenhum aplicativo encontrado',
advancedShortDescription: 'Fluxo de trabalho para diálogos complexos de vários turnos com memória',
},
editApp: 'Editar Informações',
editAppTitle: 'Editar Informações do Aplicativo',
editDone: 'Informações do aplicativo atualizadas',
editFailed: 'Falha ao atualizar informações do aplicativo',
iconPicker: {
ok: 'OK',
cancel: 'Cancelar',
emoji: 'Emoji',
image: 'Imagem',
},
switch: 'Mudar para Orquestração de Fluxo de Trabalho',
switchTipStart: 'Será criada uma nova cópia do aplicativo para você e a nova cópia mudará para Orquestração de Fluxo de Trabalho. A nova cópia não permitirá a ',
switchTip: 'volta',
switchTipEnd: ' para Orquestração Básica.',
switchLabel: 'A cópia do aplicativo a ser criada',
removeOriginal: 'Excluir o aplicativo original',
switchStart: 'Iniciar mudança',
typeSelector: {
all: 'Todos os Tipos',
chatbot: 'Chatbot',
agent: 'Agente',
workflow: 'Fluxo de trabalho',
completion: 'Conclusão',
advanced: 'Fluxo de bate-papo',
},
tracing: {
title: 'Rastreamento de desempenho do aplicativo',
description: 'Configurando um provedor LLMOps de terceiros e rastreando o desempenho do aplicativo.',
config: 'Configurar',
collapse: 'Recolher',
expand: 'Expandir',
tracing: 'Rastreamento',
disabled: 'Desativado',
disabledTip: 'Por favor, configure o provedor primeiro',
enabled: 'Em serviço',
tracingDescription: 'Captura o contexto completo da execução do aplicativo, incluindo chamadas LLM, contexto, prompts, solicitações HTTP e mais, para uma plataforma de rastreamento de terceiros.',
configProviderTitle: {
configured: 'Configurado',
notConfigured: 'Configure o provedor para habilitar o rastreamento',
moreProvider: 'Mais provedores',
},
langsmith: {
title: 'LangSmith',
description: 'Uma plataforma de desenvolvedor completa para cada etapa do ciclo de vida do aplicativo impulsionado por LLM.',
},
langfuse: {
title: 'Langfuse',
description: 'Rastreamentos, avaliações, gerenciamento de prompts e métricas para depurar e melhorar seu aplicativo LLM.',
},
inUse: 'Em uso',
configProvider: {
title: 'Configurar ',
placeholder: 'Insira sua {{key}}',
project: 'Projeto',
publicKey: 'Chave Pública',
secretKey: 'Chave Secreta',
viewDocsLink: 'Ver documentação de {{key}}',
removeConfirmTitle: 'Remover configuração de {{key}}?',
removeConfirmContent: 'A configuração atual está em uso, removê-la desligará o recurso de Rastreamento.',
},
view: 'Vista',
opik: {
description: 'Opik é uma plataforma de código aberto para avaliar, testar e monitorar aplicativos LLM.',
title: 'Opik',
},
},
answerIcon: {
descriptionInExplore: 'Se o ícone do WebApp deve ser usado para substituir 🤖 no Explore',
description: 'Se o ícone WebApp deve ser usado para substituir 🤖 no aplicativo compartilhado',
title: 'Use o ícone do WebApp para substituir 🤖',
},
importFromDSLUrlPlaceholder: 'Cole o link DSL aqui',
importFromDSLUrl: 'Do URL',
importFromDSLFile: 'Do arquivo DSL',
importFromDSL: 'Importar de DSL',
mermaid: {
handDrawn: 'Mão desenhada',
classic: 'Clássico',
},
openInExplore: 'Abrir no Explore',
newAppFromTemplate: {
sidebar: {
Programming: 'Programação',
Agent: 'Agente',
HR: 'RH',
Workflow: 'Fluxo de trabalho',
Writing: 'Escrita',
Recommended: 'Recomendado',
Assistant: 'Assistente',
},
searchAllTemplate: 'Pesquisar todos os modelos...',
byCategories: 'POR CATEGORIAS',
},
showMyCreatedAppsOnly: 'Mostrar apenas meus aplicativos criados',
}
export default translation

View File

@@ -0,0 +1,119 @@
const translation = {
currentPlan: 'Plano Atual',
upgradeBtn: {
plain: 'Fazer Upgrade do Plano',
encourage: 'Fazer Upgrade Agora',
encourageShort: 'Upgrade',
},
viewBilling: 'Ver informações de cobrança',
buyPermissionDeniedTip: 'Por favor, entre em contato com o administrador da sua empresa para assinar',
plansCommon: {
title: 'Escolha o plano que melhor atende você',
yearlyTip: 'Receba 2 meses grátis assinando anualmente!',
mostPopular: 'Mais Popular',
planRange: {
monthly: 'Mensalmente',
yearly: 'Anualmente',
},
month: 'mês',
year: 'ano',
save: 'Economize ',
free: 'Grátis',
currentPlan: 'Plano Atual',
contractOwner: 'Entre em contato com o gerente da equipe',
startForFree: 'Comece de graça',
getStartedWith: 'Comece com',
contactSales: 'Fale com a equipe de Vendas',
talkToSales: 'Fale com a equipe de Vendas',
modelProviders: 'Fornecedores de Modelos',
teamMembers: 'Membros da Equipe',
buildApps: 'Construir Aplicações',
vectorSpace: 'Espaço Vetorial',
vectorSpaceBillingTooltip: 'Cada 1MB pode armazenar cerca de 1,2 milhão de caracteres de dados vetorizados (estimado usando OpenAI Embeddings, varia entre os modelos).',
vectorSpaceTooltip: 'O Espaço Vetorial é o sistema de memória de longo prazo necessário para que LLMs compreendam seus dados.',
documentProcessingPriority: 'Prioridade no Processamento de Documentos',
documentProcessingPriorityTip: 'Para maior prioridade no processamento de documentos, faça o upgrade do seu plano.',
documentProcessingPriorityUpgrade: 'Processe mais dados com maior precisão e velocidade.',
priority: {
'standard': 'Padrão',
'priority': 'Prioridade',
'top-priority': 'Prioridade Máxima',
},
logsHistory: 'Histórico de Logs',
days: 'dias',
unlimited: 'Ilimitado',
support: 'Suporte',
supportItems: {
communityForums: 'Fóruns da Comunidade',
emailSupport: 'Suporte por E-mail',
priorityEmail: 'Suporte prioritário por e-mail e chat',
logoChange: 'Mudança de logo',
SSOAuthentication: 'Autenticação SSO',
personalizedSupport: 'Suporte personalizado',
dedicatedAPISupport: 'Suporte dedicado à API',
customIntegration: 'Integração e suporte personalizados',
ragAPIRequest: 'Solicitações API RAG',
agentModel: 'Modelo de Agente',
workflow: 'Fluxo de trabalho',
llmLoadingBalancing: 'Balanceamento de carga LLM',
bulkUpload: 'Upload em massa de documentos',
llmLoadingBalancingTooltip: 'Adicione várias chaves de API aos modelos, efetivamente ignorando os limites de taxa da API. ',
agentMode: 'Modo Agente',
},
comingSoon: 'Em breve',
member: 'Membro',
memberAfter: 'Membro',
messageRequest: {
title: 'Créditos de Mensagem',
tooltip: 'Cotas de invocação de mensagens para vários planos usando modelos da OpenAI (exceto gpt4). Mensagens além do limite usarão sua Chave de API da OpenAI.',
},
annotatedResponse: {
title: 'Limites de Cota de Anotação',
tooltip: 'A edição manual e anotação de respostas oferece habilidades personalizadas de perguntas e respostas de alta qualidade para aplicativos. (Aplicável apenas em aplicativos de chat)',
},
ragAPIRequestTooltip: 'Refere-se ao número de chamadas de API que invocam apenas as capacidades de processamento da base de conhecimento do Dify.',
receiptInfo: 'Somente proprietários e administradores de equipe podem se inscrever e visualizar informações de cobrança',
customTools: 'Ferramentas personalizadas',
documentsUploadQuota: 'Cota de upload de documentos',
annotationQuota: 'Cota de anotação',
contractSales: 'Entre em contato com a equipe de vendas',
unavailable: 'Indisponível',
},
plans: {
sandbox: {
name: 'Sandbox',
description: '200 vezes GPT de teste gratuito',
includesTitle: 'Inclui:',
},
professional: {
name: 'Profissional',
description: 'Para indivíduos e pequenas equipes desbloquearem mais poder de forma acessível.',
includesTitle: 'Tudo no plano gratuito, além de:',
},
team: {
name: 'Equipe',
description: 'Colabore sem limites e aproveite o desempenho de primeira linha.',
includesTitle: 'Tudo no plano Profissional, além de:',
},
enterprise: {
name: 'Empresa',
description: 'Obtenha capacidades completas e suporte para sistemas críticos em larga escala.',
includesTitle: 'Tudo no plano Equipe, além de:',
},
},
vectorSpace: {
fullTip: 'O Espaço Vetorial está cheio.',
fullSolution: 'Faça o upgrade do seu plano para obter mais espaço.',
},
apps: {
fullTipLine1: 'Faça o upgrade do seu plano para',
fullTipLine2: 'construir mais aplicativos.',
},
annotatedResponse: {
fullTipLine1: 'Faça o upgrade do seu plano para',
fullTipLine2: 'anotar mais conversas.',
quotaTitle: 'Cota de Respostas Anotadas',
},
}
export default translation

View File

@@ -0,0 +1,625 @@
const translation = {
api: {
success: 'Sucesso',
actionSuccess: 'Ação bem-sucedida',
saved: 'Salvo',
create: 'Criado',
remove: 'Removido',
},
operation: {
create: 'Criar',
confirm: 'Confirmar',
cancel: 'Cancelar',
clear: 'Limpar',
save: 'Salvar',
saveAndEnable: 'Salvar e Ativar',
edit: 'Editar',
add: 'Adicionar',
added: 'Adicionado',
refresh: 'Reiniciar',
reset: 'Redefinir',
search: 'Buscar',
change: 'Alterar',
remove: 'Remover',
send: 'Enviar',
copy: 'Copiar',
lineBreak: 'Quebra de linha',
sure: 'Tenho certeza',
download: 'Baixar',
delete: 'Excluir',
settings: 'Configurações',
setup: 'Configuração',
getForFree: 'Obter gratuitamente',
reload: 'Recarregar',
ok: 'OK',
log: 'Log',
learnMore: 'Saiba Mais',
params: 'Parâmetros',
duplicate: 'Duplicada',
rename: 'Renomear',
audioSourceUnavailable: 'AudioSource não está disponível',
zoomOut: 'Diminuir o zoom',
zoomIn: 'Ampliar',
copyImage: 'Copiar imagem',
openInNewTab: 'Abrir em nova guia',
viewMore: 'VER MAIS',
regenerate: 'Regenerar',
close: 'Fechar',
saveAndRegenerate: 'Salvar e regenerar pedaços filhos',
view: 'Vista',
submit: 'Enviar',
skip: 'Navio',
imageCopied: 'Imagem copiada',
},
placeholder: {
input: 'Por favor, insira',
select: 'Por favor, selecione',
},
voice: {
language: {
zhHans: 'Chinês',
zhHant: 'Chinês Tradicional',
enUS: 'Inglês',
deDE: 'Alemão',
frFR: 'Francês',
esES: 'Espanhol',
itIT: 'Italiano',
thTH: 'Tailandês',
idID: 'Indonésio',
jaJP: 'Japonês',
koKR: 'Coreano',
ptBR: 'Português',
ruRU: 'Russo',
ukUA: 'Ucraniano',
viVN: 'Vietnamita',
plPL: 'Polonês',
roRO: 'Romeno',
hiIN: 'Hindi',
trTR: 'Turco',
faIR: 'Persa',
},
},
unit: {
char: 'caracteres',
},
actionMsg: {
noModification: 'Sem modificações no momento.',
modifiedSuccessfully: 'Modificado com sucesso',
modifiedUnsuccessfully: 'Modificado sem sucesso',
copySuccessfully: 'Copiado com sucesso',
paySucceeded: 'Pagamento realizado com sucesso',
payCancelled: 'Pagamento cancelado',
generatedSuccessfully: 'Gerado com sucesso',
generatedUnsuccessfully: 'Geração sem sucesso',
},
model: {
params: {
temperature: 'Temperatura',
temperatureTip:
'Controla a aleatoriedade: Diminuir resulta em conclusões menos aleatórias. À medida que a temperatura se aproxima de zero, o modelo se tornará determinístico e repetitivo.',
top_p: 'Top P',
top_pTip:
'Controla a diversidade via amostragem de núcleo: 0.5 significa que metade de todas as opções ponderadas por probabilidade são consideradas.',
presence_penalty: 'Penalidade de presença',
presence_penaltyTip:
'Quanto penalizar novos tokens com base em se eles aparecem no texto até agora.\nAumenta a probabilidade do modelo de falar sobre novos tópicos.',
frequency_penalty: 'Penalidade de frequência',
frequency_penaltyTip:
'Quanto penalizar novos tokens com base em sua frequência existente no texto até agora.\nDiminui a probabilidade do modelo de repetir a mesma linha textualmente.',
max_tokens: 'Máximo de tokens',
max_tokensTip:
'Usado para limitar o comprimento máximo da resposta, em tokens. \nValores maiores podem limitar o espaço restante para palavras de prompt, registros de bate-papo e Conhecimento. \nRecomenda-se defini-lo abaixo de dois terços\ngpt-4-1106-preview, gpt-4-vision-preview max token (entrada 128k saída 4k)',
maxTokenSettingTip: 'Sua configuração máxima de token é alta, limitando potencialmente o espaço para palavras de prompt, consultas e dados. Considere definir abaixo de 2/3.',
setToCurrentModelMaxTokenTip: 'O máximo de tokens é atualizado para 80% do máximo de token do modelo atual {{maxToken}}.',
stop_sequences: 'Sequências de parada',
stop_sequencesTip: 'Até quatro sequências onde a API irá parar de gerar mais tokens. O texto retornado não conterá a sequência de parada.',
stop_sequencesPlaceholder: 'Digite a sequência e pressione Tab',
},
tone: {
Creative: 'Criativo',
Balanced: 'Equilibrado',
Precise: 'Preciso',
Custom: 'Personalizado',
},
addMoreModel: 'Vá para configurações para adicionar mais modelos',
},
menus: {
status: 'beta',
explore: 'Explorar',
apps: 'Estúdio',
plugins: 'Plugins',
pluginsTips: 'Integre plugins de terceiros ou crie plugins de IA compatíveis com o ChatGPT.',
datasets: 'Conhecimento',
datasetsTips: 'EM BREVE: Importe seus próprios dados de texto ou escreva dados em tempo real via Webhook para aprimoramento do contexto LLM.',
newApp: 'Novo App',
newDataset: 'Criar Conhecimento',
tools: 'Ferramentas',
},
userProfile: {
settings: 'Configurações',
emailSupport: 'Suporte por e-mail',
workspace: 'Espaço de trabalho',
createWorkspace: 'Criar Espaço de Trabalho',
helpCenter: 'Ajuda',
communityFeedback: 'Feedback',
roadmap: 'Roteiro',
community: 'Comunidade',
about: 'Sobre',
logout: 'Sair',
},
settings: {
accountGroup: 'CONTA',
workplaceGroup: 'ESPAÇO DE TRABALHO',
account: 'Minha conta',
members: 'Membros',
billing: 'Faturamento',
integrations: 'Integrações',
language: 'Idioma',
provider: 'Fornecedor de modelo',
dataSource: 'Fonte de dados',
plugin: 'Plugins',
apiBasedExtension: 'Extensão baseada em API',
},
account: {
avatar: 'Avatar',
name: 'Nome',
email: 'E-mail',
password: 'Senha',
passwordTip: 'Você pode definir uma senha permanente se não quiser usar códigos de login temporários',
setPassword: 'Definir uma senha',
resetPassword: 'Redefinir senha',
currentPassword: 'Senha atual',
newPassword: 'Nova senha',
confirmPassword: 'Confirmar senha',
notEqual: 'As duas senhas são diferentes.',
langGeniusAccount: 'Conta Dify',
langGeniusAccountTip: 'Sua conta Dify e dados de usuário associados.',
editName: 'Editar Nome',
showAppLength: 'Mostrar {{length}} apps',
delete: 'Excluir conta',
deleteTip: 'Excluir sua conta apagará permanentemente todos os seus dados e eles não poderão ser recuperados.',
deleteConfirmTip: 'Para confirmar, envie o seguinte do seu e-mail registrado para ',
myAccount: 'Minha Conta',
account: 'Conta',
studio: 'Estúdio Dify',
deletePrivacyLinkTip: 'Para obter mais informações sobre como lidamos com seus dados, consulte nosso',
deletePrivacyLink: 'Política de privacidade.',
deleteSuccessTip: 'Sua conta precisa de tempo para concluir a exclusão. Enviaremos um e-mail quando tudo estiver pronto.',
deleteLabel: 'Para confirmar, digite seu e-mail abaixo',
deletePlaceholder: 'Por favor, digite seu e-mail',
sendVerificationButton: 'Enviar código de verificação',
verificationLabel: 'Código de verificação',
verificationPlaceholder: 'Cole o código de 6 dígitos',
permanentlyDeleteButton: 'Excluir conta permanentemente',
feedbackTitle: 'Realimentação',
feedbackLabel: 'Diga-nos por que você excluiu sua conta?',
feedbackPlaceholder: 'Opcional',
},
members: {
team: 'Equipe',
invite: 'Adicionar',
name: 'NOME',
lastActive: 'ÚLTIMA ATIVIDADE',
role: 'FUNÇÕES',
pending: 'Pendente...',
owner: 'Proprietário',
admin: 'Admin',
adminTip: 'Pode criar aplicativos e gerenciar configurações da equipe',
normal: 'Normal',
normalTip: 'Só pode usar aplicativos, não pode criar aplicativos',
editor: 'Editor',
editorTip: 'Pode editar aplicativos, mas não pode gerenciar configurações da equipe',
inviteTeamMember: 'Adicionar membro da equipe',
inviteTeamMemberTip: 'Eles podem acessar os dados da sua equipe diretamente após fazer login.',
emailNotSetup: 'O servidor de e-mail não está configurado, então os e-mails de convite não podem ser enviados. Por favor, notifique os usuários sobre o link de convite que será emitido após o convite.',
email: 'E-mail',
emailInvalid: 'Formato de e-mail inválido',
emailPlaceholder: 'Por favor, insira e-mails',
sendInvite: 'Enviar Convite',
invitedAsRole: 'Convidado como usuário {{role}}',
invitationSent: 'Convite enviado',
invitationSentTip: 'Convite enviado e eles podem fazer login no Dify para acessar os dados da sua equipe.',
invitationLink: 'Link do Convite',
failedInvitationEmails: 'Os seguintes usuários não foram convidados com sucesso',
ok: 'OK',
removeFromTeam: 'Remover da equipe',
removeFromTeamTip: 'Removerá o acesso da equipe',
setAdmin: 'Definir como administrador',
setMember: 'Definir como membro comum',
setEditor: 'Definir como editor',
disInvite: 'Cancelar o convite',
deleteMember: 'Excluir Membro',
you: '(Você)',
datasetOperatorTip: 'Só pode gerenciar a base de dados de conhecimento',
builder: 'Construtor',
setBuilder: 'Definir como construtor',
builderTip: 'Pode criar e editar seus próprios aplicativos',
datasetOperator: 'Administrador de conhecimento',
},
integrations: {
connected: 'Conectado',
google: 'Google',
googleAccount: 'Faça login com a conta do Google',
github: 'GitHub',
githubAccount: 'Faça login com a conta do GitHub',
connect: 'Conectar',
},
language: {
displayLanguage: 'Idioma de exibição',
timezone: 'Fuso horário',
},
provider: {
apiKey: 'Chave da API',
enterYourKey: 'Insira sua chave da API aqui',
invalidKey: 'Chave da API OpenAI inválida',
validatedError: 'Falha na validação: ',
validating: 'Validando chave...',
saveFailed: 'Falha ao salvar a chave da API',
apiKeyExceedBill: 'Esta CHAVE DE API não tem quota disponível, por favor, leia',
addKey: 'Adicionar Chave',
comingSoon: 'Em breve',
editKey: 'Editar',
invalidApiKey: 'Chave da API inválida',
azure: {
apiBase: 'Base da API',
apiBasePlaceholder: 'A URL base da API do seu ponto de extremidade Azure OpenAI.',
apiKey: 'Chave da API',
apiKeyPlaceholder: 'Insira sua chave da API aqui',
helpTip: 'Saiba mais sobre o Serviço Azure OpenAI',
},
openaiHosted: {
openaiHosted: 'OpenAI Hospedado',
onTrial: 'EM TESTE',
exhausted: 'COTA ESGOTADA',
desc: 'O serviço de hospedagem OpenAI fornecido pela Dify permite que você use modelos como GPT-3.5. Antes que sua cota de teste seja esgotada, você precisa configurar outros fornecedores de modelos.',
callTimes: 'Chamadas',
usedUp: 'Cota de teste esgotada. Adicione seu próprio Fornecedor de Modelo.',
useYourModel: 'Atualmente usando seu próprio Fornecedor de Modelo.',
close: 'Fechar',
},
anthropicHosted: {
anthropicHosted: 'Anthropic Claude',
onTrial: 'EM TESTE',
exhausted: 'COTA ESGOTADA',
desc: 'Modelo poderoso, que se destaca em uma ampla gama de tarefas, desde diálogos sofisticados e geração de conteúdo criativo até instruções detalhadas.',
callTimes: 'Chamadas',
usedUp: 'Cota de teste esgotada. Adicione seu próprio Fornecedor de Modelo.',
useYourModel: 'Atualmente usando seu próprio Fornecedor de Modelo.',
close: 'Fechar',
},
anthropic: {
using: 'A capacidade de incorporação está sendo utilizada',
enableTip: 'Para habilitar o modelo da Anthropic, você precisa vincular ao OpenAI ou ao Azure OpenAI Service primeiro.',
notEnabled: 'Não habilitado',
keyFrom: 'Obtenha sua chave da API da Anthropic',
},
encrypted: {
front: 'Sua CHAVE DA API será criptografada e armazenada usando',
back: ' tecnologia.',
},
},
modelProvider: {
notConfigured: 'O modelo do sistema ainda não foi totalmente configurado e algumas funções podem estar indisponíveis.',
systemModelSettings: 'Configurações do Modelo do Sistema',
systemModelSettingsLink: 'Por que é necessário configurar um modelo do sistema?',
selectModel: 'Selecione seu modelo',
setupModelFirst: 'Por favor, configure seu modelo primeiro',
systemReasoningModel: {
key: 'Modelo de Raciocínio do Sistema',
tip: 'Defina o modelo de inferência padrão a ser usado para criar aplicativos, bem como recursos como geração de nomes de diálogo e sugestão de próxima pergunta também usarão o modelo de inferência padrão.',
},
embeddingModel: {
key: 'Modelo de Incorporação',
tip: 'Defina o modelo padrão para o processamento de incorporação de documentos do Conhecimento, tanto a recuperação quanto a importação do Conhecimento usam este modelo de Incorporação para processamento de vetorização. Alterar causará inconsistência na dimensão do vetor entre o Conhecimento importado e a pergunta, resultando em falha na recuperação. Para evitar falhas na recuperação, não altere este modelo indiscriminadamente.',
required: 'O modelo de Incorporação é obrigatório',
},
speechToTextModel: {
key: 'Modelo de Fala para Texto',
tip: 'Defina o modelo padrão para entrada de fala para texto na conversa.',
},
ttsModel: {
key: 'Modelo de Texto para Fala',
tip: 'Defina o modelo padrão para entrada de texto para fala na conversa.',
},
rerankModel: {
key: 'Modelo de Reordenação',
tip: 'O modelo de reordenaenação reorganizará a lista de documentos candidatos com base na correspondência semântica com a consulta do usuário, melhorando os resultados da classificação semântica',
},
quota: 'Quota',
searchModel: 'Modelo de pesquisa',
noModelFound: 'Nenhum modelo encontrado para {{model}}',
models: 'Modelos',
showMoreModelProvider: 'Mostrar mais provedor de modelo',
selector: {
tip: 'Este modelo foi removido. Adicione um modelo ou selecione outro modelo.',
emptyTip: 'Nenhum modelo disponível',
emptySetting: 'Por favor, vá para configurações para configurar',
rerankTip: 'Por favor, configure o modelo de reordenação',
},
card: {
quota: 'QUOTA',
onTrial: 'Em Teste',
paid: 'Pago',
quotaExhausted: 'Quota esgotada',
callTimes: 'Chamadas',
tokens: 'Tokens',
buyQuota: 'Comprar Quota',
priorityUse: 'Uso prioritário',
removeKey: 'Remover Chave da API',
tip: 'A prioridade será dada à quota paga. A quota de teste será usada após a quota paga ser esgotada.',
},
item: {
deleteDesc: '{{modelName}} está sendo usado como modelos de raciocínio do sistema. Algumas funções não estarão disponíveis após a remoção. Por favor, confirme.',
freeQuota: 'QUOTA GRATUITA',
},
addApiKey: 'Adicionar sua chave da API',
invalidApiKey: 'Chave da API inválida',
encrypted: {
front: 'Sua CHAVE DA API será criptografada e armazenada usando',
back: ' tecnologia.',
},
freeQuota: {
howToEarn: 'Como ganhar',
},
addMoreModelProvider: 'ADICIONAR MAIS FORNECEDOR DE MODELO',
addModel: 'Adicionar Modelo',
modelsNum: '{{num}} Modelos',
showModels: 'Mostrar Modelos',
showModelsNum: 'Mostrar {{num}} Modelos',
collapse: 'Recolher',
config: 'Configuração',
modelAndParameters: 'Modelo e Parâmetros',
model: 'Modelo',
featureSupported: '{{feature}} suportado',
callTimes: 'Chamadas',
credits: 'Créditos de Mensagem',
buyQuota: 'Comprar Quota',
getFreeTokens: 'Obter Tokens Gratuitos',
priorityUsing: 'Uso prioritário',
deprecated: 'Obsoleto',
confirmDelete: 'confirmar exclusão?',
quotaTip: 'Tokens gratuitos disponíveis restantes',
loadPresets: 'Carregar Predefinições',
parameters: 'PARÂMETROS',
loadBalancingDescription: 'Reduza a pressão com vários conjuntos de credenciais.',
configLoadBalancing: 'Balanceamento de carga de configuração',
upgradeForLoadBalancing: 'Atualize seu plano para habilitar o balanceamento de carga.',
providerManaged: 'Gerenciado pelo provedor',
apiKeyStatusNormal: 'O status do APIKey é normal',
loadBalancing: 'Balanceamento de carga',
addConfig: 'Adicionar configuração',
providerManagedDescription: 'Use o único conjunto de credenciais fornecido pelo provedor de modelo.',
apiKey: 'CHAVE DE API',
loadBalancingLeastKeyWarning: 'Para habilitar o balanceamento de carga, pelo menos 2 chaves devem estar habilitadas.',
editConfig: 'Editar configuração',
defaultConfig: 'Configuração padrão',
modelHasBeenDeprecated: 'Este modelo foi preterido',
loadBalancingInfo: 'Por padrão, o balanceamento de carga usa a estratégia Round-robin. Se a limitação de taxa for acionada, um período de espera de 1 minuto será aplicado.',
apiKeyRateLimit: 'O limite de taxa foi atingido, disponível após {{seconds}}s',
loadBalancingHeadline: 'Balanceamento de carga',
},
dataSource: {
add: 'Adicionar uma fonte de dados',
connect: 'Conectar',
notion: {
title: 'Notion',
description: 'Usando o Notion como fonte de dados para o Conhecimento.',
connectedWorkspace: 'Espaço de trabalho conectado',
addWorkspace: 'Adicionar espaço de trabalho',
connected: 'Conectado',
disconnected: 'Desconectado',
changeAuthorizedPages: 'Alterar páginas autorizadas',
pagesAuthorized: 'Páginas autorizadas',
sync: 'Sincronizar',
remove: 'Remover',
selector: {
pageSelected: 'Páginas Selecionadas',
searchPages: 'Pesquisar páginas...',
noSearchResult: 'Nenhum resultado de pesquisa',
addPages: 'Adicionar páginas',
preview: 'PRÉ-VISUALIZAÇÃO',
},
},
website: {
inactive: 'Inativo',
active: 'Ativo',
title: 'Local na rede Internet',
with: 'Com',
configuredCrawlers: 'Rastreadores configurados',
description: 'Importe conteúdo de sites usando o rastreador da Web.',
},
configure: 'Configurar',
},
plugin: {
serpapi: {
apiKey: 'Chave da API',
apiKeyPlaceholder: 'Insira sua chave da API',
keyFrom: 'Obtenha sua chave da SerpAPI na página da conta da SerpAPI',
},
},
apiBasedExtension: {
title: 'As extensões de API fornecem gerenciamento centralizado de API, simplificando a configuração para uso fácil em todos os aplicativos da Dify.',
link: 'Saiba como desenvolver sua própria Extensão de API.',
linkUrl: 'https://docs.dify.ai/features/extension/api_based_extension',
add: 'Adicionar Extensão de API',
selector: {
title: 'Extensão de API',
placeholder: 'Por favor, selecione a extensão de API',
manage: 'Gerenciar Extensão de API',
},
modal: {
title: 'Adicionar Extensão de API',
editTitle: 'Editar Extensão de API',
name: {
title: 'Nome',
placeholder: 'Por favor, insira o nome',
},
apiEndpoint: {
title: 'Endpoint da API',
placeholder: 'Por favor, insira o endpoint da API',
},
apiKey: {
title: 'Chave da API',
placeholder: 'Por favor, insira a chave da API',
lengthError: 'O comprimento da chave da API não pode ser inferior a 5 caracteres',
},
},
type: 'Tipo',
},
about: {
changeLog: 'Registro de Alterações',
updateNow: 'Atualizar agora',
nowAvailable: 'Dify {{version}} já está disponível.',
latestAvailable: 'Dify {{version}} é a última versão disponível.',
},
appMenus: {
overview: 'Monitoramento',
promptEng: 'Orquestrar',
apiAccess: 'Acesso à API',
logAndAnn: 'Logs e Anúncios',
logs: 'Logs',
},
environment: {
testing: 'TESTE',
development: 'DESENVOLVIMENTO',
},
appModes: {
completionApp: 'Gerador de Texto',
chatApp: 'Aplicativo de Bate-papo',
},
datasetMenus: {
documents: 'Documentos',
hitTesting: 'Teste de Recuperação',
settings: 'Configurações',
emptyTip: 'O Conhecimento não foi associado, por favor, vá para o aplicativo ou plug-in para completar a associação.',
viewDoc: 'Ver documentação',
relatedApp: 'aplicativos relacionados',
noRelatedApp: 'Nenhum aplicativo vinculado',
},
voiceInput: {
speaking: 'Fale agora...',
converting: 'Convertendo para texto...',
notAllow: 'microfone não autorizado',
},
modelName: {
'gpt-3.5-turbo': 'GPT-3.5-Turbo',
'gpt-3.5-turbo-16k': 'GPT-3.5-Turbo-16K',
'gpt-4': 'GPT-4',
'gpt-4-32k': 'GPT-4-32K',
'text-davinci-003': 'Texto-Davinci-003',
'text-embedding-ada-002': 'Texto-Embutimento-Ada-002',
'whisper-1': 'Sussurro-1',
'claude-instant-1': 'Claude-Instantâneo',
'claude-2': 'Claude-2',
},
chat: {
renameConversation: 'Renomear Conversa',
conversationName: 'Nome da conversa',
conversationNamePlaceholder: 'Por favor, insira o nome da conversa',
conversationNameCanNotEmpty: 'Nome da conversa obrigatório',
citation: {
title: 'CITAÇÕES',
linkToDataset: 'Link para Conhecimento',
characters: 'Personagens:',
hitCount: 'Contagem de recuperação:',
vectorHash: 'Hash de vetor:',
hitScore: 'Pontuação de recuperação:',
},
inputPlaceholder: 'Fale com o bot',
},
promptEditor: {
placeholder: 'Escreva sua palavra de incentivo aqui, digite \'{\' para inserir uma variável, digite \'/\' para inserir um bloco de conteúdo de incentivo',
context: {
item: {
title: 'Contexto',
desc: 'Inserir modelo de contexto',
},
modal: {
title: '{{num}} Conhecimentos no Contexto',
add: 'Adicionar Contexto',
footer: 'Você pode gerenciar contextos na seção Contexto abaixo.',
},
},
history: {
item: {
title: 'Histórico de Conversas',
desc: 'Inserir modelo de mensagem histórica',
},
modal: {
title: 'EXEMPLO',
user: 'Olá',
assistant: 'Olá! Como posso ajudar hoje?',
edit: 'Editar Nomes de Função da Conversa',
},
},
variable: {
item: {
title: 'Variáveis e Ferramentas Externas',
desc: 'Inserir Variáveis e Ferramentas Externas',
},
outputToolDisabledItem: {
title: 'Variáveis',
desc: 'Inserir variáveis',
},
modal: {
add: 'Nova variável',
addTool: 'Nova ferramenta',
},
},
query: {
item: {
title: 'Consulta',
desc: 'Inserir modelo de consulta do usuário',
},
},
existed: 'Já existe no incentivo',
},
imageUploader: {
uploadFromComputer: 'Enviar do Computador',
uploadFromComputerReadError: 'Falha ao ler a imagem, por favor, tente novamente.',
uploadFromComputerUploadError: 'Falha ao enviar a imagem, por favor, envie novamente.',
uploadFromComputerLimit: 'As imagens enviadas não podem exceder {{size}} MB',
pasteImageLink: 'Colar link da imagem',
pasteImageLinkInputPlaceholder: 'Cole o link da imagem aqui',
pasteImageLinkInvalid: 'Link da imagem inválido',
imageUpload: 'Enviar Imagem',
},
tag: {
placeholder: 'Todas as tags',
addNew: 'Adicionar nova tag',
noTag: 'Sem tags',
noTagYet: 'Nenhuma tag ainda',
addTag: 'adicionar etiqueta',
editTag: 'Editar tags',
manageTags: 'Gerenciar tags',
selectorPlaceholder: 'Digite para pesquisar ou criar',
create: 'Criar',
delete: 'Excluir etiqueta',
deleteTip: 'A tag está sendo usada, excluí-la?',
created: 'Tag criada com sucesso',
failed: 'Falha na criação da tag',
},
errorMsg: {
fieldRequired: '{{field}} é obrigatório',
urlError: 'URL deve começar com http:// ou https://',
},
fileUploader: {
uploadFromComputer: 'Upload local',
pasteFileLink: 'Colar link do arquivo',
pasteFileLinkInputPlaceholder: 'Digite o URL...',
pasteFileLinkInvalid: 'Link de arquivo inválido',
fileExtensionNotSupport: 'Extensão de arquivo não suportada',
uploadFromComputerReadError: 'Falha na leitura do arquivo, tente novamente.',
uploadFromComputerLimit: 'Carregar arquivo não pode exceder {{size}}',
uploadFromComputerUploadError: 'Falha no upload do arquivo, faça o upload novamente.',
},
license: {
expiring: 'Expirando em um dia',
expiring_plural: 'Expirando em {{count}} dias',
},
pagination: {
perPage: 'Itens por página',
},
}
export default translation

View File

@@ -0,0 +1,30 @@
const translation = {
custom: 'Personalização',
upgradeTip: {
prefix: 'Atualize seu plano para',
suffix: 'personalizar sua marca.',
},
webapp: {
title: 'Personalizar marca do WebApp',
removeBrand: 'Remover Powered by Dify',
changeLogo: 'Alterar Imagem da Marca Powered by',
changeLogoTip: 'Formato SVG ou PNG com tamanho mínimo de 40x40px',
},
app: {
title: 'Personalizar cabeçalho do aplicativo',
changeLogoTip: 'Formato SVG ou PNG com tamanho mínimo de 80x80px',
},
upload: 'Enviar',
uploading: 'Enviando',
uploadedFail: 'Falha no envio da imagem, por favor, envie novamente.',
change: 'Alterar',
apply: 'Aplicar',
restore: 'Restaurar Padrões',
customize: {
contactUs: ' entre em contato conosco ',
prefix: 'Para personalizar o logotipo da marca dentro do aplicativo, por favor',
suffix: 'para fazer upgrade para a edição Enterprise.',
},
}
export default translation

View File

@@ -0,0 +1,204 @@
const translation = {
steps: {
header: {
creation: 'Criar Conhecimento',
update: 'Adicionar dados',
},
one: 'Escolher fonte de dados',
two: 'Pré-processamento e Limpeza de Texto',
three: 'Executar e finalizar',
},
error: {
unavailable: 'Este Conhecimento não está disponível',
},
stepOne: {
filePreview: 'Visualização do arquivo',
pagePreview: 'Visualização da página',
dataSourceType: {
file: 'Importar de arquivo de texto',
notion: 'Sincronizar do Notion',
web: 'Sincronizar de site',
},
uploader: {
title: 'Enviar arquivo de texto',
button: 'Arraste e solte o arquivo, ou',
browse: 'Navegar',
tip: 'Suporta {{supportTypes}}. Máximo de {{size}}MB cada.',
validation: {
typeError: 'Tipo de arquivo não suportado',
size: 'Arquivo muito grande. Máximo é {{size}}MB',
count: 'Vários arquivos não suportados',
filesNumber: 'Limite de upload em massa {{filesNumber}}.',
},
cancel: 'Cancelar',
change: 'Alterar',
failed: 'Falha no envio',
},
notionSyncTitle: 'Notion não está conectado',
notionSyncTip: 'Para sincronizar com o Notion, a conexão com o Notion deve ser estabelecida primeiro.',
connect: 'Ir para conexão',
button: 'Próximo',
emptyDatasetCreation: 'Quero criar um Conhecimento vazio',
modal: {
title: 'Criar um Conhecimento vazio',
tip: 'Um Conhecimento vazio não conterá documentos e você poderá fazer upload de documentos a qualquer momento.',
input: 'Nome do Conhecimento',
placeholder: 'Por favor, insira',
nameNotEmpty: 'O nome não pode estar vazio',
nameLengthInvalid: 'O nome deve ter entre 1 e 40 caracteres',
cancelButton: 'Cancelar',
confirmButton: 'Criar',
failed: 'Falha na criação',
},
website: {
fireCrawlNotConfiguredDescription: 'Configure o Firecrawl com a chave de API para usá-lo.',
run: 'Correr',
unknownError: 'Erro desconhecido',
crawlSubPage: 'Rastrear subpáginas',
selectAll: 'Selecionar tudo',
resetAll: 'Redefinir tudo',
firecrawlDocLink: 'https://docs.dify.ai/guides/knowledge-base/sync-from-website',
includeOnlyPaths: 'Incluir apenas caminhos',
configure: 'Configurar',
limit: 'Limite',
firecrawlDoc: 'Documentos do Firecrawl',
preview: 'Visualizar',
options: 'Opções',
scrapTimeInfo: 'Páginas {{total}} raspadas no total dentro de {{time}}s',
exceptionErrorTitle: 'Ocorreu uma exceção durante a execução do trabalho Firecrawl:',
fireCrawlNotConfigured: 'O Firecrawl não está configurado',
maxDepthTooltip: 'Profundidade máxima para rastrear em relação ao URL inserido. A profundidade 0 apenas raspa a página do url inserido, a profundidade 1 raspa o url e tudo depois de inseridoURL + um / e assim por diante.',
firecrawlTitle: 'Extraia conteúdo da web com 🔥Firecrawl',
maxDepth: 'Profundidade máxima',
totalPageScraped: 'Total de páginas raspadas:',
excludePaths: 'Excluir caminhos',
extractOnlyMainContent: 'Extraia apenas o conteúdo principal (sem cabeçalhos, navs, rodapés, etc.)',
jinaReaderNotConfiguredDescription: 'Configure o Jina Reader inserindo sua chave de API gratuita para acesso.',
jinaReaderDoc: 'Saiba mais sobre o Jina Reader',
chooseProvider: 'Selecione um provedor',
jinaReaderNotConfigured: 'Jina Reader não está configurado',
jinaReaderDocLink: 'https://jina.ai/reader',
useSitemap: 'Usar o mapa do site',
useSitemapTooltip: 'Siga o mapa do site para rastrear o site. Caso contrário, o Jina Reader rastreará iterativamente com base na relevância da página, produzindo menos páginas, mas de maior qualidade.',
jinaReaderTitle: 'Converter todo o site em Markdown',
},
cancel: 'Cancelar',
},
stepTwo: {
segmentation: 'Configurações de fragmentação',
auto: 'Automático',
autoDescription: 'Configura automaticamente as regras de fragmentação e pré-processamento. Usuários não familiarizados são recomendados a selecionar esta opção.',
custom: 'Personalizado',
customDescription: 'Personalize as regras de fragmentação, comprimento dos fragmentos e regras de pré-processamento, etc.',
separator: 'Identificador de segmento',
separatorPlaceholder: 'Por exemplo, nova linha (\\\\n) ou separador especial (como "***")',
maxLength: 'Comprimento máximo do fragmento',
overlap: 'Sobreposição de blocos',
overlapTip: 'Configurar a sobreposição de blocos pode manter a relevância semântica entre eles, melhorando o efeito de recuperação. É recomendado definir de 10% a 25% do tamanho máximo do bloco.',
overlapCheck: 'a sobreposição de blocos não deve ser maior que o comprimento máximo do bloco',
rules: 'Regras de pré-processamento de texto',
removeExtraSpaces: 'Substituir espaços consecutivos, quebras de linha e tabulações',
removeUrlEmails: 'Excluir todos os URLs e endereços de e-mail',
removeStopwords: 'Remover palavras irrelevantes como "um", "uma", "o"',
preview: 'Confirmar e visualizar',
reset: 'Redefinir',
indexMode: 'Modo de índice',
qualified: 'Alta qualidade',
recommend: 'Recomendado',
qualifiedTip: 'Chama a interface de incorporação do sistema padrão para processamento, fornecendo maior precisão ao consultar.',
warning: 'Por favor, configure primeiro a chave da API do provedor do modelo.',
click: 'Ir para configurações',
economical: 'Econômico',
economicalTip: 'Use motores de vetor offline, índices de palavras-chave, etc. para reduzir a precisão sem gastar tokens',
QATitle: 'Fragmentação no formato de Perguntas e Respostas',
QATip: 'Habilitar esta opção consumirá mais tokens',
QALanguage: 'Fragmentar usando',
estimateCost: 'Estimativa',
estimateSegment: 'Fragmentos estimados',
segmentCount: 'fragmentos',
calculating: 'Calculando...',
fileSource: 'Pré-processar documentos',
notionSource: 'Pré-processar páginas',
other: 'e outros ',
fileUnit: ' arquivos',
notionUnit: ' páginas',
previousStep: 'Passo anterior',
nextStep: 'Salvar e Processar',
save: 'Salvar e Processar',
cancel: 'Cancelar',
sideTipTitle: 'Por que fragmentar e pré-processar?',
sideTipP1: 'Ao processar dados de texto, fragmentar e limpar são duas etapas importantes de pré-processamento.',
sideTipP2: 'A fragmentação divide um texto longo em parágrafos para que os modelos possam entender melhor. Isso melhora a qualidade e relevância dos resultados do modelo.',
sideTipP3: 'A limpeza remove caracteres e formatos desnecessários, tornando o Conhecimento mais limpo e fácil de analisar.',
sideTipP4: 'Fragmentação e limpeza adequadas melhoram o desempenho do modelo, fornecendo resultados mais precisos e valiosos.',
previewTitle: 'Visualização',
previewTitleButton: 'Visualização',
previewButton: 'Alternar para visualização no formato de Perguntas e Respostas',
previewSwitchTipStart: 'A visualização atual do fragmento está no formato de texto, alternar para uma visualização no formato de Perguntas e Respostas irá',
previewSwitchTipEnd: ' consumir tokens adicionais',
characters: 'caracteres',
indexSettingTip: 'Para alterar o método de índice, por favor vá para as ',
retrievalSettingTip: 'Para alterar o método de índice, por favor vá para as ',
datasetSettingLink: 'configurações do Conhecimento.',
websiteSource: 'Site de pré-processamento',
webpageUnit: 'Páginas',
separatorTip: 'Um delimitador é o caractere usado para separar o texto. \\n\\n e \\n são delimitadores comumente usados para separar parágrafos e linhas. Combinado com vírgulas (\\n\\n,\\n), os parágrafos serão segmentados por linhas ao exceder o comprimento máximo do bloco. Você também pode usar delimitadores especiais definidos por você (por exemplo, ***).',
maxLengthCheck: 'O comprimento máximo do chunk deve ser inferior a {{limit}}',
parentChildDelimiterTip: 'Um delimitador é o caractere usado para separar o texto. \\n\\n é recomendado para dividir o documento original em grandes partes pai. Você também pode usar delimitadores especiais definidos por você.',
parentChildChunkDelimiterTip: 'Um delimitador é o caractere usado para separar o texto. \\n é recomendado para dividir partes pai em pequenas partes filhas. Você também pode usar delimitadores especiais definidos por você.',
notAvailableForQA: 'Não disponível para o Índice de P e R',
parentChild: 'Pai-filho',
general: 'Geral',
qaSwitchHighQualityTipTitle: 'O formato de perguntas e respostas requer um método de indexação de alta qualidade',
parentChunkForContext: 'Parte-pai para contexto',
switch: 'Interruptor',
fullDoc: 'Doc completo',
qaSwitchHighQualityTipContent: 'Atualmente, apenas o método de índice de alta qualidade dá suporte ao agrupamento no formato Q&A. Gostaria de mudar para o modo de alta qualidade?',
childChunkForRetrieval: 'Filho-pedaço para recuperação',
useQALanguage: 'Chunk usando o formato de perguntas e respostas em',
previewChunk: 'Visualizar parte',
notAvailableForParentChild: 'Não disponível para Índice pai-filho',
paragraph: 'Parágrafo',
parentChildTip: 'Ao usar o modo pai-filho, o filho-chunk é usado para recuperação e o pai-chunk é usado para recall como contexto.',
generalTip: 'Modo de agrupamento de texto geral, os pedaços recuperados e recuperados são os mesmos.',
highQualityTip: 'Depois de concluir a incorporação no modo de alta qualidade, a reversão para o modo econômico não estará disponível.',
previewChunkTip: 'Clique no botão \'Preview Chunk\' à esquerda para carregar a visualização',
fullDocTip: 'O documento inteiro é usado como parte pai e recuperado diretamente. Observe que, por motivos de desempenho, o texto que exceder 10000 tokens será truncado automaticamente.',
paragraphTip: 'Esse modo divide o texto em parágrafos com base em delimitadores e no comprimento máximo da parte, usando o texto dividido como a parte pai para recuperação.',
previewChunkCount: '{{contagem}} Partes estimadas',
},
stepThree: {
creationTitle: '🎉 Conhecimento criado',
creationContent: 'Nomeamos automaticamente o Conhecimento, você pode modificá-lo a qualquer momento',
label: 'Nome do Conhecimento',
additionTitle: '🎉 Documento enviado',
additionP1: 'O documento foi enviado para o Conhecimento',
additionP2: ', você pode encontrá-lo na lista de documentos do Conhecimento.',
stop: 'Parar processamento',
resume: 'Continuar processamento',
navTo: 'Ir para documento',
sideTipTitle: 'O que fazer em seguida',
sideTipContent: 'Após a conclusão da indexação do documento, o Conhecimento pode ser integrado à aplicação como contexto. Você pode encontrar a configuração de contexto na página de orquestração de prompts. Você também pode criá-lo como um plugin de indexação ChatGPT independente para lançamento.',
modelTitle: 'Tem certeza de que deseja parar a incorporação?',
modelContent: 'Se você precisar continuar o processamento posteriormente, você continuará de onde parou.',
modelButtonConfirm: 'Confirmar',
modelButtonCancel: 'Cancelar',
},
firecrawl: {
apiKeyPlaceholder: 'Chave de API do firecrawl.dev',
configFirecrawl: 'Configurar 🔥o Firecrawl',
getApiKeyLinkText: 'Obtenha sua chave de API do firecrawl.dev',
},
jinaReader: {
getApiKeyLinkText: 'Obtenha sua chave de API gratuita em jina.ai',
configJinaReader: 'Configurar o Jina Reader',
apiKeyPlaceholder: 'Chave de API do jina.ai',
},
otherDataSource: {
learnMore: 'Saiba Mais',
description: 'Atualmente, a base de conhecimento da Dify possui apenas fontes de dados limitadas. Contribuir com uma fonte de dados para a base de conhecimento Dify é uma maneira fantástica de ajudar a aumentar a flexibilidade e o poder da plataforma para todos os usuários. Nosso guia de contribuição facilita o início. Clique no link abaixo para saber mais.',
title: 'Conectar-se a outras fontes de dados?',
},
}
export default translation

View File

@@ -0,0 +1,395 @@
const translation = {
list: {
title: 'Documentos',
desc: 'Todos os arquivos do Knowledge são mostrados aqui, e todo o Knowledge pode ser vinculado a citações do Dify ou indexado por meio do plugin Chat.',
addFile: 'adicionar arquivo',
addPages: 'Adicionar Páginas',
table: {
header: {
fileName: 'NOME DO ARQUIVO',
words: 'PALAVRAS',
hitCount: 'CONTAGEM DE RECUPERAÇÃO',
uploadTime: 'HORA DO UPLOAD',
status: 'STATUS',
action: 'AÇÃO',
chunkingMode: 'MODO DE FRAGMENTAÇÃO',
},
name: 'Nome',
rename: 'Renomear',
},
action: {
uploadFile: 'Enviar novo arquivo',
settings: 'Configurações de segmento',
addButton: 'Adicionar fragmento',
add: 'Adicionar um fragmento',
batchAdd: 'Adicionar em lote',
archive: 'Arquivar',
unarchive: 'Desarquivar',
delete: 'Excluir',
enableWarning: 'O arquivo arquivado não pode ser habilitado',
sync: 'Sincronizar',
},
index: {
enable: 'Habilitar',
disable: 'Desabilitar',
all: 'Todos',
enableTip: 'O arquivo pode ser indexado',
disableTip: 'O arquivo não pode ser indexado',
},
status: {
queuing: 'Em fila',
indexing: 'Indexando',
paused: 'Pausado',
error: 'Erro',
available: 'Disponível',
enabled: 'Habilitado',
disabled: 'Desabilitado',
archived: 'Arquivado',
},
empty: {
title: 'Ainda não há documentação',
upload: {
tip: 'Você pode enviar arquivos, sincronizar do site ou de aplicativos da web como Notion, GitHub, etc.',
},
sync: {
tip: 'O Dify baixará periodicamente arquivos do seu Notion e concluirá o processamento.',
},
},
delete: {
title: 'Tem certeza que deseja excluir?',
content: 'Se você precisar retomar o processamento posteriormente, continuará de onde parou',
},
batchModal: {
title: 'Adicionar fragmentos em lote',
csvUploadTitle: 'Arraste e solte seu arquivo CSV aqui ou ',
browse: 'navegar',
tip: 'O arquivo CSV deve seguir a seguinte estrutura:',
question: 'pergunta',
answer: 'resposta',
contentTitle: 'conteúdo do fragmento',
content: 'conteúdo',
template: 'Baixe o modelo aqui',
cancel: 'Cancelar',
run: 'Executar em lote',
runError: 'Falha ao executar em lote',
processing: 'Processando em lote',
completed: 'Importação concluída',
error: 'Erro na importação',
ok: 'OK',
},
addUrl: 'Adicionar URL',
learnMore: 'Saiba Mais',
},
metadata: {
title: 'Metadados',
desc: 'A rotulagem de metadados para documentos permite que a IA acesse-os de maneira oportuna e expõe a fonte de referências para os usuários.',
dateTimeFormat: 'D MMMM, YYYY hh:mm A',
docTypeSelectTitle: 'Selecione um tipo de documento',
docTypeChangeTitle: 'Alterar tipo de documento',
docTypeSelectWarning:
'Se o tipo de documento for alterado, os metadados preenchidos agora não serão mais preservados',
firstMetaAction: 'Vamos lá',
placeholder: {
add: 'Adicionar ',
select: 'Selecionar ',
},
source: {
upload_file: 'Enviar arquivo',
notion: 'Sincronizar do Notion',
github: 'Sincronizar do Github',
},
type: {
book: 'Livro',
webPage: 'Página da Web',
paper: 'Artigo',
socialMediaPost: 'Postagem em Mídias Sociais',
personalDocument: 'Documento Pessoal',
businessDocument: 'Documento Empresarial',
IMChat: 'Chat de IM',
wikipediaEntry: 'Entrada da Wikipedia',
notion: 'Sincronizar do Notion',
github: 'Sincronizar do Github',
technicalParameters: 'Parâmetros Técnicos',
},
field: {
processRule: {
processDoc: 'Processar Documento',
segmentRule: 'Regra de Fragmentação',
segmentLength: 'Comprimento dos Fragmentos',
processClean: 'Limpeza de Texto',
},
book: {
title: 'Título',
language: 'Idioma',
author: 'Autor',
publisher: 'Editora',
publicationDate: 'Data de Publicação',
ISBN: 'ISBN',
category: 'Categoria',
},
webPage: {
title: 'Título',
url: 'URL',
language: 'Idioma',
authorPublisher: 'Autor/Editor',
publishDate: 'Data de Publicação',
topicsKeywords: 'Tópicos/Palavras-chave',
description: 'Descrição',
},
paper: {
title: 'Título',
language: 'Idioma',
author: 'Autor',
publishDate: 'Data de Publicação',
journalConferenceName: 'Nome do Jornal/Conferência',
volumeIssuePage: 'Volume/Edição/Página',
DOI: 'DOI',
topicsKeywords: 'Tópicos/Palavras-chave',
abstract: 'Resumo',
},
socialMediaPost: {
platform: 'Plataforma',
authorUsername: 'Autor/Nome de Usuário',
publishDate: 'Data de Publicação',
postURL: 'URL da Postagem',
topicsTags: 'Tópicos/Tags',
},
personalDocument: {
title: 'Título',
author: 'Autor',
creationDate: 'Data de Criação',
lastModifiedDate: 'Data da Última Modificação',
documentType: 'Tipo de Documento',
tagsCategory: 'Tags/Categoria',
},
businessDocument: {
title: 'Título',
author: 'Autor',
creationDate: 'Data de Criação',
lastModifiedDate: 'Data da Última Modificação',
documentType: 'Tipo de Documento',
departmentTeam: 'Departamento/Equipe',
},
IMChat: {
chatPlatform: 'Plataforma de Chat',
chatPartiesGroupName: 'Partes/Grupo do Chat',
participants: 'Participantes',
startDate: 'Data de Início',
endDate: 'Data de Término',
topicsKeywords: 'Tópicos/Palavras-chave',
fileType: 'Tipo de Arquivo',
},
wikipediaEntry: {
title: 'Título',
language: 'Idioma',
webpageURL: 'URL da Página da Web',
editorContributor: 'Editor/Contribuidor',
lastEditDate: 'Data da Última Edição',
summaryIntroduction: 'Resumo/Introdução',
},
notion: {
title: 'Título',
language: 'Idioma',
author: 'Autor',
createdTime: 'Data de Criação',
lastModifiedTime: 'Data da Última Modificação',
url: 'URL',
tag: 'Tag',
description: 'Descrição',
},
github: {
repoName: 'Nome do Repositório',
repoDesc: 'Descrição do Repositório',
repoOwner: 'Proprietário do Repositório',
fileName: 'Nome do Arquivo',
filePath: 'Caminho do Arquivo',
programmingLang: 'Linguagem de Programação',
url: 'URL',
license: 'Licença',
lastCommitTime: 'Data do Último Commit',
lastCommitAuthor: 'Autor do Último Commit',
},
originInfo: {
originalFilename: 'Nome do arquivo original',
originalFileSize: 'Tamanho do arquivo original',
uploadDate: 'Data de envio',
lastUpdateDate: 'Data da última atualização',
source: 'Fonte',
},
technicalParameters: {
segmentSpecification: 'Especificação dos fragmentos',
segmentLength: 'Comprimento dos fragmentos',
avgParagraphLength: 'Comprimento médio do parágrafo',
paragraphs: 'Parágrafos',
hitCount: 'Contagem de recuperação',
embeddingTime: 'Tempo de incorporação',
embeddedSpend: 'Tempo gasto na incorporação',
},
},
languageMap: {
zh: 'Chinês',
en: 'Inglês',
es: 'Espanhol',
fr: 'Francês',
de: 'Alemão',
ja: 'Japonês',
ko: 'Coreano',
ru: 'Russo',
ar: 'Árabe',
pt: 'Português',
it: 'Italiano',
nl: 'Holandês',
pl: 'Polonês',
sv: 'Sueco',
tr: 'Turco',
he: 'Hebraico',
hi: 'Hindi',
da: 'Dinamarquês',
fi: 'Finlandês',
no: 'Norueguês',
hu: 'Húngaro',
el: 'Grego',
cs: 'Tcheco',
th: 'Tailandês',
id: 'Indonésio',
},
categoryMap: {
book: {
fiction: 'Ficção',
biography: 'Biografia',
history: 'História',
science: 'Ciência',
technology: 'Tecnologia',
education: 'Educação',
philosophy: 'Filosofia',
religion: 'Religião',
socialSciences: 'Ciências Sociais',
art: 'Arte',
travel: 'Viagem',
health: 'Saúde',
selfHelp: 'Autoajuda',
businessEconomics: 'Negócios/Economia',
cooking: 'Culinária',
childrenYoungAdults: 'Crianças/Jovens Adultos',
comicsGraphicNovels: 'Quadrinhos/Graphic Novels',
poetry: 'Poesia',
drama: 'Drama',
other: 'Outro',
},
personalDoc: {
notes: 'Notas',
blogDraft: 'Rascunho de Blog',
diary: 'Diário',
researchReport: 'Relatório de Pesquisa',
bookExcerpt: 'Trecho de Livro',
schedule: 'Agenda',
list: 'Lista',
projectOverview: 'Visão Geral do Projeto',
photoCollection: 'Coleção de Fotos',
creativeWriting: 'Escrita Criativa',
codeSnippet: 'Trecho de Código',
designDraft: 'Rascunho de Design',
personalResume: 'Currículo Pessoal',
other: 'Outro',
},
businessDoc: {
meetingMinutes: 'Minutos de Reunião',
researchReport: 'Relatório de Pesquisa',
proposal: 'Proposta',
employeeHandbook: 'Manual do Funcionário',
trainingMaterials: 'Materiais de Treinamento',
requirementsDocument: 'Documento de Requisitos',
designDocument: 'Documento de Design',
productSpecification: 'Especificação do Produto',
financialReport: 'Relatório Financeiro',
marketAnalysis: 'Análise de Mercado',
projectPlan: 'Plano de Projeto',
teamStructure: 'Estrutura da Equipe',
policiesProcedures: 'Políticas e Procedimentos',
contractsAgreements: 'Contratos e Acordos',
emailCorrespondence: 'Correspondência por E-mail',
other: 'Outro',
},
},
},
embedding: {
processing: 'Processando incorporação...',
paused: 'Incorporação pausada',
completed: 'Incorporação concluída',
error: 'Erro na incorporação',
docName: 'Pré-processamento do documento',
mode: 'Regra de segmentação',
segmentLength: 'Comprimento dos fragmentos',
textCleaning: 'Definição prévia e limpeza de texto',
segments: 'Parágrafos',
highQuality: 'Modo de alta qualidade',
economy: 'Modo econômico',
estimate: 'Consumo estimado',
stop: 'Parar processamento',
resume: 'Retomar processamento',
automatic: 'Automático',
custom: 'Personalizado',
previewTip: 'A visualização do parágrafo estará disponível após a incorporação ser concluída',
pause: 'Pausa',
hierarchical: 'Pai-filho',
parentMaxTokens: 'Pai',
childMaxTokens: 'Criança',
},
segment: {
paragraphs: 'Parágrafos',
keywords: 'Palavras-chave',
addKeyWord: 'Adicionar palavra-chave',
keywordError: 'O comprimento máximo da palavra-chave é 20',
characters: 'caracteres',
hitCount: 'Contagem de recuperação',
vectorHash: 'Hash do vetor: ',
questionPlaceholder: 'adicionar pergunta aqui',
questionEmpty: 'A pergunta não pode estar vazia',
answerPlaceholder: 'adicionar resposta aqui',
answerEmpty: 'A resposta não pode estar vazia',
contentPlaceholder: 'adicionar conteúdo aqui',
contentEmpty: 'O conteúdo não pode estar vazio',
newTextSegment: 'Novo fragmento de texto',
newQaSegment: 'Novo fragmento de P&R',
delete: 'Excluir este fragmento?',
chunks_other: 'PEDAÇOS',
parentChunks_other: 'PARTES PAI',
childChunks_one: 'PEDAÇO FILHO',
searchResults_zero: 'RESULTADO',
searchResults_one: 'RESULTADO',
searchResults_other: 'RESULTADOS',
empty: 'Nenhum pedaço encontrado',
chunk: 'Pedaço',
newChunk: 'Novo pedaço',
childChunk: 'Pedaço filho',
characters_other: 'Caracteres',
addChunk: 'Adicionar pedaço',
addChildChunk: 'Adicionar pedaço filho',
addAnother: 'Adicionar outro',
editChunk: 'Editar Chunk',
editParentChunk: 'Editar parte pai',
editChildChunk: 'Editar parte filho',
regenerationConfirmTitle: 'Deseja regenerar partes filhas?',
regeneratingTitle: 'Regenerando partes filhas',
regeneratingMessage: 'Isso pode demorar um pouco, por favor aguarde...',
edited: 'EDIÇÃO',
editedAt: 'Editado em',
expandChunks: 'Expandir pedaços',
collapseChunks: 'Recolher partes',
regenerationConfirmMessage: 'A regeneração de partes filhas substituirá as partes filhas atuais, incluindo partes editadas e partes recém-adicionadas. A regeneração não pode ser desfeita.',
parentChunks_one: 'PEDAÇO PAI',
regenerationSuccessMessage: 'Você pode fechar esta janela.',
chunks_one: 'PEDAÇO',
childChunkAdded: '1 pedaço filho adicionado',
clearFilter: 'Limpar filtro',
regenerationSuccessTitle: 'Regeneração concluída',
chunkDetail: 'Detalhe do pedaço',
childChunks_other: 'PEDAÇOS FILHOS',
chunkAdded: '1 pedaço adicionado',
newChildChunk: 'Novo pedaço filho',
characters_one: 'personagem',
parentChunk: 'Pedaço pai',
},
}
export default translation

View File

@@ -0,0 +1,35 @@
const translation = {
title: 'Teste de Recuperação',
desc: 'Teste o efeito de recuperação do conhecimento com base no texto de consulta fornecido.',
dateTimeFormat: 'MM/DD/YYYY hh:mm A',
recents: 'Recentes',
table: {
header: {
source: 'Origem',
text: 'Texto',
time: 'Hora',
},
},
input: {
title: 'Texto de origem',
placeholder: 'Digite um texto, uma frase declarativa curta é recomendada.',
countWarning: 'Até 200 caracteres.',
indexWarning: 'Somente conhecimento de alta qualidade.',
testing: 'Testando',
},
hit: {
title: 'PARÁGRAFOS DE RECUPERAÇÃO',
emptyTip: 'Os resultados do teste de recuperação serão exibidos aqui',
},
noRecentTip: 'Nenhum resultado de consulta recente aqui',
viewChart: 'Ver GRÁFICO DE VETORES',
viewDetail: 'Ver detalhes',
settingTitle: 'Configuração de recuperação',
records: 'Arquivo',
hitChunks: 'Hit {{num}} pedaços filhos',
open: 'Abrir',
chunkDetail: 'Detalhe do pedaço',
keyword: 'Palavras-chave',
}
export default translation

View File

@@ -0,0 +1,41 @@
const translation = {
title: 'Configurações do conhecimento',
desc: 'Aqui você pode modificar as propriedades e métodos de trabalho do conhecimento.',
form: {
name: 'Nome do conhecimento',
namePlaceholder: 'Por favor, insira o nome do conhecimento',
nameError: 'O nome não pode estar vazio',
desc: 'Descrição do conhecimento',
descInfo: 'Por favor, escreva uma descrição textual clara para delinear o conteúdo do conhecimento. Esta descrição será usada como base para a correspondência ao selecionar entre vários conhecimentos para inferência.',
descPlaceholder: 'Descreva o que está neste conhecimento. Uma descrição detalhada permite que a IA acesse o conteúdo do conhecimento de forma oportuna. Se estiver vazio, o Dify usará a estratégia de correspondência padrão.',
descWrite: 'Aprenda como escrever uma boa descrição do conhecimento.',
permissions: 'Permissões',
permissionsOnlyMe: 'Apenas eu',
permissionsAllMember: 'Todos os membros da equipe',
indexMethod: 'Método de indexação',
indexMethodHighQuality: 'Alta qualidade',
indexMethodHighQualityTip: 'Invocar o modelo de Embedding para processamento para fornecer maior precisão nas consultas dos usuários.',
indexMethodEconomy: 'Econômico',
indexMethodEconomyTip: 'Use motores de vetor offline, índices de palavras-chave, etc. para reduzir a precisão sem gastar tokens.',
embeddingModel: 'Modelo de incorporação',
embeddingModelTip: 'Altere o modelo incorporado, por favor, vá para ',
embeddingModelTipLink: 'Configurações',
retrievalSetting: {
title: 'Configuração de recuperação',
learnMore: 'Saiba mais',
description: ' sobre o método de recuperação.',
longDescription: ' sobre o método de recuperação, você pode alterar isso a qualquer momento nas configurações do conhecimento.',
},
save: 'Salvar',
permissionsInvitedMembers: 'Membros parciais da equipe',
me: '(Você)',
retrievalSettings: 'Configurações de recuperação',
externalKnowledgeID: 'ID de conhecimento externo',
externalKnowledgeAPI: 'API de conhecimento externo',
indexMethodChangeToEconomyDisabledTip: 'Não disponível para rebaixamento de HQ para ECO',
helpText: 'Aprenda a escrever uma boa descrição do conjunto de dados.',
upgradeHighQualityTip: 'Depois de atualizar para o modo de alta qualidade, reverter para o modo econômico não está disponível',
},
}
export default translation

View File

@@ -0,0 +1,173 @@
const translation = {
knowledge: 'Wiedza',
documentCount: ' documentos',
wordCount: ' k palavras',
appCount: ' aplicativos vinculados',
createDataset: 'Criar Conhecimento',
createDatasetIntro: 'Importe seus próprios dados de texto ou escreva dados em tempo real via Webhook para aprimoramento de contexto LLM.',
deleteDatasetConfirmTitle: 'Excluir este Conhecimento?',
deleteDatasetConfirmContent:
'A exclusão do Conhecimento é irreversível. Os usuários não poderão mais acessar seu Conhecimento e todas as configurações e registros de prompt serão excluídos permanentemente.',
datasetUsedByApp: 'O conhecimento está sendo usado por alguns aplicativos. Os aplicativos não poderão mais usar esse Conhecimento, e todas as configurações de prompt e logs serão excluídos permanentemente.',
datasetDeleted: 'Conhecimento excluído',
datasetDeleteFailed: 'Falha ao excluir o Conhecimento',
didYouKnow: 'Você sabia?',
intro1: 'O Conhecimento pode ser integrado ao aplicativo Dify ',
intro2: 'como um contexto',
intro3: ',',
intro4: 'ou pode ser criado',
intro5: ' como um plug-in de índice ChatGPT independente para publicação',
unavailable: 'Indisponível',
unavailableTip: 'O modelo de incorporação não está disponível, o modelo de incorporação padrão precisa ser configurado',
datasets: 'CONHECIMENTO',
datasetsApi: 'API',
retrieval: {
semantic_search: {
title: 'Pesquisa Vetorial',
description: 'Gere incorporações de consulta e pesquise o trecho de texto mais semelhante à sua representação vetorial.',
},
full_text_search: {
title: 'Pesquisa de Texto Completo',
description: 'Indexe todos os termos no documento, permitindo que os usuários pesquisem qualquer termo e recuperem trechos de texto relevantes contendo esses termos.',
},
hybrid_search: {
title: 'Pesquisa Híbrida',
description: 'Execute pesquisas de texto completo e pesquisas vetoriais simultaneamente, reclassifique para selecionar a melhor correspondência para a consulta do usuário. A configuração da API do modelo de reclassificação é necessária.',
recommend: 'Recomendar',
},
invertedIndex: {
title: 'Índice Invertido',
description: 'O Índice Invertido é uma estrutura usada para recuperação eficiente. Organizado por termos, cada termo aponta para documentos ou páginas da web que o contêm.',
},
change: 'Alterar',
changeRetrievalMethod: 'Alterar método de recuperação',
},
docsFailedNotice: 'documentos falharam ao serem indexados',
retry: 'Tentar novamente',
indexingTechnique: {
high_quality: 'AQ',
economy: 'ECO',
},
indexingMethod: {
semantic_search: 'VETOR',
full_text_search: 'TEXTO COMPLETO',
hybrid_search: 'HÍBRIDO',
invertedIndex: 'INVERTIDO',
},
mixtureHighQualityAndEconomicTip: 'O modelo de reclassificação é necessário para a mistura de bases de conhecimento de alta qualidade e econômicas.',
inconsistentEmbeddingModelTip: 'O modelo de reclassificação é necessário se os modelos de incorporação das bases de conhecimento selecionadas forem inconsistentes.',
retrievalSettings: 'Configurações de Recuperação',
rerankSettings: 'Configurações de Reclassificação',
weightedScore: {
title: 'Pontuação Ponderada',
description: 'Ao ajustar os pesos atribuídos, esta estratégia de reclassificação determina se deve priorizar a correspondência semântica ou por palavras-chave.',
semanticFirst: 'Semântica primeiro',
keywordFirst: 'Palavra-chave primeiro',
customized: 'Personalizado',
semantic: 'Semântico',
keyword: 'Palavra-chave',
},
nTo1RetrievalLegacy: 'A recuperação N-para-1 será oficialmente descontinuada a partir de setembro. Recomenda-se usar a recuperação de múltiplos caminhos mais recente para obter melhores resultados.',
nTo1RetrievalLegacyLink: 'Saiba mais',
nTo1RetrievalLegacyLinkText: 'A recuperação N-para-1 será oficialmente descontinuada em setembro.',
intro6: 'como um plug-in de índice ChatGPT autônomo para publicar',
defaultRetrievalTip: 'A recuperação de vários caminhos é usada por padrão. O conhecimento é recuperado de várias bases de dados de conhecimento e, em seguida, reclassificado.',
editExternalAPIConfirmWarningContent: {
front: 'Esta API de conhecimento externo está vinculada a',
end: 'conhecimento externo, e essa modificação será aplicada a todos eles. Tem certeza de que deseja salvar essa alteração?',
},
editExternalAPIFormWarning: {
end: 'Conhecimento externo',
front: 'Esta API externa está vinculada a',
},
deleteExternalAPIConfirmWarningContent: {
title: {
front: 'Excluir',
end: '?',
},
content: {
end: 'conhecimento externo. A exclusão dessa API invalidará todos eles. Tem certeza de que deseja excluir esta API?',
front: 'Esta API de conhecimento externo está vinculada a',
},
noConnectionContent: 'Tem certeza de que deseja excluir essa API?',
},
selectExternalKnowledgeAPI: {
placeholder: 'Escolher uma API de conhecimento externa',
},
connectDatasetIntro: {
content: {
front: 'Para se conectar a uma base de dados de conhecimento externa, você precisa primeiro criar uma API externa. Por favor, leia com atenção e consulte',
link: 'Saiba como criar uma API externa',
end: '. Em seguida, encontre o ID de conhecimento correspondente e preencha-o no formulário à esquerda. Se todas as informações estiverem corretas, ele pulará automaticamente para o teste de recuperação na base de conhecimento depois de clicar no botão conectar.',
},
learnMore: 'Saiba Mais',
title: 'Como se conectar a uma base de conhecimento externa',
},
connectHelper: {
helper3: '. Recomendamos fortemente que você',
helper5: 'cuidadosamente antes de usar esse recurso.',
helper2: 'apenas a funcionalidade de recuperação é suportada',
helper4: 'Leia a documentação de ajuda',
helper1: 'Conecte-se a bases de conhecimento externas por meio da API e do ID da base de conhecimento. Atualmente,',
},
externalKnowledgeForm: {
cancel: 'Cancelar',
connect: 'Ligar',
},
externalAPIForm: {
encrypted: {
front: 'Seu token de API será criptografado e armazenado usando',
end: 'Tecnologia.',
},
name: 'Nome',
apiKey: 'Chave de API',
cancel: 'Cancelar',
save: 'Salvar',
edit: 'Editar',
endpoint: 'API Endpoint',
},
externalAPI: 'API externa',
editExternalAPITooltipTitle: 'CONHECIMENTO VINCULADO',
noExternalKnowledge: 'Ainda não existe uma API de conhecimento externo, clique aqui para criar',
externalAPIPanelDescription: 'A API de conhecimento externo é usada para se conectar a uma base de conhecimento fora do Dify e recuperar o conhecimento dessa base de conhecimento.',
externalKnowledgeIdPlaceholder: 'Insira o ID de conhecimento',
externalKnowledgeDescriptionPlaceholder: 'Descreva o que há nesta Base de Dados de Conhecimento (opcional)',
connectDataset: 'Conectar-se a uma base de conhecimento externa',
createNewExternalAPI: 'Criar uma nova API de conhecimento externo',
allExternalTip: 'Ao usar apenas conhecimento externo, o usuário pode escolher se deseja habilitar o modelo de reclassificação. Se não estiver ativado, os blocos recuperados serão classificados com base nas pontuações. Quando as estratégias de recuperação de diferentes bases de conhecimento são inconsistentes, elas serão imprecisas.',
externalTag: 'Externo',
externalKnowledgeName: 'Nome do Conhecimento Externo',
externalKnowledgeId: 'ID de conhecimento externo',
externalAPIPanelTitle: 'API de conhecimento externo',
externalKnowledgeNamePlaceholder: 'Insira o nome da base de conhecimento',
createExternalAPI: 'Adicionar uma API de conhecimento externo',
editExternalAPIFormTitle: 'Editar a API de conhecimento externo',
mixtureInternalAndExternalTip: 'O modelo de Reclassificação é necessário para a mistura de conhecimento interno e externo.',
learnHowToWriteGoodKnowledgeDescription: 'Aprenda a escrever uma boa descrição de conhecimento',
externalAPIPanelDocumentation: 'Saiba como criar uma API de conhecimento externo',
externalKnowledgeDescription: 'Descrição do Conhecimento',
chunkingMode: {
parentChild: 'Pai-filho',
general: 'Geral',
},
parentMode: {
fullDoc: 'Documento completo',
paragraph: 'Parágrafo',
},
batchAction: {
selected: 'Selecionado',
delete: 'Excluir',
enable: 'Habilitar',
archive: 'Arquivo',
disable: 'Desabilitar',
cancel: 'Cancelar',
},
documentsDisabled: '{{num}} documentos desativados - inativos por mais de 30 dias',
enable: 'Habilitar',
preprocessDocument: '{{num}} Documentos de pré-processamento',
localDocs: 'Documentos locais',
allKnowledgeDescription: 'Selecione para exibir todo o conhecimento neste espaço de trabalho. Somente o proprietário do espaço de trabalho pode gerenciar todo o conhecimento.',
allKnowledge: 'Todo o conhecimento',
}
export default translation

View File

@@ -0,0 +1,43 @@
const translation = {
title: 'Badać',
sidebar: {
discovery: 'Descoberta',
chat: 'Chat',
workspace: 'Espaço de Trabalho',
action: {
pin: 'Fixar',
unpin: 'Desafixar',
rename: 'Renomear',
delete: 'Excluir',
},
delete: {
title: 'Excluir aplicativo',
content: 'Tem certeza de que deseja excluir este aplicativo?',
},
},
apps: {
title: 'Explorar Aplicações por Dify',
description: 'Use esses aplicativos modelo instantaneamente ou personalize seus próprios aplicativos com base nos modelos.',
allCategories: 'Recomendado',
},
appCard: {
addToWorkspace: 'Adicionar ao Espaço de Trabalho',
customize: 'Personalizar',
},
appCustomize: {
title: 'Criar aplicativo a partir de {{name}}',
subTitle: 'Ícone e nome do aplicativo',
nameRequired: 'O nome do aplicativo é obrigatório',
},
category: {
Assistant: 'Assistente',
Writing: 'Escrita',
Translate: 'Traduzir',
Programming: 'Programação',
HR: 'RH',
Workflow: 'Fluxo de trabalho',
Agent: 'Agente',
},
}
export default translation

View File

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

View File

@@ -0,0 +1,110 @@
const translation = {
pageTitle: 'Oi, vamos começar!👋',
welcome: 'Bem-vindo ao Dify, faça login para continuar.',
email: 'Endereço de e-mail',
emailPlaceholder: 'Seu e-mail',
password: 'Senha',
passwordPlaceholder: 'Sua senha',
name: 'Nome de usuário',
namePlaceholder: 'Seu nome de usuário',
forget: 'Esqueceu sua senha?',
signBtn: 'Entrar',
installBtn: 'Configuração',
setAdminAccount: 'Configurando uma conta de administrador',
setAdminAccountDesc: 'Privilégios máximos para a conta de administrador, que pode ser usada para criar aplicativos e gerenciar provedores LLM, etc.',
createAndSignIn: 'Criar e entrar',
oneMoreStep: 'Mais um passo',
createSample: 'Com base nessas informações, criaremos um aplicativo de exemplo para você',
invitationCode: 'Código de convite',
invitationCodePlaceholder: 'Seu código de convite',
interfaceLanguage: 'Idioma da interface',
timezone: 'Fuso horário',
go: 'Ir para o Dify',
sendUsMail: 'Envie-nos um e-mail com sua introdução e cuidaremos do pedido de convite.',
acceptPP: 'Li e aceito a política de privacidade',
reset: 'Execute o seguinte comando para redefinir sua senha',
withGitHub: 'Continuar com o GitHub',
withGoogle: 'Continuar com o Google',
rightTitle: 'Desbloqueie todo o potencial do LLM',
rightDesc: 'Crie aplicativos de IA visualmente cativantes, operáveis e aprimoráveis sem esforço.',
tos: 'Termos de Serviço',
pp: 'Política de Privacidade',
tosDesc: 'Ao se inscrever, você concorda com nossos',
goToInit: 'Se você não inicializou a conta, vá para a página de inicialização',
dontHave: 'Não tem?',
invalidInvitationCode: 'Código de convite inválido',
accountAlreadyInited: 'Conta já iniciada',
forgotPassword: 'Esqueceu sua senha?',
resetLinkSent: 'Link de redefinição enviado',
sendResetLink: 'Enviar link de redefinição',
backToSignIn: 'Voltar para login',
forgotPasswordDesc: 'Por favor, insira seu endereço de e-mail para redefinir sua senha. Enviaremos um e-mail com instruções sobre como redefinir sua senha.',
checkEmailForResetLink: 'Verifique seu e-mail para um link para redefinir sua senha. Se não aparecer dentro de alguns minutos, verifique sua pasta de spam.',
passwordChanged: 'Entre agora',
changePassword: 'Mudar a senha',
changePasswordTip: 'Por favor, insira uma nova senha para sua conta',
invalidToken: 'Token inválido ou expirado',
confirmPassword: 'Confirme a Senha',
confirmPasswordPlaceholder: 'Confirme sua nova senha',
passwordChangedTip: 'Sua senha foi alterada com sucesso',
error: {
emailEmpty: 'O endereço de e-mail é obrigatório',
emailInValid: 'Digite um endereço de e-mail válido',
nameEmpty: 'O nome é obrigatório',
passwordEmpty: 'A senha é obrigatória',
passwordInvalid: 'A senha deve conter letras e números e ter um comprimento maior que 8',
passwordLengthInValid: 'A senha deve ter pelo menos 8 caracteres',
registrationNotAllowed: 'Conta não encontrada. Entre em contato com o administrador do sistema para se registrar.',
},
license: {
tip: 'Antes de começar a usar a Edição Comunitária do Dify, leia a',
link: 'Licença de código aberto do GitHub',
},
join: 'Participar',
joinTipStart: 'Convidamos você a participar da',
joinTipEnd: 'equipe no Dify',
invalid: 'O link expirou',
explore: 'Explorar o Dify',
activatedTipStart: 'Você se juntou à equipe',
activatedTipEnd: '',
activated: 'Entrar agora',
adminInitPassword: 'Senha de inicialização do administrador',
validate: 'Validar',
sso: 'Continuar com SSO',
checkCode: {
useAnotherMethod: 'Use outro método',
invalidCode: 'Código inválido',
verificationCodePlaceholder: 'Digite o código de 6 dígitos',
checkYourEmail: 'Verifique seu e-mail',
tips: 'Enviamos um código de verificação para <strong>{{email}}</strong>',
emptyCode: 'O código é necessário',
verify: 'Verificar',
verificationCode: 'Código de verificação',
resend: 'Reenviar',
didNotReceiveCode: 'Não recebeu o código?',
validTime: 'Lembre-se de que o código é válido por 5 minutos',
},
resetPassword: 'Redefinir senha',
or: 'OU',
withSSO: 'Continuar com SSO',
setYourAccount: 'Defina sua conta',
backToLogin: 'Voltar ao login',
noLoginMethodTip: 'Entre em contato com o administrador do sistema para adicionar um método de autenticação.',
continueWithCode: 'Continuar com o código',
enterYourName: 'Por favor, digite seu nome de usuário',
noLoginMethod: 'Método de autenticação não configurado',
useVerificationCode: 'Usar código de verificação',
back: 'Voltar',
changePasswordBtn: 'Definir uma senha',
resetPasswordDesc: 'Digite o e-mail que você usou para se inscrever no Dify e enviaremos um e-mail de redefinição de senha.',
sendVerificationCode: 'Enviar código de verificação',
usePassword: 'Usar senha',
licenseInactiveTip: 'A licença do Dify Enterprise para seu espaço de trabalho está inativa. Entre em contato com o administrador para continuar usando o Dify.',
licenseLostTip: 'Falha ao conectar o servidor de licenças Dify. Entre em contato com o administrador para continuar usando o Dify.',
licenseExpired: 'Licença expirada',
licenseLost: 'Licença perdida',
licenseInactive: 'Licença inativa',
licenseExpiredTip: 'A licença do Dify Enterprise para seu espaço de trabalho expirou. Entre em contato com o administrador para continuar usando o Dify.',
}
export default translation

View File

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

View File

@@ -0,0 +1,29 @@
const translation = {
input: 'ENTRADA',
result: 'RESULTADO',
detail: 'DETALHE',
tracing: 'RASTREIO',
resultPanel: {
status: 'STATUS',
time: 'TEMPO DECORRIDO',
tokens: 'TOTAL DE TOKENS',
},
meta: {
title: 'METADADOS',
status: 'Status',
version: 'Versão',
executor: 'Executor',
startTime: 'Hora de Início',
time: 'Tempo Decorrido',
tokens: 'Total de Tokens',
steps: 'Passos de Execução',
},
resultEmpty: {
title: 'Esta execução apenas produz o formato JSON,',
tipLeft: 'por favor vá para ',
link: 'painel de detalhes',
tipRight: ' veja.',
},
}
export default translation

View File

@@ -0,0 +1,74 @@
const translation = {
common: {
welcome: '',
appUnavailable: 'O aplicativo não está disponível',
appUnknownError: 'O aplicativo encontrou um erro desconhecido',
},
chat: {
newChat: 'Nova conversa',
pinnedTitle: 'Fixado',
unpinnedTitle: 'Conversas',
newChatDefaultName: 'Nova conversa',
resetChat: 'Redefinir conversa',
poweredBy: 'Desenvolvido por',
prompt: 'Prompt',
privatePromptConfigTitle: 'Configurações da conversa',
publicPromptConfigTitle: 'Prompt inicial',
configStatusDes: 'Antes de começar, você pode modificar as configurações da conversa',
configDisabled:
'As configurações da sessão anterior foram usadas para esta sessão.',
startChat: 'Iniciar conversa',
privacyPolicyLeft:
'Por favor, leia a ',
privacyPolicyMiddle:
'política de privacidade',
privacyPolicyRight:
' fornecida pelo desenvolvedor do aplicativo.',
deleteConversation: {
title: 'Excluir conversa',
content: 'Tem certeza de que deseja excluir esta conversa?',
},
tryToSolve: 'Tente resolver',
temporarySystemIssue: 'Desculpe, problema temporário do sistema.',
},
generation: {
tabs: {
create: 'Executar uma vez',
batch: 'Executar em lote',
saved: 'Salvo',
},
savedNoData: {
title: 'Você ainda não salvou um resultado!',
description: 'Comece a gerar conteúdo e encontre seus resultados salvos aqui.',
startCreateContent: 'Começar a criar conteúdo',
},
title: 'Completar com IA',
queryTitle: 'Consultar conteúdo',
completionResult: 'Resultado da conclusão',
queryPlaceholder: 'Escreva sua consulta...',
run: 'Executar',
copy: 'Copiar',
resultTitle: 'Completar com IA',
noData: 'A IA fornecerá o que você deseja aqui.',
csvUploadTitle: 'Arraste e solte seu arquivo CSV aqui ou ',
browse: 'navegue',
csvStructureTitle: 'O arquivo CSV deve seguir a seguinte estrutura:',
downloadTemplate: 'Baixe o modelo aqui',
field: 'Campo',
batchFailed: {
info: '{{num}} execuções falharam',
retry: 'Tentar novamente',
outputPlaceholder: 'Nenhum conteúdo de saída',
},
errorMsg: {
empty: 'Por favor, insira conteúdo no arquivo enviado.',
fileStructNotMatch: 'O arquivo CSV enviado não corresponde à estrutura.',
emptyLine: 'A linha {{rowIndex}} está vazia',
invalidLine: 'Linha {{rowIndex}}: o valor de {{varName}} não pode estar vazio',
moreThanMaxLengthLine: 'Linha {{rowIndex}}: o valor de {{varName}} não pode ter mais de {{maxLength}} caracteres',
atLeastOne: 'Por favor, insira pelo menos uma linha no arquivo enviado.',
},
},
}
export default translation

View File

@@ -0,0 +1,155 @@
const translation = {
title: 'Ferramentas',
createCustomTool: 'Criar Ferramenta Personalizada',
type: {
all: 'Todas',
builtIn: 'Integradas',
custom: 'Personalizadas',
workflow: 'Fluxo de trabalho',
},
contribute: {
line1: 'Estou interessado em ',
line2: 'contribuir com ferramentas para o Dify.',
viewGuide: 'Ver o guia',
},
author: 'Por',
auth: {
unauthorized: 'Para Autorizar',
authorized: 'Autorizado',
setup: 'Configurar autorização para usar',
setupModalTitle: 'Configurar Autorização',
setupModalTitleDescription: 'Após configurar as credenciais, todos os membros do espaço de trabalho podem usar essa ferramenta ao orquestrar aplicativos.',
},
includeToolNum: '{{num}} ferramentas incluídas',
addTool: 'Adicionar Ferramenta',
createTool: {
title: 'Criar Ferramenta Personalizada',
editAction: 'Configurar',
editTitle: 'Editar Ferramenta Personalizada',
name: 'Nome',
toolNamePlaceHolder: 'Digite o nome da ferramenta',
schema: 'Esquema',
schemaPlaceHolder: 'Digite seu esquema OpenAPI aqui',
viewSchemaSpec: 'Ver a Especificação OpenAPI-Swagger',
importFromUrl: 'Importar de URL',
importFromUrlPlaceHolder: 'https://...',
urlError: 'Digite uma URL válida',
examples: 'Exemplos',
exampleOptions: {
json: 'Clima(JSON)',
yaml: 'Pet Store(YAML)',
blankTemplate: 'Modelo em Branco',
},
availableTools: {
title: 'Ferramentas Disponíveis',
name: 'Nome',
description: 'Descrição',
method: 'Método',
path: 'Caminho',
action: 'Ações',
test: 'Testar',
},
authMethod: {
title: 'Método de Autorização',
type: 'Tipo de Autorização',
keyTooltip: 'Chave do Cabeçalho HTTP, você pode deixar como "Authorization" se não tiver ideia do que é ou definir um valor personalizado',
types: {
none: 'Nenhum',
api_key: 'Chave de API',
apiKeyPlaceholder: 'Nome do cabeçalho HTTP para a Chave de API',
apiValuePlaceholder: 'Digite a Chave de API',
},
key: 'Chave',
value: 'Valor',
},
authHeaderPrefix: {
title: 'Tipo de Autenticação',
types: {
basic: 'Básica',
bearer: 'Bearer',
custom: 'Personalizada',
},
},
privacyPolicy: 'Política de Privacidade',
privacyPolicyPlaceholder: 'Digite a política de privacidade',
customDisclaimer: 'Aviso Personalizado',
customDisclaimerPlaceholder: 'Digite o aviso personalizado',
deleteToolConfirmTitle: 'Excluir esta ferramenta?',
deleteToolConfirmContent: 'Excluir a ferramenta é irreversível. Os usuários não poderão mais acessar sua ferramenta.',
toolInput: {
label: 'Tags',
methodSetting: 'Ambiente',
methodParameterTip: 'Preenchimentos de LLM durante a inferência',
methodSettingTip: 'O usuário preenche a configuração da ferramenta',
methodParameter: 'Parâmetro',
name: 'Nome',
description: 'Descrição',
method: 'Método',
required: 'Necessário',
title: 'Entrada de ferramenta',
labelPlaceholder: 'Escolha tags(opcional)',
descriptionPlaceholder: 'Descrição do significado do parâmetro',
},
description: 'Descrição',
nameForToolCall: 'Nome da chamada da ferramenta',
confirmTip: 'Os aplicativos que usam essa ferramenta serão afetados',
confirmTitle: 'Confirme para salvar ?',
nameForToolCallTip: 'Suporta apenas números, letras e sublinhados.',
descriptionPlaceholder: 'Breve descrição da finalidade da ferramenta, por exemplo, obter a temperatura para um local específico.',
nameForToolCallPlaceHolder: 'Usado para reconhecimento de máquina, como getCurrentWeather, list_pets',
},
test: {
title: 'Testar',
parametersValue: 'Parâmetros e Valor',
parameters: 'Parâmetros',
value: 'Valor',
testResult: 'Resultados do Teste',
testResultPlaceholder: 'O resultado do teste será exibido aqui',
},
thought: {
using: 'Usando',
used: 'Usado',
requestTitle: 'Requisição para',
responseTitle: 'Resposta de',
},
setBuiltInTools: {
info: 'Informações',
setting: 'Configuração',
toolDescription: 'Descrição da Ferramenta',
parameters: 'parâmetros',
string: 'string',
number: 'número',
required: 'Obrigatório',
infoAndSetting: 'Informações e Configurações',
},
noCustomTool: {
title: 'Nenhuma ferramenta personalizada!',
content: 'Adicione e gerencie suas ferramentas personalizadas aqui para construir aplicativos de IA.',
createTool: 'Criar Ferramenta',
},
noSearchRes: {
title: 'Desculpe, sem resultados!',
content: 'Não encontramos nenhuma ferramenta que corresponda à sua pesquisa.',
reset: 'Redefinir Pesquisa',
},
builtInPromptTitle: 'Prompt',
toolRemoved: 'Ferramenta removida',
notAuthorized: 'Ferramenta não autorizada',
howToGet: 'Como obter',
addToolModal: {
category: 'categoria',
type: 'tipo',
emptyTip: 'Vá para "Fluxo de trabalho - > Publicar como ferramenta"',
add: 'adicionar',
emptyTitle: 'Nenhuma ferramenta de fluxo de trabalho disponível',
added: 'Adicionado',
manageInTools: 'Gerenciar em Ferramentas',
emptyTitleCustom: 'Nenhuma ferramenta personalizada disponível',
emptyTipCustom: 'Criar uma ferramenta personalizada',
},
openInStudio: 'Abrir no Studio',
customToolTip: 'Saiba mais sobre as ferramentas personalizadas da Dify',
toolNameUsageTip: 'Nome da chamada da ferramenta para raciocínio e solicitação do agente',
}
export default translation

View File

@@ -0,0 +1,707 @@
const translation = {
common: {
undo: 'Desfazer',
redo: 'Refazer',
editing: 'Editando',
autoSaved: 'Salvo automaticamente',
unpublished: 'Não publicado',
published: 'Publicado',
publish: 'Publicar',
update: 'Atualizar',
run: 'Executar',
running: 'Executando',
inRunMode: 'No modo de execução',
inPreview: 'Em visualização',
inPreviewMode: 'No modo de visualização',
preview: 'Visualizar',
viewRunHistory: 'Ver histórico de execução',
runHistory: 'Histórico de execução',
goBackToEdit: 'Voltar para o editor',
conversationLog: 'Registro de conversa',
features: 'Recursos',
debugAndPreview: 'Visualizar',
restart: 'Reiniciar',
currentDraft: 'Rascunho atual',
currentDraftUnpublished: 'Rascunho atual não publicado',
latestPublished: 'Último publicado',
publishedAt: 'Publicado em',
restore: 'Restaurar',
runApp: 'Executar aplicativo',
batchRunApp: 'Executar aplicativo em lote',
accessAPIReference: 'Acessar referência da API',
embedIntoSite: 'Incorporar ao site',
addTitle: 'Adicionar título...',
addDescription: 'Adicionar descrição...',
noVar: 'Sem variável',
searchVar: 'Buscar variável',
variableNamePlaceholder: 'Nome da variável',
setVarValuePlaceholder: 'Definir valor da variável',
needConnectTip: 'Este passo não está conectado a nada',
maxTreeDepth: 'Limite máximo de {{depth}} nós por ramo',
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 está em execução',
previewPlaceholder: 'Digite o conteúdo na caixa abaixo para começar a depurar o Chatbot',
effectVarConfirm: {
title: 'Remover variável',
content: 'A variável é usada em outros nós. Você ainda deseja removê-la?',
},
insertVarTip: 'Pressione a tecla \'/\' para inserir rapidamente',
processData: 'Processar dados',
input: 'Entrada',
output: 'Saída',
jinjaEditorPlaceholder: 'Digite \'/\' ou \'{\' para inserir variável',
viewOnly: 'Apenas visualização',
showRunHistory: 'Mostrar histórico de execução',
enableJinja: 'Ativar suporte ao template Jinja',
learnMore: 'Saiba mais',
copy: 'Copiar',
duplicate: 'Duplicar',
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',
importSuccess: 'Sucesso da importação',
chooseDSL: 'Escolha o arquivo DSL(yml)',
importFailure: 'Falha na importação',
syncingData: 'Sincronizando dados, apenas alguns segundos.',
overwriteAndImport: 'Substituir e importar',
importDSLTip: 'O rascunho atual será substituído. Exporte o fluxo de trabalho como backup antes de importar.',
backupCurrentDraft: 'Fazer backup do rascunho atual',
importDSL: 'Importar DSL',
parallelTip: {
click: {
title: 'Clique',
desc: 'para adicionar',
},
drag: {
title: 'Arrastar',
desc: 'para conectar',
},
limit: 'O paralelismo é limitado a {{num}} ramificações.',
depthLimit: 'Limite de camada de aninhamento paralelo de {{num}} camadas',
},
parallelRun: 'Execução paralela',
disconnect: 'Desligar',
jumpToNode: 'Ir para este nó',
addParallelNode: 'Adicionar nó paralelo',
parallel: 'PARALELO',
branch: 'RAMIFICAÇÃO',
featuresDocLink: 'Saiba Mais',
featuresDescription: 'Melhore a experiência do usuário do aplicativo Web',
ImageUploadLegacyTip: 'Agora você pode criar variáveis de tipo de arquivo no formulário inicial. Não daremos mais suporte ao recurso de upload de imagens no futuro.',
fileUploadTip: 'Os recursos de upload de imagens foram atualizados para upload de arquivos.',
importWarning: 'Cuidado',
importWarningDetails: 'A diferença de versão DSL pode afetar determinados recursos',
openInExplore: 'Abrir no Explore',
onFailure: 'Em caso de falha',
addFailureBranch: 'Adicionar ramificação com falha',
noHistory: 'Sem História',
loadMore: 'Carregar mais fluxos de trabalho',
},
env: {
envPanelTitle: 'Variáveis de Ambiente',
envDescription: 'Variáveis de ambiente podem ser usadas para armazenar informações privadas e credenciais. Elas são somente leitura e podem ser separadas do arquivo DSL durante a exportação.',
envPanelButton: 'Adicionar Variável',
modal: {
title: 'Adicionar Variável de Ambiente',
editTitle: 'Editar Variável de Ambiente',
type: 'Tipo',
name: 'Nome',
namePlaceholder: 'nome da env',
value: 'Valor',
valuePlaceholder: 'valor da env',
secretTip: 'Usado para definir informações ou dados sensíveis, com configurações DSL configuradas para prevenção de vazamentos.',
},
export: {
title: 'Exportar variáveis de ambiente secretas?',
checkbox: 'Exportar valores secretos',
ignore: 'Exportar DSL',
export: 'Exportar DSL com valores secretos',
},
},
chatVariable: {
panelTitle: 'Variáveis de Conversação',
panelDescription: 'As Variáveis de Conversação são usadas para armazenar informações interativas que o LLM precisa lembrar, incluindo histórico de conversas, arquivos carregados, preferências do usuário. Elas são de leitura e escrita.',
docLink: 'Visite nossa documentação para saber mais.',
button: 'Adicionar Variável',
modal: {
title: 'Adicionar Variável de Conversação',
editTitle: 'Editar Variável de Conversação',
name: 'Nome',
namePlaceholder: 'Nome da variável',
type: 'Tipo',
value: 'Valor Padrão',
valuePlaceholder: 'Valor padrão, deixe em branco para não definir',
description: 'Descrição',
descriptionPlaceholder: 'Descreva a variável',
editInJSON: 'Editar em JSON',
oneByOne: 'Adicionar um por um',
editInForm: 'Editar no Formulário',
arrayValue: 'Valor',
addArrayValue: 'Adicionar Valor',
objectKey: 'Chave',
objectType: 'Tipo',
objectValue: 'Valor Padrão',
},
storedContent: 'Conteúdo armazenado',
updatedAt: 'Atualizado em ',
},
changeHistory: {
title: 'Histórico de alterações',
placeholder: 'Você ainda não alterou nada',
clearHistory: 'Limpar histórico',
hint: 'Dica',
hintText: 'As ações de edição são rastreadas em um histórico de alterações, que é armazenado em seu dispositivo para a duração desta sessão. Este histórico será apagado quando você sair do editor.',
stepBackward_one: '{{count}} passo para trás',
stepBackward_other: '{{count}} passos para trás',
stepForward_one: '{{count}} passo para frente',
stepForward_other: '{{count}} passos para frente',
sessionStart: 'Início da sessão',
currentState: 'Estado atual',
nodeTitleChange: 'Título do bloco alterado',
nodeDescriptionChange: 'Descrição do bloco alterada',
nodeDragStop: 'Bloco movido',
nodeChange: 'Bloco alterado',
nodeConnect: 'Bloco conectado',
nodePaste: 'Bloco colado',
nodeDelete: 'Bloco excluído',
nodeAdd: 'Bloco adicionado',
nodeResize: 'Nota redimensionada',
noteAdd: 'Nota adicionada',
noteChange: 'Nota alterada',
noteDelete: 'Conexão excluída',
edgeDelete: 'Bloco desconectado',
},
errorMsg: {
fieldRequired: '{{field}} é obrigatório',
authRequired: 'Autorização é necessária',
invalidJson: '{{field}} é um JSON inválido',
fields: {
variable: 'Nome da variável',
variableValue: 'Valor da variável',
code: 'Código',
model: 'Modelo',
rerankModel: 'Modelo de reordenação',
visionVariable: 'Variável de visão',
},
invalidVariable: 'Variável inválida',
rerankModelRequired: 'Antes de ativar o modelo de reclassificação, confirme se o modelo foi configurado com sucesso nas configurações.',
},
singleRun: {
testRun: 'Execução de teste ',
startRun: 'Iniciar execução',
running: 'Executando',
testRunIteration: 'Iteração de execução de teste',
back: 'Voltar',
iteration: 'Iteração',
},
tabs: {
'searchBlock': 'Buscar bloco',
'blocks': 'Blocos',
'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',
'searchTool': 'Ferramenta de pesquisa',
},
blocks: {
'start': 'Iniciar',
'end': 'Fim',
'answer': 'Resposta',
'llm': 'LLM',
'knowledge-retrieval': 'Recuperação de conhecimento',
'question-classifier': 'Classificador de perguntas',
'if-else': 'SE/SENÃO',
'code': 'Código',
'template-transform': 'Modelo',
'http-request': 'Requisição HTTP',
'variable-assigner': 'Atribuidor de variáveis',
'variable-aggregator': 'Agregador de variáveis',
'assigner': 'Atribuidor de Variáveis',
'iteration-start': 'Início de iteração',
'iteration': 'Iteração',
'parameter-extractor': 'Extrator de parâmetros',
'list-operator': 'Operador de lista',
'document-extractor': 'Extrator de documentos',
},
blocksAbout: {
'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 do usuário a partir da base de conhecimento',
'question-classifier': 'Definir as condições de classificação das perguntas dos usuários, LLM pode definir como a conversa progride com base na descrição da classificação',
'if-else': 'Permite dividir o fluxo de trabalho em dois ramos com base nas condições if/else',
'code': 'Executar um pedaço de código Python ou NodeJS para implementar lógica personalizada',
'template-transform': 'Converter dados em string usando a sintaxe de template Jinja',
'http-request': 'Permitir que solicitações de servidor sejam enviadas pelo protocolo HTTP',
'variable-assigner': 'Agregue variáveis de vários ramos em uma única variável para configuração unificada dos nós finais.',
'assigner': 'O nó de atribuição de variáveis é usado para atribuir valores a variáveis graváveis (como variáveis de conversação).',
'variable-aggregator': 'Agregue variáveis de vários ramos em uma única variável para configuração unificada dos nós finais.',
'iteration': 'Execute múltiplos passos em um objeto lista até que todos os resultados sejam produzidos.',
'parameter-extractor': 'Use LLM para extrair parâmetros estruturados da linguagem natural para invocações de ferramentas ou requisições HTTP.',
'document-extractor': 'Usado para analisar documentos carregados em conteúdo de texto que é facilmente compreensível pelo LLM.',
'list-operator': 'Usado para filtrar ou classificar o conteúdo da matriz.',
},
operator: {
zoomIn: 'Aproximar',
zoomOut: 'Afastar',
zoomTo50: 'Aproximar para 50%',
zoomTo100: 'Aproximar para 100%',
zoomToFit: 'Aproximar para ajustar',
},
panel: {
userInputField: 'Campo de entrada do usuário',
changeBlock: 'Mudar bloco',
helpLink: 'Link de ajuda',
about: 'Sobre',
createdBy: 'Criado por ',
nextStep: 'Próximo passo',
addNextStep: 'Adicionar o próximo bloco neste fluxo de trabalho',
selectNextStep: 'Selecionar próximo bloco',
runThisStep: 'Executar este passo',
checklist: 'Lista de verificação',
checklistTip: 'Certifique-se de que todos os problemas foram resolvidos antes de publicar',
checklistResolved: 'Todos os problemas foram resolvidos',
organizeBlocks: 'Organizar blocos',
change: 'Mudar',
optional: '(opcional)',
},
nodes: {
common: {
outputVars: 'Variáveis de saída',
insertVarTip: 'Inserir variável',
memory: {
memory: 'Memória',
memoryTip: 'Configurações de memória de conversa',
windowSize: 'Tamanho da janela',
conversationRoleName: 'Nome do papel na conversa',
user: 'Prefixo do usuário',
assistant: 'Prefixo do assistente',
},
memories: {
title: 'Memórias',
tip: 'Memória de conversa',
builtIn: 'Integrado',
},
errorHandle: {
none: {
title: 'Nenhum',
desc: 'O nó deixará de ser executado se ocorrer uma exceção e não for tratada',
},
defaultValue: {
title: 'Valor padrão',
desc: 'Quando ocorrer um erro, especifique um conteúdo de saída estático.',
tip: 'Em caso de erro, retornará o valor abaixo.',
inLog: 'Exceção de nó, saída de acordo com os valores padrão.',
output: 'Valor padrão de saída',
},
failBranch: {
title: 'Ramificação com falha',
desc: 'Quando ocorrer um erro, ele executará a ramificação de exceção',
customize: 'Vá para a tela para personalizar a lógica do branch de falha.',
customizeTip: 'Quando a ramificação de falha é ativada, as exceções geradas pelos nós não encerram o processo. Em vez disso, ele executará automaticamente a ramificação de falha predefinida, permitindo que você forneça mensagens de erro, relatórios, correções ou ações de salto com flexibilidade.',
inLog: 'Node exception, executará automaticamente a ramificação de falha. A saída do nó retornará um tipo de erro e uma mensagem de erro e os passará para o downstream.',
},
partialSucceeded: {
tip: 'Existem {{num}} nós no processo em execução anormal, vá para rastreamento para verificar os logs.',
},
title: 'Tratamento de erros',
tip: 'Estratégia de tratamento de exceções, disparada quando um nó encontra uma exceção.',
},
retry: {
retry: 'Repetir',
retryOnFailure: 'Tentar novamente em caso de falha',
maxRetries: 'Máximo de tentativas',
retryInterval: 'Intervalo de repetição',
retryTimes: 'Tente novamente {{times}} vezes em caso de falha',
retrying: 'Repetindo...',
retrySuccessful: 'Repetição bem-sucedida',
retryFailed: 'Falha na nova tentativa',
retryFailedTimes: '{{times}} tentativas falharam',
times: 'vezes',
ms: 'ms',
retries: '{{num}} Tentativas',
},
},
start: {
required: 'requerido',
inputField: 'Campo de entrada',
builtInVar: 'Variáveis integradas',
outputVars: {
query: 'Entrada do usuário',
memories: {
des: 'Histórico da conversa',
type: 'tipo de mensagem',
content: 'conteúdo da mensagem',
},
files: 'Lista de arquivos',
},
noVarTip: 'Defina as entradas que podem ser usadas no Fluxo de Trabalho',
},
end: {
outputs: 'Saídas',
output: {
type: 'tipo de saída',
variable: 'variável de saída',
},
type: {
'none': 'Nenhum',
'plain-text': 'Texto simples',
'structured': 'Estruturado',
},
},
answer: {
answer: 'Resposta',
outputVars: 'Variáveis de saída',
},
llm: {
model: 'modelo',
variables: 'variáveis',
context: 'contexto',
contextTooltip: 'Você pode importar Conhecimento como contexto',
notSetContextInPromptTip: 'Para ativar o recurso de contexto, preencha a variável de contexto no PROMPT.',
prompt: 'prompt',
roleDescription: {
system: 'Dar instruções de alto nível para a conversa',
user: 'Fornecer instruções, consultas ou qualquer entrada baseada em texto para o modelo',
assistant: 'As respostas do modelo baseadas nas mensagens do usuário',
},
addMessage: 'Adicionar mensagem',
vision: 'visão',
files: 'Arquivos',
resolution: {
name: 'Resolução',
high: 'Alta',
low: 'Baixa',
},
outputVars: {
output: 'Conteúdo gerado',
usage: 'Informações de uso do modelo',
},
singleRun: {
variable: 'Variável',
},
sysQueryInUser: 'sys.query na mensagem do usuário é necessário',
},
knowledgeRetrieval: {
queryVariable: 'Variável de consulta',
knowledge: 'Conhecimento',
outputVars: {
output: 'Dados segmentados recuperados',
content: 'Conteúdo segmentado',
title: 'Título segmentado',
icon: 'Ícone segmentado',
url: 'URL segmentado',
metadata: 'Outros metadados',
},
},
http: {
inputVars: 'Variáveis de entrada',
api: 'API',
apiPlaceholder: 'Digite a URL, digite / para inserir variável',
notStartWithHttp: 'API deve começar com http:// ou https://',
key: 'Chave',
value: 'Valor',
bulkEdit: 'Edição em massa',
keyValueEdit: 'Edição chave-valor',
headers: 'Cabeçalhos',
params: 'Parâmetros',
body: 'Corpo',
outputVars: {
body: 'Conteúdo da resposta',
statusCode: 'Código de status da resposta',
headers: 'Lista de cabeçalhos da resposta em JSON',
files: 'Lista de arquivos',
},
authorization: {
'authorization': 'Autorização',
'authorizationType': 'Tipo de autorização',
'no-auth': 'Nenhuma',
'api-key': 'Chave API',
'auth-type': 'Tipo de autorização',
'basic': 'Básica',
'bearer': 'Bearer',
'custom': 'Personalizada',
'api-key-title': 'Chave API',
'header': 'Cabeçalho',
},
insertVarPlaceholder: 'digite \'/\' para inserir variável',
timeout: {
title: 'Timeout',
connectLabel: 'Timeout de conexão',
connectPlaceholder: 'Digite o timeout de conexão em segundos',
readLabel: 'Timeout de leitura',
readPlaceholder: 'Digite o timeout de leitura em segundos',
writeLabel: 'Timeout de escrita',
writePlaceholder: 'Digite o timeout de escrita em segundos',
},
type: 'Tipo',
binaryFileVariable: 'Variável de arquivo binário',
extractListPlaceholder: 'Insira o índice do item da lista, digite \'/\' inserir variável',
curl: {
placeholder: 'Cole a string cURL aqui',
title: 'Importar do cURL',
},
},
code: {
inputVars: 'Variáveis de entrada',
outputVars: 'Variáveis de saída',
advancedDependencies: 'Dependências avançadas',
advancedDependenciesTip: 'Adicione algumas dependências pré-carregadas que levam mais tempo para consumir ou não são padrão aqui',
searchDependencies: 'Buscar dependências',
},
templateTransform: {
inputVars: 'Variáveis de entrada',
code: 'Código',
codeSupportTip: 'Suporta apenas Jinja2',
outputVars: {
output: 'Conteúdo transformado',
},
},
ifElse: {
if: 'Se',
else: 'Senão',
elseDescription: 'Usado para definir a lógica que deve ser executada quando a condição if não é atendida.',
and: 'e',
or: 'ou',
operator: 'Operador',
notSetVariable: 'Por favor, defina a variável primeiro',
comparisonOperator: {
'contains': 'contém',
'not contains': 'não contém',
'start with': 'começa com',
'end with': 'termina com',
'is': 'é',
'is not': 'não é',
'empty': 'está vazio',
'not empty': 'não está vazio',
'null': 'é nulo',
'not null': 'não é nulo',
'regex match': 'partida regex',
'in': 'em',
'not in': 'não em',
'exists': 'Existe',
'not exists': 'não existe',
'all of': 'todos os',
},
enterValue: 'Digite o valor',
addCondition: 'Adicionar condição',
conditionNotSetup: 'Condição NÃO configurada',
selectVariable: 'Selecione a variável...',
optionName: {
image: 'Imagem',
doc: 'Doc',
url: 'URL',
audio: 'Áudio',
video: 'Vídeo',
localUpload: 'Local Upload',
},
addSubVariable: 'Subvariável',
select: 'Selecionar',
},
variableAssigner: {
title: 'Atribuir variáveis',
outputType: 'Tipo de saída',
varNotSet: 'Variável não definida',
noVarTip: 'Adicione as variáveis a serem atribuídas',
type: {
string: 'String',
number: 'Número',
object: 'Objeto',
array: 'Array',
},
aggregationGroup: 'Grupo de agregação',
aggregationGroupTip: 'Habilitar este recurso permite que o agregador de variáveis agregue múltiplos conjuntos de variáveis.',
addGroup: 'Adicionar grupo',
outputVars: {
varDescribe: 'Saída de {{groupName}}',
},
setAssignVariable: 'Definir variável atribuída',
},
assigner: {
'assignedVariable': 'Variável Atribuída',
'writeMode': 'Modo de Escrita',
'writeModeTip': 'Quando a VARIÁVEL ATRIBUÍDA é um array, o modo de anexar adiciona ao final.',
'over-write': 'Sobrescrever',
'append': 'Anexar',
'plus': 'Mais',
'clear': 'Limpar',
'setVariable': 'Definir Variável',
'variable': 'Variável',
'operations': {
'clear': 'Claro',
'title': 'Operação',
'over-write': 'Sobrescrever',
'-=': '-=',
'/=': '/=',
'*=': '*=',
'extend': 'Estender',
'append': 'Acrescentar',
'+=': '+=',
'set': 'Pôr',
'overwrite': 'Sobrescrever',
},
'selectAssignedVariable': 'Selecione a variável atribuída...',
'setParameter': 'Definir parâmetro...',
'noVarTip': 'Clique no botão "+" para adicionar variáveis',
'assignedVarsDescription': 'As variáveis atribuídas devem ser variáveis graváveis, como variáveis de conversação.',
'varNotSet': 'Variável NÃO definida',
'noAssignedVars': 'Nenhuma variável atribuída disponível',
'variables': 'Variáveis',
},
tool: {
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 suporta apenas imagem',
transfer_method: 'Método de transferência. O valor é remote_url ou local_file',
url: 'URL da imagem',
upload_file_id: 'ID do arquivo enviado',
},
json: 'JSON gerado por ferramenta',
},
},
questionClassifiers: {
model: 'modelo',
inputVars: 'Variáveis de entrada',
outputVars: {
className: 'Nome da classe',
},
class: 'Classe',
classNamePlaceholder: 'Escreva o nome da sua classe',
advancedSetting: 'Configuração avançada',
topicName: 'Nome do tópico',
topicPlaceholder: 'Escreva o nome do seu tópico',
addClass: 'Adicionar classe',
instruction: 'Instrução',
instructionTip: 'Insira instruções adicionais para ajudar o classificador de perguntas a entender melhor como categorizar perguntas.',
instructionPlaceholder: 'Escreva sua instrução',
},
parameterExtractor: {
inputVar: 'Variável de entrada',
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',
ErrorMethod: {
continueOnError: 'continuar em erro',
removeAbnormalOutput: 'saída anormal de remoção',
operationTerminated: 'Terminada',
},
MaxParallelismTitle: 'Paralelismo máximo',
parallelModeEnableTitle: 'Modo paralelo ativado',
errorResponseMethod: 'Método de resposta de erro',
error_other: '{{contagem}} Erros',
parallelMode: 'Modo paralelo',
parallelModeUpper: 'MODO PARALELO',
error_one: '{{contagem}} Erro',
parallelModeEnableDesc: 'No modo paralelo, as tarefas dentro das iterações dão suporte à execução paralela. Você pode configurar isso no painel de propriedades à direita.',
comma: ',',
MaxParallelismDesc: 'O paralelismo máximo é usado para controlar o número de tarefas executadas simultaneamente em uma única iteração.',
answerNodeWarningDesc: 'Aviso de modo paralelo: nós de resposta, atribuições de variáveis de conversação e operações persistentes de leitura/gravação em iterações podem causar exceções.',
parallelPanelDesc: 'No modo paralelo, as tarefas na iteração dão suporte à execução paralela.',
},
note: {
editor: {
small: 'Pequeno',
bold: 'Ousado',
openLink: 'Abrir',
strikethrough: 'Tachado',
italic: 'Itálico',
invalidUrl: 'URL inválido',
placeholder: 'Escreva sua nota...',
bulletList: 'Lista de marcadores',
link: 'Link',
enterUrl: 'Digite o URL...',
medium: 'Média',
large: 'Grande',
unlink: 'Desvincular',
showAuthor: 'Autor do programa',
},
addNote: 'Adicionar nota',
},
docExtractor: {
outputVars: {
text: 'Texto extraído',
},
inputVar: 'Variável de entrada',
learnMore: 'Saiba Mais',
supportFileTypes: 'Tipos de arquivo de suporte: {{types}}.',
},
listFilter: {
outputVars: {
result: 'Resultado do filtro',
last_record: 'Último recorde',
first_record: 'Primeiro registro',
},
desc: 'DESC',
inputVar: 'Variável de entrada',
selectVariableKeyPlaceholder: 'Selecione a chave da subvariável',
limit: 'Topo N',
orderBy: 'Ordenar por',
filterCondition: 'Condição do filtro',
asc: 'ASC',
filterConditionKey: 'Chave de condição do filtro',
filterConditionComparisonOperator: 'Operador de comparação de condição de filtro',
filterConditionComparisonValue: 'Valor da condição do filtro',
extractsCondition: 'Extraia o item N',
},
},
tracing: {
stopBy: 'Parado por {{user}}',
},
variableReference: {
noAssignedVars: 'Nenhuma variável atribuída disponível',
noVarsForOperation: 'Não há variáveis disponíveis para atribuição com a operação selecionada.',
conversationVars: 'variáveis de conversação',
assignedVarsDescription: 'As variáveis atribuídas devem ser variáveis graváveis, como',
noAvailableVars: 'Nenhuma variável disponível',
},
}
export default translation