This commit is contained in:
2025-12-01 17:21:38 +08:00
parent 32fee2b8ab
commit fab8c13cb3
7511 changed files with 996300 additions and 0 deletions

View File

@@ -0,0 +1,98 @@
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',
clearAllConfirm: 'Excluir 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.',
list: {
delete: {
title: 'Você tem certeza que deseja excluir?',
},
},
batchAction: {
cancel: 'Cancelar',
selected: 'Selecionado',
delete: 'Excluir',
},
}
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,577 @@
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',
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: '',
},
},
contentEnableLabel: 'Moderação de conteúdo habilitada',
},
fileUpload: {
title: 'Upload de Arquivo',
description: 'A caixa de entrada do chat permite fazer upload de imagens, documentos e outros arquivos.',
supportedTypes: 'Tipos de Arquivo Suportados',
numberLimit: 'Máximo de uploads',
modalTitle: 'Configuração de Upload de Arquivo',
},
imageUpload: {
title: 'Upload de Imagem',
description: 'Permite fazer upload de imagens.',
supportedTypes: 'Tipos de Arquivo Suportados',
numberLimit: 'Máximo de uploads',
modalTitle: 'Configuração de Upload de Imagem',
},
bar: {
empty: 'Habilitar recursos para melhorar a experiência do usuário do aplicativo web',
enableText: 'Recursos Habilitados',
manage: 'Gerenciar',
},
documentUpload: {
title: 'Documento',
description: 'Habilitar Documento permitirá que o modelo aceite documentos e responda perguntas sobre eles.',
},
audioUpload: {
title: 'Áudio',
description: 'Habilitar Áudio permitirá que o modelo processe arquivos de áudio para transcrição e análise.',
},
},
automatic: {
},
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',
waitForFileUpload: 'Aguarde o upload do arquivo / arquivos',
},
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',
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',
'hide': 'Ocultar',
'errorMsg': {
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',
},
'defaultValue': 'Valor padrão',
'noDefaultValue': 'Nenhum valor padrão',
'selectDefaultValue': 'Selecionar valor padrão',
'file': {
image: {
name: 'Imagem',
},
audio: {
name: 'Áudio',
},
document: {
name: 'Documento',
},
video: {
name: 'Vídeo',
},
custom: {
description: 'Especifique outros tipos de arquivo.',
name: 'Outros tipos de arquivo',
createPlaceholder: ' Extensão de arquivo, por exemplo, .doc',
},
supportFileTypes: 'Tipos de arquivo de suporte',
},
'content': 'Conteúdo',
'multi-files': 'Lista de arquivos',
'single-file': 'Fila indiana',
'maxNumberOfUploads': 'Número máximo de uploads',
'maxNumberTip': 'Documento < {{docLimit}}, imagem < {{imgLimit}}, áudio < {{audioLimit}}, vídeo < {{videoLimit}}',
'uploadFileTypes': 'Carregar tipos de arquivo',
'both': 'Ambos',
'localUpload': 'Local Upload',
'optional': 'opcional',
'json': 'Código JSON',
'checkbox': 'Caixa de seleção',
'jsonSchema': 'Esquema JSON',
'unit': 'Unidade',
'uploadMethod': 'Método de upload',
'displayName': 'Nome de exibição',
'noDefaultSelected': 'Não selecione',
'placeholder': 'Espaço reservado',
'showAllSettings': 'Mostrar todas as configurações',
'startChecked': 'Iniciar verificado',
'tooltipsPlaceholder': 'Insira um texto útil mostrado ao passar o mouse sobre o rótulo',
'defaultValuePlaceholder': 'Insira o valor padrão para preencher previamente o campo',
'placeholderPlaceholder': 'Insira o texto a ser exibido quando o campo estiver vazio',
'unitPlaceholder': 'Exibir unidades após números, por exemplo, tokens',
'tooltips': 'Dicas de ferramentas',
'startSelectedOption': 'Iniciar opção selecionada',
},
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',
},
onlySupportVisionModelTip: 'Suporta apenas modelos de visão',
},
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',
openingQuestionPlaceholder: 'Você pode usar variáveis, tente digitar {{variable}}.',
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.',
embeddingModelRequired: 'É necessário um modelo de incorporação configurado',
},
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',
},
},
codegen: {
instruction: 'Instruções',
generatedCodeTitle: 'Código gerado',
noDataLine1: 'Descreva seu caso de uso à esquerda,',
loading: 'Gerando código...',
description: 'O Gerador de código usa modelos configurados para gerar código de alta qualidade com base em suas instruções. Por favor, forneça instruções claras e detalhadas.',
generate: 'Gerar',
resTitle: 'Código gerado',
title: 'Gerador de código',
overwriteConfirmTitle: 'Substituir o código existente?',
overwriteConfirmMessage: 'Essa ação substituirá o código existente. Você quer continuar?',
apply: 'Aplicar',
applyChanges: 'Aplicar alterações',
instructionPlaceholder: 'Insira uma descrição detalhada do código que você deseja gerar.',
noDataLine2: 'A visualização do código será exibida aqui.',
},
generate: {
template: {
pythonDebugger: {
instruction: 'Um bot que pode gerar e depurar seu código com base em suas instruções',
name: 'Depurador Python',
},
translation: {
name: 'Tradução',
instruction: 'Um tradutor que pode traduzir vários idiomas',
},
professionalAnalyst: {
name: 'Analista profissional',
instruction: 'Extraia insights, identifique riscos e destile informações importantes de relatórios longos em um único memorando',
},
excelFormulaExpert: {
name: 'Especialista em fórmulas do Excel',
instruction: 'Um chatbot que pode ajudar usuários iniciantes a entender, usar e criar fórmulas do Excel com base nas instruções do usuário',
},
travelPlanning: {
name: 'Planejamento de viagens',
instruction: 'O Assistente de Planejamento de Viagens é uma ferramenta inteligente projetada para ajudar os usuários a planejar suas viagens sem esforço',
},
SQLSorcerer: {
instruction: 'Transforme a linguagem cotidiana em consultas SQL',
name: 'Feiticeiro SQL',
},
GitGud: {
instruction: 'Gerar comandos Git apropriados com base nas ações de controle de versão descritas pelo usuário',
name: 'Bom jogo',
},
meetingTakeaways: {
name: 'Conclusões da reunião',
instruction: 'Destilar reuniões em resumos concisos, incluindo tópicos de discussão, principais conclusões e itens de ação',
},
writingsPolisher: {
instruction: 'Use técnicas avançadas de edição de texto para melhorar seus escritos',
name: 'Polidor de escrita',
},
},
generate: 'Gerar',
overwriteMessage: 'A aplicação desse prompt substituirá a configuração existente.',
apply: 'Aplicar',
title: 'Gerador de Prompt',
description: 'O Gerador de Prompts usa o modelo configurado para otimizar prompts para maior qualidade e melhor estrutura. Por favor, escreva instruções claras e detalhadas.',
tryIt: 'Experimente',
loading: 'Orquestrando o aplicativo para você...',
instruction: 'Instruções',
resTitle: 'Prompt gerado',
overwriteTitle: 'Substituir a configuração existente?',
to: 'para',
press: 'Imprensa',
version: 'Versão',
dismiss: 'Dispensar',
insertContext: 'inserir contexto',
versions: 'Versões',
optimizationNote: 'Nota de Otimização',
latest: 'Último',
instructionPlaceHolderLine2: 'O formato de saída está incorreto, por favor, siga estritamente o formato JSON.',
optimizePromptTooltip: 'Otimize no Gerador de Prompt',
idealOutput: 'Saída Ideal',
instructionPlaceHolderLine1: 'Torne a saída mais concisa, mantendo os pontos principais.',
optional: 'Opcional',
instructionPlaceHolderLine3: 'O tom está muito ríspido, por favor, torne-o mais amigável.',
idealOutputPlaceholder: 'Descreva o formato ideal de resposta, comprimento, tom e requisitos de conteúdo.',
instructionPlaceHolderTitle: 'Descreva como você gostaria de melhorar este Prompt. Por exemplo:',
newNoDataLine1: 'Escreva uma instrução na coluna da esquerda e clique em Gerar para ver a resposta.',
codeGenInstructionPlaceHolderLine: 'Quanto mais detalhado for o feedback, como os tipos de dados de entrada e saída, bem como a forma como as variáveis são processadas, mais precisa será a geração de código.',
},
warningMessage: {
timeoutExceeded: 'Os resultados não são exibidos devido ao tempo limite. Consulte os logs para obter os resultados completos.',
},
debugAsSingleModel: 'Depurar como modelo único',
noResult: 'A saída será exibida aqui.',
debugAsMultipleModel: 'Depurar como vários modelos',
publishAs: 'Publicar como',
duplicateModel: 'Duplicar',
}
export default translation

View File

@@ -0,0 +1,114 @@
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:ss 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',
triggered_from: 'ATIVADO POR',
},
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',
custom: 'Personalizado',
last30days: 'Últimos 30 Dias',
},
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',
testWithParams: 'Teste com parâmetros',
},
promptLog: 'Registro de Prompt',
agentLog: 'Registro do agente',
viewLog: 'Ver Registro',
agenteLogDetail: {
},
agentLogDetail: {
iterations: 'Iterações',
agentMode: 'Modo Agente',
finalProcessing: 'Processamento final',
iteration: 'Iteração',
toolUsed: 'Ferramenta usada',
},
dateFormat: 'DD/MM/AAAA',
triggerBy: {
debugging: 'Depuração',
appRun: 'Aplicativo Web',
webhook: 'Webhook',
schedule: 'Agenda',
plugin: 'Plugin',
ragPipelineRun: 'Pipeline RAG',
ragPipelineDebugging: 'Depuração RAG',
},
}
export default translation

View File

@@ -0,0 +1,189 @@
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: 'web app 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 web app antes de continuar.',
settings: {
entry: 'Configurações',
title: 'Configurações do web app',
webName: 'Nome do web app',
webDesc: 'Descrição do web app',
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 web app',
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 web app',
},
chatColorTheme: 'Tema de cor do chatbot',
chatColorThemeDesc: 'Defina o tema de cor do chatbot',
chatColorThemeInverted: 'Inve',
invalidHexMessage: 'Valor hex inválido',
invalidPrivacyPolicy: 'Link de política de privacidade inválido. Por favor, use um link válido que comece com http ou https',
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 web app',
copyrightTooltip: 'Por favor, atualize para o plano Professional ou superior',
},
sso: {
tooltip: 'Entre em contato com o administrador para habilitar o SSO do web app',
label: 'Autenticação SSO',
title: 'web app SSO',
description: 'Todos os usuários devem fazer login com SSO antes de usar o web app',
},
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 web app 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',
},
},
launch: 'Lançar',
enableTooltip: {
description: 'Para ativar este recurso, adicione um nó de Entrada do Usuário ao canvas. (Pode já existir no rascunho, e entra em efeito após a publicação)',
learnMore: 'Saiba mais',
},
title: 'Aplicativo Web',
},
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',
},
triggerInfo: {
title: 'Gatilhos',
explanation: 'Gerenciamento de gatilho de fluxo de trabalho',
triggersAdded: '{{count}} gatilhos adicionados',
noTriggerAdded: 'Nenhum gatilho adicionado',
triggerStatusDescription: 'O status do nó de gatilho aparece aqui. (Pode já existir no rascunho, entra em vigor após a publicação)',
learnAboutTriggers: 'Saiba mais sobre Gatilhos',
},
disableTooltip: {
triggerMode: 'O recurso {{feature}} não é compatível no modo Nó de Gatilho.',
},
},
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

