You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

workflow.ts 41KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977
  1. const translation = {
  2. common: {
  3. undo: 'Desfazer',
  4. redo: 'Refazer',
  5. editing: 'Editando',
  6. autoSaved: 'Salvo automaticamente',
  7. unpublished: 'Não publicado',
  8. published: 'Publicado',
  9. publish: 'Publicar',
  10. update: 'Atualizar',
  11. run: 'Executar',
  12. running: 'Executando',
  13. inRunMode: 'No modo de execução',
  14. inPreview: 'Em visualização',
  15. inPreviewMode: 'No modo de visualização',
  16. preview: 'Visualizar',
  17. viewRunHistory: 'Ver histórico de execução',
  18. runHistory: 'Histórico de execução',
  19. goBackToEdit: 'Voltar para o editor',
  20. conversationLog: 'Registro de conversa',
  21. features: 'Recursos',
  22. debugAndPreview: 'Visualizar',
  23. restart: 'Reiniciar',
  24. currentDraft: 'Rascunho atual',
  25. currentDraftUnpublished: 'Rascunho atual não publicado',
  26. latestPublished: 'Último publicado',
  27. publishedAt: 'Publicado em',
  28. restore: 'Restaurar',
  29. runApp: 'Executar aplicativo',
  30. batchRunApp: 'Executar aplicativo em lote',
  31. accessAPIReference: 'Acessar referência da API',
  32. embedIntoSite: 'Incorporar ao site',
  33. addTitle: 'Adicionar título...',
  34. addDescription: 'Adicionar descrição...',
  35. noVar: 'Sem variável',
  36. searchVar: 'Buscar variável',
  37. variableNamePlaceholder: 'Nome da variável',
  38. setVarValuePlaceholder: 'Definir valor da variável',
  39. needConnectTip: 'Este passo não está conectado a nada',
  40. maxTreeDepth: 'Limite máximo de {{depth}} nós por ramo',
  41. workflowProcess: 'Processo de fluxo de trabalho',
  42. notRunning: 'Ainda não está em execução',
  43. previewPlaceholder: 'Digite o conteúdo na caixa abaixo para começar a depurar o Chatbot',
  44. effectVarConfirm: {
  45. title: 'Remover variável',
  46. content: 'A variável é usada em outros nós. Você ainda deseja removê-la?',
  47. },
  48. insertVarTip: 'Pressione a tecla \'/\' para inserir rapidamente',
  49. processData: 'Processar dados',
  50. input: 'Entrada',
  51. output: 'Saída',
  52. jinjaEditorPlaceholder: 'Digite \'/\' ou \'{\' para inserir variável',
  53. viewOnly: 'Apenas visualização',
  54. showRunHistory: 'Mostrar histórico de execução',
  55. enableJinja: 'Ativar suporte ao template Jinja',
  56. learnMore: 'Saiba mais',
  57. copy: 'Copiar',
  58. duplicate: 'Duplicar',
  59. pasteHere: 'Colar aqui',
  60. pointerMode: 'Modo ponteiro',
  61. handMode: 'Modo mão',
  62. model: 'Modelo',
  63. workflowAsTool: 'Fluxo de trabalho como ferramenta',
  64. configureRequired: 'Configuração necessária',
  65. configure: 'Configurar',
  66. manageInTools: 'Gerenciar nas ferramentas',
  67. workflowAsToolTip: 'É necessária a reconfiguração da ferramenta após a atualização do fluxo de trabalho.',
  68. viewDetailInTracingPanel: 'Ver detalhes',
  69. importSuccess: 'Sucesso da importação',
  70. chooseDSL: 'Escolha o arquivo DSL(yml)',
  71. importFailure: 'Falha na importação',
  72. syncingData: 'Sincronizando dados, apenas alguns segundos.',
  73. overwriteAndImport: 'Substituir e importar',
  74. importDSLTip: 'O rascunho atual será substituído. Exporte o fluxo de trabalho como backup antes de importar.',
  75. backupCurrentDraft: 'Fazer backup do rascunho atual',
  76. importDSL: 'Importar DSL',
  77. parallelTip: {
  78. click: {
  79. title: 'Clique',
  80. desc: 'para adicionar',
  81. },
  82. drag: {
  83. title: 'Arrastar',
  84. desc: 'para conectar',
  85. },
  86. limit: 'O paralelismo é limitado a {{num}} ramificações.',
  87. depthLimit: 'Limite de camada de aninhamento paralelo de {{num}} camadas',
  88. },
  89. parallelRun: 'Execução paralela',
  90. disconnect: 'Desligar',
  91. jumpToNode: 'Ir para este nó',
  92. addParallelNode: 'Adicionar nó paralelo',
  93. parallel: 'PARALELO',
  94. branch: 'RAMIFICAÇÃO',
  95. featuresDocLink: 'Saiba Mais',
  96. featuresDescription: 'Melhore a experiência do usuário do aplicativo Web',
  97. ImageUploadLegacyTip: 'Agora você pode criar variáveis de tipo de arquivo no formulário inicial. Não daremos mais suporte ao recurso de upload de imagens no futuro.',
  98. fileUploadTip: 'Os recursos de upload de imagens foram atualizados para upload de arquivos.',
  99. importWarning: 'Cuidado',
  100. importWarningDetails: 'A diferença de versão DSL pode afetar determinados recursos',
  101. openInExplore: 'Abrir no Explore',
  102. onFailure: 'Em caso de falha',
  103. addFailureBranch: 'Adicionar ramificação com falha',
  104. noHistory: 'Sem História',
  105. loadMore: 'Carregar mais fluxos de trabalho',
  106. exportPNG: 'Exportar como PNG',
  107. publishUpdate: 'Publicar Atualização',
  108. versionHistory: 'Histórico de Versão',
  109. exportImage: 'Exportar Imagem',
  110. referenceVar: 'Variável de Referência',
  111. noExist: 'Nenhuma variável desse tipo',
  112. exitVersions: 'Versões de Sair',
  113. exportSVG: 'Exportar como SVG',
  114. exportJPEG: 'Exportar como JPEG',
  115. addBlock: 'Adicionar Nó',
  116. needEndNode: 'O nó de Fim deve ser adicionado',
  117. needAnswerNode: 'O nó de resposta deve ser adicionado',
  118. tagBound: 'Número de aplicativos usando esta tag',
  119. },
  120. env: {
  121. envPanelTitle: 'Variáveis de Ambiente',
  122. envDescription: 'Variáveis de ambiente podem ser usadas para armazenar informações privadas e credenciais. Elas são somente leitura e podem ser separadas do arquivo DSL durante a exportação.',
  123. envPanelButton: 'Adicionar Variável',
  124. modal: {
  125. title: 'Adicionar Variável de Ambiente',
  126. editTitle: 'Editar Variável de Ambiente',
  127. type: 'Tipo',
  128. name: 'Nome',
  129. namePlaceholder: 'nome da env',
  130. value: 'Valor',
  131. valuePlaceholder: 'valor da env',
  132. secretTip: 'Usado para definir informações ou dados sensíveis, com configurações DSL configuradas para prevenção de vazamentos.',
  133. description: 'Descrição',
  134. descriptionPlaceholder: 'Descreva a variável',
  135. },
  136. export: {
  137. title: 'Exportar variáveis de ambiente secretas?',
  138. checkbox: 'Exportar valores secretos',
  139. ignore: 'Exportar DSL',
  140. export: 'Exportar DSL com valores secretos',
  141. },
  142. },
  143. chatVariable: {
  144. panelTitle: 'Variáveis de Conversação',
  145. panelDescription: 'As Variáveis de Conversação são usadas para armazenar informações interativas que o LLM precisa lembrar, incluindo histórico de conversas, arquivos carregados, preferências do usuário. Elas são de leitura e escrita.',
  146. docLink: 'Visite nossa documentação para saber mais.',
  147. button: 'Adicionar Variável',
  148. modal: {
  149. title: 'Adicionar Variável de Conversação',
  150. editTitle: 'Editar Variável de Conversação',
  151. name: 'Nome',
  152. namePlaceholder: 'Nome da variável',
  153. type: 'Tipo',
  154. value: 'Valor Padrão',
  155. valuePlaceholder: 'Valor padrão, deixe em branco para não definir',
  156. description: 'Descrição',
  157. descriptionPlaceholder: 'Descreva a variável',
  158. editInJSON: 'Editar em JSON',
  159. oneByOne: 'Adicionar um por um',
  160. editInForm: 'Editar no Formulário',
  161. arrayValue: 'Valor',
  162. addArrayValue: 'Adicionar Valor',
  163. objectKey: 'Chave',
  164. objectType: 'Tipo',
  165. objectValue: 'Valor Padrão',
  166. },
  167. storedContent: 'Conteúdo armazenado',
  168. updatedAt: 'Atualizado em ',
  169. },
  170. changeHistory: {
  171. title: 'Histórico de alterações',
  172. placeholder: 'Você ainda não alterou nada',
  173. clearHistory: 'Limpar histórico',
  174. hint: 'Dica',
  175. hintText: 'As ações de edição são rastreadas em um histórico de alterações, que é armazenado em seu dispositivo para a duração desta sessão. Este histórico será apagado quando você sair do editor.',
  176. stepBackward_one: '{{count}} passo para trás',
  177. stepBackward_other: '{{count}} passos para trás',
  178. stepForward_one: '{{count}} passo para frente',
  179. stepForward_other: '{{count}} passos para frente',
  180. sessionStart: 'Início da sessão',
  181. currentState: 'Estado atual',
  182. noteAdd: 'Nota adicionada',
  183. noteChange: 'Nota alterada',
  184. noteDelete: 'Conexão excluída',
  185. nodeConnect: 'Nó conectado',
  186. nodeDelete: 'Nó deletado',
  187. nodePaste: 'Nó colado',
  188. nodeTitleChange: 'Título do nó alterado',
  189. nodeAdd: 'Nó adicionado',
  190. nodeDescriptionChange: 'Descrição do nó alterada',
  191. edgeDelete: 'Nó desconectado',
  192. nodeResize: 'Nó redimensionado',
  193. nodeChange: 'Nó alterado',
  194. nodeDragStop: 'Nó movido',
  195. },
  196. errorMsg: {
  197. fieldRequired: '{{field}} é obrigatório',
  198. authRequired: 'Autorização é necessária',
  199. invalidJson: '{{field}} é um JSON inválido',
  200. fields: {
  201. variable: 'Nome da variável',
  202. variableValue: 'Valor da variável',
  203. code: 'Código',
  204. model: 'Modelo',
  205. rerankModel: 'Modelo de reordenação',
  206. visionVariable: 'Variável de visão',
  207. },
  208. invalidVariable: 'Variável inválida',
  209. rerankModelRequired: 'Antes de ativar o modelo de reclassificação, confirme se o modelo foi configurado com sucesso nas configurações.',
  210. toolParameterRequired: '{{field}}: o parâmetro [{{param}}] é necessário',
  211. noValidTool: '{{field}} nenhuma ferramenta válida selecionada',
  212. },
  213. singleRun: {
  214. testRun: 'Execução de teste ',
  215. startRun: 'Iniciar execução',
  216. running: 'Executando',
  217. testRunIteration: 'Iteração de execução de teste',
  218. back: 'Voltar',
  219. iteration: 'Iteração',
  220. loop: 'Laço',
  221. },
  222. tabs: {
  223. 'tools': 'Ferramentas',
  224. 'allTool': 'Todos',
  225. 'customTool': 'Personalizado',
  226. 'workflowTool': 'Fluxo de trabalho',
  227. 'question-understand': 'Compreensão de perguntas',
  228. 'logic': 'Lógica',
  229. 'transform': 'Transformar',
  230. 'utilities': 'Utilitários',
  231. 'noResult': 'Nenhum resultado encontrado',
  232. 'searchTool': 'Ferramenta de pesquisa',
  233. 'plugin': 'Plug-in',
  234. 'agent': 'Estratégia do agente',
  235. 'blocks': 'Nodos',
  236. 'searchBlock': 'Nó de busca',
  237. 'addAll': 'Adicionar tudo',
  238. 'allAdded': 'Todos adicionados',
  239. },
  240. blocks: {
  241. 'start': 'Iniciar',
  242. 'end': 'Fim',
  243. 'answer': 'Resposta',
  244. 'llm': 'LLM',
  245. 'knowledge-retrieval': 'Recuperação de conhecimento',
  246. 'question-classifier': 'Classificador de perguntas',
  247. 'if-else': 'SE/SENÃO',
  248. 'code': 'Código',
  249. 'template-transform': 'Modelo',
  250. 'http-request': 'Requisição HTTP',
  251. 'variable-assigner': 'Atribuidor de variáveis',
  252. 'variable-aggregator': 'Agregador de variáveis',
  253. 'assigner': 'Atribuidor de Variáveis',
  254. 'iteration-start': 'Início de iteração',
  255. 'iteration': 'Iteração',
  256. 'parameter-extractor': 'Extrator de parâmetros',
  257. 'list-operator': 'Operador de lista',
  258. 'document-extractor': 'Extrator de documentos',
  259. 'agent': 'Agente',
  260. 'loop-end': 'Sair do Loop',
  261. 'loop-start': 'Início do Loop',
  262. 'loop': 'Laço',
  263. },
  264. blocksAbout: {
  265. 'start': 'Definir os parâmetros iniciais para iniciar um fluxo de trabalho',
  266. 'end': 'Definir o fim e o tipo de resultado de um fluxo de trabalho',
  267. 'answer': 'Definir o conteúdo da resposta de uma conversa',
  268. 'llm': 'Invocar grandes modelos de linguagem para responder perguntas ou processar linguagem natural',
  269. 'knowledge-retrieval': 'Permite consultar conteúdo de texto relacionado a perguntas do usuário a partir da base de conhecimento',
  270. 'question-classifier': 'Definir as condições de classificação das perguntas dos usuários, LLM pode definir como a conversa progride com base na descrição da classificação',
  271. 'if-else': 'Permite dividir o fluxo de trabalho em dois ramos com base nas condições if/else',
  272. 'code': 'Executar um pedaço de código Python ou NodeJS para implementar lógica personalizada',
  273. 'template-transform': 'Converter dados em string usando a sintaxe de template Jinja',
  274. 'http-request': 'Permitir que solicitações de servidor sejam enviadas pelo protocolo HTTP',
  275. 'variable-assigner': 'Agregue variáveis de vários ramos em uma única variável para configuração unificada dos nós finais.',
  276. 'assigner': 'O nó de atribuição de variáveis é usado para atribuir valores a variáveis graváveis (como variáveis de conversação).',
  277. 'variable-aggregator': 'Agregue variáveis de vários ramos em uma única variável para configuração unificada dos nós finais.',
  278. 'iteration': 'Execute múltiplos passos em um objeto lista até que todos os resultados sejam produzidos.',
  279. 'parameter-extractor': 'Use LLM para extrair parâmetros estruturados da linguagem natural para invocações de ferramentas ou requisições HTTP.',
  280. 'document-extractor': 'Usado para analisar documentos carregados em conteúdo de texto que é facilmente compreensível pelo LLM.',
  281. 'list-operator': 'Usado para filtrar ou classificar o conteúdo da matriz.',
  282. 'agent': 'Invocar grandes modelos de linguagem para responder a perguntas ou processar linguagem natural',
  283. 'loop-end': 'Equivalente a "break". Este nó não possui itens de configuração. Quando o corpo do loop atinge este nó, o loop termina.',
  284. 'loop': 'Execute um loop de lógica até que a condição de término seja atendida ou o número máximo de loops seja alcançado.',
  285. },
  286. operator: {
  287. zoomIn: 'Aproximar',
  288. zoomOut: 'Afastar',
  289. zoomTo50: 'Aproximar para 50%',
  290. zoomTo100: 'Aproximar para 100%',
  291. zoomToFit: 'Aproximar para ajustar',
  292. },
  293. panel: {
  294. userInputField: 'Campo de entrada do usuário',
  295. helpLink: 'Link de ajuda',
  296. about: 'Sobre',
  297. createdBy: 'Criado por ',
  298. nextStep: 'Próximo passo',
  299. runThisStep: 'Executar este passo',
  300. checklist: 'Lista de verificação',
  301. checklistTip: 'Certifique-se de que todos os problemas foram resolvidos antes de publicar',
  302. checklistResolved: 'Todos os problemas foram resolvidos',
  303. change: 'Mudar',
  304. optional: '(opcional)',
  305. moveToThisNode: 'Mova-se para este nó',
  306. changeBlock: 'Mudar Nó',
  307. addNextStep: 'Adicione o próximo passo neste fluxo de trabalho',
  308. organizeBlocks: 'Organizar nós',
  309. selectNextStep: 'Selecione o próximo passo',
  310. maximize: 'Maximize Canvas',
  311. minimize: 'Sair do Modo Tela Cheia',
  312. },
  313. nodes: {
  314. common: {
  315. outputVars: 'Variáveis de saída',
  316. insertVarTip: 'Inserir variável',
  317. memory: {
  318. memory: 'Memória',
  319. memoryTip: 'Configurações de memória de conversa',
  320. windowSize: 'Tamanho da janela',
  321. conversationRoleName: 'Nome do papel na conversa',
  322. user: 'Prefixo do usuário',
  323. assistant: 'Prefixo do assistente',
  324. },
  325. memories: {
  326. title: 'Memórias',
  327. tip: 'Memória de conversa',
  328. builtIn: 'Integrado',
  329. },
  330. errorHandle: {
  331. none: {
  332. title: 'Nenhum',
  333. desc: 'O nó deixará de ser executado se ocorrer uma exceção e não for tratada',
  334. },
  335. defaultValue: {
  336. title: 'Valor padrão',
  337. desc: 'Quando ocorrer um erro, especifique um conteúdo de saída estático.',
  338. tip: 'Em caso de erro, retornará o valor abaixo.',
  339. inLog: 'Exceção de nó, saída de acordo com os valores padrão.',
  340. output: 'Valor padrão de saída',
  341. },
  342. failBranch: {
  343. title: 'Ramificação com falha',
  344. desc: 'Quando ocorrer um erro, ele executará a ramificação de exceção',
  345. customize: 'Vá para a tela para personalizar a lógica do branch de falha.',
  346. customizeTip: 'Quando a ramificação de falha é ativada, as exceções geradas pelos nós não encerram o processo. Em vez disso, ele executará automaticamente a ramificação de falha predefinida, permitindo que você forneça mensagens de erro, relatórios, correções ou ações de salto com flexibilidade.',
  347. inLog: 'Node exception, executará automaticamente a ramificação de falha. A saída do nó retornará um tipo de erro e uma mensagem de erro e os passará para o downstream.',
  348. },
  349. partialSucceeded: {
  350. tip: 'Existem {{num}} nós no processo em execução anormal, vá para rastreamento para verificar os logs.',
  351. },
  352. title: 'Tratamento de erros',
  353. tip: 'Estratégia de tratamento de exceções, disparada quando um nó encontra uma exceção.',
  354. },
  355. retry: {
  356. retry: 'Repetir',
  357. retryOnFailure: 'Tentar novamente em caso de falha',
  358. maxRetries: 'Máximo de tentativas',
  359. retryInterval: 'Intervalo de repetição',
  360. retryTimes: 'Tente novamente {{times}} vezes em caso de falha',
  361. retrying: 'Repetindo...',
  362. retrySuccessful: 'Repetição bem-sucedida',
  363. retryFailed: 'Falha na nova tentativa',
  364. retryFailedTimes: '{{times}} tentativas falharam',
  365. times: 'vezes',
  366. ms: 'ms',
  367. retries: '{{num}} Tentativas',
  368. },
  369. typeSwitch: {
  370. variable: 'Use variável',
  371. input: 'Valor de entrada',
  372. },
  373. },
  374. start: {
  375. required: 'requerido',
  376. inputField: 'Campo de entrada',
  377. builtInVar: 'Variáveis integradas',
  378. outputVars: {
  379. query: 'Entrada do usuário',
  380. memories: {
  381. des: 'Histórico da conversa',
  382. type: 'tipo de mensagem',
  383. content: 'conteúdo da mensagem',
  384. },
  385. files: 'Lista de arquivos',
  386. },
  387. noVarTip: 'Defina as entradas que podem ser usadas no Fluxo de Trabalho',
  388. },
  389. end: {
  390. outputs: 'Saídas',
  391. output: {
  392. type: 'tipo de saída',
  393. variable: 'variável de saída',
  394. },
  395. type: {
  396. 'none': 'Nenhum',
  397. 'plain-text': 'Texto simples',
  398. 'structured': 'Estruturado',
  399. },
  400. },
  401. answer: {
  402. answer: 'Resposta',
  403. outputVars: 'Variáveis de saída',
  404. },
  405. llm: {
  406. model: 'modelo',
  407. variables: 'variáveis',
  408. context: 'contexto',
  409. contextTooltip: 'Você pode importar Conhecimento como contexto',
  410. notSetContextInPromptTip: 'Para ativar o recurso de contexto, preencha a variável de contexto no PROMPT.',
  411. prompt: 'prompt',
  412. roleDescription: {
  413. system: 'Dar instruções de alto nível para a conversa',
  414. user: 'Fornecer instruções, consultas ou qualquer entrada baseada em texto para o modelo',
  415. assistant: 'As respostas do modelo baseadas nas mensagens do usuário',
  416. },
  417. addMessage: 'Adicionar mensagem',
  418. vision: 'visão',
  419. files: 'Arquivos',
  420. resolution: {
  421. name: 'Resolução',
  422. high: 'Alta',
  423. low: 'Baixa',
  424. },
  425. outputVars: {
  426. output: 'Conteúdo gerado',
  427. usage: 'Informações de uso do modelo',
  428. },
  429. singleRun: {
  430. variable: 'Variável',
  431. },
  432. sysQueryInUser: 'sys.query na mensagem do usuário é necessário',
  433. jsonSchema: {
  434. warningTips: {
  435. saveSchema: 'Por favor, termine de editar o campo atual antes de salvar o esquema.',
  436. },
  437. instruction: 'Instrução',
  438. showAdvancedOptions: 'Mostrar opções avançadas',
  439. addField: 'Adicionar Campo',
  440. descriptionPlaceholder: 'Adicionar descrição',
  441. promptTooltip: 'Converta a descrição do texto em uma estrutura de esquema JSON padronizada.',
  442. generating: 'Gerando esquema JSON...',
  443. generate: 'Gerar',
  444. title: 'Esquema de Saída Estruturada',
  445. promptPlaceholder: 'Descreva seu Esquema JSON...',
  446. back: 'Voltar',
  447. doc: 'Saiba mais sobre saída estruturada',
  448. regenerate: 'Regenerar',
  449. resultTip: 'Aqui está o resultado gerado. Se você não estiver satisfeito, pode voltar e modificar seu pedido.',
  450. addChildField: 'Adicionar Campo de Criança',
  451. generationTip: 'Você pode usar linguagem natural para criar rapidamente um esquema JSON.',
  452. generatedResult: 'Resultado Gerado',
  453. import: 'Importar de JSON',
  454. generateJsonSchema: 'Gerar Esquema JSON',
  455. fieldNamePlaceholder: 'Nome do Campo',
  456. resetDefaults: 'Reiniciar',
  457. stringValidations: 'Validações de String',
  458. apply: 'Aplicar',
  459. required: 'obrigatório',
  460. },
  461. },
  462. knowledgeRetrieval: {
  463. queryVariable: 'Variável de consulta',
  464. knowledge: 'Conhecimento',
  465. outputVars: {
  466. output: 'Dados segmentados recuperados',
  467. content: 'Conteúdo segmentado',
  468. title: 'Título segmentado',
  469. icon: 'Ícone segmentado',
  470. url: 'URL segmentado',
  471. metadata: 'Outros metadados',
  472. },
  473. metadata: {
  474. options: {
  475. disabled: {
  476. subTitle: 'Não ativando a filtragem de metadados',
  477. title: 'Desativado',
  478. },
  479. automatic: {
  480. desc: 'Gere automaticamente condições de filtragem de metadados com base na Variável de Consulta',
  481. title: 'Automático',
  482. subTitle: 'Gerar automaticamente condições de filtragem de metadados com base na consulta do usuário',
  483. },
  484. manual: {
  485. title: 'Manual',
  486. subTitle: 'Adicione manualmente as condições de filtragem de metadados',
  487. },
  488. },
  489. panel: {
  490. add: 'Adicionar Condição',
  491. select: 'Selecione a variável...',
  492. datePlaceholder: 'Escolha um horário...',
  493. search: 'Pesquisar metadados',
  494. conditions: 'Condições',
  495. title: 'Condições de filtro de metadados',
  496. placeholder: 'Insira o valor',
  497. },
  498. title: 'Filtragem de Metadados',
  499. tip: 'A filtragem de metadados é o processo de usar atributos de metadados (como etiquetas, categorias ou permissões de acesso) para refinar e controlar a recuperação de informações relevantes dentro de um sistema.',
  500. },
  501. },
  502. http: {
  503. inputVars: 'Variáveis de entrada',
  504. api: 'API',
  505. apiPlaceholder: 'Digite a URL, digite ‘/’ para inserir variável',
  506. notStartWithHttp: 'API deve começar com http:// ou https://',
  507. key: 'Chave',
  508. value: 'Valor',
  509. bulkEdit: 'Edição em massa',
  510. keyValueEdit: 'Edição chave-valor',
  511. headers: 'Cabeçalhos',
  512. params: 'Parâmetros',
  513. body: 'Corpo',
  514. outputVars: {
  515. body: 'Conteúdo da resposta',
  516. statusCode: 'Código de status da resposta',
  517. headers: 'Lista de cabeçalhos da resposta em JSON',
  518. files: 'Lista de arquivos',
  519. },
  520. authorization: {
  521. 'authorization': 'Autorização',
  522. 'authorizationType': 'Tipo de autorização',
  523. 'no-auth': 'Nenhuma',
  524. 'api-key': 'Chave API',
  525. 'auth-type': 'Tipo de autorização',
  526. 'basic': 'Básica',
  527. 'bearer': 'Bearer',
  528. 'custom': 'Personalizada',
  529. 'api-key-title': 'Chave API',
  530. 'header': 'Cabeçalho',
  531. },
  532. insertVarPlaceholder: 'digite \'/\' para inserir variável',
  533. timeout: {
  534. title: 'Timeout',
  535. connectLabel: 'Timeout de conexão',
  536. connectPlaceholder: 'Digite o timeout de conexão em segundos',
  537. readLabel: 'Timeout de leitura',
  538. readPlaceholder: 'Digite o timeout de leitura em segundos',
  539. writeLabel: 'Timeout de escrita',
  540. writePlaceholder: 'Digite o timeout de escrita em segundos',
  541. },
  542. type: 'Tipo',
  543. binaryFileVariable: 'Variável de arquivo binário',
  544. extractListPlaceholder: 'Insira o índice do item da lista, digite \'/\' inserir variável',
  545. curl: {
  546. placeholder: 'Cole a string cURL aqui',
  547. title: 'Importar do cURL',
  548. },
  549. verifySSL: {
  550. title: 'Verificar o certificado SSL',
  551. warningTooltip: 'Desabilitar a verificação SSL não é recomendado para ambientes de produção. Isso deve ser usado apenas em desenvolvimento ou teste, pois torna a conexão vulnerável a ameaças de segurança, como ataques man-in-the-middle.',
  552. },
  553. },
  554. code: {
  555. inputVars: 'Variáveis de entrada',
  556. outputVars: 'Variáveis de saída',
  557. advancedDependencies: 'Dependências avançadas',
  558. advancedDependenciesTip: 'Adicione algumas dependências pré-carregadas que levam mais tempo para consumir ou não são padrão aqui',
  559. searchDependencies: 'Buscar dependências',
  560. syncFunctionSignature: 'Sincronizar a assinatura da função com o código',
  561. },
  562. templateTransform: {
  563. inputVars: 'Variáveis de entrada',
  564. code: 'Código',
  565. codeSupportTip: 'Suporta apenas Jinja2',
  566. outputVars: {
  567. output: 'Conteúdo transformado',
  568. },
  569. },
  570. ifElse: {
  571. if: 'Se',
  572. else: 'Senão',
  573. elseDescription: 'Usado para definir a lógica que deve ser executada quando a condição if não é atendida.',
  574. and: 'e',
  575. or: 'ou',
  576. operator: 'Operador',
  577. notSetVariable: 'Por favor, defina a variável primeiro',
  578. comparisonOperator: {
  579. 'contains': 'contém',
  580. 'not contains': 'não contém',
  581. 'start with': 'começa com',
  582. 'end with': 'termina com',
  583. 'is': 'é',
  584. 'is not': 'não é',
  585. 'empty': 'está vazio',
  586. 'not empty': 'não está vazio',
  587. 'null': 'é nulo',
  588. 'not null': 'não é nulo',
  589. 'in': 'em',
  590. 'not in': 'não em',
  591. 'exists': 'Existe',
  592. 'not exists': 'não existe',
  593. 'all of': 'todos os',
  594. 'after': 'depois',
  595. 'before': 'antes',
  596. },
  597. enterValue: 'Digite o valor',
  598. addCondition: 'Adicionar condição',
  599. conditionNotSetup: 'Condição NÃO configurada',
  600. selectVariable: 'Selecione a variável...',
  601. optionName: {
  602. image: 'Imagem',
  603. doc: 'Doc',
  604. url: 'URL',
  605. audio: 'Áudio',
  606. video: 'Vídeo',
  607. localUpload: 'Local Upload',
  608. },
  609. addSubVariable: 'Subvariável',
  610. select: 'Selecionar',
  611. condition: 'Condição',
  612. },
  613. variableAssigner: {
  614. title: 'Atribuir variáveis',
  615. outputType: 'Tipo de saída',
  616. varNotSet: 'Variável não definida',
  617. noVarTip: 'Adicione as variáveis a serem atribuídas',
  618. type: {
  619. string: 'String',
  620. number: 'Número',
  621. object: 'Objeto',
  622. array: 'Array',
  623. },
  624. aggregationGroup: 'Grupo de agregação',
  625. aggregationGroupTip: 'Habilitar este recurso permite que o agregador de variáveis agregue múltiplos conjuntos de variáveis.',
  626. addGroup: 'Adicionar grupo',
  627. outputVars: {
  628. varDescribe: 'Saída de {{groupName}}',
  629. },
  630. setAssignVariable: 'Definir variável atribuída',
  631. },
  632. assigner: {
  633. 'assignedVariable': 'Variável Atribuída',
  634. 'writeMode': 'Modo de Escrita',
  635. 'writeModeTip': 'Quando a VARIÁVEL ATRIBUÍDA é um array, o modo de anexar adiciona ao final.',
  636. 'over-write': 'Sobrescrever',
  637. 'append': 'Anexar',
  638. 'plus': 'Mais',
  639. 'clear': 'Limpar',
  640. 'setVariable': 'Definir Variável',
  641. 'variable': 'Variável',
  642. 'operations': {
  643. 'clear': 'Claro',
  644. 'title': 'Operação',
  645. 'over-write': 'Sobrescrever',
  646. '-=': '-=',
  647. '/=': '/=',
  648. '*=': '*=',
  649. 'extend': 'Estender',
  650. 'append': 'Acrescentar',
  651. '+=': '+=',
  652. 'set': 'Pôr',
  653. 'overwrite': 'Sobrescrever',
  654. 'remove-last': 'Remover Último',
  655. 'remove-first': 'Remover Primeiro',
  656. },
  657. 'selectAssignedVariable': 'Selecione a variável atribuída...',
  658. 'setParameter': 'Definir parâmetro...',
  659. 'noVarTip': 'Clique no botão "+" para adicionar variáveis',
  660. 'assignedVarsDescription': 'As variáveis atribuídas devem ser variáveis graváveis, como variáveis de conversação.',
  661. 'varNotSet': 'Variável NÃO definida',
  662. 'noAssignedVars': 'Nenhuma variável atribuída disponível',
  663. 'variables': 'Variáveis',
  664. },
  665. tool: {
  666. inputVars: 'Variáveis de entrada',
  667. outputVars: {
  668. text: 'conteúdo gerado pela ferramenta',
  669. files: {
  670. title: 'arquivos gerados pela ferramenta',
  671. type: 'Tipo de suporte. Agora suporta apenas imagem',
  672. transfer_method: 'Método de transferência. O valor é remote_url ou local_file',
  673. url: 'URL da imagem',
  674. upload_file_id: 'ID do arquivo enviado',
  675. },
  676. json: 'JSON gerado por ferramenta',
  677. },
  678. authorize: 'Autorizar',
  679. insertPlaceholder2: 'inserir variável',
  680. insertPlaceholder1: 'Digite ou pressione',
  681. settings: 'Configurações',
  682. },
  683. questionClassifiers: {
  684. model: 'modelo',
  685. inputVars: 'Variáveis de entrada',
  686. outputVars: {
  687. className: 'Nome da classe',
  688. usage: 'Informações de uso do modelo',
  689. },
  690. class: 'Classe',
  691. classNamePlaceholder: 'Escreva o nome da sua classe',
  692. advancedSetting: 'Configuração avançada',
  693. topicName: 'Nome do tópico',
  694. topicPlaceholder: 'Escreva o nome do seu tópico',
  695. addClass: 'Adicionar classe',
  696. instruction: 'Instrução',
  697. instructionTip: 'Insira instruções adicionais para ajudar o classificador de perguntas a entender melhor como categorizar perguntas.',
  698. instructionPlaceholder: 'Escreva sua instrução',
  699. },
  700. parameterExtractor: {
  701. inputVar: 'Variável de entrada',
  702. outputVars: {
  703. isSuccess: 'É sucesso. Em caso de sucesso, o valor é 1, em caso de falha, o valor é 0.',
  704. errorReason: 'Motivo do erro',
  705. usage: 'Informações de uso do modelo',
  706. },
  707. extractParameters: 'Extrair parâmetros',
  708. importFromTool: 'Importar das ferramentas',
  709. addExtractParameter: 'Adicionar parâmetro de extração',
  710. addExtractParameterContent: {
  711. name: 'Nome',
  712. namePlaceholder: 'Nome do parâmetro de extração',
  713. type: 'Tipo',
  714. typePlaceholder: 'Tipo de parâmetro de extração',
  715. description: 'Descrição',
  716. descriptionPlaceholder: 'Descrição do parâmetro de extração',
  717. required: 'Obrigatório',
  718. requiredContent: 'Obrigatório é usado apenas como referência para inferência do modelo, e não para validação obrigatória da saída do parâmetro.',
  719. },
  720. extractParametersNotSet: 'Parâmetros de extração não configurados',
  721. instruction: 'Instrução',
  722. instructionTip: 'Insira instruções adicionais para ajudar o extrator de parâmetros a entender como extrair parâmetros.',
  723. advancedSetting: 'Configuração avançada',
  724. reasoningMode: 'Modo de raciocínio',
  725. reasoningModeTip: 'Você pode escolher o modo de raciocínio apropriado com base na capacidade do modelo de responder a instruções para chamadas de função ou prompts.',
  726. },
  727. iteration: {
  728. deleteTitle: 'Excluir nó de iteração?',
  729. deleteDesc: 'Excluir o nó de iteração excluirá todos os nós filhos',
  730. input: 'Entrada',
  731. output: 'Variáveis de saída',
  732. iteration_one: '{{count}} Iteração',
  733. iteration_other: '{{count}} Iterações',
  734. currentIteration: 'Iteração atual',
  735. ErrorMethod: {
  736. continueOnError: 'continuar em erro',
  737. removeAbnormalOutput: 'saída anormal de remoção',
  738. operationTerminated: 'Terminada',
  739. },
  740. MaxParallelismTitle: 'Paralelismo máximo',
  741. parallelModeEnableTitle: 'Modo paralelo ativado',
  742. errorResponseMethod: 'Método de resposta de erro',
  743. error_other: '{{contagem}} Erros',
  744. parallelMode: 'Modo paralelo',
  745. parallelModeUpper: 'MODO PARALELO',
  746. error_one: '{{contagem}} Erro',
  747. parallelModeEnableDesc: 'No modo paralelo, as tarefas dentro das iterações dão suporte à execução paralela. Você pode configurar isso no painel de propriedades à direita.',
  748. comma: ',',
  749. MaxParallelismDesc: 'O paralelismo máximo é usado para controlar o número de tarefas executadas simultaneamente em uma única iteração.',
  750. answerNodeWarningDesc: 'Aviso de modo paralelo: nós de resposta, atribuições de variáveis de conversação e operações persistentes de leitura/gravação em iterações podem causar exceções.',
  751. parallelPanelDesc: 'No modo paralelo, as tarefas na iteração dão suporte à execução paralela.',
  752. },
  753. note: {
  754. editor: {
  755. small: 'Pequeno',
  756. bold: 'Ousado',
  757. openLink: 'Abrir',
  758. strikethrough: 'Tachado',
  759. italic: 'Itálico',
  760. invalidUrl: 'URL inválido',
  761. placeholder: 'Escreva sua nota...',
  762. bulletList: 'Lista de marcadores',
  763. link: 'Link',
  764. enterUrl: 'Digite o URL...',
  765. medium: 'Média',
  766. large: 'Grande',
  767. unlink: 'Desvincular',
  768. showAuthor: 'Autor do programa',
  769. },
  770. addNote: 'Adicionar nota',
  771. },
  772. docExtractor: {
  773. outputVars: {
  774. text: 'Texto extraído',
  775. },
  776. inputVar: 'Variável de entrada',
  777. learnMore: 'Saiba Mais',
  778. supportFileTypes: 'Tipos de arquivo de suporte: {{types}}.',
  779. },
  780. listFilter: {
  781. outputVars: {
  782. result: 'Resultado do filtro',
  783. last_record: 'Último recorde',
  784. first_record: 'Primeiro registro',
  785. },
  786. desc: 'DESC',
  787. inputVar: 'Variável de entrada',
  788. selectVariableKeyPlaceholder: 'Selecione a chave da subvariável',
  789. limit: 'Topo N',
  790. orderBy: 'Ordenar por',
  791. filterCondition: 'Condição do filtro',
  792. asc: 'ASC',
  793. filterConditionKey: 'Chave de condição do filtro',
  794. filterConditionComparisonOperator: 'Operador de comparação de condição de filtro',
  795. filterConditionComparisonValue: 'Valor da condição do filtro',
  796. extractsCondition: 'Extraia o item N',
  797. },
  798. agent: {
  799. strategy: {
  800. tooltip: 'Diferentes estratégias Agentic determinam como o sistema planeja e executa chamadas de ferramentas de várias etapas',
  801. searchPlaceholder: 'Estratégia de busca agêntica',
  802. shortLabel: 'Estratégia',
  803. label: 'Estratégia Agêntica',
  804. selectTip: 'Selecione a estratégia agêntica',
  805. configureTipDesc: 'Depois de configurar a estratégia agêntica, esse nó carregará automaticamente as configurações restantes. A estratégia afetará o mecanismo de raciocínio da ferramenta de várias etapas.',
  806. configureTip: 'Configure a estratégia agente.',
  807. },
  808. pluginInstaller: {
  809. installing: 'Instalar',
  810. install: 'Instalar',
  811. },
  812. modelNotInMarketplace: {
  813. desc: 'Esse modelo é instalado do repositório Local ou GitHub. Por favor, use após a instalação.',
  814. title: 'Modelo não instalado',
  815. manageInPlugins: 'Gerenciar em plug-ins',
  816. },
  817. modelNotSupport: {
  818. descForVersionSwitch: 'A versão do plug-in instalada não fornece esse modelo. Clique para mudar de versão.',
  819. title: 'Modelo não suportado',
  820. desc: 'A versão do plug-in instalada não fornece esse modelo.',
  821. },
  822. modelSelectorTooltips: {
  823. deprecated: 'Este modelo está obsoleto',
  824. },
  825. outputVars: {
  826. files: {
  827. type: 'Tipo de suporte. Agora suporta apenas imagem',
  828. upload_file_id: 'Carregar ID do arquivo',
  829. url: 'URL da imagem',
  830. transfer_method: 'Método de transferência. O valor é remote_url ou local_file',
  831. title: 'Arquivos gerados pelo agente',
  832. },
  833. json: 'JSON gerado pelo agente',
  834. text: 'Conteúdo gerado pelo agente',
  835. },
  836. checkList: {
  837. strategyNotSelected: 'Estratégia não selecionada',
  838. },
  839. installPlugin: {
  840. title: 'Instale o plugin',
  841. install: 'Instalar',
  842. cancel: 'Cancelar',
  843. desc: 'Prestes a instalar o seguinte plugin',
  844. changelog: 'Registro de alterações',
  845. },
  846. toolNotInstallTooltip: '{{tool}} não está instalado',
  847. strategyNotFoundDesc: 'A versão do plug-in instalada não fornece essa estratégia.',
  848. maxIterations: 'Máximo de iterações',
  849. model: 'modelo',
  850. strategyNotInstallTooltip: '{{strategy}} não está instalado',
  851. learnMore: 'Saiba Mais',
  852. modelNotInstallTooltip: 'Este modelo não está instalado',
  853. pluginNotFoundDesc: 'Este plugin é instalado a partir do GitHub. Por favor, vá para Plugins para reinstalar',
  854. pluginNotInstalledDesc: 'Este plugin é instalado a partir do GitHub. Por favor, vá para Plugins para reinstalar',
  855. strategyNotSet: 'Estratégia agêntica não definida',
  856. pluginNotInstalled: 'Este plugin não está instalado',
  857. notAuthorized: 'Não autorizado',
  858. modelNotSelected: 'Modelo não selecionado',
  859. linkToPlugin: 'Link para plug-ins',
  860. configureModel: 'Configurar modelo',
  861. unsupportedStrategy: 'Estratégia sem suporte',
  862. strategyNotFoundDescAndSwitchVersion: 'A versão do plug-in instalada não fornece essa estratégia. Clique para mudar de versão.',
  863. tools: 'Ferramentas',
  864. toolNotAuthorizedTooltip: '{{ferramenta}} Não autorizado',
  865. toolbox: 'caixa de ferramentas',
  866. parameterSchema: 'Esquema de Parâmetro',
  867. clickToViewParameterSchema: 'Clique para ver o esquema de parâmetros',
  868. },
  869. loop: {
  870. ErrorMethod: {
  871. removeAbnormalOutput: 'Remover Saída Anormal',
  872. operationTerminated: 'Terminado',
  873. continueOnError: 'Continue em Caso de Erro',
  874. },
  875. errorResponseMethod: 'Método de Resposta de Erro',
  876. loop_one: '{{count}} Loop',
  877. inputMode: 'Modo de Entrada',
  878. setLoopVariables: 'Defina variáveis dentro do escopo do loop',
  879. totalLoopCount: 'Contagem total de loops: {{count}}',
  880. breakCondition: 'Condição de Término de Loop',
  881. comma: ',',
  882. input: 'Entrada',
  883. variableName: 'Nome da Variável',
  884. initialLoopVariables: 'Variáveis de Loop Iniciais',
  885. exitConditionTip: 'Um nó de loop precisa de pelo menos uma condição de saída',
  886. loopNode: 'Nó de Loop',
  887. loopMaxCount: 'Contagem Máxima de Loop',
  888. currentLoopCount: 'Contagem atual de loops: {{count}}',
  889. deleteTitle: 'Excluir Nó de Loop?',
  890. error_other: '{{count}} Erros',
  891. loop_other: '{{count}} Laços',
  892. output: 'Variável de Saída',
  893. error_one: '{{count}} Erro',
  894. finalLoopVariables: 'Variáveis do Loop Final',
  895. loopMaxCountError: 'Por favor, insira um limite máximo de loop válido, variando de 1 a {{maxCount}}',
  896. loopVariables: 'Variáveis de Loop',
  897. breakConditionTip: 'Somente variáveis dentro de laços com condições de término e variáveis de conversa podem ser referenciadas.',
  898. currentLoop: 'Laço Atual',
  899. deleteDesc: 'A exclusão do nó de loop removerá todos os nós filhos',
  900. },
  901. },
  902. tracing: {
  903. stopBy: 'Parado por {{user}}',
  904. },
  905. variableReference: {
  906. noAssignedVars: 'Nenhuma variável atribuída disponível',
  907. noVarsForOperation: 'Não há variáveis disponíveis para atribuição com a operação selecionada.',
  908. conversationVars: 'variáveis de conversação',
  909. assignedVarsDescription: 'As variáveis atribuídas devem ser variáveis graváveis, como',
  910. noAvailableVars: 'Nenhuma variável disponível',
  911. },
  912. versionHistory: {
  913. filter: {
  914. all: 'Todos',
  915. empty: 'Nenhuma versão histórica correspondente encontrada',
  916. reset: 'Redefinir Filtro',
  917. onlyYours: 'Somente seu',
  918. onlyShowNamedVersions: 'Mostre apenas versões nomeadas',
  919. },
  920. editField: {
  921. titleLengthLimit: 'O título não pode exceder {{limit}} caracteres',
  922. releaseNotes: 'Notas de Lançamento',
  923. releaseNotesLengthLimit: 'As notas de lançamento não podem exceder {{limit}} caracteres',
  924. title: 'Título',
  925. },
  926. action: {
  927. updateFailure: 'Falha ao atualizar a versão',
  928. updateSuccess: 'Versão atualizada',
  929. deleteSuccess: 'Versão excluída',
  930. restoreFailure: 'Falha ao restaurar versão',
  931. restoreSuccess: 'Versão restaurada',
  932. deleteFailure: 'Falha ao deletar versão',
  933. copyIdSuccess: 'ID copiado para a área de transferência',
  934. },
  935. title: 'Versões',
  936. latest: 'Último',
  937. nameThisVersion: 'Nomeie esta versão',
  938. defaultName: 'Versão Sem Título',
  939. releaseNotesPlaceholder: 'Descreva o que mudou',
  940. editVersionInfo: 'Editar informações da versão',
  941. restorationTip: 'Após a restauração da versão, o rascunho atual será substituído.',
  942. currentDraft: 'Rascunho Atual',
  943. deletionTip: 'A exclusão é irreversível, por favor confirme.',
  944. copyId: 'Copiar ID',
  945. },
  946. debug: {
  947. noData: {
  948. runThisNode: 'Execute este nó',
  949. description: 'Os resultados da última execução serão exibidos aqui',
  950. },
  951. variableInspect: {
  952. trigger: {
  953. normal: 'Inspecionar Variável',
  954. stop: 'Pare de correr',
  955. clear: 'Claro',
  956. running: 'Status de execução do cache',
  957. cached: 'Ver variáveis em cache',
  958. },
  959. systemNode: 'Sistema',
  960. edited: 'Editado',
  961. clearAll: 'Redefinir tudo',
  962. clearNode: 'Limpar variável em cache',
  963. emptyLink: 'Saiba mais',
  964. chatNode: 'Conversa',
  965. envNode: 'Ambiente',
  966. title: 'Inspecionar Variável',
  967. reset: 'Redefinir para o último valor de execução',
  968. resetConversationVar: 'Redefinir a variável da conversa para o valor padrão',
  969. view: 'Ver log',
  970. emptyTip: 'Após passar por um nó na tela ou executar um nó passo a passo, você pode visualizar o valor atual da variável do nó na Inspecção de Variáveis.',
  971. },
  972. settingsTab: 'Configurações',
  973. lastRunTab: 'Última execução',
  974. },
  975. }
  976. export default translation