Feat/portuguese support (#2075)
parent
21ade71bad
commit
c17baef172
@ -0,0 +1,326 @@
|
|||||||
|
|
||||||
|
import json
|
||||||
|
from models.model import AppModelConfig
|
||||||
|
|
||||||
|
languages = ['en-US', 'zh-Hans', 'pt-BR', 'es-ES', 'fr-FR', 'de-DE', 'ja-JP', 'ko-KR', 'ru-RU', 'it-IT']
|
||||||
|
|
||||||
|
language_timezone_mapping = {
|
||||||
|
'en-US': 'America/New_York',
|
||||||
|
'zh-Hans': 'Asia/Shanghai',
|
||||||
|
'pt-BR': 'America/Sao_Paulo',
|
||||||
|
'es-ES': 'Europe/Madrid',
|
||||||
|
'fr-FR': 'Europe/Paris',
|
||||||
|
'de-DE': 'Europe/Berlin',
|
||||||
|
'ja-JP': 'Asia/Tokyo',
|
||||||
|
'ko-KR': 'Asia/Seoul',
|
||||||
|
'ru-RU': 'Europe/Moscow',
|
||||||
|
'it-IT': 'Europe/Rome',
|
||||||
|
}
|
||||||
|
|
||||||
|
def supported_language(lang):
|
||||||
|
if lang in languages:
|
||||||
|
return lang
|
||||||
|
|
||||||
|
error = ('{lang} is not a valid language.'
|
||||||
|
.format(lang=lang))
|
||||||
|
raise ValueError(error)
|
||||||
|
|
||||||
|
user_input_form_template = {
|
||||||
|
"en-US": [
|
||||||
|
{
|
||||||
|
"paragraph": {
|
||||||
|
"label": "Query",
|
||||||
|
"variable": "default_input",
|
||||||
|
"required": False,
|
||||||
|
"default": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"zh-Hans": [
|
||||||
|
{
|
||||||
|
"paragraph": {
|
||||||
|
"label": "查询内容",
|
||||||
|
"variable": "default_input",
|
||||||
|
"required": False,
|
||||||
|
"default": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"pt-BR": [
|
||||||
|
{
|
||||||
|
"paragraph": {
|
||||||
|
"label": "Consulta",
|
||||||
|
"variable": "default_input",
|
||||||
|
"required": False,
|
||||||
|
"default": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"es-ES": [
|
||||||
|
{
|
||||||
|
"paragraph": {
|
||||||
|
"label": "Consulta",
|
||||||
|
"variable": "default_input",
|
||||||
|
"required": False,
|
||||||
|
"default": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
demo_model_templates = {
|
||||||
|
'en-US': [
|
||||||
|
{
|
||||||
|
'name': 'Translation Assistant',
|
||||||
|
'icon': '',
|
||||||
|
'icon_background': '',
|
||||||
|
'description': 'A multilingual translator that provides translation capabilities in multiple languages, translating user input into the language they need.',
|
||||||
|
'mode': 'completion',
|
||||||
|
'model_config': AppModelConfig(
|
||||||
|
provider='openai',
|
||||||
|
model_id='gpt-3.5-turbo-instruct',
|
||||||
|
configs={
|
||||||
|
'prompt_template': "Please translate the following text into {{target_language}}:\n",
|
||||||
|
'prompt_variables': [
|
||||||
|
{
|
||||||
|
"key": "target_language",
|
||||||
|
"name": "Target Language",
|
||||||
|
"description": "The language you want to translate into.",
|
||||||
|
"type": "select",
|
||||||
|
"default": "Chinese",
|
||||||
|
'options': [
|
||||||
|
'Chinese',
|
||||||
|
'English',
|
||||||
|
'Japanese',
|
||||||
|
'French',
|
||||||
|
'Russian',
|
||||||
|
'German',
|
||||||
|
'Spanish',
|
||||||
|
'Korean',
|
||||||
|
'Italian',
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'completion_params': {
|
||||||
|
'max_token': 1000,
|
||||||
|
'temperature': 0,
|
||||||
|
'top_p': 0,
|
||||||
|
'presence_penalty': 0.1,
|
||||||
|
'frequency_penalty': 0.1,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
opening_statement='',
|
||||||
|
suggested_questions=None,
|
||||||
|
pre_prompt="Please translate the following text into {{target_language}}:\n{{query}}\ntranslate:",
|
||||||
|
model=json.dumps({
|
||||||
|
"provider": "openai",
|
||||||
|
"name": "gpt-3.5-turbo-instruct",
|
||||||
|
"mode": "completion",
|
||||||
|
"completion_params": {
|
||||||
|
"max_tokens": 1000,
|
||||||
|
"temperature": 0,
|
||||||
|
"top_p": 0,
|
||||||
|
"presence_penalty": 0.1,
|
||||||
|
"frequency_penalty": 0.1
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
user_input_form=json.dumps([
|
||||||
|
{
|
||||||
|
"select": {
|
||||||
|
"label": "Target Language",
|
||||||
|
"variable": "target_language",
|
||||||
|
"description": "The language you want to translate into.",
|
||||||
|
"default": "Chinese",
|
||||||
|
"required": True,
|
||||||
|
'options': [
|
||||||
|
'Chinese',
|
||||||
|
'English',
|
||||||
|
'Japanese',
|
||||||
|
'French',
|
||||||
|
'Russian',
|
||||||
|
'German',
|
||||||
|
'Spanish',
|
||||||
|
'Korean',
|
||||||
|
'Italian',
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},{
|
||||||
|
"paragraph": {
|
||||||
|
"label": "Query",
|
||||||
|
"variable": "query",
|
||||||
|
"required": True,
|
||||||
|
"default": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
])
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name': 'AI Front-end Interviewer',
|
||||||
|
'icon': '',
|
||||||
|
'icon_background': '',
|
||||||
|
'description': 'A simulated front-end interviewer that tests the skill level of front-end development through questioning.',
|
||||||
|
'mode': 'chat',
|
||||||
|
'model_config': AppModelConfig(
|
||||||
|
provider='openai',
|
||||||
|
model_id='gpt-3.5-turbo',
|
||||||
|
configs={
|
||||||
|
'introduction': 'Hi, welcome to our interview. I am the interviewer for this technology company, and I will test your web front-end development skills. Next, I will ask you some technical questions. Please answer them as thoroughly as possible. ',
|
||||||
|
'prompt_template': "You will play the role of an interviewer for a technology company, examining the user's web front-end development skills and posing 5-10 sharp technical questions.\n\nPlease note:\n- Only ask one question at a time.\n- After the user answers a question, ask the next question directly, without trying to correct any mistakes made by the candidate.\n- If you think the user has not answered correctly for several consecutive questions, ask fewer questions.\n- After asking the last question, you can ask this question: Why did you leave your last job? After the user answers this question, please express your understanding and support.\n",
|
||||||
|
'prompt_variables': [],
|
||||||
|
'completion_params': {
|
||||||
|
'max_token': 300,
|
||||||
|
'temperature': 0.8,
|
||||||
|
'top_p': 0.9,
|
||||||
|
'presence_penalty': 0.1,
|
||||||
|
'frequency_penalty': 0.1,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
opening_statement='Hi, welcome to our interview. I am the interviewer for this technology company, and I will test your web front-end development skills. Next, I will ask you some technical questions. Please answer them as thoroughly as possible. ',
|
||||||
|
suggested_questions=None,
|
||||||
|
pre_prompt="You will play the role of an interviewer for a technology company, examining the user's web front-end development skills and posing 5-10 sharp technical questions.\n\nPlease note:\n- Only ask one question at a time.\n- After the user answers a question, ask the next question directly, without trying to correct any mistakes made by the candidate.\n- If you think the user has not answered correctly for several consecutive questions, ask fewer questions.\n- After asking the last question, you can ask this question: Why did you leave your last job? After the user answers this question, please express your understanding and support.\n",
|
||||||
|
model=json.dumps({
|
||||||
|
"provider": "openai",
|
||||||
|
"name": "gpt-3.5-turbo",
|
||||||
|
"mode": "chat",
|
||||||
|
"completion_params": {
|
||||||
|
"max_tokens": 300,
|
||||||
|
"temperature": 0.8,
|
||||||
|
"top_p": 0.9,
|
||||||
|
"presence_penalty": 0.1,
|
||||||
|
"frequency_penalty": 0.1
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
user_input_form=None
|
||||||
|
)
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
'zh-Hans': [
|
||||||
|
{
|
||||||
|
'name': '翻译助手',
|
||||||
|
'icon': '',
|
||||||
|
'icon_background': '',
|
||||||
|
'description': '一个多语言翻译器,提供多种语言翻译能力,将用户输入的文本翻译成他们需要的语言。',
|
||||||
|
'mode': 'completion',
|
||||||
|
'model_config': AppModelConfig(
|
||||||
|
provider='openai',
|
||||||
|
model_id='gpt-3.5-turbo-instruct',
|
||||||
|
configs={
|
||||||
|
'prompt_template': "请将以下文本翻译为{{target_language}}:\n",
|
||||||
|
'prompt_variables': [
|
||||||
|
{
|
||||||
|
"key": "target_language",
|
||||||
|
"name": "目标语言",
|
||||||
|
"description": "翻译的目标语言",
|
||||||
|
"type": "select",
|
||||||
|
"default": "中文",
|
||||||
|
"options": [
|
||||||
|
"中文",
|
||||||
|
"英文",
|
||||||
|
"日语",
|
||||||
|
"法语",
|
||||||
|
"俄语",
|
||||||
|
"德语",
|
||||||
|
"西班牙语",
|
||||||
|
"韩语",
|
||||||
|
"意大利语",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'completion_params': {
|
||||||
|
'max_token': 1000,
|
||||||
|
'temperature': 0,
|
||||||
|
'top_p': 0,
|
||||||
|
'presence_penalty': 0.1,
|
||||||
|
'frequency_penalty': 0.1,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
opening_statement='',
|
||||||
|
suggested_questions=None,
|
||||||
|
pre_prompt="请将以下文本翻译为{{target_language}}:\n{{query}}\n翻译:",
|
||||||
|
model=json.dumps({
|
||||||
|
"provider": "openai",
|
||||||
|
"name": "gpt-3.5-turbo-instruct",
|
||||||
|
"mode": "completion",
|
||||||
|
"completion_params": {
|
||||||
|
"max_tokens": 1000,
|
||||||
|
"temperature": 0,
|
||||||
|
"top_p": 0,
|
||||||
|
"presence_penalty": 0.1,
|
||||||
|
"frequency_penalty": 0.1
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
user_input_form=json.dumps([
|
||||||
|
{
|
||||||
|
"select": {
|
||||||
|
"label": "目标语言",
|
||||||
|
"variable": "target_language",
|
||||||
|
"description": "翻译的目标语言",
|
||||||
|
"default": "中文",
|
||||||
|
"required": True,
|
||||||
|
'options': [
|
||||||
|
"中文",
|
||||||
|
"英文",
|
||||||
|
"日语",
|
||||||
|
"法语",
|
||||||
|
"俄语",
|
||||||
|
"德语",
|
||||||
|
"西班牙语",
|
||||||
|
"韩语",
|
||||||
|
"意大利语",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},{
|
||||||
|
"paragraph": {
|
||||||
|
"label": "文本内容",
|
||||||
|
"variable": "query",
|
||||||
|
"required": True,
|
||||||
|
"default": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
])
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name': 'AI 前端面试官',
|
||||||
|
'icon': '',
|
||||||
|
'icon_background': '',
|
||||||
|
'description': '一个模拟的前端面试官,通过提问的方式对前端开发的技能水平进行检验。',
|
||||||
|
'mode': 'chat',
|
||||||
|
'model_config': AppModelConfig(
|
||||||
|
provider='openai',
|
||||||
|
model_id='gpt-3.5-turbo',
|
||||||
|
configs={
|
||||||
|
'introduction': '你好,欢迎来参加我们的面试,我是这家科技公司的面试官,我将考察你的 Web 前端开发技能。接下来我会向您提出一些技术问题,请您尽可能详尽地回答。',
|
||||||
|
'prompt_template': "你将扮演一个科技公司的面试官,考察用户作为候选人的 Web 前端开发水平,提出 5-10 个犀利的技术问题。\n\n请注意:\n- 每次只问一个问题\n- 用户回答问题后请直接问下一个问题,而不要试图纠正候选人的错误;\n- 如果你认为用户连续几次回答的都不对,就少问一点;\n- 问完最后一个问题后,你可以问这样一个问题:上一份工作为什么离职?用户回答该问题后,请表示理解与支持。\n",
|
||||||
|
'prompt_variables': [],
|
||||||
|
'completion_params': {
|
||||||
|
'max_token': 300,
|
||||||
|
'temperature': 0.8,
|
||||||
|
'top_p': 0.9,
|
||||||
|
'presence_penalty': 0.1,
|
||||||
|
'frequency_penalty': 0.1,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
opening_statement='你好,欢迎来参加我们的面试,我是这家科技公司的面试官,我将考察你的 Web 前端开发技能。接下来我会向您提出一些技术问题,请您尽可能详尽地回答。',
|
||||||
|
suggested_questions=None,
|
||||||
|
pre_prompt="你将扮演一个科技公司的面试官,考察用户作为候选人的 Web 前端开发水平,提出 5-10 个犀利的技术问题。\n\n请注意:\n- 每次只问一个问题\n- 用户回答问题后请直接问下一个问题,而不要试图纠正候选人的错误;\n- 如果你认为用户连续几次回答的都不对,就少问一点;\n- 问完最后一个问题后,你可以问这样一个问题:上一份工作为什么离职?用户回答该问题后,请表示理解与支持。\n",
|
||||||
|
model=json.dumps({
|
||||||
|
"provider": "openai",
|
||||||
|
"name": "gpt-3.5-turbo",
|
||||||
|
"mode": "chat",
|
||||||
|
"completion_params": {
|
||||||
|
"max_tokens": 300,
|
||||||
|
"temperature": 0.8,
|
||||||
|
"top_p": 0.9,
|
||||||
|
"presence_penalty": 0.1,
|
||||||
|
"frequency_penalty": 0.1
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
user_input_form=None
|
||||||
|
)
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,6 +1,8 @@
|
|||||||
|
import { LanguagesSupported } from '@/utils/language'
|
||||||
|
|
||||||
export const i18n = {
|
export const i18n = {
|
||||||
defaultLocale: 'en',
|
defaultLocale: 'en',
|
||||||
locales: ['en', 'zh-Hans'],
|
locales: LanguagesSupported,
|
||||||
} as const
|
} as const
|
||||||
|
|
||||||
export type Locale = typeof i18n['locales'][number]
|
export type Locale = typeof i18n['locales'][number]
|
||||||
|
|||||||
@ -0,0 +1,87 @@
|
|||||||
|
const translation = {
|
||||||
|
title: 'Anotações',
|
||||||
|
name: 'Resposta de Anotação',
|
||||||
|
editBy: 'Resposta editada por {{author}}',
|
||||||
|
noData: {
|
||||||
|
title: 'Sem anotações',
|
||||||
|
description: 'Você pode editar anotações no depuração do aplicativo ou importar anotações em massa aqui para obter uma resposta de alta qualidade.',
|
||||||
|
},
|
||||||
|
table: {
|
||||||
|
header: {
|
||||||
|
question: 'pergunta',
|
||||||
|
answer: 'resposta',
|
||||||
|
createdAt: 'criado em',
|
||||||
|
hits: 'acessos',
|
||||||
|
actions: 'ações',
|
||||||
|
addAnnotation: 'Adicionar Anotação',
|
||||||
|
bulkImport: 'Importação em Massa',
|
||||||
|
bulkExport: 'Exportação em Massa',
|
||||||
|
clearAll: 'Limpar Todas as Anotações',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
editModal: {
|
||||||
|
title: 'Editar Resposta de Anotação',
|
||||||
|
queryName: 'Consulta do Usuário',
|
||||||
|
answerName: 'Bot Contador de Histórias',
|
||||||
|
yourAnswer: 'Sua Resposta',
|
||||||
|
answerPlaceholder: 'Digite sua resposta aqui',
|
||||||
|
yourQuery: 'Sua Consulta',
|
||||||
|
queryPlaceholder: 'Digite sua consulta aqui',
|
||||||
|
removeThisCache: 'Remover esta Anotação',
|
||||||
|
createdAt: 'Criado em',
|
||||||
|
},
|
||||||
|
addModal: {
|
||||||
|
title: 'Adicionar Resposta de Anotação',
|
||||||
|
queryName: 'Pergunta',
|
||||||
|
answerName: 'Resposta',
|
||||||
|
answerPlaceholder: 'Digite a resposta aqui',
|
||||||
|
queryPlaceholder: 'Digite a pergunta aqui',
|
||||||
|
createNext: 'Adicionar outra resposta anotada',
|
||||||
|
},
|
||||||
|
batchModal: {
|
||||||
|
title: 'Importação em Massa',
|
||||||
|
csvUploadTitle: 'Arraste e solte seu arquivo CSV aqui, ou ',
|
||||||
|
browse: 'navegue',
|
||||||
|
tip: 'O arquivo CSV deve seguir a seguinte estrutura:',
|
||||||
|
question: 'pergunta',
|
||||||
|
answer: 'resposta',
|
||||||
|
contentTitle: 'conteúdo do fragmento',
|
||||||
|
content: 'conteúdo',
|
||||||
|
template: 'Baixe o modelo aqui',
|
||||||
|
cancel: 'Cancelar',
|
||||||
|
run: 'Executar em Lote',
|
||||||
|
runError: 'Falha na execução em lote',
|
||||||
|
processing: 'Processando em lote',
|
||||||
|
completed: 'Importação concluída',
|
||||||
|
error: 'Erro na importação',
|
||||||
|
ok: 'OK',
|
||||||
|
},
|
||||||
|
errorMessage: {
|
||||||
|
answerRequired: 'A resposta é obrigatória',
|
||||||
|
queryRequired: 'A pergunta é obrigatória',
|
||||||
|
},
|
||||||
|
viewModal: {
|
||||||
|
annotatedResponse: 'Resposta de Anotação',
|
||||||
|
hitHistory: 'Histórico de Acessos',
|
||||||
|
hit: 'Acesso',
|
||||||
|
hits: 'Acessos',
|
||||||
|
noHitHistory: 'Nenhum histórico de acesso',
|
||||||
|
},
|
||||||
|
hitHistoryTable: {
|
||||||
|
query: 'Consulta',
|
||||||
|
match: 'Correspondência',
|
||||||
|
response: 'Resposta',
|
||||||
|
source: 'Origem',
|
||||||
|
score: 'Pontuação',
|
||||||
|
time: 'Tempo',
|
||||||
|
},
|
||||||
|
initSetup: {
|
||||||
|
title: 'Configuração Inicial da Resposta de Anotação',
|
||||||
|
configTitle: 'Configuração da Resposta de Anotação',
|
||||||
|
confirmBtn: 'Salvar e Habilitar',
|
||||||
|
configConfirmBtn: 'Salvar',
|
||||||
|
},
|
||||||
|
embeddingModelSwitchTip: 'Modelo de vetorização de texto de anotação, a troca de modelos será refeita, resultando em custos adicionais.',
|
||||||
|
}
|
||||||
|
|
||||||
|
export default translation
|
||||||
@ -0,0 +1,79 @@
|
|||||||
|
const translation = {
|
||||||
|
apiServer: 'Servidor da API',
|
||||||
|
apiKey: 'Chave da API',
|
||||||
|
status: 'Status',
|
||||||
|
disabled: 'Desativado',
|
||||||
|
ok: 'Em Serviço',
|
||||||
|
copy: 'Copiar',
|
||||||
|
copied: 'Copiado',
|
||||||
|
merMaind: {
|
||||||
|
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',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
export default translation
|
||||||
@ -0,0 +1,388 @@
|
|||||||
|
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',
|
||||||
|
},
|
||||||
|
citation: {
|
||||||
|
title: 'Citações e Atribuições',
|
||||||
|
description: 'Uma vez ativado, mostra o documento de origem e a seção atribuída do conteúdo gerado.',
|
||||||
|
resDes: 'Citações e Atribuições estão ativadas',
|
||||||
|
},
|
||||||
|
annotation: {
|
||||||
|
title: 'Resposta de Anotação',
|
||||||
|
description: 'Você pode adicionar manualmente uma resposta de alta qualidade ao cache para correspondência prioritária com perguntas semelhantes do usuário.',
|
||||||
|
resDes: 'Resposta de Anotação está ativada',
|
||||||
|
scoreThreshold: {
|
||||||
|
title: 'Limiar de Pontuação',
|
||||||
|
description: 'Usado para definir o limiar de similaridade para resposta de anotação.',
|
||||||
|
easyMatch: 'Correspondência Fácil',
|
||||||
|
accurateMatch: 'Correspondência Precisa',
|
||||||
|
},
|
||||||
|
matchVariable: {
|
||||||
|
title: 'Variável de Correspondência',
|
||||||
|
choosePlaceholder: 'Escolha a variável de correspondência',
|
||||||
|
},
|
||||||
|
cacheManagement: 'Anotações',
|
||||||
|
cached: 'Anotado',
|
||||||
|
remove: 'Remover',
|
||||||
|
removeConfirm: 'Excluir esta anotação?',
|
||||||
|
add: 'Adicionar anotação',
|
||||||
|
edit: 'Editar anotação',
|
||||||
|
},
|
||||||
|
dataSet: {
|
||||||
|
title: 'Contexto',
|
||||||
|
noData: 'Você pode importar Conhecimento como contexto',
|
||||||
|
words: 'Palavras',
|
||||||
|
textBlocks: 'Blocos de Texto',
|
||||||
|
selectTitle: 'Selecionar Conhecimento de referência',
|
||||||
|
selected: 'Conhecimento selecionado',
|
||||||
|
noDataSet: 'Nenhum Conhecimento encontrado',
|
||||||
|
toCreate: 'Ir para criar',
|
||||||
|
notSupportSelectMulti: 'Atualmente, suporta apenas um Conhecimento',
|
||||||
|
queryVariable: {
|
||||||
|
title: 'Variável de Consulta',
|
||||||
|
tip: 'Essa variável será usada como entrada de consulta para recuperação de contexto, obtendo informações de contexto relacionadas à entrada dessa variável.',
|
||||||
|
choosePlaceholder: 'Escolha a variável de consulta',
|
||||||
|
noVar: 'Nenhuma variável',
|
||||||
|
noVarTip: 'por favor, crie uma variável na seção Variáveis',
|
||||||
|
unableToQueryDataSet: 'Não é possível consultar o Conhecimento',
|
||||||
|
unableToQueryDataSetTip: 'Não é possível consultar o Conhecimento com sucesso, por favor escolha uma variável de consulta de contexto na seção de contexto.',
|
||||||
|
ok: 'OK',
|
||||||
|
contextVarNotEmpty: 'variável de consulta de contexto não pode estar vazia',
|
||||||
|
deleteContextVarTitle: 'Excluir variável "{{varName}}"?',
|
||||||
|
deleteContextVarTip: 'Esta variável foi definida como uma variável de consulta de contexto e removê-la afetará o uso normal do Conhecimento. Se você ainda precisa excluí-la, por favor, selecione-a novamente na seção de contexto.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
tools: {
|
||||||
|
title: 'Tools',
|
||||||
|
tips: 'Tools provide a standard API call method, taking user input or variables as request parameters for querying external data as context.',
|
||||||
|
toolsInUse: '{{count}} tools in use',
|
||||||
|
modal: {
|
||||||
|
title: 'Tool',
|
||||||
|
toolType: {
|
||||||
|
title: 'Tool Type',
|
||||||
|
placeholder: 'Por favor, selecione o tipo de ferramenta',
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
title: 'Nome',
|
||||||
|
placeholder: 'Por favor, insira o nome',
|
||||||
|
},
|
||||||
|
variableName: {
|
||||||
|
title: 'Nome da Variável',
|
||||||
|
placeholder: 'Por favor, insira o nome da variável',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
conversationHistory: {
|
||||||
|
title: 'Histórico da Conversa',
|
||||||
|
description: 'Defina os nomes dos prefixos para os papéis da conversa',
|
||||||
|
tip: 'O Histórico da Conversa não está habilitado, por favor adicione <histories> na solicitação acima.',
|
||||||
|
learnMore: 'Saiba mais',
|
||||||
|
editModal: {
|
||||||
|
title: 'Editar Nomes dos Papéis da Conversa',
|
||||||
|
userPrefix: 'Prefixo do Usuário',
|
||||||
|
assistantPrefix: 'Prefixo do Assistente',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
title: 'CAIXA DE FERRAMENTAS',
|
||||||
|
},
|
||||||
|
moderation: {
|
||||||
|
title: 'Moderação de Conteúdo',
|
||||||
|
description: 'Proteja a saída do modelo usando a API de moderação ou mantendo uma lista de palavras sensíveis.',
|
||||||
|
allEnabled: 'Conteúdo de ENTRADA/SAÍDA Habilitado',
|
||||||
|
inputEnabled: 'Conteúdo de ENTRADA Habilitado',
|
||||||
|
outputEnabled: 'Conteúdo de SAÍDA Habilitado',
|
||||||
|
modal: {
|
||||||
|
title: 'Configurações de Moderação de Conteúdo',
|
||||||
|
provider: {
|
||||||
|
title: 'Provedor',
|
||||||
|
openai: 'Moderação OpenAI',
|
||||||
|
openaiTip: {
|
||||||
|
prefix: 'A Moderação OpenAI requer uma chave de API da OpenAI configurada em ',
|
||||||
|
suffix: '.',
|
||||||
|
},
|
||||||
|
keywords: 'Palavras-chave',
|
||||||
|
},
|
||||||
|
keywords: {
|
||||||
|
tip: 'Uma por linha, separadas por quebras de linha. Até 100 caracteres por linha.',
|
||||||
|
placeholder: 'Uma por linha, separadas por quebras de linha',
|
||||||
|
line: 'Linha',
|
||||||
|
},
|
||||||
|
content: {
|
||||||
|
input: 'Moderar Conteúdo de ENTRADA',
|
||||||
|
output: 'Moderar Conteúdo de SAÍDA',
|
||||||
|
preset: 'Respostas pré-definidas',
|
||||||
|
placeholder: 'Insira o conteúdo das respostas pré-definidas aqui',
|
||||||
|
condition: 'Moderar Conteúdo de ENTRADA e SAÍDA habilitado pelo menos uma',
|
||||||
|
fromApi: 'As respostas pré-definidas são retornadas pela API',
|
||||||
|
errorMessage: 'As respostas pré-definidas não podem estar vazias',
|
||||||
|
supportMarkdown: 'Suporte a Markdown',
|
||||||
|
},
|
||||||
|
openaiNotConfig: {
|
||||||
|
before: 'A Moderação OpenAI requer uma chave de API da OpenAI configurada em ',
|
||||||
|
after: '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
automatic: {
|
||||||
|
title: 'Orquestração Automatizada de Aplicativos',
|
||||||
|
description: 'Descreva o seu cenário, o Dify irá orquestrar um aplicativo para você.',
|
||||||
|
intendedAudience: 'Qual é o público-alvo?',
|
||||||
|
intendedAudiencePlaceHolder: 'ex: Estudante',
|
||||||
|
solveProblem: 'Quais problemas eles esperam que a IA possa resolver para eles?',
|
||||||
|
solveProblemPlaceHolder: 'ex: Avaliar o desempenho acadêmico',
|
||||||
|
generate: 'Gerar',
|
||||||
|
audiencesRequired: 'Públicos-alvo necessários',
|
||||||
|
problemRequired: 'Problema necessário',
|
||||||
|
resTitle: 'Orquestramos o seguinte aplicativo para você.',
|
||||||
|
apply: 'Aplicar esta orquestração',
|
||||||
|
noData: 'Descreva o seu caso de uso à esquerda, a visualização da orquestração será exibida aqui.',
|
||||||
|
loading: 'Orquestrando o aplicativo para você...',
|
||||||
|
overwriteTitle: 'Substituir configuração existente?',
|
||||||
|
overwriteMessage: 'Aplicar esta orquestração irá substituir a configuração existente.',
|
||||||
|
},
|
||||||
|
resetConfig: {
|
||||||
|
title: 'Confirmar redefinição?',
|
||||||
|
message:
|
||||||
|
'A redefinição descarta as alterações, restaurando a última configuração publicada.',
|
||||||
|
},
|
||||||
|
errorMessage: {
|
||||||
|
nameOfKeyRequired: 'nome da chave: {{key}} obrigatório',
|
||||||
|
valueOfVarRequired: 'valor de {{key}} não pode estar vazio',
|
||||||
|
queryRequired: 'Texto da solicitação é obrigatório.',
|
||||||
|
waitForResponse:
|
||||||
|
'Aguarde a resposta à mensagem anterior ser concluída.',
|
||||||
|
waitForBatchResponse:
|
||||||
|
'Aguarde a resposta à tarefa em lote ser concluída.',
|
||||||
|
notSelectModel: 'Por favor, escolha um modelo',
|
||||||
|
waitForImgUpload: 'Aguarde o upload da imagem',
|
||||||
|
},
|
||||||
|
chatSubTitle: 'Instruções',
|
||||||
|
completionSubTitle: 'Prefixo da Solicitação',
|
||||||
|
promptTip:
|
||||||
|
'As solicitações guiam as respostas da IA com instruções e restrições. Insira variáveis como {{input}}. Este prompt não será visível para os usuários.',
|
||||||
|
formattingChangedTitle: 'Formatação alterada',
|
||||||
|
formattingChangedText:
|
||||||
|
'Modificar a formatação redefinirá a área de depuração, você tem certeza?',
|
||||||
|
variableTitle: 'Variáveis',
|
||||||
|
variableTip:
|
||||||
|
'Os usuários preenchem as variáveis em um formulário, substituindo automaticamente as variáveis na solicitação.',
|
||||||
|
notSetVar: 'As variáveis permitem que os usuários introduzam palavras de solicitação ou observações iniciais ao preencher formulários. Você pode tentar digitar "{{input}}" nas palavras de solicitação.',
|
||||||
|
autoAddVar: 'Variáveis indefinidas referenciadas na pré-solicitação, você deseja adicioná-las no formulário de entrada do usuário?',
|
||||||
|
variableTable: {
|
||||||
|
key: 'Chave da Variável',
|
||||||
|
name: 'Nome do Campo de Entrada do Usuário',
|
||||||
|
optional: 'Opcional',
|
||||||
|
type: 'Tipo de Entrada',
|
||||||
|
action: 'Ações',
|
||||||
|
typeString: 'Texto',
|
||||||
|
typeSelect: 'Selecionar',
|
||||||
|
},
|
||||||
|
varKeyError: {
|
||||||
|
canNoBeEmpty: 'A chave da variável não pode estar vazia',
|
||||||
|
tooLong: 'A chave da variável: {{key}} é muito longa. Não pode ter mais de 30 caracteres',
|
||||||
|
notValid: 'A chave da variável: {{key}} é inválida. Pode conter apenas letras, números e sublinhados',
|
||||||
|
notStartWithNumber: 'A chave da variável: {{key}} não pode começar com um número',
|
||||||
|
keyAlreadyExists: 'A chave da variável: :{{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',
|
||||||
|
},
|
||||||
|
variableConig: {
|
||||||
|
modalTitle: 'Configurações do Campo',
|
||||||
|
description: 'Configuração para a variável {{varName}}',
|
||||||
|
fieldType: 'Tipo de Campo',
|
||||||
|
string: 'Texto Curto',
|
||||||
|
paragraph: 'Parágrafo',
|
||||||
|
select: 'Selecionar',
|
||||||
|
notSet: 'Não definido, tente digitar {{input}} na solicitação',
|
||||||
|
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',
|
||||||
|
},
|
||||||
|
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',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
openingStatement: {
|
||||||
|
title: 'Abertura da Conversa',
|
||||||
|
add: 'Adicionar',
|
||||||
|
writeOpner: 'Escrever abertura',
|
||||||
|
placeholder: 'Escreva sua mensagem de abertura aqui, você pode usar variáveis, tente digitar {{variável}}.',
|
||||||
|
openingQuestion: 'Perguntas de Abertura',
|
||||||
|
noDataPlaceHolder:
|
||||||
|
'Iniciar a conversa com o usuário pode ajudar a IA a estabelecer uma conexão mais próxima com eles em aplicativos de conversação.',
|
||||||
|
varTip: 'Você pode usar variáveis, tente digitar {{variável}}',
|
||||||
|
tooShort: 'São necessárias pelo menos 20 palavras de prompt inicial para gerar observações de abertura para a conversa.',
|
||||||
|
notIncludeKey: 'O prompt inicial não inclui a variável: {{key}}. Por favor, adicione-a ao prompt inicial.',
|
||||||
|
},
|
||||||
|
modelConfig: {
|
||||||
|
model: 'Modelo',
|
||||||
|
setTone: 'Definir tom das respostas',
|
||||||
|
title: 'Modelo e Parâmetros',
|
||||||
|
modeType: {
|
||||||
|
chat: 'Chat',
|
||||||
|
completion: 'Completar',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
inputs: {
|
||||||
|
title: 'Depuração e Visualização',
|
||||||
|
noPrompt: 'Tente escrever algum prompt na entrada de pré-prompt',
|
||||||
|
userInputField: 'Campo de Entrada do Usuário',
|
||||||
|
noVar: 'Preencha o valor da variável, que será substituída automaticamente na palavra de solicitação sempre que uma nova sessão for iniciada.',
|
||||||
|
chatVarTip:
|
||||||
|
'Preencha o valor da variável, que será substituída automaticamente na palavra de solicitação sempre que uma nova sessão for iniciada',
|
||||||
|
completionVarTip:
|
||||||
|
'Preencha o valor da variável, que será substituída automaticamente nas palavras de solicitação sempre que uma pergunta for enviada.',
|
||||||
|
previewTitle: 'Visualização do Prompt',
|
||||||
|
queryTitle: 'Conteúdo da Consulta',
|
||||||
|
queryPlaceholder: 'Por favor, insira o texto da solicitação.',
|
||||||
|
run: 'EXECUTAR',
|
||||||
|
},
|
||||||
|
result: 'Texto de Saída',
|
||||||
|
datasetConfig: {
|
||||||
|
settingTitle: 'Configurações de Recuperação',
|
||||||
|
retrieveOneWay: {
|
||||||
|
title: 'Recuperação N-para-1',
|
||||||
|
description: 'Com base na intenção do usuário e nas descrições do Conhecimento, o Agente seleciona autonomamente o melhor Conhecimento para consulta. Melhor para aplicativos com Conhecimento distinto e limitado.',
|
||||||
|
},
|
||||||
|
retrieveMultiWay: {
|
||||||
|
title: 'Recuperação Multi-caminho',
|
||||||
|
description: 'Com base na intenção do usuário, consulta todos os Conhecimentos, recupera texto relevante de várias fontes e seleciona os melhores resultados que correspondem à consulta do usuário após a reclassificação. É necessária a configuração da API do modelo de reclassificação.',
|
||||||
|
},
|
||||||
|
rerankModelRequired: 'Modelo de reclassificação é necessário',
|
||||||
|
params: 'Parâmetros',
|
||||||
|
top_k: 'Top K',
|
||||||
|
top_kTip: 'Usado para filtrar os trechos mais semelhantes às perguntas do usuário. O sistema também ajustará dinamicamente o valor de Top K, de acordo com max_tokens do modelo selecionado.',
|
||||||
|
score_threshold: 'Limiar de Pontuação',
|
||||||
|
score_thresholdTip: 'Usado para definir o limiar de similaridade para filtragem de trechos.',
|
||||||
|
retrieveChangeTip: 'Modificar o modo de índice e o modo de recuperação pode afetar os aplicativos associados a este Conhecimento.',
|
||||||
|
},
|
||||||
|
assistantType: {
|
||||||
|
name: 'Tipo de Assistente',
|
||||||
|
chatAssistant: {
|
||||||
|
name: 'Assistente Básico',
|
||||||
|
description: 'Construa um assistente baseado em chat usando um Modelo de Linguagem Grande',
|
||||||
|
},
|
||||||
|
agentAssistant: {
|
||||||
|
name: 'Assistente de Agente',
|
||||||
|
description: 'Construa um Agente inteligente que pode escolher autonomamente ferramentas para concluir as tarefas',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
agent: {
|
||||||
|
agentMode: 'Modo do Agente',
|
||||||
|
agentModeDes: 'Defina o tipo de modo de inferência para o agente',
|
||||||
|
agentModeType: {
|
||||||
|
ReACT: 'ReAct',
|
||||||
|
functionCall: 'Chamada de Função',
|
||||||
|
},
|
||||||
|
setting: {
|
||||||
|
name: 'Configurações do Agente',
|
||||||
|
description: 'As configurações do Assistente de Agente permitem definir o modo do agente e recursos avançados como prompts incorporados, disponíveis apenas no tipo de Agente.',
|
||||||
|
maximumIterations: {
|
||||||
|
name: 'Número Máximo de Iterações',
|
||||||
|
description: 'Limite o número de iterações que um assistente de agente pode executar',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
buildInPrompt: 'Prompt Incorporado',
|
||||||
|
firstPrompt: 'Primeiro Prompt',
|
||||||
|
nextIteration: 'Próxima Iteração',
|
||||||
|
promptPlaceholder: 'Escreva seu prompt aqui',
|
||||||
|
tools: {
|
||||||
|
name: 'Ferramentas',
|
||||||
|
description: 'O uso de ferramentas pode ampliar as capacidades do LLM, como pesquisar na internet ou realizar cálculos científicos',
|
||||||
|
enabled: 'Habilitado',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
export default translation
|
||||||
@ -0,0 +1,69 @@
|
|||||||
|
const translation = {
|
||||||
|
title: 'Registros',
|
||||||
|
description: 'Os registros registram o status de execução do aplicativo, incluindo as entradas do usuário e as respostas da IA.',
|
||||||
|
dateTimeFormat: 'MM/DD/YYYY hh:mm A',
|
||||||
|
table: {
|
||||||
|
header: {
|
||||||
|
time: 'Tempo',
|
||||||
|
endUser: 'Usuário Final',
|
||||||
|
input: 'Entrada',
|
||||||
|
output: 'Saída',
|
||||||
|
summary: 'Título',
|
||||||
|
messageCount: 'Contagem de Mensagens',
|
||||||
|
userRate: 'Taxa de Usuário',
|
||||||
|
adminRate: 'Taxa de Op.',
|
||||||
|
},
|
||||||
|
pagination: {
|
||||||
|
previous: 'Anterior',
|
||||||
|
next: 'Próximo',
|
||||||
|
},
|
||||||
|
empty: {
|
||||||
|
noChat: 'Nenhuma conversa ainda',
|
||||||
|
noOutput: 'Nenhuma saída',
|
||||||
|
element: {
|
||||||
|
title: 'Tem alguém aí?',
|
||||||
|
content: 'Observe e anote as interações entre usuários finais e 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: 'Tempo',
|
||||||
|
conversationId: 'ID da Conversa',
|
||||||
|
promptTemplate: 'Modelo de Prompt',
|
||||||
|
promptTemplateBeforeChat: 'Modelo de Prompt Antes da Conversa · Como Mensagem do Sistema',
|
||||||
|
annotationTip: 'Melhorias Marcadas por {{user}}',
|
||||||
|
timeConsuming: '',
|
||||||
|
second: 's',
|
||||||
|
tokenCost: 'Tokens gastos',
|
||||||
|
loading: 'carregando',
|
||||||
|
operation: {
|
||||||
|
like: 'curtir',
|
||||||
|
dislike: 'não curtir',
|
||||||
|
addAnnotation: 'Adicionar Melhoria',
|
||||||
|
editAnnotation: 'Editar Melhoria',
|
||||||
|
annotationPlaceholder: 'Digite a resposta esperada que você deseja que a IA responda, que pode ser usada para ajustar o modelo e melhorar continuamente a qualidade da geração de texto no futuro.',
|
||||||
|
},
|
||||||
|
variables: 'Variáveis',
|
||||||
|
uploadImages: 'Imagens Enviadas',
|
||||||
|
},
|
||||||
|
filter: {
|
||||||
|
period: {
|
||||||
|
today: 'Hoje',
|
||||||
|
last7days: 'Últimos 7 Dias',
|
||||||
|
last4weeks: 'Últimas 4 semanas',
|
||||||
|
last3months: 'Últimos 3 meses',
|
||||||
|
last12months: 'Últimos 12 meses',
|
||||||
|
monthToDate: 'Mês até a data',
|
||||||
|
quarterToDate: 'Trimestre até a data',
|
||||||
|
yearToDate: 'Ano até a data',
|
||||||
|
allTime: 'Todo o tempo',
|
||||||
|
},
|
||||||
|
annotation: {
|
||||||
|
all: 'Todos',
|
||||||
|
annotated: 'Melhorias Anotadas ({{count}} itens)',
|
||||||
|
not_annotated: 'Não Anotadas',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
export default translation
|
||||||
@ -0,0 +1,139 @@
|
|||||||
|
const translation = {
|
||||||
|
welcome: {
|
||||||
|
firstStepTip: 'Para começar,',
|
||||||
|
enterKeyTip: 'insira sua chave de API do OpenAI abaixo',
|
||||||
|
getKeyTip: 'Obtenha sua chave de API no painel do OpenAI',
|
||||||
|
placeholder: 'Sua chave de API do OpenAI (por exemplo, sk-xxxx)',
|
||||||
|
},
|
||||||
|
apiKeyInfo: {
|
||||||
|
cloud: {
|
||||||
|
trial: {
|
||||||
|
title: 'Você está usando a cota de teste do {{providerName}}.',
|
||||||
|
description: 'A cota de teste é fornecida para uso de teste. Antes que as chamadas da cota de teste se esgotem, configure seu próprio provedor de modelo ou compre uma cota adicional.',
|
||||||
|
},
|
||||||
|
exhausted: {
|
||||||
|
title: 'Sua cota de teste foi esgotada, configure sua chave de API.',
|
||||||
|
description: 'Sua cota de teste foi esgotada. Configure seu próprio provedor de modelo ou compre uma cota adicional.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
selfHost: {
|
||||||
|
title: {
|
||||||
|
row1: 'Para começar,',
|
||||||
|
row2: 'configure seu próprio provedor de modelo primeiro.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
callTimes: 'Número de chamadas',
|
||||||
|
usedToken: 'Tokens usados',
|
||||||
|
setAPIBtn: 'Ir para configurar provedor de modelo',
|
||||||
|
tryCloud: 'Ou experimente a versão em nuvem do Dify com cota gratuita',
|
||||||
|
},
|
||||||
|
overview: {
|
||||||
|
title: 'Visão geral',
|
||||||
|
appInfo: {
|
||||||
|
explanation: 'Aplicativo Web de IA pronto para uso',
|
||||||
|
accessibleAddress: 'URL pública',
|
||||||
|
preview: 'Visualização',
|
||||||
|
regenerate: 'Regenerar',
|
||||||
|
preUseReminder: 'Ative o aplicativo da Web antes de continuar.',
|
||||||
|
settings: {
|
||||||
|
entry: 'Configurações',
|
||||||
|
title: 'Configurações do aplicativo da Web',
|
||||||
|
webName: 'Nome do aplicativo da Web',
|
||||||
|
webDesc: 'Descrição do aplicativo da Web',
|
||||||
|
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 aplicativo da Web',
|
||||||
|
language: 'Idioma',
|
||||||
|
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 que o aplicativo coleta, consulte a <privacyPolicyLink>Política de Privacidade</privacyPolicyLink> do Dify.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
embedded: {
|
||||||
|
entry: 'Embutido',
|
||||||
|
title: 'Incorporar no site',
|
||||||
|
explanation: 'Escolha a maneira de incorporar o aplicativo de bate-papo ao seu site',
|
||||||
|
iframe: 'Para adicionar o aplicativo de bate-papo em qualquer lugar do seu site, adicione este iframe ao seu código HTML.',
|
||||||
|
scripts: 'Para adicionar um aplicativo de bate-papo na parte inferior direita do seu site, adicione este código ao seu HTML.',
|
||||||
|
chromePlugin: 'Instalar Extensão do Chatbot Dify para o Chrome',
|
||||||
|
copied: 'Copiado',
|
||||||
|
copy: 'Copiar',
|
||||||
|
},
|
||||||
|
qrcode: {
|
||||||
|
title: 'Código QR para compartilhar',
|
||||||
|
scan: 'Digitalizar para compartilhar o aplicativo',
|
||||||
|
download: 'Baixar código QR',
|
||||||
|
},
|
||||||
|
customize: {
|
||||||
|
way: 'maneira',
|
||||||
|
entry: 'Personalizar',
|
||||||
|
title: 'Personalizar aplicativo Web de IA',
|
||||||
|
explanation: 'Você pode personalizar a interface do usuário do aplicativo Web para se adequar ao seu cenário e necessidades de estilo.',
|
||||||
|
way1: {
|
||||||
|
name: 'Fork do código do cliente, modifique-o e implante no Vercel (recomendado)',
|
||||||
|
step1: 'Fork do código do cliente e modifique-o',
|
||||||
|
step1Tip: 'Clique aqui para fazer um fork do código-fonte em sua conta do GitHub e modificar o código',
|
||||||
|
step1Operation: 'Dify-WebClient',
|
||||||
|
step2: 'Implantar no Vercel',
|
||||||
|
step2Tip: 'Clique aqui para importar o repositório no Vercel e implantar',
|
||||||
|
step2Operation: 'Importar repositório',
|
||||||
|
step3: 'Configurar variáveis de ambiente',
|
||||||
|
step3Tip: 'Adicione as seguintes variáveis de ambiente no Vercel',
|
||||||
|
},
|
||||||
|
way2: {
|
||||||
|
name: 'Escrever código do lado do cliente para chamar a API e implantá-lo em um servidor',
|
||||||
|
operation: 'Documentação',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
apiInfo: {
|
||||||
|
title: 'API do serviço de backend',
|
||||||
|
explanation: 'Integração fácil em seu aplicativo',
|
||||||
|
accessibleAddress: 'Endpoint da API de serviço',
|
||||||
|
doc: 'Referência da API',
|
||||||
|
},
|
||||||
|
status: {
|
||||||
|
running: 'Em serviço',
|
||||||
|
disable: 'Desativar',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
analysis: {
|
||||||
|
title: 'Análise',
|
||||||
|
ms: 'ms',
|
||||||
|
tokenPS: 'Token/s',
|
||||||
|
totalMessages: {
|
||||||
|
title: 'Total de mensagens',
|
||||||
|
explanation: 'Contagem diária de interações de IA; engenharia de prompt/depuração excluída.',
|
||||||
|
},
|
||||||
|
activeUsers: {
|
||||||
|
title: 'Usuários ativos',
|
||||||
|
explanation: 'Usuários únicos envolvidos em perguntas e respostas com IA; engenharia de prompt/depuração excluída.',
|
||||||
|
},
|
||||||
|
tokenUsage: {
|
||||||
|
title: 'Uso de tokens',
|
||||||
|
explanation: 'Reflete o uso diário de tokens do modelo de linguagem para o aplicativo, útil para fins de controle de custos.',
|
||||||
|
consumed: 'Consumidos',
|
||||||
|
},
|
||||||
|
avgSessionInteractions: {
|
||||||
|
title: 'Média de interações por sessão',
|
||||||
|
explanation: 'Contagem contínua de comunicação usuário-IA; para aplicativos baseados em conversas.',
|
||||||
|
},
|
||||||
|
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 processamento/resposta da IA; para aplicativos baseados em texto.',
|
||||||
|
},
|
||||||
|
tps: {
|
||||||
|
title: 'Velocidade de saída de tokens',
|
||||||
|
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
|
||||||
@ -0,0 +1,49 @@
|
|||||||
|
const translation = {
|
||||||
|
title: 'Aplicativos',
|
||||||
|
createApp: 'Criar novo aplicativo',
|
||||||
|
modes: {
|
||||||
|
completion: 'Gerador de Texto',
|
||||||
|
chat: 'Aplicativo de Chat',
|
||||||
|
},
|
||||||
|
createFromConfigFile: 'Criar aplicativo a partir do arquivo de configuração',
|
||||||
|
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 excluídas permanentemente.',
|
||||||
|
appDeleted: 'Aplicativo excluído',
|
||||||
|
appDeleteFailed: 'Falha ao excluir o aplicativo',
|
||||||
|
join: 'Participe da comunidade',
|
||||||
|
communityIntro:
|
||||||
|
'Discuta com membros da equipe, colaboradores e desenvolvedores em diferentes canais.',
|
||||||
|
roadmap: 'Veja nosso roteiro',
|
||||||
|
appNamePlaceholder: 'Por favor, digite o nome do aplicativo',
|
||||||
|
newApp: {
|
||||||
|
startToCreate: 'Vamos começar com o seu novo aplicativo',
|
||||||
|
captionName: 'Dê um nome ao seu aplicativo',
|
||||||
|
captionAppType: 'Que tipo de aplicativo você deseja?',
|
||||||
|
previewDemo: 'Visualizar demonstração',
|
||||||
|
chatApp: 'Aplicativo de Chat',
|
||||||
|
chatAppIntro:
|
||||||
|
'Quero construir um aplicativo baseado em chat. Este aplicativo usa um formato de pergunta e resposta, permitindo várias rodadas de conversa contínua.',
|
||||||
|
completeApp: 'Gerador de Texto',
|
||||||
|
completeAppIntro:
|
||||||
|
'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 um modelo',
|
||||||
|
hideTemplates: 'Voltar para 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 o aplicativo',
|
||||||
|
},
|
||||||
|
editApp: {
|
||||||
|
startToEdit: 'Editar Aplicativo',
|
||||||
|
},
|
||||||
|
emoji: {
|
||||||
|
ok: 'OK',
|
||||||
|
cancel: 'Cancelar',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
export default translation
|
||||||
@ -0,0 +1,313 @@
|
|||||||
|
const translation = {
|
||||||
|
you: '(Você)',
|
||||||
|
integrations: {
|
||||||
|
connected: 'Conectado',
|
||||||
|
google: 'Google',
|
||||||
|
googleAccount: 'Entrar com conta do Google',
|
||||||
|
github: 'GitHub',
|
||||||
|
githubAccount: 'Entrar com 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 inválida',
|
||||||
|
validatedError: 'Falha na validação: ',
|
||||||
|
validating: 'Validando chave...',
|
||||||
|
saveFailed: 'Falha ao salvar a chave da API',
|
||||||
|
apiKeyExceedBill: 'Esta chave da API não possui cota 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: 'Aprenda 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 o GPT-3.5. Antes que sua cota de teste seja esgotada, você precisa configurar outros provedores de modelo.',
|
||||||
|
callTimes: 'Número de chamadas',
|
||||||
|
usedUp: 'Cota de teste esgotada. Adicione seu próprio provedor de modelo.',
|
||||||
|
useYourModel: 'Atualmente usando seu próprio provedor 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: 'Número de chamadas',
|
||||||
|
usedUp: 'Cota de teste esgotada. Adicione seu próprio provedor de modelo.',
|
||||||
|
useYourModel: 'Atualmente usando seu próprio provedor de modelo.',
|
||||||
|
close: 'Fechar',
|
||||||
|
},
|
||||||
|
anthropic: {
|
||||||
|
using: 'A capacidade de incorporação está usando',
|
||||||
|
enableTip: 'Para habilitar o modelo Anthropic, você precisa se vincular ao OpenAI ou ao Azure OpenAI Service primeiro.',
|
||||||
|
notEnabled: 'Não habilitado',
|
||||||
|
keyFrom: 'Obtenha sua chave da API do 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 não estar disponí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 nome 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 o processamento de vetorização. A troca 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 em conversa.',
|
||||||
|
},
|
||||||
|
rerankModel: {
|
||||||
|
key: 'Modelo de reclassificação',
|
||||||
|
tip: 'O modelo de reclassificação reordenará 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: 'Cota',
|
||||||
|
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 as configurações para configurar',
|
||||||
|
rerankTip: 'Por favor, configure o modelo de reclassificação',
|
||||||
|
},
|
||||||
|
card: {
|
||||||
|
quota: 'COTA',
|
||||||
|
onTrial: 'Em Teste',
|
||||||
|
paid: 'Pago',
|
||||||
|
quotaExhausted: 'Cota esgotada',
|
||||||
|
callTimes: 'Número de chamadas',
|
||||||
|
tokens: 'Tokens',
|
||||||
|
buyQuota: 'Comprar Cota',
|
||||||
|
priorityUse: 'Uso prioritário',
|
||||||
|
removeKey: 'Remover Chave da API',
|
||||||
|
tip: 'A cota paga terá prioridade. A cota de teste será usada após a cota 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: 'COTA 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 PROVEDOR DE MODELO',
|
||||||
|
addModel: 'Adicionar Modelo',
|
||||||
|
modelsNum: '{{num}} Modelos',
|
||||||
|
showModels: 'Mostrar Modelos',
|
||||||
|
showModelsNum: 'Mostrar {{num}} Modelos',
|
||||||
|
collapse: 'Recolher',
|
||||||
|
config: 'Configurar',
|
||||||
|
modelAndParameters: 'Modelo e Parâmetros',
|
||||||
|
model: 'Modelo',
|
||||||
|
featureSupported: '{{feature}} suportado',
|
||||||
|
callTimes: 'Número de chamadas',
|
||||||
|
buyQuota: 'Comprar Cota',
|
||||||
|
getFreeTokens: 'Obter Tokens gratuitos',
|
||||||
|
priorityUsing: 'Uso prioritário',
|
||||||
|
deprecated: 'Descontinuado',
|
||||||
|
confirmDelete: 'confirmar exclusão?',
|
||||||
|
quotaTip: 'Tokens gratuitos disponíveis restantes',
|
||||||
|
},
|
||||||
|
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',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
plugin: {
|
||||||
|
serpapi: {
|
||||||
|
apiKey: 'Chave da API',
|
||||||
|
apiKeyPlaceholder: 'Insira sua chave da API',
|
||||||
|
keyFrom: 'Obtenha sua chave SerpAPI na página da conta SerpAPI',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
apiBasedExtension: {
|
||||||
|
title: 'As extensões de API fornecem gerenciamento centralizado de API, simplificando a configuração para uso fácil em aplicativos da Dify.',
|
||||||
|
link: 'Saiba como desenvolver sua própria Extensão de API.',
|
||||||
|
linkUrl: 'https://docs.dify.ai/advanced/api_based_extension',
|
||||||
|
add: 'Adicionar Extensão de API',
|
||||||
|
selector: {
|
||||||
|
title: 'Extensão de API',
|
||||||
|
placeholder: 'Por favor, selecione a extensão de API',
|
||||||
|
manage: 'Gerenciar Extensão de API',
|
||||||
|
},
|
||||||
|
modal: {
|
||||||
|
title: 'Adicionar Extensão de API',
|
||||||
|
editTitle: 'Editar Extensão de API',
|
||||||
|
name: {
|
||||||
|
title: 'Nome',
|
||||||
|
placeholder: 'Por favor, insira o nome',
|
||||||
|
},
|
||||||
|
apiEndpoint: {
|
||||||
|
title: 'Endpoint da API',
|
||||||
|
placeholder: 'Por favor, insira o endpoint da API',
|
||||||
|
},
|
||||||
|
apiKey: {
|
||||||
|
title: 'Chave da API',
|
||||||
|
placeholder: 'Por favor, insira a chave da API',
|
||||||
|
lengthError: 'O comprimento da chave da API não pode ser inferior a 5 caracteres',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
about: {
|
||||||
|
changeLog: 'Registro de alterações',
|
||||||
|
updateNow: 'Atualizar agora',
|
||||||
|
nowAvailable: 'Dify {{version}} está disponível agora.',
|
||||||
|
latestAvailable: 'Dify {{version}} é a versão mais recente disponível.',
|
||||||
|
},
|
||||||
|
appMenus: {
|
||||||
|
overview: 'Visão geral',
|
||||||
|
promptEng: 'Orquestrar',
|
||||||
|
apiAccess: 'Acesso à API',
|
||||||
|
logAndAnn: 'Logs e Anúncios',
|
||||||
|
},
|
||||||
|
environment: {
|
||||||
|
testing: 'TESTE',
|
||||||
|
development: 'DESENVOLVIMENTO',
|
||||||
|
},
|
||||||
|
appModes: {
|
||||||
|
completionApp: 'Gerador de Texto',
|
||||||
|
chatApp: 'Aplicativo de Chat',
|
||||||
|
},
|
||||||
|
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 vinculados',
|
||||||
|
},
|
||||||
|
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': 'Text-Davinci-003',
|
||||||
|
'text-embedding-ada-002': 'Text-Embedding-Ada-002',
|
||||||
|
'whisper-1': 'Whisper-1',
|
||||||
|
'claude-instant-1': 'Claude-Instant',
|
||||||
|
'claude-2': 'Claude-2',
|
||||||
|
},
|
||||||
|
chat: {
|
||||||
|
renameConversation: '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 o Conhecimento',
|
||||||
|
characters: 'Personagens:',
|
||||||
|
hitCount: 'Contagem de recuperação:',
|
||||||
|
vectorHash: 'Hash do vetor:',
|
||||||
|
hitScore: 'Pontuação de recuperação:',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
promptEditor: {
|
||||||
|
placeholder: 'Escreva sua palavra de estímulo aqui, digite \'{\' para inserir uma variável, digite \'/\' para inserir um bloco de conteúdo de estímulo',
|
||||||
|
context: {
|
||||||
|
item: {
|
||||||
|
title: 'Contexto',
|
||||||
|
desc: 'Inserir modelo de contexto',
|
||||||
|
},
|
||||||
|
modal: {
|
||||||
|
title: '{{num}} Conhecimento em Contexto',
|
||||||
|
add: 'Adicionar Contexto',
|
||||||
|
footer: 'Você pode gerenciar os contextos na seção de Contexto abaixo.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
history: {
|
||||||
|
item: {
|
||||||
|
title: 'Histórico da Conversa',
|
||||||
|
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',
|
||||||
|
},
|
||||||
|
modal: {
|
||||||
|
add: 'Nova variável',
|
||||||
|
addTool: 'Nova ferramenta',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
query: {
|
||||||
|
item: {
|
||||||
|
title: 'Consulta',
|
||||||
|
desc: 'Inserir modelo de consulta do usuário',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
existed: 'Já existe no estímulo',
|
||||||
|
},
|
||||||
|
imageUploader: {
|
||||||
|
uploadFromComputer: 'Enviar do computador',
|
||||||
|
uploadFromComputerReadError: 'Falha na leitura da imagem, por favor, tente novamente.',
|
||||||
|
uploadFromComputerUploadError: 'Falha no envio da 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: 'Envio de Imagem',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
export default translation
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
const translation = {
|
||||||
|
custom: 'Customization',
|
||||||
|
upgradeTip: {
|
||||||
|
prefix: 'Upgrade your plan to',
|
||||||
|
suffix: 'customize your brand.',
|
||||||
|
},
|
||||||
|
webapp: {
|
||||||
|
title: 'Customize WebApp brand',
|
||||||
|
removeBrand: 'Remove Powered by Dify',
|
||||||
|
changeLogo: 'Change Powered by Brand Image',
|
||||||
|
changeLogoTip: 'SVG or PNG format with a minimum size of 40x40px',
|
||||||
|
},
|
||||||
|
app: {
|
||||||
|
title: 'Customize app header brand',
|
||||||
|
changeLogoTip: 'SVG or PNG format with a minimum size of 80x80px',
|
||||||
|
},
|
||||||
|
upload: 'Upload',
|
||||||
|
uploading: 'Uploading',
|
||||||
|
uploadedFail: 'Image upload failed, please re-upload.',
|
||||||
|
change: 'Change',
|
||||||
|
apply: 'Apply',
|
||||||
|
restore: 'Restore Defaults',
|
||||||
|
customize: {
|
||||||
|
contactUs: ' contact us ',
|
||||||
|
prefix: 'To customize the brand logo within the app, please',
|
||||||
|
suffix: 'to upgrade to the Enterprise edition.',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
export default translation
|
||||||
@ -0,0 +1,126 @@
|
|||||||
|
const translation = {
|
||||||
|
steps: {
|
||||||
|
header: {
|
||||||
|
creation: 'Criar Conhecimento',
|
||||||
|
update: 'Adicionar dados',
|
||||||
|
},
|
||||||
|
one: 'Escolher fonte de dados',
|
||||||
|
two: 'Pré-processamento e Limpeza de Texto',
|
||||||
|
three: 'Executar e finalizar',
|
||||||
|
},
|
||||||
|
error: {
|
||||||
|
unavailable: 'Este Conhecimento não está disponível',
|
||||||
|
},
|
||||||
|
stepOne: {
|
||||||
|
filePreview: 'Visualização do arquivo',
|
||||||
|
pagePreview: 'Visualização da página',
|
||||||
|
dataSourceType: {
|
||||||
|
file: 'Importar de arquivo de texto',
|
||||||
|
notion: 'Sincronizar do Notion',
|
||||||
|
web: 'Sincronizar de site',
|
||||||
|
},
|
||||||
|
uploader: {
|
||||||
|
title: 'Enviar arquivo de texto',
|
||||||
|
button: 'Arraste e solte o arquivo, ou',
|
||||||
|
browse: 'Navegar',
|
||||||
|
tip: 'Suporta {{supportTypes}}. Máximo de {{size}}MB cada.',
|
||||||
|
validation: {
|
||||||
|
typeError: 'Tipo de arquivo não suportado',
|
||||||
|
size: 'Arquivo muito grande. Máximo é {{size}}MB',
|
||||||
|
count: 'Vários arquivos não suportados',
|
||||||
|
},
|
||||||
|
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',
|
||||||
|
nameLengthInvaild: 'O nome deve ter entre 1 e 40 caracteres',
|
||||||
|
cancelButton: 'Cancelar',
|
||||||
|
confirmButton: 'Criar',
|
||||||
|
failed: 'Falha na criação',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
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',
|
||||||
|
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',
|
||||||
|
emstimateCost: 'Estimativa',
|
||||||
|
emstimateSegment: 'Fragmentos estimados',
|
||||||
|
segmentCount: 'fragmentos',
|
||||||
|
calculating: 'Calculando...',
|
||||||
|
fileSource: 'Pré-processar documentos',
|
||||||
|
notionSource: 'Pré-processar páginas',
|
||||||
|
other: 'e outros ',
|
||||||
|
fileUnit: ' arquivos',
|
||||||
|
notionUnit: ' páginas',
|
||||||
|
lastStep: 'Última etapa',
|
||||||
|
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',
|
||||||
|
indexSettedTip: 'Para alterar o método de índice, por favor vá para as ',
|
||||||
|
retrivalSettedTip: 'Para alterar o método de índice, por favor vá para as ',
|
||||||
|
datasetSettingLink: 'configurações do Conhecimento.',
|
||||||
|
},
|
||||||
|
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',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
export default translation
|
||||||
@ -0,0 +1,349 @@
|
|||||||
|
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',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
action: {
|
||||||
|
uploadFile: 'Enviar novo arquivo',
|
||||||
|
settings: 'Configurações de segmento',
|
||||||
|
addButton: 'Adicionar fragmento',
|
||||||
|
add: 'Adicionar um fragmento',
|
||||||
|
batchAdd: 'Adicionar em lote',
|
||||||
|
archive: 'Arquivar',
|
||||||
|
unarchive: 'Desarquivar',
|
||||||
|
delete: 'Excluir',
|
||||||
|
enableWarning: 'O arquivo arquivado não pode ser habilitado',
|
||||||
|
sync: 'Sincronizar',
|
||||||
|
},
|
||||||
|
index: {
|
||||||
|
enable: 'Habilitar',
|
||||||
|
disable: 'Desabilitar',
|
||||||
|
all: 'Todos',
|
||||||
|
enableTip: 'O arquivo pode ser indexado',
|
||||||
|
disableTip: 'O arquivo não pode ser indexado',
|
||||||
|
},
|
||||||
|
status: {
|
||||||
|
queuing: 'Em fila',
|
||||||
|
indexing: 'Indexando',
|
||||||
|
paused: 'Pausado',
|
||||||
|
error: 'Erro',
|
||||||
|
available: 'Disponível',
|
||||||
|
enabled: 'Habilitado',
|
||||||
|
disabled: 'Desabilitado',
|
||||||
|
archived: 'Arquivado',
|
||||||
|
},
|
||||||
|
empty: {
|
||||||
|
title: 'Ainda não há documentação',
|
||||||
|
upload: {
|
||||||
|
tip: 'Você pode enviar arquivos, sincronizar do site ou de aplicativos da web como Notion, GitHub, etc.',
|
||||||
|
},
|
||||||
|
sync: {
|
||||||
|
tip: 'O Dify baixará periodicamente arquivos do seu Notion e concluirá o processamento.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
delete: {
|
||||||
|
title: 'Tem certeza que deseja excluir?',
|
||||||
|
content: 'Se você precisar retomar o processamento posteriormente, continuará de onde parou',
|
||||||
|
},
|
||||||
|
batchModal: {
|
||||||
|
title: 'Adicionar fragmentos em lote',
|
||||||
|
csvUploadTitle: 'Arraste e solte seu arquivo CSV aqui ou ',
|
||||||
|
browse: 'navegar',
|
||||||
|
tip: 'O arquivo CSV deve seguir a seguinte estrutura:',
|
||||||
|
question: 'pergunta',
|
||||||
|
answer: 'resposta',
|
||||||
|
contentTitle: 'conteúdo do fragmento',
|
||||||
|
content: 'conteúdo',
|
||||||
|
template: 'Baixe o modelo aqui',
|
||||||
|
cancel: 'Cancelar',
|
||||||
|
run: 'Executar em lote',
|
||||||
|
runError: 'Falha ao executar em lote',
|
||||||
|
processing: 'Processando em lote',
|
||||||
|
completed: 'Importação concluída',
|
||||||
|
error: 'Erro na importação',
|
||||||
|
ok: 'OK',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
metadata: {
|
||||||
|
title: 'Metadados',
|
||||||
|
desc: 'A rotulagem de metadados para documentos permite que a IA acesse-os de maneira oportuna e expõe a fonte de referências para os usuários.',
|
||||||
|
dateTimeFormat: 'D MMMM, YYYY hh:mm A',
|
||||||
|
docTypeSelectTitle: 'Selecione um tipo de documento',
|
||||||
|
docTypeChangeTitle: 'Alterar tipo de documento',
|
||||||
|
docTypeSelectWarning:
|
||||||
|
'Se o tipo de documento for alterado, os metadados preenchidos agora não serão mais preservados',
|
||||||
|
firstMetaAction: 'Vamos lá',
|
||||||
|
placeholder: {
|
||||||
|
add: 'Adicionar ',
|
||||||
|
select: 'Selecionar ',
|
||||||
|
},
|
||||||
|
source: {
|
||||||
|
upload_file: 'Enviar arquivo',
|
||||||
|
notion: 'Sincronizar do Notion',
|
||||||
|
github: 'Sincronizar do Github',
|
||||||
|
},
|
||||||
|
type: {
|
||||||
|
book: 'Livro',
|
||||||
|
webPage: 'Página da Web',
|
||||||
|
paper: 'Artigo',
|
||||||
|
socialMediaPost: 'Postagem em Mídias Sociais',
|
||||||
|
personalDocument: 'Documento Pessoal',
|
||||||
|
businessDocument: 'Documento Empresarial',
|
||||||
|
IMChat: 'Chat de IM',
|
||||||
|
wikipediaEntry: 'Entrada da Wikipedia',
|
||||||
|
notion: 'Sincronizar do Notion',
|
||||||
|
github: 'Sincronizar do Github',
|
||||||
|
technicalParameters: 'Parâmetros Técnicos',
|
||||||
|
},
|
||||||
|
field: {
|
||||||
|
processRule: {
|
||||||
|
processDoc: 'Processar Documento',
|
||||||
|
segmentRule: 'Regra de Fragmentação',
|
||||||
|
segmentLength: 'Comprimento dos Fragmentos',
|
||||||
|
processClean: 'Limpeza de Texto',
|
||||||
|
},
|
||||||
|
book: {
|
||||||
|
title: 'Título',
|
||||||
|
language: 'Idioma',
|
||||||
|
author: 'Autor',
|
||||||
|
publisher: 'Editora',
|
||||||
|
publicationDate: 'Data de Publicação',
|
||||||
|
ISBN: 'ISBN',
|
||||||
|
category: 'Categoria',
|
||||||
|
},
|
||||||
|
webPage: {
|
||||||
|
title: 'Título',
|
||||||
|
url: 'URL',
|
||||||
|
language: 'Idioma',
|
||||||
|
authorPublisher: 'Autor/Editor',
|
||||||
|
publishDate: 'Data de Publicação',
|
||||||
|
topicsKeywords: 'Tópicos/Palavras-chave',
|
||||||
|
description: 'Descrição',
|
||||||
|
},
|
||||||
|
paper: {
|
||||||
|
title: 'Título',
|
||||||
|
language: 'Idioma',
|
||||||
|
author: 'Autor',
|
||||||
|
publishDate: 'Data de Publicação',
|
||||||
|
journalConferenceName: 'Nome do Jornal/Conferência',
|
||||||
|
volumeIssuePage: 'Volume/Edição/Página',
|
||||||
|
DOI: 'DOI',
|
||||||
|
topicsKeywords: 'Tópicos/Palavras-chave',
|
||||||
|
abstract: 'Resumo',
|
||||||
|
},
|
||||||
|
socialMediaPost: {
|
||||||
|
platform: 'Plataforma',
|
||||||
|
authorUsername: 'Autor/Nome de Usuário',
|
||||||
|
publishDate: 'Data de Publicação',
|
||||||
|
postURL: 'URL da Postagem',
|
||||||
|
topicsTags: 'Tópicos/Tags',
|
||||||
|
},
|
||||||
|
personalDocument: {
|
||||||
|
title: 'Título',
|
||||||
|
author: 'Autor',
|
||||||
|
creationDate: 'Data de Criação',
|
||||||
|
lastModifiedDate: 'Data da Última Modificação',
|
||||||
|
documentType: 'Tipo de Documento',
|
||||||
|
tagsCategory: 'Tags/Categoria',
|
||||||
|
},
|
||||||
|
businessDocument: {
|
||||||
|
title: 'Título',
|
||||||
|
author: 'Autor',
|
||||||
|
creationDate: 'Data de Criação',
|
||||||
|
lastModifiedDate: 'Data da Última Modificação',
|
||||||
|
documentType: 'Tipo de Documento',
|
||||||
|
departmentTeam: 'Departamento/Equipe',
|
||||||
|
},
|
||||||
|
IMChat: {
|
||||||
|
chatPlatform: 'Plataforma de Chat',
|
||||||
|
chatPartiesGroupName: 'Partes/Grupo do Chat',
|
||||||
|
participants: 'Participantes',
|
||||||
|
startDate: 'Data de Início',
|
||||||
|
endDate: 'Data de Término',
|
||||||
|
topicsKeywords: 'Tópicos/Palavras-chave',
|
||||||
|
fileType: 'Tipo de Arquivo',
|
||||||
|
},
|
||||||
|
wikipediaEntry: {
|
||||||
|
title: 'Título',
|
||||||
|
language: 'Idioma',
|
||||||
|
webpageURL: 'URL da Página da Web',
|
||||||
|
editorContributor: 'Editor/Contribuidor',
|
||||||
|
lastEditDate: 'Data da Última Edição',
|
||||||
|
summaryIntroduction: 'Resumo/Introdução',
|
||||||
|
},
|
||||||
|
notion: {
|
||||||
|
title: 'Título',
|
||||||
|
language: 'Idioma',
|
||||||
|
author: 'Autor',
|
||||||
|
createdTime: 'Data de Criação',
|
||||||
|
lastModifiedTime: 'Data da Última Modificação',
|
||||||
|
url: 'URL',
|
||||||
|
tag: 'Tag',
|
||||||
|
description: 'Descrição',
|
||||||
|
},
|
||||||
|
github: {
|
||||||
|
repoName: 'Nome do Repositório',
|
||||||
|
repoDesc: 'Descrição do Repositório',
|
||||||
|
repoOwner: 'Proprietário do Repositório',
|
||||||
|
fileName: 'Nome do Arquivo',
|
||||||
|
filePath: 'Caminho do Arquivo',
|
||||||
|
programmingLang: 'Linguagem de Programação',
|
||||||
|
url: 'URL',
|
||||||
|
license: 'Licença',
|
||||||
|
lastCommitTime: 'Data do Último Commit',
|
||||||
|
lastCommitAuthor: 'Autor do Último Commit',
|
||||||
|
},
|
||||||
|
originInfo: {
|
||||||
|
originalFilename: 'Nome do arquivo original',
|
||||||
|
originalFileSize: 'Tamanho do arquivo original',
|
||||||
|
uploadDate: 'Data de envio',
|
||||||
|
lastUpdateDate: 'Data da última atualização',
|
||||||
|
source: 'Fonte',
|
||||||
|
},
|
||||||
|
technicalParameters: {
|
||||||
|
segmentSpecification: 'Especificação dos fragmentos',
|
||||||
|
segmentLength: 'Comprimento dos fragmentos',
|
||||||
|
avgParagraphLength: 'Comprimento médio do parágrafo',
|
||||||
|
paragraphs: 'Parágrafos',
|
||||||
|
hitCount: 'Contagem de recuperação',
|
||||||
|
embeddingTime: 'Tempo de incorporação',
|
||||||
|
embeddedSpend: 'Tempo gasto na incorporação',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
languageMap: {
|
||||||
|
zh: 'Chinês',
|
||||||
|
en: 'Inglês',
|
||||||
|
es: 'Espanhol',
|
||||||
|
fr: 'Francês',
|
||||||
|
de: 'Alemão',
|
||||||
|
ja: 'Japonês',
|
||||||
|
ko: 'Coreano',
|
||||||
|
ru: 'Russo',
|
||||||
|
ar: 'Árabe',
|
||||||
|
pt: 'Português',
|
||||||
|
it: 'Italiano',
|
||||||
|
nl: 'Holandês',
|
||||||
|
pl: 'Polonês',
|
||||||
|
sv: 'Sueco',
|
||||||
|
tr: 'Turco',
|
||||||
|
he: 'Hebraico',
|
||||||
|
hi: 'Hindi',
|
||||||
|
da: 'Dinamarquês',
|
||||||
|
fi: 'Finlandês',
|
||||||
|
no: 'Norueguês',
|
||||||
|
hu: 'Húngaro',
|
||||||
|
el: 'Grego',
|
||||||
|
cs: 'Tcheco',
|
||||||
|
th: 'Tailandês',
|
||||||
|
id: 'Indonésio',
|
||||||
|
},
|
||||||
|
categoryMap: {
|
||||||
|
book: {
|
||||||
|
fiction: 'Ficção',
|
||||||
|
biography: 'Biografia',
|
||||||
|
history: 'História',
|
||||||
|
science: 'Ciência',
|
||||||
|
technology: 'Tecnologia',
|
||||||
|
education: 'Educação',
|
||||||
|
philosophy: 'Filosofia',
|
||||||
|
religion: 'Religião',
|
||||||
|
socialSciences: 'Ciências Sociais',
|
||||||
|
art: 'Arte',
|
||||||
|
travel: 'Viagem',
|
||||||
|
health: 'Saúde',
|
||||||
|
selfHelp: 'Autoajuda',
|
||||||
|
businessEconomics: 'Negócios/Economia',
|
||||||
|
cooking: 'Culinária',
|
||||||
|
childrenYoungAdults: 'Crianças/Jovens Adultos',
|
||||||
|
comicsGraphicNovels: 'Quadrinhos/Graphic Novels',
|
||||||
|
poetry: 'Poesia',
|
||||||
|
drama: 'Drama',
|
||||||
|
other: 'Outro',
|
||||||
|
},
|
||||||
|
personalDoc: {
|
||||||
|
notes: 'Notas',
|
||||||
|
blogDraft: 'Rascunho de Blog',
|
||||||
|
diary: 'Diário',
|
||||||
|
researchReport: 'Relatório de Pesquisa',
|
||||||
|
bookExcerpt: 'Trecho de Livro',
|
||||||
|
schedule: 'Agenda',
|
||||||
|
list: 'Lista',
|
||||||
|
projectOverview: 'Visão Geral do Projeto',
|
||||||
|
photoCollection: 'Coleção de Fotos',
|
||||||
|
creativeWriting: 'Escrita Criativa',
|
||||||
|
codeSnippet: 'Trecho de Código',
|
||||||
|
designDraft: 'Rascunho de Design',
|
||||||
|
personalResume: 'Currículo Pessoal',
|
||||||
|
other: 'Outro',
|
||||||
|
},
|
||||||
|
businessDoc: {
|
||||||
|
meetingMinutes: 'Minutos de Reunião',
|
||||||
|
researchReport: 'Relatório de Pesquisa',
|
||||||
|
proposal: 'Proposta',
|
||||||
|
employeeHandbook: 'Manual do Funcionário',
|
||||||
|
trainingMaterials: 'Materiais de Treinamento',
|
||||||
|
requirementsDocument: 'Documento de Requisitos',
|
||||||
|
designDocument: 'Documento de Design',
|
||||||
|
productSpecification: 'Especificação do Produto',
|
||||||
|
financialReport: 'Relatório Financeiro',
|
||||||
|
marketAnalysis: 'Análise de Mercado',
|
||||||
|
projectPlan: 'Plano de Projeto',
|
||||||
|
teamStructure: 'Estrutura da Equipe',
|
||||||
|
policiesProcedures: 'Políticas e Procedimentos',
|
||||||
|
contractsAgreements: 'Contratos e Acordos',
|
||||||
|
emailCorrespondence: 'Correspondência por E-mail',
|
||||||
|
other: 'Outro',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
embedding: {
|
||||||
|
processing: 'Processando incorporação...',
|
||||||
|
paused: 'Incorporação pausada',
|
||||||
|
completed: 'Incorporação concluída',
|
||||||
|
error: 'Erro na incorporação',
|
||||||
|
docName: 'Pré-processamento do documento',
|
||||||
|
mode: 'Regra de segmentação',
|
||||||
|
segmentLength: 'Comprimento dos fragmentos',
|
||||||
|
textCleaning: 'Definição prévia e limpeza de texto',
|
||||||
|
segments: 'Parágrafos',
|
||||||
|
highQuality: 'Modo de alta qualidade',
|
||||||
|
economy: 'Modo econômico',
|
||||||
|
estimate: 'Consumo estimado',
|
||||||
|
stop: 'Parar processamento',
|
||||||
|
resume: 'Retomar processamento',
|
||||||
|
automatic: 'Automático',
|
||||||
|
custom: 'Personalizado',
|
||||||
|
previewTip: 'A visualização do parágrafo estará disponível após a incorporação ser concluída',
|
||||||
|
},
|
||||||
|
segment: {
|
||||||
|
paragraphs: 'Parágrafos',
|
||||||
|
keywords: 'Palavras-chave',
|
||||||
|
addKeyWord: 'Adicionar palavra-chave',
|
||||||
|
keywordError: 'O comprimento máximo da palavra-chave é 20',
|
||||||
|
characters: 'caracteres',
|
||||||
|
hitCount: 'Contagem de recuperação',
|
||||||
|
vectorHash: 'Hash do vetor: ',
|
||||||
|
questionPlaceholder: 'adicionar pergunta aqui',
|
||||||
|
questionEmpty: 'A pergunta não pode estar vazia',
|
||||||
|
answerPlaceholder: 'adicionar resposta aqui',
|
||||||
|
answerEmpty: 'A resposta não pode estar vazia',
|
||||||
|
contentPlaceholder: 'adicionar conteúdo aqui',
|
||||||
|
contentEmpty: 'O conteúdo não pode estar vazio',
|
||||||
|
newTextSegment: 'Novo fragmento de texto',
|
||||||
|
newQaSegment: 'Novo fragmento de P&R',
|
||||||
|
delete: 'Excluir este fragmento?',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
export default translation
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
const translation = {
|
||||||
|
title: 'Teste de Recuperação',
|
||||||
|
desc: 'Teste o efeito de recuperação do conhecimento com base no texto de consulta fornecido.',
|
||||||
|
dateTimeFormat: 'MM/DD/YYYY hh:mm A',
|
||||||
|
recents: 'Recentes',
|
||||||
|
table: {
|
||||||
|
header: {
|
||||||
|
source: 'Origem',
|
||||||
|
text: 'Texto',
|
||||||
|
time: 'Hora',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
input: {
|
||||||
|
title: 'Texto de origem',
|
||||||
|
placeholder: 'Digite um texto, uma frase declarativa curta é recomendada.',
|
||||||
|
countWarning: 'Até 200 caracteres.',
|
||||||
|
indexWarning: 'Somente conhecimento de alta qualidade.',
|
||||||
|
testing: 'Testando',
|
||||||
|
},
|
||||||
|
hit: {
|
||||||
|
title: 'PARÁGRAFOS DE RECUPERAÇÃO',
|
||||||
|
emptyTip: 'Os resultados do teste de recuperação serão exibidos aqui',
|
||||||
|
},
|
||||||
|
noRecentTip: 'Nenhum resultado de consulta recente aqui',
|
||||||
|
viewChart: 'Ver GRÁFICO DE VETORES',
|
||||||
|
}
|
||||||
|
|
||||||
|
export default translation
|
||||||
@ -0,0 +1,33 @@
|
|||||||
|
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: 'Chame a interface de incorporação da OpenAI para processamento, fornecendo maior precisão quando os usuários consultam.',
|
||||||
|
indexMethodEconomy: 'Econômico',
|
||||||
|
indexMethodEconomyTip: 'Use motores de vetor offline, índices de palavras-chave, etc. para reduzir a precisão sem gastar tokens.',
|
||||||
|
embeddingModel: 'Modelo de incorporação',
|
||||||
|
embeddingModelTip: 'Altere o modelo incorporado, por favor, vá para ',
|
||||||
|
embeddingModelTipLink: 'Configurações',
|
||||||
|
retrievalSetting: {
|
||||||
|
title: 'Configuração de recuperação',
|
||||||
|
learnMore: 'Saiba mais',
|
||||||
|
description: ' sobre o método de recuperação.',
|
||||||
|
longDescription: ' sobre o método de recuperação, você pode alterar isso a qualquer momento nas configurações do conhecimento.',
|
||||||
|
},
|
||||||
|
save: 'Salvar',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
export default translation
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
const translation = {
|
||||||
|
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.',
|
||||||
|
datasetDeleted: 'Conhecimento excluído',
|
||||||
|
datasetDeleteFailed: 'Falha ao excluir o Conhecimento',
|
||||||
|
didYouKnow: 'Você sabia?',
|
||||||
|
intro1: 'O Conhecimento pode ser integrado ao aplicativo Dify ',
|
||||||
|
intro2: 'como um contexto',
|
||||||
|
intro3: ',',
|
||||||
|
intro4: 'ou pode ser criado',
|
||||||
|
intro5: ' como um plug-in de índice ChatGPT independente para publicação',
|
||||||
|
unavailable: 'Indisponível',
|
||||||
|
unavailableTip: 'O modelo de incorporação não está disponível, o modelo de incorporação padrão precisa ser configurado',
|
||||||
|
datasets: 'CONHECIMENTO',
|
||||||
|
datasetsApi: 'API',
|
||||||
|
retrieval: {
|
||||||
|
semantic_search: {
|
||||||
|
title: 'Pesquisa Vetorial',
|
||||||
|
description: 'Gere incorporações de consulta e pesquise o trecho de texto mais semelhante à sua representação vetorial.',
|
||||||
|
},
|
||||||
|
full_text_search: {
|
||||||
|
title: 'Pesquisa de Texto Completo',
|
||||||
|
description: 'Indexe todos os termos no documento, permitindo que os usuários pesquisem qualquer termo e recuperem trechos de texto relevantes contendo esses termos.',
|
||||||
|
},
|
||||||
|
hybrid_search: {
|
||||||
|
title: 'Pesquisa Híbrida',
|
||||||
|
description: 'Execute pesquisas de texto completo e pesquisas vetoriais simultaneamente, reclassifique para selecionar a melhor correspondência para a consulta do usuário. A configuração da API do modelo de reclassificação é necessária.',
|
||||||
|
recommend: 'Recomendar',
|
||||||
|
},
|
||||||
|
invertedIndex: {
|
||||||
|
title: 'Índice Invertido',
|
||||||
|
description: 'O Índice Invertido é uma estrutura usada para recuperação eficiente. Organizado por termos, cada termo aponta para documentos ou páginas da web que o contêm.',
|
||||||
|
},
|
||||||
|
change: 'Alterar',
|
||||||
|
changeRetrievalMethod: 'Alterar método de recuperação',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
export default translation
|
||||||
@ -0,0 +1,80 @@
|
|||||||
|
const translation = {
|
||||||
|
title: 'Minhas Aplicações',
|
||||||
|
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: 'Todas as Categorias',
|
||||||
|
},
|
||||||
|
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',
|
||||||
|
},
|
||||||
|
universalChat: {
|
||||||
|
welcome: 'Iniciar chat com Dify',
|
||||||
|
welcomeDescribe: 'Seu companheiro de conversa de IA para assistência personalizada',
|
||||||
|
model: 'Modelo',
|
||||||
|
plugins: {
|
||||||
|
name: 'Plugins',
|
||||||
|
google_search: {
|
||||||
|
name: 'Pesquisa do Google',
|
||||||
|
more: {
|
||||||
|
left: 'Ative o plugin, ',
|
||||||
|
link: 'configure sua chave SerpAPI',
|
||||||
|
right: ' primeiro.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
web_reader: {
|
||||||
|
name: 'Leitor da Web',
|
||||||
|
description: 'Obtenha informações necessárias de qualquer link da web',
|
||||||
|
},
|
||||||
|
wikipedia: {
|
||||||
|
name: 'Wikipedia',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
thought: {
|
||||||
|
show: 'Mostrar',
|
||||||
|
hide: 'Ocultar',
|
||||||
|
processOfThought: ' o processo de pensamento',
|
||||||
|
res: {
|
||||||
|
webReader: {
|
||||||
|
normal: 'Lendo {url}',
|
||||||
|
hasPageInfo: 'Lendo próxima página de {url}',
|
||||||
|
},
|
||||||
|
google: 'Pesquisando no Google {{query}}',
|
||||||
|
wikipedia: 'Pesquisando na Wikipedia {{query}}',
|
||||||
|
dataset: 'Recuperando Conhecimento {datasetName}',
|
||||||
|
date: 'Pesquisando data',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
viewConfigDetailTip: 'Na conversa, não é possível alterar as configurações acima',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
export default translation
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
const translation = {
|
||||||
|
}
|
||||||
|
|
||||||
|
export default translation
|
||||||
@ -0,0 +1,57 @@
|
|||||||
|
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',
|
||||||
|
donthave: 'Não tem?',
|
||||||
|
invalidInvitationCode: 'Código de convite inválido',
|
||||||
|
accountAlreadyInited: 'Conta já iniciada',
|
||||||
|
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',
|
||||||
|
},
|
||||||
|
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',
|
||||||
|
}
|
||||||
|
|
||||||
|
export default translation
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
const translation = {
|
||||||
|
}
|
||||||
|
|
||||||
|
export default translation
|
||||||
@ -0,0 +1,74 @@
|
|||||||
|
const translation = {
|
||||||
|
common: {
|
||||||
|
welcome: 'Bem-vindo ao usar',
|
||||||
|
appUnavailable: 'O aplicativo não está disponível',
|
||||||
|
appUnkonwError: 'O aplicativo encontrou um erro desconhecido',
|
||||||
|
},
|
||||||
|
chat: {
|
||||||
|
newChat: 'Nova conversa',
|
||||||
|
pinnedTitle: 'Fixado',
|
||||||
|
unpinnedTitle: 'Conversas',
|
||||||
|
newChatDefaultName: 'Nova conversa',
|
||||||
|
resetChat: 'Redefinir conversa',
|
||||||
|
powerBy: 'Desenvolvido por',
|
||||||
|
prompt: 'Prompt',
|
||||||
|
privatePromptConfigTitle: 'Configurações da conversa',
|
||||||
|
publicPromptConfigTitle: 'Prompt inicial',
|
||||||
|
configStatusDes: 'Antes de começar, você pode modificar as configurações da conversa',
|
||||||
|
configDisabled:
|
||||||
|
'As configurações da sessão anterior foram usadas para esta sessão.',
|
||||||
|
startChat: 'Iniciar conversa',
|
||||||
|
privacyPolicyLeft:
|
||||||
|
'Por favor, leia a ',
|
||||||
|
privacyPolicyMiddle:
|
||||||
|
'política de privacidade',
|
||||||
|
privacyPolicyRight:
|
||||||
|
' fornecida pelo desenvolvedor do aplicativo.',
|
||||||
|
deleteConversation: {
|
||||||
|
title: 'Excluir conversa',
|
||||||
|
content: 'Tem certeza de que deseja excluir esta conversa?',
|
||||||
|
},
|
||||||
|
tryToSolve: 'Tente resolver',
|
||||||
|
temporarySystemIssue: 'Desculpe, problema temporário do sistema.',
|
||||||
|
},
|
||||||
|
generation: {
|
||||||
|
tabs: {
|
||||||
|
create: 'Executar uma vez',
|
||||||
|
batch: 'Executar em lote',
|
||||||
|
saved: 'Salvo',
|
||||||
|
},
|
||||||
|
savedNoData: {
|
||||||
|
title: 'Você ainda não salvou um resultado!',
|
||||||
|
description: 'Comece a gerar conteúdo e encontre seus resultados salvos aqui.',
|
||||||
|
startCreateContent: 'Começar a criar conteúdo',
|
||||||
|
},
|
||||||
|
title: 'Completar com IA',
|
||||||
|
queryTitle: 'Consultar conteúdo',
|
||||||
|
completionResult: 'Resultado da conclusão',
|
||||||
|
queryPlaceholder: 'Escreva sua consulta...',
|
||||||
|
run: 'Executar',
|
||||||
|
copy: 'Copiar',
|
||||||
|
resultTitle: 'Completar com IA',
|
||||||
|
noData: 'A IA fornecerá o que você deseja aqui.',
|
||||||
|
csvUploadTitle: 'Arraste e solte seu arquivo CSV aqui ou ',
|
||||||
|
browse: 'navegue',
|
||||||
|
csvStructureTitle: 'O arquivo CSV deve seguir a seguinte estrutura:',
|
||||||
|
downloadTemplate: 'Baixe o modelo aqui',
|
||||||
|
field: 'Campo',
|
||||||
|
batchFailed: {
|
||||||
|
info: '{{num}} execuções falharam',
|
||||||
|
retry: 'Tentar novamente',
|
||||||
|
outputPlaceholder: 'Nenhum conteúdo de saída',
|
||||||
|
},
|
||||||
|
errorMsg: {
|
||||||
|
empty: 'Por favor, insira conteúdo no arquivo enviado.',
|
||||||
|
fileStructNotMatch: 'O arquivo CSV enviado não corresponde à estrutura.',
|
||||||
|
emptyLine: 'A linha {{rowIndex}} está vazia',
|
||||||
|
invalidLine: 'Linha {{rowIndex}}: o valor de {{varName}} não pode estar vazio',
|
||||||
|
moreThanMaxLengthLine: 'Linha {{rowIndex}}: o valor de {{varName}} não pode ter mais de {{maxLength}} caracteres',
|
||||||
|
atLeastOne: 'Por favor, insira pelo menos uma linha no arquivo enviado.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
export default translation
|
||||||
@ -0,0 +1,102 @@
|
|||||||
|
const translation = {
|
||||||
|
title: 'Ferramentas',
|
||||||
|
createCustomTool: 'Criar Ferramenta Personalizada',
|
||||||
|
type: {
|
||||||
|
all: 'Todas',
|
||||||
|
builtIn: 'Integradas',
|
||||||
|
custom: 'Personal...',
|
||||||
|
},
|
||||||
|
contribute: {
|
||||||
|
line1: 'Estou interessado em ',
|
||||||
|
line2: 'contribuir com ferramentas para o Dify.',
|
||||||
|
viewGuide: 'Ver o guia',
|
||||||
|
},
|
||||||
|
author: 'Por',
|
||||||
|
auth: {
|
||||||
|
unauthorized: 'Não autorizado',
|
||||||
|
authorized: 'Autorizado',
|
||||||
|
setup: 'Configurar autorização para usar',
|
||||||
|
setupModalTitle: 'Configurar Autorização',
|
||||||
|
setupModalTitleDescription: 'Após configurar as credenciais, todos os membros do espaço de trabalho podem usar essa ferramenta ao orquestrar aplicativos.',
|
||||||
|
},
|
||||||
|
includeToolNum: '{{num}} ferramentas incluídas',
|
||||||
|
addTool: 'Adicionar Ferramenta',
|
||||||
|
createTool: {
|
||||||
|
title: 'Criar Ferramenta Personalizada',
|
||||||
|
editAction: 'Configurar',
|
||||||
|
editTitle: 'Editar Ferramenta Personalizada',
|
||||||
|
name: 'Nome',
|
||||||
|
toolNamePlaceHolder: 'Digite o nome da ferramenta',
|
||||||
|
schema: 'Esquema',
|
||||||
|
schemaPlaceHolder: 'Digite seu esquema OpenAPI aqui',
|
||||||
|
viewSchemaSpec: 'Ver a Especificação OpenAPI-Swagger',
|
||||||
|
importFromUrl: 'Importar de URL',
|
||||||
|
importFromUrlPlaceHolder: 'https://...',
|
||||||
|
urlError: 'Digite uma URL válida',
|
||||||
|
examples: 'Exemplos',
|
||||||
|
exampleOptions: {
|
||||||
|
json: 'Clima (JSON)',
|
||||||
|
yaml: 'Pet Store (YAML)',
|
||||||
|
blankTemplate: 'Modelo em Branco',
|
||||||
|
},
|
||||||
|
availableTools: {
|
||||||
|
title: 'Ferramentas Disponíveis',
|
||||||
|
name: 'Nome',
|
||||||
|
description: 'Descrição',
|
||||||
|
method: 'Método',
|
||||||
|
path: 'Caminho',
|
||||||
|
action: 'Ações',
|
||||||
|
test: 'Testar',
|
||||||
|
},
|
||||||
|
authMethod: {
|
||||||
|
title: 'Método de Autorização',
|
||||||
|
type: 'Tipo de Autorização',
|
||||||
|
types: {
|
||||||
|
none: 'Nenhum',
|
||||||
|
api_key: 'Chave de API',
|
||||||
|
},
|
||||||
|
key: 'Chave',
|
||||||
|
value: 'Valor',
|
||||||
|
},
|
||||||
|
privacyPolicy: 'Política de Privacidade',
|
||||||
|
privacyPolicyPlaceholder: 'Digite a política de privacidade',
|
||||||
|
},
|
||||||
|
test: {
|
||||||
|
title: 'Testar',
|
||||||
|
parametersValue: 'Parâmetros e Valor',
|
||||||
|
parameters: 'Parâmetros',
|
||||||
|
value: 'Valor',
|
||||||
|
testResult: 'Resultados do Teste',
|
||||||
|
testResultPlaceholder: 'O resultado do teste será exibido aqui',
|
||||||
|
},
|
||||||
|
thought: {
|
||||||
|
using: 'Usando',
|
||||||
|
used: 'Usado',
|
||||||
|
requestTitle: 'Requisição para',
|
||||||
|
responseTitle: 'Resposta de',
|
||||||
|
},
|
||||||
|
setBuiltInTools: {
|
||||||
|
info: 'Informações',
|
||||||
|
setting: 'Configuração',
|
||||||
|
toolDescription: 'Descrição da Ferramenta',
|
||||||
|
parameters: 'parâmetros',
|
||||||
|
string: 'string',
|
||||||
|
number: 'número',
|
||||||
|
required: 'Obrigatório',
|
||||||
|
infoAndSetting: 'Informações e Configurações',
|
||||||
|
},
|
||||||
|
noCustomTool: {
|
||||||
|
title: 'Nenhuma ferramenta personalizada',
|
||||||
|
content: 'Você não possui ferramentas personalizadas. ',
|
||||||
|
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',
|
||||||
|
}
|
||||||
|
|
||||||
|
export default translation
|
||||||
Loading…
Reference in New Issue