349
dify/web/i18n/pt-BR/app.ts Normal file
View File

@@ -0,0 +1,349 @@
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',
workflowWarning: 'Atualmente em beta',
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 um tipo de aplicativo',
forBeginners: 'Tipos de aplicativos mais básicos',
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: 'Construa fluxos autônomos de IA visualmente com simplicidade de arrastar e soltar.',
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: 'Fluxo com recursos adicionais de memória e interface de chatbot.',
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: 'Fluxo agêntico para automações inteligentes',
noAppsFound: 'Nenhum aplicativo encontrado',
advancedShortDescription: 'Fluxo aprimorado para conversas de múltiplos turnos',
dropDSLToCreateApp: 'Cole o arquivo DSL aqui para criar o aplicativo',
import: 'Importação',
},
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',
},
arize: {
title: 'Arize',
description: 'Observabilidade de LLM de nível empresarial, avaliação online e offline, monitoramento e experimentação—impulsionada pelo OpenTelemetry. Projetado especificamente para aplicações baseadas em LLM e agentes.',
},
phoenix: {
title: 'Phoenix',
description: 'Plataforma de observabilidade, avaliação, engenharia de prompts e experimentação de código aberto baseada em OpenTelemetry para seus fluxos de trabalho e agentes de LLM.',
},
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.',
password: 'Senha',
clientId: 'ID do Cliente OAuth',
clientSecret: 'Segredo do Cliente OAuth',
username: 'Nome de usuário',
personalAccessToken: 'Token de Acesso Pessoal (legado)',
experimentId: 'ID do Experimento',
trackingUri: 'URI de rastreamento',
databricksHost: 'URL do Workspace do Databricks',
},
view: 'Vista',
opik: {
description: 'Opik é uma plataforma de código aberto para avaliar, testar e monitorar aplicativos LLM.',
title: 'Opik',
},
weave: {
description: 'Weave é uma plataforma de código aberto para avaliar, testar e monitorar aplicações de LLM.',
title: 'Trançar',
},
aliyun: {
title: 'Monitoramento em Nuvem',
description: 'A plataforma de observabilidade totalmente gerenciada e sem manutenção fornecida pela Alibaba Cloud, permite monitoramento, rastreamento e avaliação prontos para uso de aplicações Dify.',
},
mlflow: {
title: 'MLflow',
description: 'Plataforma LLMOps de código aberto para rastreamento de experimentos, observabilidade e avaliação, para construir aplicações de IA/LLM com confiança.',
},
databricks: {
title: 'Databricks',
description: 'Databricks oferece MLflow totalmente gerenciado com forte governança e segurança para armazenar dados de rastreamento.',
},
tencent: {
title: 'Tencent APM',
description: 'O Monitoramento de Desempenho de Aplicações da Tencent fornece rastreamento abrangente e análise multidimensional para aplicações LLM.',
},
},
answerIcon: {
descriptionInExplore: 'Se o ícone do web app deve ser usado para substituir 🤖 no Explore',
description: 'Se o ícone web app deve ser usado para substituir 🤖 no aplicativo compartilhado',
title: 'Use o ícone do web app para substituir 🤖',
},
importFromDSLUrlPlaceholder: 'Cole o link DSL aqui',
dslUploader: {
button: 'Arraste e solte o arquivo, ou',
browse: 'Navegar',
},
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',
appSelector: {
label: 'APLICAÇÃO',
noParams: 'Não são necessários parâmetros',
placeholder: 'Selecione um aplicativo...',
params: 'PARÂMETROS DO APLICATIVO',
},
structOutput: {
LLMResponse: 'Resposta do LLM',
configure: 'Configurar',
required: 'Requerido',
modelNotSupported: 'Modelo não suportado',
structured: 'Estruturado',
modelNotSupportedTip: 'O modelo atual não suporta esse recurso e é automaticamente rebaixado para injeção de prompt.',
structuredTip: 'Saídas Estruturadas é um recurso que garante que o modelo sempre gerará respostas que seguem o seu Esquema JSON fornecido.',
moreFillTip: 'Mostrando um máximo de 10 níveis de aninhamento',
notConfiguredTip: 'A saída estruturada ainda não foi configurada.',
},
accessItemsDescription: {
anyone: 'Qualquer pessoa pode acessar o aplicativo web',
specific: 'Apenas grupos ou membros específicos podem acessar o aplicativo web',
organization: 'Qualquer pessoa na organização pode acessar o aplicativo web',
external: 'Apenas usuários externos autenticados podem acessar o aplicativo Web.',
},
accessControlDialog: {
accessItems: {
anyone: 'Qualquer pessoa com o link',
specific: 'Grupos específicos ou membros',
organization: 'Apenas membros dentro da empresa',
external: 'Usuários externos autenticados',
},
operateGroupAndMember: {
searchPlaceholder: 'Pesquisar grupos e membros',
allMembers: 'Todos os membros',
expand: 'Expandir',
noResult: 'Nenhum resultado',
},
title: 'Controle de Acesso do Aplicativo Web',
description: 'Defina as permissões de acesso do aplicativo da web',
accessLabel: 'Quem tem acesso',
groups_one: '{{count}} GRUPO',
groups_other: '{{count}} GRUPOS',
members_other: '{{count}} MEMBROS',
noGroupsOrMembers: 'Nenhum grupo ou membro selecionado',
updateSuccess: 'Atualização bem-sucedida',
members_one: '{{count}} MEMBRO',
webAppSSONotEnabledTip: 'Por favor, entre em contato com o administrador da empresa para configurar o método de autenticação da aplicação web.',
},
publishApp: {
title: 'Quem pode acessar o aplicativo web',
notSet: 'Não definido',
notSetDesc: 'Atualmente, ninguém pode acessar o aplicativo web. Por favor, defina as permissões.',
},
accessControl: 'Controle de Acesso do Aplicativo Web',
noAccessPermission: 'Sem permissão para acessar o aplicativo web',
maxActiveRequestsPlaceholder: 'Digite 0 para ilimitado',
maxActiveRequests: 'Máximo de solicitações simultâneas',
maxActiveRequestsTip: 'Número máximo de solicitações ativas simultâneas por aplicativo (0 para ilimitado)',
gotoAnything: {
actions: {
searchPlugins: 'Pesquisar Plugins',
searchApplicationsDesc: 'Pesquise e navegue até seus aplicativos',
searchPluginsDesc: 'Pesquise e navegue até seus plug-ins',
searchKnowledgeBases: 'Pesquisar bases de conhecimento',
searchApplications: 'Pesquisar aplicativos',
searchWorkflowNodesDesc: 'Localizar e ir para nós no fluxo de trabalho atual por nome ou tipo',
searchWorkflowNodesHelp: 'Esse recurso só funciona ao visualizar um fluxo de trabalho. Navegue até um fluxo de trabalho primeiro.',
searchKnowledgeBasesDesc: 'Pesquise e navegue até suas bases de conhecimento',
searchWorkflowNodes: 'Pesquisar nós de fluxo de trabalho',
themeDarkDesc: 'Use aparência escura',
themeCategoryDesc: 'Mudar o tema do aplicativo',
themeLight: 'Tema Claro',
runDesc: 'Execute comandos rápidos (tema, idioma, ...)',
themeCategoryTitle: 'Tema',
runTitle: 'Comandos',
languageCategoryTitle: 'Idioma',
themeSystem: 'Tema do Sistema',
languageChangeDesc: 'Mudar o idioma da interface',
themeDark: 'Tema Escuro',
themeLightDesc: 'Use aparência clara',
themeSystemDesc: 'Siga a aparência do seu sistema operacional',
languageCategoryDesc: 'Mudar o idioma da interface',
slashDesc: 'Execute comandos como /tema, /idioma',
accountDesc: 'Navegue até a página da conta',
communityDesc: 'Comunidade do Discord aberta',
feedbackDesc: 'Discussões de feedback da comunidade aberta',
docDesc: 'Abra a documentação de ajuda',
},
emptyState: {
noAppsFound: 'Nenhum aplicativo encontrado',
noPluginsFound: 'Nenhum plugin encontrado',
noWorkflowNodesFound: 'Nenhum nó de fluxo de trabalho encontrado',
noKnowledgeBasesFound: 'Nenhuma base de conhecimento encontrada',
tryDifferentTerm: 'Tente um termo de pesquisa diferente ou remova o filtro {{mode}}',
trySpecificSearch: 'Tente {{shortcuts}} para pesquisas específicas',
},
groups: {
apps: 'Aplicativos',
knowledgeBases: 'Bases de conhecimento',
plugins: 'Plugins',
workflowNodes: 'Nós de fluxo de trabalho',
commands: 'Comandos',
},
searching: 'Procurando...',
searchTitle: 'Pesquisar qualquer coisa',
someServicesUnavailable: 'Alguns serviços de pesquisa indisponíveis',
searchTemporarilyUnavailable: 'Pesquisa temporariamente indisponível',
servicesUnavailableMessage: 'Alguns serviços de pesquisa podem estar enfrentando problemas. Tente novamente em um momento.',
searchPlaceholder: 'Pesquise ou digite @ para comandos...',
noResults: 'Nenhum resultado encontrado',
useAtForSpecific: 'Use @ para tipos específicos',
clearToSearchAll: 'Desmarque @ para pesquisar tudo',
searchFailed: 'Falha na pesquisa',
searchHint: 'Comece a digitar para pesquisar tudo instantaneamente',
commandHint: 'Digite @ para navegar por categoria',
selectSearchType: 'Escolha o que pesquisar',
resultCount: '{{count}} resultado',
resultCount_other: '{{count}} resultados',
inScope: 'em {{scope}}s',
noMatchingCommands: 'Nenhum comando correspondente encontrado',
tryDifferentSearch: 'Tente um termo de pesquisa diferente',
slashHint: 'Digite / para ver todos os comandos disponíveis',
tips: 'Pressione ↑↓ para navegar',
selectToNavigate: 'Selecione para navegar',
pressEscToClose: 'Pressione ESC para fechar',
startTyping: 'Comece a digitar para pesquisar',
},
notPublishedYet: 'O aplicativo ainda não foi publicado',
noUserInputNode: 'Nodo de entrada do usuário ausente',
}
export default translation

View File

@@ -0,0 +1,203 @@
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: {
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',
contactSales: 'Fale com a equipe de Vendas',
talkToSales: 'Fale com a equipe de Vendas',
modelProviders: 'Fornecedores de Modelos',
buildApps: 'Construir Aplicações',
vectorSpace: 'Espaço Vetorial',
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',
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',
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.',
titlePerMonth: '{{count,number}} mensagens/mês',
},
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',
annotationQuota: 'Cota de anotação',
contractSales: 'Entre em contato com a equipe de vendas',
unavailable: 'Indisponível',
priceTip: 'por espaço de trabalho/',
apiRateLimit: 'Limite de Taxa da API',
freeTrialTipPrefix: 'Inscreva-se e receba um',
teamMember_one: '{{count,number}} Membro da Equipe',
documentsRequestQuota: '{{count,number}}/min Limite de Taxa de Solicitação de Conhecimento',
cloud: 'Serviço de Nuvem',
teamWorkspace: '{{count,number}} Espaço de Trabalho da Equipe',
apiRateLimitUnit: '{{count,number}}',
freeTrialTipSuffix: 'Nenhum cartão de crédito necessário',
teamMember_other: '{{count,number}} Membros da Equipe',
comparePlanAndFeatures: 'Compare planos e recursos',
getStarted: 'Começar',
annualBilling: 'Cobrança Anual',
self: 'Auto-Hospedado',
documentsTooltip: 'Cota sobre o número de documentos importados da Fonte de Dados do Conhecimento.',
freeTrialTip: 'teste gratuito de 200 chamadas da OpenAI.',
documents: '{{count,number}} Documentos de Conhecimento',
unlimitedApiRate: 'Sem limite de taxa da API',
apiRateLimitTooltip: 'O limite da taxa da API se aplica a todas as solicitações feitas através da API Dify, incluindo geração de texto, conversas de chat, execuções de fluxo de trabalho e processamento de documentos.',
documentsRequestQuotaTooltip: 'Especifica o número total de ações que um espaço de trabalho pode realizar por minuto dentro da base de conhecimento, incluindo criação, exclusão, atualizações de conjuntos de dados, uploads de documentos, modificações, arquivamento e consultas à base de conhecimento. Esse métrica é utilizada para avaliar o desempenho das solicitações à base de conhecimento. Por exemplo, se um usuário do Sandbox realizar 10 testes de impacto consecutivos dentro de um minuto, seu espaço de trabalho ficará temporariamente restrito de realizar as seguintes ações no minuto seguinte: criação, exclusão, atualizações de conjuntos de dados e uploads ou modificações de documentos.',
startBuilding: 'Comece a construir',
taxTip: 'Todos os preços de assinatura (mensal/anual) não incluem os impostos aplicáveis (por exemplo, IVA, imposto sobre vendas).',
taxTipSecond: 'Se a sua região não tiver requisitos fiscais aplicáveis, nenhum imposto aparecerá no seu checkout e você não será cobrado por taxas adicionais durante todo o período da assinatura.',
triggerEvents: {
unlimited: 'Eventos de Gatilho Ilimitados',
tooltip: 'O número de eventos que iniciam automaticamente fluxos de trabalho através de disparadores de Plugin, Agendamento ou Webhook.',
sandbox: '{{count,number}} Acionar Eventos',
professional: '{{count,number}} Eventos de disparo/mês',
},
workflowExecution: {
tooltip: 'Prioridade e velocidade da fila de execução de fluxo de trabalho.',
priority: 'Execução de Fluxo de Trabalho Prioritário',
faster: 'Execução de Fluxo de Trabalho Mais Rápida',
standard: 'Execução Padrão de Fluxo de Trabalho',
},
startNodes: {
unlimited: 'Eventos de Gatilho/fluxo de trabalho ilimitados',
limited: 'Até {{count}} Acionadores/workflow',
},
title: {
plans: 'planos',
description: 'Selecione o plano que melhor se adapta às necessidades da sua equipe.',
},
},
plans: {
sandbox: {
name: 'Sandbox',
description: '200 vezes GPT de teste gratuito',
for: 'Teste gratuito das capacidades principais',
},
professional: {
name: 'Profissional',
description: 'Para indivíduos e pequenas equipes desbloquearem mais poder de forma acessível.',
for: 'Para Desenvolvedores Independentes/Pequenas Equipes',
},
team: {
name: 'Equipe',
description: 'Colabore sem limites e aproveite o desempenho de primeira linha.',
for: 'Para Equipes de Médio Porte',
},
enterprise: {
name: 'Empresa',
description: 'Obtenha capacidades completas e suporte para sistemas críticos em larga escala.',
includesTitle: 'Tudo no plano Equipe, além de:',
features: ['Soluções de Implantação Escaláveis de Nível Empresarial', 'Autorização de Licença Comercial', 'Recursos Exclusivos para Empresas', 'Múltiplos Espaços de Trabalho e Gestão Empresarial', 'SSO', 'SLAs negociados pelos parceiros da Dify', 'Segurança e Controles Avançados', 'Atualizações e Manutenção pela Dify Oficialmente', 'Suporte Técnico Profissional'],
btnText: 'Contate Vendas',
priceTip: 'Faturamento Anual Apenas',
price: 'Custom',
for: 'Para equipes de grande porte',
},
community: {
features: ['Todos os Recursos Principais Lançados no Repositório Público', 'Espaço de Trabalho Único', 'Está em conformidade com a Licença de Código Aberto Dify'],
name: 'Comunidade',
description: 'Para Usuários Individuais, Pequenas Equipes ou Projetos Não Comerciais',
includesTitle: 'Recursos Gratuitos:',
btnText: 'Comece com a Comunidade',
price: 'Grátis',
for: 'Para Usuários Individuais, Pequenas Equipes ou Projetos Não Comerciais',
},
premium: {
features: ['Confiabilidade Autogerenciada por Diversos Provedores de Nuvem', 'Espaço de Trabalho Único', 'Personalização de Logo e Marca do WebApp', 'Suporte Prioritário por E-mail e Chat'],
includesTitle: 'Tudo da Comunidade, além de:',
for: 'Para organizações e equipes de médio porte',
price: 'Escalável',
name: 'Premium',
comingSoon: 'Suporte da Microsoft Azure e Google Cloud em breve',
priceTip: 'Baseado no Mercado de Nuvem',
btnText: 'Obtenha Premium em',
description: 'Para organizações e equipes de médio porte',
},
},
vectorSpace: {
fullTip: 'O Espaço Vetorial está cheio.',
fullSolution: 'Faça o upgrade do seu plano para obter mais espaço.',
},
apps: {
fullTip1: 'Atualize para criar mais aplicativos',
fullTip2: 'Limite do plano alcançado',
fullTip1des: 'Você atingiu o limite de criar aplicativos neste plano.',
contactUs: 'Contate-nos',
fullTip2des: 'É recomendado limpar aplicações inativas para liberar uso ou entrar em contato conosco.',
},
annotatedResponse: {
fullTipLine1: 'Faça o upgrade do seu plano para',
fullTipLine2: 'anotar mais conversas.',
quotaTitle: 'Cota de Respostas Anotadas',
},
usagePage: {
documentsUploadQuota: 'Cota de Upload de Documentos',
annotationQuota: 'Cota de Anotação',
teamMembers: 'Membros da equipe',
vectorSpace: 'Armazenamento de Dados do Conhecimento',
vectorSpaceTooltip: 'Documentos com o modo de indexação de Alta Qualidade consumirã recursos de Armazenamento de Dados de Conhecimento. Quando o Armazenamento de Dados de Conhecimento atingir o limite, novos documentos não serão carregados.',
buildApps: 'Desenvolver Apps',
perMonth: 'por mês',
triggerEvents: 'Eventos de Gatilho',
resetsIn: 'Reinicia em {{count,number}} dias',
},
teamMembers: 'Membros da equipe',
triggerLimitModal: {
dismiss: 'Dispensar',
usageTitle: 'EVENTOS DE GATILHO',
title: 'Atualize para desbloquear mais eventos de gatilho',
upgrade: 'Atualizar',
description: 'Você atingiu o limite de eventos de gatilho de fluxo de trabalho para este plano.',
},
}
export default translation

View File

@@ -0,0 +1,788 @@
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',
deleteApp: 'Excluir aplicativo',
copied: 'Copiado',
in: 'em',
viewDetails: 'Ver detalhes',
downloadFailed: 'Download falhou. Por favor, tente novamente mais tarde.',
more: 'Mais',
downloadSuccess: 'Download concluído.',
format: 'Formato',
deSelectAll: 'Desmarcar tudo',
selectAll: 'Selecionar tudo',
config: 'Configuração',
no: 'Não',
yes: 'Sim',
deleteConfirmTitle: 'Excluir?',
confirmAction: 'Por favor, confirme sua ação.',
noSearchResults: 'Nenhum {{content}} foi encontrado',
resetKeywords: 'Redefinir palavras-chave',
selectCount: '{{count}} Selecionado',
searchCount: 'Encontre {{count}} {{content}}',
noSearchCount: '0 {{content}}',
now: 'Agora',
},
placeholder: {
input: 'Por favor, insira',
select: 'Por favor, selecione',
search: 'Pesquisar...',
},
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',
settingsLink: 'Configurações do provedor de modelos',
capabilities: 'Recursos multimodais',
},
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',
exploreMarketplace: 'Explorar Mercado',
appDetail: 'Detalhes do aplicativo',
account: 'Conta',
},
userProfile: {
settings: 'Configurações',
emailSupport: 'Suporte por e-mail',
workspace: 'Espaço de trabalho',
createWorkspace: 'Criar Espaço de Trabalho',
helpCenter: 'Ajuda',
roadmap: 'Roteiro',
community: 'Comunidade',
about: 'Sobre',
logout: 'Sair',
github: 'GitHub',
support: 'Suporte',
compliance: 'Conformidade',
contactUs: 'Contate-Nos',
forum: 'Fórum',
},
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',
generalGroup: 'GERAL',
},
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.',
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',
workspaceName: 'Nome do Espaço de Trabalho',
workspaceIcon: 'Ícone de Área de Trabalho',
editWorkspaceInfo: 'Editar Informações do Espaço de Trabalho',
changeEmail: {
verifyEmail: 'Verifique seu email atual',
resendCount: 'Reenviar em {{count}}s',
sendVerifyCode: 'Enviar código de verificação',
emailPlaceholder: 'Digite um novo email',
emailLabel: 'Novo e-mail',
resend: 'Reenviar',
codeLabel: 'Código de verificação',
content3: 'Digite um novo e-mail e nós enviaremos um código de verificação.',
codePlaceholder: 'Cole o código de 6 dígitos',
resendTip: 'Não recebeu um código?',
verifyNew: 'Verifique seu novo e-mail',
changeTo: 'Mudar para {{email}}',
continue: 'Continue',
title: 'Mudar E-mail',
content4: 'Acabamos de enviar um código de verificação temporário para <email>{{email}}</email>.',
existingEmail: 'Um usuário com este e-mail já existe.',
authTip: 'Uma vez que seu e-mail seja alterado, as contas do Google ou GitHub vinculadas ao seu e-mail antigo não poderão mais fazer login nesta conta.',
newEmail: 'Crie um novo endereço de e-mail',
content2: 'Seu email atual é <email>{{email}}</email>. O código de verificação foi enviado para este endereço de email.',
content1: 'Se você continuar, enviaremos um código de verificação para <email>{{email}}</email> para reautenticação.',
unAvailableEmail: 'Este e-mail está temporariamente indisponível.',
},
},
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',
transferModal: {
verifyEmail: 'Verifique seu email atual',
resendCount: 'Reenviar em {{count}}s',
codeLabel: 'Código de verificação',
title: 'Transferir a propriedade do espaço de trabalho',
transferPlaceholder: 'Selecione um membro do espaço de trabalho…',
continue: 'Continue',
resendTip: 'Não recebeu um código?',
warningTip: 'Você se tornará um membro administrador, e o novo proprietário terá controle total.',
verifyContent: 'Seu email atual é <email>{{email}}</email>.',
transfer: 'Transferir a propriedade do espaço de trabalho',
resend: 'Reenviar',
verifyContent2: 'Enviaremos um código de verificação temporário para este email para reautenticação.',
codePlaceholder: 'Cole o código de 6 dígitos',
warning: 'Você está prestes a transferir a propriedade de "{{workspace}}". Isso entra em vigor imediatamente e não pode ser desfeito.',
transferLabel: 'Transferir a propriedade do espaço de trabalho para',
sendTip: 'Se você continuar, enviaremos um código de verificação para <email>{{email}}</email> para reautenticação.',
sendVerifyCode: 'Enviar código de verificação',
},
transferOwnership: 'Transferir Propriedade',
},
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',
trialQuotaTip: 'Sua cota de teste do Anthropic expirará em 11/03/2025 e não estará mais disponível depois disso. Por favor, use-o a tempo.',
},
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',
emptyProviderTip: 'Instale um provedor de modelo primeiro.',
installProvider: 'Instalar provedores de modelo',
discoverMore: 'Descubra mais em',
configureTip: 'Configure a chave de API ou adicione o modelo a ser usado',
emptyProviderTitle: 'Provedor de modelo não configurado',
toBeConfigured: 'A ser configurado',
auth: {
apiKeyModal: {
addModel: 'Adicionar modelo',
title: 'Configuração de Autorização de Chave da API',
desc: 'Após configurar as credenciais, todos os membros dentro do espaço de trabalho podem usar este modelo ao orquestrar aplicações.',
},
addCredential: 'Adicionar credencial',
configModel: 'Configurar modelo',
apiKeys: 'Chaves de API',
unAuthorized: 'Não autorizado',
modelCredentials: 'Credenciais do modelo',
providerManaged: 'Provedor gerenciado',
addApiKey: 'Adicionar chave da API',
authorizationError: 'Erro de autorização',
addNewModel: 'Adicionar novo modelo',
specifyModelCredential: 'Especifique as credenciais do modelo',
providerManagedTip: 'A configuração atual é hospedada pelo provedor.',
authRemoved: 'Autorização removida',
addModelCredential: 'Adicionar credenciais do modelo',
configLoadBalancing: 'Configuração de Balanceamento de Carga',
specifyModelCredentialTip: 'Use uma credencial de modelo configurada.',
modelCredential: 'Credencial de modelo',
editModelCredential: 'Editar credencial do modelo',
manageCredentials: 'Gerenciar credenciais',
customModelCredentials: 'Credenciais de modelo personalizado',
addModel: 'Adicionar modelo',
removeModel: 'Remover modelo',
selectModelCredential: 'Selecione uma credencial de modelo',
customModelCredentialsDeleteTip: 'A credencial está em uso e não pode ser excluída',
addNewModelCredential: 'Adicionar nova credencial de modelo',
},
parametersInvalidRemoved: 'Alguns parâmetros são inválidos e foram removidos',
installDataSourceProvider: 'Instalar provedores de fontes de dados',
},
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',
},
integratedAlert: 'O Notion está integrado através de credenciais internas, não é necessário reautorizar.',
},
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.',
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',
pipeline: 'Pipeline',
},
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 {{botName}}',
thinking: 'Pensante...',
thought: 'Pensamento',
resend: 'Reenviar',
},
promptEditor: {
placeholder: 'Escreva sua palavra de incentivo aqui, digite \'{\' para inserir uma variável, digite \'/\' para inserir um bloco de conteúdo de incentivo',
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.',
fileExtensionBlocked: 'Este tipo de arquivo está bloqueado por razões de segurança',
},
license: {
expiring: 'Expirando em um dia',
expiring_plural: 'Expirando em {{count}} dias',
unlimited: 'Ilimitado',
},
pagination: {
perPage: 'Itens por página',
},
theme: {
light: 'luz',
dark: 'escuro',
theme: 'Tema',
auto: 'sistema',
},
compliance: {
soc2Type1: 'Relatório SOC 2 Tipo I',
sandboxUpgradeTooltip: 'Apenas disponível com um plano Profissional ou de Equipe.',
soc2Type2: 'Relatório SOC 2 Tipo II',
professionalUpgradeTooltip: 'Apenas disponível com um plano Team ou superior.',
gdpr: 'GDPR DPA',
iso27001: 'Certificação ISO 27001:2022',
},
imageInput: {
dropImageHere: 'Arraste sua imagem aqui, ou',
supportedFormats: 'Suporta PNG, JPG, JPEG, WEBP e GIF',
browse: 'navegar',
},
you: 'Você',
avatar: {
deleteTitle: 'Remover Avatar',
deleteDescription: 'Você tem certeza de que deseja remover sua foto de perfil? Sua conta usará o avatar padrão inicial.',
},
feedback: {
title: 'Fornecer feedback',
content: 'Conteúdo do feedback',
subtitle: 'Por favor, nos diga o que deu errado com esta resposta',
placeholder: 'Por favor, descreva o que deu errado ou como podemos melhorar...',
},
label: {
optional: '(opcional)',
},
noData: 'Sem dados',
dynamicSelect: {
error: 'Falha ao carregar opções',
noData: 'Nenhuma opção disponível',
loading: 'Carregando opções...',
selected: '{{count}} selecionado',
},
}
export default translation

View File

@@ -0,0 +1,32 @@
const translation = {
custom: 'Personalização',
upgradeTip: {
prefix: 'Atualize seu plano para',
suffix: 'personalizar sua marca.',
title: 'Atualize seu plano',
des: 'Atualize seu plano para personalizar sua marca',
},
webapp: {
title: 'Personalizar marca do web app',
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,217 @@
const translation = {
steps: {
header: {
fallbackRoute: 'Conhecimento',
},
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 arquivos ou pastas, ou',
buttonSingleFile: 'Arraste e solte um 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',
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',
watercrawlTitle: 'Extrair conteúdo da web com o Watercrawl',
configureFirecrawl: 'Configurar o Firecrawl',
configureJinaReader: 'Configurar o Leitor Jina',
waterCrawlNotConfigured: 'Watercrawl não está configurado',
waterCrawlNotConfiguredDescription: 'Configure o Watercrawl com a chave da API para usá-lo.',
watercrawlDoc: 'Documentos do Watercrawl',
configureWatercrawl: 'Configurar Watercrawl',
running: 'Executando',
},
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',
qaTip: 'Ao usar dados estruturados de perguntas e respostas, você pode criar documentos que combinam perguntas com respostas. Esses documentos são indexados com base na parte da pergunta, permitindo que o sistema recupere respostas relevantes com base na similaridade da consulta.',
},
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?',
},
watercrawl: {
apiKeyPlaceholder: 'Chave da API do watercrawl.dev',
configWatercrawl: 'Configurar Watercrawl',
getApiKeyLinkText: 'Obtenha sua chave de API em watercrawl.dev',
},
}
export default translation

View File

@@ -0,0 +1,407 @@
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',
resume: 'Retomar',
pause: 'Pausa',
},
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',
sort: {
uploadTime: 'Hora do envio',
hitCount: 'Contagem de Recuperação',
},
},
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',
website_crawl: 'Rastreamento de sites',
local_file: 'Arquivo local',
online_document: 'Documento Online',
},
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',
topicKeywords: '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',
waiting: 'Aguarde a incorporação...',
},
segment: {
paragraphs: 'Parágrafos',
keywords: 'Palavras-chave',
addKeyWord: 'Adicionar palavra-chave',
keywordError: 'O comprimento máximo da palavra-chave é 20',
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',
dateTimeFormat: 'DD/MM/YYYY HH:mm',
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',
keywordEmpty: 'A palavra-chave não pode estar vazia',
keywordDuplicate: 'A palavra-chave já existe',
},
}
export default translation

View File

@@ -0,0 +1,34 @@
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',
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,166 @@
const translation = {
creation: {
createFromScratch: {
title: 'Pipeline de conhecimento em branco',
description: 'Crie um pipeline personalizado do zero com controle total sobre o processamento e a estrutura de dados.',
},
backToKnowledge: 'Voltar ao Conhecimento',
successTip: 'Criou com sucesso uma Base de Dados de Conhecimento',
createKnowledge: 'Criar conhecimento',
errorTip: 'Falha ao criar uma base de dados de conhecimento',
importDSL: 'Importar de um arquivo DSL',
caution: 'Cuidado',
},
templates: {
customized: 'Personalizado',
},
operations: {
process: 'Processo',
details: 'Detalhes',
preview: 'Visualizar',
convert: 'Converter',
exportPipeline: 'Pipeline de exportação',
useTemplate: 'Usar este Pipeline de Conhecimento',
editInfo: 'Editar informações',
choose: 'Escolher',
saveAndProcess: 'Salvar & Processar',
dataSource: 'Fonte de dados',
backToDataSource: 'Voltar para a fonte de dados',
},
deletePipeline: {
title: 'Tem certeza de que deseja excluir este modelo de pipeline?',
content: 'A exclusão do modelo de pipeline é irreversível.',
},
publishPipeline: {
success: {
message: 'Pipeline de conhecimento publicado',
tip: 'Vá para Documentos para adicionar ou gerenciar documentos.',
},
error: {
message: 'Falha ao publicar o pipeline de conhecimento',
},
},
publishTemplate: {
success: {
learnMore: 'Saiba Mais',
message: 'Modelo de pipeline publicado',
tip: 'Você pode usar este modelo na página de criação.',
},
error: {
message: 'Falha ao publicar o modelo de pipeline',
},
},
exportDSL: {
errorTip: 'Falha ao exportar DSL de pipeline',
successTip: 'Exportar DSL de pipeline com êxito',
},
details: {
structure: 'Estrutura',
structureTooltip: 'A Estrutura de Partes determina como os documentos são divididos e indexados, oferecendo os modos Geral, Pai-Filho e P e Resposta, e é exclusiva para cada base de conhecimento.',
createdBy: 'Por {{author}}',
},
testRun: {
steps: {
dataSource: 'Fonte de dados',
documentProcessing: 'Processamento de documentos',
},
dataSource: {
localFiles: 'Arquivos locais',
},
notion: {
title: 'Escolher páginas do Notion',
docTitle: 'Documentos do Notion',
},
title: 'Execução de teste',
tooltip: 'No modo de execução de teste, apenas um documento pode ser importado por vez para facilitar a depuração e a observação.',
},
inputFieldPanel: {
uniqueInputs: {
title: 'Entradas exclusivas para cada entrada',
tooltip: 'As entradas exclusivas só podem ser acessadas pela fonte de dados selecionada e seus nós downstream. Os usuários não precisarão preenchê-lo ao escolher outras fontes de dados. Somente os campos de entrada referenciados por variáveis de fonte de dados aparecerão na primeira etapa (Fonte de dados). Todos os outros campos serão mostrados na segunda etapa (Processar documentos).',
},
globalInputs: {
title: 'Entradas globais para todas as entradas',
tooltip: 'As entradas globais são compartilhadas entre todos os nós. Os usuários precisarão preenchê-los ao selecionar qualquer fonte de dados. Por exemplo, campos como delimitador e comprimento máximo do bloco podem ser aplicados uniformemente em várias fontes de dados. Somente os campos de entrada referenciados por variáveis de fonte de dados aparecem na primeira etapa (fonte de dados). Todos os outros campos aparecem na segunda etapa (Processar documentos).',
},
preview: {
stepTwoTitle: 'Documentos de processo',
stepOneTitle: 'Fonte de dados',
},
error: {
variableDuplicate: 'O nome da variável já existe. Por favor, escolha um nome diferente.',
},
addInputField: 'Adicionar campo de entrada',
editInputField: 'Editar campo de entrada',
title: 'Campos de entrada do usuário',
description: 'Os campos de entrada do usuário são usados para definir e coletar variáveis necessárias durante o processo de execução do pipeline. Os usuários podem personalizar o tipo de campo e configurar de forma flexível o valor de entrada para atender às necessidades de diferentes fontes de dados ou etapas de processamento de documentos.',
},
addDocuments: {
steps: {
processDocuments: 'Documentos de processo',
processingDocuments: 'Processamento de documentos',
chooseDatasource: 'Escolher uma fonte de dados',
},
stepOne: {
preview: 'Visualizar',
},
stepTwo: {
chunkSettings: 'Configurações de partes',
previewChunks: 'Visualizar partes',
},
stepThree: {
learnMore: 'Saiba Mais',
},
characters: 'Caracteres',
title: 'Adicionar documentos',
backToDataSource: 'Fonte de dados',
selectOnlineDocumentTip: 'Processar até {{count}} páginas',
selectOnlineDriveTip: 'Processar até {{count}} arquivos, com no máximo {{fileSize}} MB cada',
},
documentSettings: {
title: 'Configurações do documento',
},
onlineDocument: {
pageSelectorTitle: '{{name}} páginas',
},
onlineDrive: {
breadcrumbs: {
searchPlaceholder: 'Pesquisar arquivos...',
allFiles: 'Todos os arquivos',
allBuckets: 'Todos os buckets do Cloud Storage',
searchResult: 'Encontrar {{searchResultsLength}} itens na pasta "{{folderName}}"',
},
resetKeywords: 'Redefinir palavras-chave',
notSupportedFileType: 'Este tipo de arquivo não é suportado',
emptyFolder: 'Esta pasta está vazia',
emptySearchResult: 'Nenhum item foi encontrado',
notConnected: '{{name}} não está conectado',
notConnectedTip: 'Para sincronizar com {{name}}, a conexão com {{name}} deve ser estabelecida primeiro.',
},
credentialSelector: {
name: '{{credentialName}} de {{pluginName}}',
},
conversion: {
confirm: {
title: 'Confirmação',
content: 'Esta ação é permanente. Você não poderá reverter para o método anterior. Por favor, confirme para converter.',
},
errorMessage: 'Falha ao converter o conjunto de dados em um pipeline',
warning: 'Esta ação não pode ser desfeita.',
descriptionChunk2: '— uma abordagem mais aberta e flexível com acesso a plugins do nosso mercado. Isso aplicará o novo método de processamento a todos os documentos futuros.',
successMessage: 'Converteu com êxito o conjunto de dados em um pipeline',
title: 'Converter em pipeline de conhecimento',
descriptionChunk1: 'Agora você pode converter sua base de conhecimento existente para usar o Pipeline de Conhecimento para processamento de documentos',
},
knowledgeNameAndIconPlaceholder: 'Insira o nome da Base de Conhecimento',
knowledgeDescription: 'Descrição do conhecimento',
knowledgePermissions: 'Permissões',
pipelineNameAndIcon: 'Nome e ícone do pipeline',
inputField: 'Campo de entrada',
knowledgeNameAndIcon: 'Nome e ícone do conhecimento',
editPipelineInfo: 'Editar informações do pipeline',
knowledgeDescriptionPlaceholder: 'Descreva o que está nesta Base de Conhecimento. Uma descrição detalhada permite que a IA acesse o conteúdo do conjunto de dados com mais precisão. Se estiver vazio, o Dify usará a estratégia de acerto padrão. (Opcional)',
configurationTip: 'Configure {{pluginName}}',
}
export default translation

View File

@@ -0,0 +1,51 @@
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.',
method: 'Método de Recuperação',
},
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',
searchModel: 'Pesquisar modelo',
chunkStructure: {
description: 'sobre a estrutura do pedaço.',
learnMore: 'Saiba Mais',
title: 'Estrutura de Chunk',
},
numberOfKeywords: 'Número de palavras-chave',
onSearchResults: 'Nenhum membro corresponde à sua consulta de pesquisa.\nTente sua pesquisa novamente.',
nameAndIcon: 'Nome & Ícone',
},
}
export default translation

View File

@@ -0,0 +1,243 @@
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',
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: {
},
change: 'Alterar',
changeRetrievalMethod: 'Alterar método de recuperação',
keyword_search: {
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.',
},
},
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',
graph: 'Gráfico',
qa: 'Perguntas e respostas',
},
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',
metadata: {
createMetadata: {
name: 'Nome',
title: 'Nova Metadata',
type: 'Tipo',
namePlaceholder: 'Adicionar nome de metadados',
back: 'Voltar',
},
checkName: {
empty: 'O nome dos metadados não pode estar vazio',
invalid: 'O nome de metadata só pode conter letras minúsculas, números e sublinhados e deve começar com uma letra minúscula.',
tooLong: 'O nome dos metadados não pode exceder {{max}} caracteres.',
},
batchEditMetadata: {
editDocumentsNum: 'Editando {{num}} documentos',
applyToAllSelectDocument: 'Aplicar a todos os documentos selecionados',
editMetadata: 'Editar Metadados',
multipleValue: 'Múltiplos Valores',
applyToAllSelectDocumentTip: 'Crie automaticamente todos os metadados editados e novos mencionados acima para todos os documentos selecionados, caso contrário, a edição de metadados só se aplicará aos documentos que já os possuem.',
},
selectMetadata: {
manageAction: 'Gerenciar',
search: 'Pesquisar metadados',
newAction: 'Nova Metadados',
},
datasetMetadata: {
addMetaData: 'Adicionar Metadados',
namePlaceholder: 'Nome da metadata',
description: 'Você pode gerenciar todos os metadados neste conhecimento aqui. As modificações serão sincronizadas em todos os documentos.',
deleteTitle: 'Confirme para deletar',
deleteContent: 'Você tem certeza de que deseja excluir os metadados "{{name}}"?',
name: 'Nome',
builtInDescription: 'Os metadados incorporados são extraídos e gerados automaticamente. Eles devem ser ativados antes do uso e não podem ser editados.',
disabled: 'Desativado',
builtIn: 'Integrado',
rename: 'Renomear',
values: '{{num}} Valores',
},
documentMetadata: {
metadataToolTip: 'Os metadados servem como um filtro crítico que aprimora a precisão e a relevância da recuperação de informações. Você pode modificar e adicionar metadados para este documento aqui.',
technicalParameters: 'Parâmetros Técnicos',
documentInformation: 'Informações do Documento',
startLabeling: 'Comece a rotular',
},
addMetadata: 'Adicionar Metadados',
chooseTime: 'Escolha um horário...',
metadata: 'Metadados',
},
embeddingModelNotAvailable: 'O modelo de incorporação não está disponível.',
updated: 'Atualizado',
externalKnowledgeBase: 'Base de conhecimento externa',
createFromPipeline: 'Criar a partir do pipeline de conhecimento',
serviceApi: {
card: {
apiKey: 'Chave de API',
apiReference: 'Referência da API',
title: 'API de serviço de backend',
endpoint: 'Endpoint da API de Serviço',
},
enabled: 'Em serviço',
title: 'API de Serviço',
disabled: 'Desativado',
},
docAllEnabled_one: '{{count}} documento habilitado',
docAllEnabled_other: 'Todos os documentos {{count}} ativados',
partialEnabled_one: 'Total de {{count}} documentos, {{num}} disponíveis',
partialEnabled_other: 'Total de {{count}} documentos, {{num}} disponíveis',
}
export default translation

View File

@@ -0,0 +1,76 @@
const translation = {
toVerifiedTip: {
front: 'Você agora está elegível para o status de Educação Verificada. Por favor, insira suas informações educacionais abaixo para concluir o processo e receber um',
coupon: 'cupom exclusivo de 100%',
end: 'para o Plano Profissional Dify.',
},
form: {
schoolName: {
placeholder: 'Digite o nome oficial e não abreviado da sua escola',
title: 'O nome da sua escola',
},
schoolRole: {
option: {
teacher: 'Professor',
student: 'Estudante',
administrator: 'Administrador Escolar',
},
title: 'Seu Papel na Escola',
},
terms: {
desc: {
and: 'e',
privacyPolicy: 'Política de Privacidade',
front: 'Suas informações e o uso do status de Educação Verificada estão sujeitos ao nosso',
termsOfService: 'Termos de Serviço',
end: 'Ao enviar:',
},
option: {
inSchool: 'Eu confirmo que estou matriculado ou empregado na instituição mencionada. A Dify pode solicitar comprovação de matrícula/emprego. Se eu representar indevidamente minha elegibilidade, concordo em pagar quaisquer taxas inicialmente isentas com base no meu status educacional.',
age: 'Eu confirmo que tenho pelo menos 18 anos',
},
title: 'Termos e Acordos',
},
},
learn: 'Aprenda como fazer a verificação da sua educação',
toVerified: 'Verifique a Educação',
currentSigned: 'ATUALMENTE CONECTADO COMO',
submit: 'Enviar',
emailLabel: 'Seu e-mail atual',
successContent: 'Emitimos um cupom de desconto de 100% para o plano Dify Professional na sua conta. O cupom é válido por um ano, por favor, utilize-o dentro do período de validade.',
rejectTitle: 'A sua verificação educacional Dify foi rejeitada.',
rejectContent: 'Infelizmente, você não é elegível para o status de Educação Verificada e, portanto, não pode receber o cupom exclusivo de 100% para o Plano Profissional Dify se usar este endereço de e-mail.',
successTitle: 'Você Tem a Educação Dify Verificada',
submitError: 'A submissão do formulário falhou. Por favor, tente novamente mais tarde.',
notice: {
expired: {
summary: {
line2: 'No entanto, você não é mais elegível para novos cupons de desconto na educação.',
line1: 'Você ainda pode acessar e usar o Dify.',
},
title: 'Seu status de educação expirou',
},
isAboutToExpire: {
summary: 'Não se preocupe — isso não afetará sua assinatura atual, mas você não receberá o desconto educacional quando ela for renovada, a menos que você verifique seu status novamente.',
title: 'Seu status educacional expirará em {{date}}',
},
stillInEducation: {
title: 'Ainda na educação?',
isAboutToExpire: 'Verifique novamente agora para receber um novo cupom para o próximo ano acadêmico. Ele será salvo na sua conta e estará pronto para ser usado na sua próxima renovação.',
expired: 'Reveja agora para obter um novo cupom para o próximo ano acadêmico. Nós o adicionaremos à sua conta e você poderá usá-lo na próxima atualização.',
},
alreadyGraduated: {
title: 'Já se formou?',
isAboutToExpire: 'Sua assinatura atual ainda permanecerá ativa. Quando ela terminar, você será movido para o plano Sandbox, ou poderá fazer um upgrade a qualquer momento para restaurar o acesso completo aos recursos pagos.',
expired: 'Sinta-se à vontade para atualizar a qualquer momento para obter acesso total aos recursos pagos.',
},
action: {
reVerify: 'Reverifique',
upgrade: 'Atualizar',
dismiss: 'Dispensar',
},
dateFormat: 'DD/MM/AAAA',
},
}
export default translation

View File

@@ -0,0 +1,44 @@
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',
Entertainment: 'Entretenimento',
},
}
export default translation

View File

@@ -0,0 +1,8 @@
const translation = {
sidebar: {
collapseSidebar: 'Recolher barra lateral',
expandSidebar: 'Expandir barra lateral',
},
}
export default translation

View File

@@ -0,0 +1,126 @@
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.',
invalidEmailOrPassword: 'E-mail ou senha inválidos.',
},
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',
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',
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',
tipsPrefix: 'Enviamos um código de verificação para',
},
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.',
webapp: {
noLoginMethod: 'Método de autenticação não configurado para o aplicativo web',
disabled: 'A autenticação do aplicativo da web está desativada. Por favor, entre em contato com o administrador do sistema para habilitá-la. Você pode tentar usar o aplicativo diretamente.',
noLoginMethodTip: 'Por favor, entre em contato com o administrador do sistema para adicionar um método de autenticação.',
login: 'Entrar',
},
signup: {
signIn: 'Entrar',
noAccount: 'Não tem uma conta?',
createAccount: 'Crie sua conta',
haveAccount: 'Já tem uma conta?',
verifyMail: 'Continue com o código de verificação',
signUp: 'Inscreva-se',
welcome: '👋 Bem-vindo! Por favor, preencha os detalhes para começar.',
},
pageTitleForE: 'Ei, vamos começar!',
}
export default translation

View File

@@ -0,0 +1,27 @@
const translation = {
tips: {
notLoggedIn: 'Este aplicativo quer acessar sua conta do Dify Cloud',
loggedIn: 'Este aplicativo quer acessar as seguintes informações da sua conta Dify Cloud.',
common: 'Respeitamos sua privacidade e usaremos essas informações apenas para melhorar sua experiência com nossas ferramentas de desenvolvedor.',
needLogin: 'Por favor, faça login para autorizar',
},
scopes: {
email: 'Email',
avatar: 'Avatar',
languagePreference: 'Preferência de Idioma',
timezone: 'Fuso horário',
name: 'Nome',
},
error: {
authorizeFailed: 'Autorização falhou',
authAppInfoFetchFailed: 'Falha ao buscar informações do aplicativo para autorização',
invalidParams: 'Parâmetros inválidos',
},
login: 'Entrar',
switchAccount: 'Mudar Conta',
unknownApp: 'Aplicativo Desconhecido',
continue: 'Continue',
connect: 'Conectar a',
}
export default translation

View File

@@ -0,0 +1,40 @@
const translation = {
common: {
publishAsPipeline: {
description: 'Descrição do conhecimento',
descriptionPlaceholder: 'Insira a descrição deste Pipeline de Conhecimento. (Opcional)',
namePlaceholder: 'Insira o nome desse Pipeline de Conhecimento. (Obrigatório)',
name: 'Nome e ícone do pipeline',
},
processing: 'Processamento',
goToAddDocuments: 'Vá para adicionar documentos',
confirmPublish: 'Confirmar publicação',
testRun: 'Execução de teste',
preparingDataSource: 'Preparando a fonte de dados',
publishAs: 'Publicar como um funil de conhecimento',
reRun: 'Executar novamente',
confirmPublishContent: 'Depois de publicar com êxito o pipeline de conhecimento, a estrutura de partes dessa base de dados de conhecimento não pode ser modificada. Tem certeza de que deseja publicá-lo?',
},
inputField: {
manage: 'Gerir',
create: 'Criar campo de entrada do usuário',
},
publishToast: {
title: 'Este pipeline ainda não foi publicado',
desc: 'Quando o pipeline não é publicado, você pode modificar a estrutura de partes no nó da base de dados de conhecimento, e a orquestração e as alterações do pipeline serão salvas automaticamente como rascunho.',
},
result: {
resultPreview: {
loading: 'Processamento... Aguarde',
error: 'Ocorreu um erro durante a execução',
viewDetails: 'Ver detalhes',
footerTip: 'No modo de execução de teste, visualize até {{count}} blocos',
},
},
ragToolSuggestions: {
title: 'Sugestões para RAG',
noRecommendationPlugins: 'Nenhum plugin recomendado, encontre mais em <CustomLink>Marketplace</CustomLink>',
},
}
export default translation

View File

@@ -0,0 +1,26 @@
const translation = {
tags: {
other: 'Outro',
medical: 'Médico',
videos: 'Vídeos',
productivity: 'Produtividade',
utilities: 'Utilidades',
social: 'Social',
finance: 'Financiar',
image: 'Imagem',
education: 'Educação',
design: 'Projetar',
business: 'Negócio',
weather: 'Tempo',
news: 'Notícia',
agent: 'Agente',
entertainment: 'Entretenimento',
search: 'Procurar',
travel: 'Viajar',
rag: 'TRAPO',
},
allTags: 'Todas as tags',
searchTags: 'Tags de pesquisa',
}
export default translation

View File

@@ -0,0 +1,186 @@
const translation = {
subscription: {
title: 'Assinaturas',
listNum: 'Assinaturas {{num}}',
empty: {
title: 'Sem assinaturas',
button: 'Nova assinatura',
},
createButton: {
oauth: 'Nova assinatura com OAuth',
apiKey: 'Nova assinatura com chave de API',
manual: 'Cole a URL para criar uma nova assinatura',
},
createSuccess: 'Assinatura criada com sucesso',
createFailed: 'Falha ao criar assinatura',
maxCount: 'Máximo de {{num}} assinaturas',
selectPlaceholder: 'Selecionar assinatura',
noSubscriptionSelected: 'Nenhuma assinatura selecionada',
subscriptionRemoved: 'Assinatura removida',
list: {
title: 'Assinaturas',
addButton: 'Adicionar',
tip: 'Receber eventos via Assinatura',
item: {
enabled: 'Habilitado',
disabled: 'Desativado',
credentialType: {
api_key: 'Chave de API',
oauth2: 'OAuth',
unauthorized: 'Manual',
},
actions: {
delete: 'Excluir',
deleteConfirm: {
title: 'Excluir {{name}}?',
success: 'Assinatura {{name}} excluída com sucesso',
error: 'Falha ao excluir a assinatura {{name}}',
content: 'Uma vez excl assinada, esta assinatura não pode ser recuperada. Por favor, confirme.',
contentWithApps: 'A assinatura atual é referenciada por {{count}} aplicativos. Excluí-la fará com que os aplicativos configurados parem de receber eventos da assinatura.',
confirm: 'Confirmar Exclusão',
cancel: 'Cancelar',
confirmInputWarning: 'Por favor, insira o nome correto para confirmar.',
confirmInputPlaceholder: 'Digite "{{name}}" para confirmar.',
confirmInputTip: 'Por favor, digite “{{name}}” para confirmar.',
},
},
status: {
active: 'Ativo',
inactive: 'Inativo',
},
usedByNum: 'Usado por {{num}} fluxos de trabalho',
noUsed: 'Nenhum fluxo de trabalho usado',
},
},
addType: {
title: 'Adicionar assinatura',
description: 'Escolha como você deseja criar sua assinatura de gatilho',
options: {
apikey: {
title: 'Criar com Chave de API',
description: 'Criar assinatura automaticamente usando credenciais da API',
},
oauth: {
title: 'Criar com OAuth',
description: 'Autorizar com plataforma de terceiros para criar assinatura',
clientSettings: 'Configurações do Cliente OAuth',
clientTitle: 'Cliente OAuth',
default: 'Padrão',
custom: 'Personalizado',
},
manual: {
title: 'Configuração Manual',
description: 'Cole a URL para criar uma nova assinatura',
tip: 'Configure a URL na plataforma de terceiros manualmente',
},
},
},
},
modal: {
steps: {
verify: 'Verificar',
configuration: 'Configuração',
},
common: {
cancel: 'Cancelar',
back: 'Voltar',
next: 'Próximo',
create: 'Criar',
verify: 'Verificar',
authorize: 'Autorizar',
creating: 'Criando...',
verifying: 'Verificando...',
authorizing: 'Autorizando...',
},
oauthRedirectInfo: 'Nenhum segredo de cliente do sistema foi encontrado para este provedor de ferramenta, é necessário configurá-lo manualmente; para redirect_uri, por favor use',
apiKey: {
title: 'Criar com Chave de API',
verify: {
title: 'Verificar Credenciais',
description: 'Por favor, forneça suas credenciais de API para verificar o acesso',
error: 'Falha na verificação de credenciais. Por favor, verifique sua chave de API.',
success: 'Credenciais verificadas com sucesso',
},
configuration: {
title: 'Configurar Assinatura',
description: 'Configure os parâmetros da sua assinatura',
},
},
oauth: {
title: 'Criar com OAuth',
authorization: {
title: 'Autorização OAuth',
description: 'Autorize o Dify a acessar sua conta',
redirectUrl: 'Redirecionar URL',
redirectUrlHelp: 'Use este URL na configuração do seu aplicativo OAuth',
authorizeButton: 'Autorizar com {{provider}}',
waitingAuth: 'Aguardando autorização...',
authSuccess: 'Autorização bem-sucedida',
authFailed: 'Falha ao obter informações de autorização OAuth',
waitingJump: 'Autorizado, aguardando decolagem',
},
configuration: {
title: 'Configurar Assinatura',
description: 'Configure os parâmetros da sua assinatura após a autorização',
success: 'Configuração do OAuth bem-sucedida',
failed: 'Falha na configuração do OAuth',
},
remove: {
success: 'Remoção do OAuth bem-sucedida',
failed: 'Falha ao remover OAuth',
},
save: {
success: 'Configuração do OAuth salva com sucesso',
},
},
manual: {
title: 'Configuração Manual',
description: 'Configure sua assinatura de webhook manualmente',
logs: {
title: 'Registros de Solicitações',
request: 'Solicitação',
loading: 'Aguardando solicitação de {{pluginName}}...',
},
},
form: {
subscriptionName: {
label: 'Nome da Assinatura',
placeholder: 'Digite o nome da assinatura',
required: 'O nome da assinatura é obrigatório',
},
callbackUrl: {
label: 'URL de Retorno de Chamada',
description: 'Esta URL receberá eventos de webhook',
tooltip: 'Forneça um endpoint acessível publicamente que possa receber solicitações de retorno de chamada do provedor de gatilho.',
placeholder: 'Gerando...',
privateAddressWarning: 'Este URL parece ser um endereço interno, o que pode fazer com que as solicitações do webhook falhem. Você pode alterar o TRIGGER_URL para um endereço público.',
},
},
errors: {
createFailed: 'Falha ao criar assinatura',
verifyFailed: 'Falha ao verificar as credenciais',
authFailed: 'Autorização falhou',
networkError: 'Erro de rede, por favor tente novamente',
},
},
events: {
title: 'Eventos Disponíveis',
description: 'Eventos aos quais este plugin de gatilho pode se inscrever',
empty: 'Nenhum evento disponível',
event: 'Evento',
events: 'Eventos',
actionNum: '{{num}} {{event}} INCLUÍDO',
item: {
parameters: 'parâmetros {{count}}',
noParameters: 'Sem parâmetros',
},
output: 'Saída',
},
node: {
status: {
warning: 'Desconectar',
},
},
}
export default translation

View File

@@ -0,0 +1,320 @@
const translation = {
category: {
extensions: 'Extensões',
all: 'Todo',
bundles: 'Pacotes',
models: 'Modelos',
agents: 'Estratégias do agente',
tools: 'Ferramentas',
datasources: 'Fontes de dados',
triggers: 'Gatilhos',
},
categorySingle: {
model: 'Modelo',
bundle: 'Pacote',
agent: 'Estratégia do agente',
extension: 'Extensão',
tool: 'Ferramenta',
datasource: 'Fonte de dados',
trigger: 'Gatilho',
},
list: {
source: {
marketplace: 'Instalar do Marketplace',
github: 'Instalar do GitHub',
local: 'Instalar a partir do arquivo de pacote local',
},
noInstalled: 'Nenhum plug-in instalado',
notFound: 'Nenhum plugin encontrado',
},
source: {
local: 'Arquivo de pacote local',
github: 'GitHub',
marketplace: 'Mercado',
},
detailPanel: {
categoryTip: {
debugging: 'Plugin de depuração',
marketplace: 'Instalado do Marketplace',
local: 'Plug-in local',
github: 'Instalado a partir do Github',
},
operation: {
checkUpdate: 'Verifique a atualização',
install: 'Instalar',
update: 'Atualização',
info: 'Informações do plugin',
detail: 'Detalhes',
remove: 'Retirar',
viewDetail: 'Ver detalhes',
back: 'Voltar',
},
toolSelector: {
uninstalledLink: 'Gerenciar em plug-ins',
unsupportedContent2: 'Clique para mudar de versão.',
auto: 'Auto',
title: 'Adicionar ferramenta',
params: 'CONFIGURAÇÃO DE RACIOCÍNIO',
toolLabel: 'Ferramenta',
paramsTip1: 'Controla os parâmetros de inferência do LLM.',
descriptionLabel: 'Descrição da ferramenta',
uninstalledContent: 'Este plug-in é instalado a partir do repositório local/GitHub. Por favor, use após a instalação.',
paramsTip2: 'Quando \'Auto\' está desativado, o valor padrão é usado.',
placeholder: 'Selecione uma ferramenta...',
empty: 'Clique no botão \'+\' para adicionar ferramentas. Você pode adicionar várias ferramentas.',
settings: 'CONFIGURAÇÕES DO USUÁRIO',
unsupportedContent: 'A versão do plug-in instalada não fornece essa ação.',
descriptionPlaceholder: 'Breve descrição da finalidade da ferramenta, por exemplo, obter a temperatura para um local específico.',
uninstalledTitle: 'Ferramenta não instalada',
unsupportedTitle: 'Ação sem suporte',
toolSetting: 'Configurações da Ferramenta',
unsupportedMCPTool: 'A versão atual do plugin de estratégia do agente selecionado não suporta ferramentas MCP.',
},
serviceOk: 'Serviço OK',
endpointsTip: 'Este plug-in fornece funcionalidades específicas por meio de endpoints e você pode configurar vários conjuntos de endpoints para o workspace atual.',
strategyNum: '{{num}} {{estratégia}} INCLUSO',
endpointDisableContent: 'Gostaria de desativar {{name}}?',
endpointDeleteContent: 'Gostaria de remover {{name}}?',
endpointsEmpty: 'Clique no botão \'+\' para adicionar um endpoint',
configureModel: 'Configurar modelo',
endpointModalDesc: 'Uma vez configurados, os recursos fornecidos pelo plug-in por meio de endpoints de API podem ser usados.',
endpointDeleteTip: 'Remover endpoint',
endpointDisableTip: 'Desativar ponto de extremidade',
modelNum: '{{num}} MODELOS INCLUÍDOS',
actionNum: '{{num}} {{ação}} INCLUSO',
switchVersion: 'Versão do Switch',
endpoints: 'Extremidade',
disabled: 'Desactivado',
configureApp: 'Configurar aplicativo',
configureTool: 'Ferramenta de configuração',
endpointsDocLink: 'Veja o documento',
endpointModalTitle: 'Ponto de extremidade de configuração',
deprecation: {
reason: {
businessAdjustments: 'ajustes de negócios',
ownershipTransferred: 'propriedade transferida',
noMaintainer: 'sem mantenedor',
},
onlyReason: 'Este plugin foi descontinuado devido a {{deprecatedReason}} e não será mais atualizado.',
noReason: 'Este plugin foi descontinuado e não será mais atualizado.',
fullMessage: 'Este plugin foi descontinuado devido a {{deprecatedReason}}, e não receberá mais atualizações. Por favor, use <CustomLink href=\'https://example.com/\'>{{-alternativePluginId}}</CustomLink> em vez disso.',
},
},
debugInfo: {
title: 'Depuração',
viewDocs: 'Ver documentos',
},
privilege: {
whoCanInstall: 'Quem pode instalar e gerenciar plugins?',
admins: 'Administradores',
noone: 'Ninguém',
whoCanDebug: 'Quem pode depurar plugins?',
title: 'Preferências de plug-ins',
everyone: 'Todos',
},
pluginInfoModal: {
repository: 'Repositório',
title: 'Informações do plugin',
packageName: 'Pacote',
release: 'Soltar',
},
action: {
deleteContentLeft: 'Gostaria de remover',
deleteContentRight: 'plugin?',
delete: 'Remover plugin',
pluginInfo: 'Informações do plugin',
checkForUpdates: 'Verifique se há atualizações',
usedInApps: 'Este plugin está sendo usado em aplicativos {{num}}.',
},
installModal: {
labels: {
version: 'Versão',
repository: 'Repositório',
package: 'Pacote',
},
installPlugin: 'Instale o plugin',
close: 'Fechar',
installedSuccessfullyDesc: 'O plugin foi instalado com sucesso.',
next: 'Próximo',
installFailedDesc: 'O plug-in foi instalado falhou.',
installedSuccessfully: 'Instalação bem-sucedida',
install: 'Instalar',
installFailed: 'Falha na instalação',
readyToInstallPackages: 'Prestes a instalar os seguintes plugins {{num}}',
back: 'Voltar',
installComplete: 'Instalação concluída',
readyToInstallPackage: 'Prestes a instalar o seguinte plugin',
cancel: 'Cancelar',
fromTrustSource: 'Certifique-se de instalar apenas plug-ins de uma <trustSource>fonte confiável</trustSource>.',
pluginLoadError: 'Erro de carregamento do plug-in',
readyToInstall: 'Prestes a instalar o seguinte plugin',
pluginLoadErrorDesc: 'Este plugin não será instalado',
uploadFailed: 'Falha no upload',
installing: 'Instalar...',
uploadingPackage: 'Carregando {{packageName}} ...',
dropPluginToInstall: 'Solte o pacote de plug-in aqui para instalar',
installWarning: 'Este plugin não é permitido ser instalado.',
},
installFromGitHub: {
selectVersionPlaceholder: 'Selecione uma versão',
updatePlugin: 'Atualizar plugin do GitHub',
installPlugin: 'Instale o plugin do GitHub',
gitHubRepo: 'Repositório GitHub',
installFailed: 'Falha na instalação',
selectVersion: 'Selecione a versão',
uploadFailed: 'Falha no upload',
installedSuccessfully: 'Instalação bem-sucedida',
installNote: 'Certifique-se de instalar apenas plug-ins de uma fonte confiável.',
selectPackagePlaceholder: 'Selecione um pacote',
selectPackage: 'Selecione o pacote',
},
upgrade: {
title: 'Instale o plugin',
successfulTitle: 'Instalação bem-sucedida',
close: 'Fechar',
upgrading: 'Instalar...',
upgrade: 'Instalar',
description: 'Prestes a instalar o seguinte plugin',
usedInApps: 'Usado em aplicativos {{num}}',
},
error: {
inValidGitHubUrl: 'URL do GitHub inválida. Insira um URL válido no formato: https://github.com/owner/repo',
noReleasesFound: 'Nenhuma versão encontrada. Verifique o repositório GitHub ou a URL de entrada.',
fetchReleasesError: 'Não é possível recuperar versões. Por favor, tente novamente mais tarde.',
},
marketplace: {
sortOption: {
mostPopular: 'Mais popular',
firstReleased: 'Lançado pela primeira vez',
recentlyUpdated: 'Atualizado recentemente',
newlyReleased: 'Recém-lançado',
},
sortBy: 'Ordenar por',
viewMore: 'Ver mais',
and: 'e',
pluginsResult: '{{num}} resultados',
empower: 'Capacite seu desenvolvimento de IA',
difyMarketplace: 'Mercado Dify',
moreFrom: 'Mais do Marketplace',
noPluginFound: 'Nenhum plugin encontrado',
discover: 'Descobrir',
verifiedTip: 'Verificado pelo Dify',
partnerTip: 'Verificado por um parceiro da Dify',
},
task: {
installedError: 'Falha na instalação dos plug-ins {{errorLength}}',
installingWithSuccess: 'Instalando plugins {{installingLength}}, {{successLength}} sucesso.',
installError: '{{errorLength}} plugins falha ao instalar, clique para ver',
installingWithError: 'Instalando plug-ins {{installingLength}}, {{successLength}} sucesso, {{errorLength}} falhou',
installing: 'Instalando plugins {{installingLength}}, 0 feito.',
clearAll: 'Apagar tudo',
},
installAction: 'Instalar',
endpointsEnabled: '{{num}} conjuntos de endpoints habilitados',
searchPlugins: 'Pesquisar plugins',
searchInMarketplace: 'Pesquisar no Marketplace',
installPlugin: 'Instale o plugin',
from: 'De',
searchTools: 'Ferramentas de pesquisa...',
search: 'Procurar',
fromMarketplace: 'Do Marketplace',
allCategories: 'Todas as categorias',
install: '{{num}} instala',
searchCategories: 'Categorias de pesquisa',
findMoreInMarketplace: 'Saiba mais no Marketplace',
installFrom: 'INSTALAR DE',
metadata: {
title: 'Plugins',
},
difyVersionNotCompatible: 'A versão atual do Dify não é compatível com este plugin, por favor atualize para a versão mínima exigida: {{minimalDifyVersion}}',
requestAPlugin: 'Solicitar um plugin',
publishPlugins: 'Publicar plugins',
auth: {
oauthClient: 'Cliente OAuth',
useOAuthAuth: 'Use a autorização OAuth',
useOAuth: 'Use OAuth',
setDefault: 'Definir como padrão',
saveOnly: 'Salvar apenas',
authRemoved: 'Autorização removida',
workspaceDefault: 'Espaço de trabalho padrão',
setupOAuth: 'Configurar Cliente OAuth',
addApi: 'Adicionar chave da API',
authorizationName: 'Nome da Autorização',
authorization: 'Autorização',
custom: 'Custom',
authorizations: 'Autorizações',
default: 'Padrão',
saveAndAuth: 'Salvar e Autorizar',
useApi: 'Use a chave da API',
oauthClientSettings: 'Configurações do Cliente OAuth',
useApiAuth: 'Configuração de Autorização de Chave da API',
addOAuth: 'Adicionar OAuth',
useApiAuthDesc: 'Após configurar as credenciais, todos os membros dentro do espaço de trabalho podem usar esta ferramenta ao orquestrar aplicações.',
clientInfo: 'Como não foram encontrados segredos de cliente do sistema para este provedor de ferramentas, é necessário configurá-lo manualmente. Para redirect_uri, use',
customCredentialUnavailable: 'Credenciais personalizadas atualmente indisponíveis',
unavailable: 'Indisponível',
credentialUnavailable: 'Credenciais atualmente indisponíveis. Por favor, contate o administrador.',
credentialUnavailableInButton: 'Credencial indisponível',
emptyAuth: 'Configure a autenticação',
connectedWorkspace: 'Espaço de trabalho conectado',
},
deprecated: 'Obsoleto',
autoUpdate: {
strategy: {
disabled: {
name: 'Desativado',
description: 'Os plugins não atualizarão automaticamente',
},
fixOnly: {
selectedDescription: 'Atualização automática apenas para versões de patch',
name: 'Reparar Apenas',
description: 'Atualização automática apenas para versões de patch (por exemplo, 1.0.1 → 1.0.2). Mudanças de versão menor não ativarão atualizações.',
},
latest: {
description: 'Sempre atualize para a versão mais recente',
selectedDescription: 'Sempre atualize para a versão mais recente',
name: 'Último',
},
},
upgradeMode: {
all: 'Atualizar tudo',
exclude: 'Excluir selecionados',
partial: 'Somente selecionado',
},
upgradeModePlaceholder: {
exclude: 'Plugins selecionados não serão atualizados automaticamente',
partial: 'Apenas plugins selecionados serão atualizados automaticamente. Nenhum plugin está atualmente selecionado, então nenhum plugin será atualizado automaticamente.',
},
operation: {
select: 'Selecionar plugins',
clearAll: 'Limpar tudo',
},
pluginDowngradeWarning: {
downgrade: 'Descer de nível de qualquer forma',
exclude: 'Excluir da atualização automática',
title: 'Rebaixamento do Plugin',
description: 'A atualização automática está atualmente habilitada para este plugin. Reverter a versão pode causar a sobrescrição de suas alterações durante a próxima atualização automática.',
},
noPluginPlaceholder: {
noFound: 'Nenhum plugin foi encontrado.',
noInstalled: 'Nenhum plugin instalado',
},
updateTime: 'Atualizar hora',
automaticUpdates: 'Atualizações automáticas',
excludeUpdate: 'Os seguintes {{num}} plugins não serão atualizados automaticamente',
updateTimeTitle: 'Atualizar hora',
specifyPluginsToUpdate: 'Especifique os plugins a serem atualizados',
changeTimezone: 'Para mudar o fuso horário, vá para <setTimezone>Configurações</setTimezone>',
nextUpdateTime: 'Próxima atualização automática: {{time}}',
partialUPdate: 'Apenas os seguintes {{num}} plugins serão atualizados automaticamente',
updateSettings: 'Atualizar Configurações',
},
readmeInfo: {
title: 'LEIA-ME',
needHelpCheckReadme: 'Precisa de ajuda? Confira o README.',
noReadmeAvailable: 'Nenhum README disponível',
failedToFetch: 'Falha ao buscar o README',
},
}
export default translation

View File

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

View File

@@ -0,0 +1,31 @@
const translation = {
input: 'ENTRADA',
result: 'RESULTADO',
detail: '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.',
},
circularInvocationTip: 'Há uma invocação circular de ferramentas/nós no fluxo de trabalho atual.',
actionLogs: 'Logs de ação',
}
export default translation

View File

@@ -0,0 +1,86 @@
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.',
expand: 'Expandir',
collapse: 'Contrair',
newChatTip: 'Já em um novo chat',
chatFormTip: 'As configurações do chat não podem ser modificadas após o início do chat.',
viewChatSettings: 'Ver configurações de chat',
chatSettingsTitle: 'Nova configuração de chat',
},
generation: {
tabs: {
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.',
},
execution: 'Executar',
executions: '{{num}} execuções',
stopRun: 'Parar execução',
},
login: {
backToHome: 'Voltar para a página inicial',
},
}
export default translation

View File

@@ -0,0 +1,44 @@
const translation = {
daysInWeek: {
Wed: 'Quarta-feira',
Tue: 'Terça-feira',
Sun: 'Sol',
Thu: 'Quinta-feira',
Fri: 'Sexta',
Sat: 'Sábado',
Mon: 'Mon',
},
months: {
May: 'Maio',
February: 'Fevereiro',
April: 'abril',
September: 'Setembro',
March: 'Março',
December: 'Dezembro',
November: 'Novembro',
October: 'Outubro',
July: 'Julho',
August: 'Agosto',
June: 'junho',
January: 'Janeiro',
},
operation: {
pickDate: 'Escolher Data',
ok: 'OK',
cancel: 'Cancelar',
now: 'Agora',
},
title: {
pickTime: 'Escolha o Horário',
},
defaultPlaceholder: 'Escolha um horário...',
dateFormats: {
input: 'AAAA-MM-DD',
output: 'AAAA-MM-DD',
outputWithTime: 'AAAA-MM-DDTHH:mm:ss.SSSZ',
displayWithTime: 'MMMM D, YYYY hh:mm A',
display: 'MMMM D, YYYY',
},
}
export default translation

View File

@@ -0,0 +1,257 @@
const translation = {
title: 'Ferramentas',
createCustomTool: 'Criar Ferramenta Personalizada',
type: {
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: {
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',
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',
apiKeyPlaceholder: 'Nome do cabeçalho HTTP para a Chave de API',
apiValuePlaceholder: 'Digite a Chave de API',
api_key_query: 'Parâmetro de consulta',
queryParamPlaceholder: 'Nome do parâmetro de consulta para a chave da API',
api_key_header: 'Cabeçalho',
},
key: 'Chave',
value: 'Valor',
queryParam: 'Parâmetro de consulta',
queryParamTooltip: 'O nome do parâmetro de consulta da chave da API a ser passado, por exemplo, "key" em "https://example.com/test?key=API_KEY".',
},
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',
file: 'arquivo',
},
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',
added: 'Adicionado',
custom: {
title: 'Nenhuma ferramenta personalizada disponível',
tip: 'Crie uma ferramenta personalizada',
},
workflow: {
title: 'Nenhuma ferramenta de fluxo de trabalho disponível',
tip: 'Publique fluxos de trabalho como ferramentas no Studio',
},
mcp: {
title: 'Nenhuma ferramenta MCP disponível',
tip: 'Adicionar um servidor MCP',
},
agent: {
title: 'Nenhuma estratégia de agente disponível',
},
},
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',
copyToolName: 'Nome da cópia',
noTools: 'Nenhuma ferramenta encontrada',
mcp: {
create: {
cardTitle: 'Adicionar Servidor MCP (HTTP)',
cardLink: 'Saiba mais sobre a integração do servidor MCP',
},
noConfigured: 'Servidor Não Configurado',
updateTime: 'Atualizado',
toolsCount: '{{count}} ferramentas',
noTools: 'Nenhuma ferramenta disponível',
modal: {
title: 'Adicionar Servidor MCP (HTTP)',
editTitle: 'Editar Servidor MCP (HTTP)',
name: 'Nome & Ícone',
namePlaceholder: 'Dê um nome ao seu servidor MCP',
serverUrl: 'URL do Servidor',
serverUrlPlaceholder: 'URL para o endpoint do servidor',
serverUrlWarning: 'Atualizar o endereço do servidor pode interromper aplicações que dependem deste servidor',
serverIdentifier: 'Identificador do Servidor',
serverIdentifierTip: 'Identificador único para o servidor MCP dentro do espaço de trabalho. Apenas letras minúsculas, números, sublinhados e hífens. Até 24 caracteres.',
serverIdentifierPlaceholder: 'Identificador único, ex: meu-servidor-mcp',
serverIdentifierWarning: 'O servidor não será reconhecido por aplicativos existentes após uma mudança de ID',
cancel: 'Cancelar',
save: 'Salvar',
confirm: 'Adicionar e Autorizar',
sseReadTimeout: 'Tempo limite de leitura SSE',
timeout: 'Tempo esgotado',
timeoutPlaceholder: 'trinta',
headerValue: 'Valor do Cabeçalho',
headerKeyPlaceholder: 'por exemplo, Autorização',
addHeader: 'Adicionar Cabeçalho',
headersTip: 'Cabeçalhos HTTP adicionais a serem enviados com as solicitações do servidor MCP',
headers: 'Cabeçalhos',
maskedHeadersTip: 'Os valores do cabeçalho estão mascarados por segurança. As alterações atualizarão os valores reais.',
headerKey: 'Nome do Cabeçalho',
noHeaders: 'Nenhum cabeçalho personalizado configurado',
headerValuePlaceholder: 'ex: Token de portador 123',
useDynamicClientRegistration: 'Usar Registro Dinâmico de Cliente',
configurations: 'Configurações',
clientSecret: 'Segredo do Cliente',
authentication: 'Autenticação',
clientID: 'ID do Cliente',
clientSecretPlaceholder: 'Segredo do Cliente',
redirectUrlWarning: 'Por favor, configure sua URL de redirecionamento OAuth para:',
},
delete: 'Remover Servidor MCP',
deleteConfirmTitle: 'Você gostaria de remover {{mcp}}?',
operation: {
edit: 'Editar',
remove: 'Remover',
},
authorize: 'Autorizar',
authorizing: 'Autorizando...',
authorizingRequired: 'Autorização é necessária',
authorizeTip: 'Após a autorização, as ferramentas serão exibidas aqui.',
update: 'Atualizar',
updating: 'Atualizando',
gettingTools: 'Obtendo Ferramentas...',
updateTools: 'Atualizando Ferramentas...',
toolsEmpty: 'Ferramentas não carregadas',
getTools: 'Obter ferramentas',
toolUpdateConfirmTitle: 'Atualizar Lista de Ferramentas',
toolUpdateConfirmContent: 'Atualizar a lista de ferramentas pode afetar aplicativos existentes. Você deseja continuar?',
toolsNum: '{{count}} ferramentas incluídas',
onlyTool: '1 ferramenta incluída',
identifier: 'Identificador do Servidor (Clique para Copiar)',
server: {
title: 'Servidor MCP',
url: 'URL do Servidor',
reGen: 'Você deseja regenerar a URL do servidor?',
addDescription: 'Adicionar descrição',
edit: 'Editar descrição',
modal: {
addTitle: 'Adicionar descrição para habilitar o servidor MCP',
editTitle: 'Editar descrição',
description: 'Descrição',
descriptionPlaceholder: 'Explique o que esta ferramenta faz e como deve ser utilizada pelo LLM',
parameters: 'Parâmetros',
parametersTip: 'Adicione descrições para cada parâmetro para ajudar o LLM a entender seus propósitos e restrições.',
parametersPlaceholder: 'Propósito e restrições do parâmetro',
confirm: 'Habilitar Servidor MCP',
},
publishTip: 'Aplicativo não publicado. Por favor, publique o aplicativo primeiro.',
},
toolItem: {
noDescription: 'Sem descrição',
parameters: 'Parâmetros',
},
},
allTools: 'Todas as ferramentas',
}
export default translation

File diff suppressed because it is too large Load Diff