pt.ts 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529
  1. import { SubmitKey } from "../store/config";
  2. import { PartialLocaleType } from "../locales/index";
  3. import { getClientConfig } from "../config/client";
  4. import { SAAS_CHAT_URL } from "@/app/constant";
  5. const SAAS_CHAT_URL_WITH_PARAM = `${SAAS_CHAT_URL}?data=chat`;
  6. const isApp = !!getClientConfig()?.isApp;
  7. const pt: PartialLocaleType = {
  8. WIP: "Em breve...",
  9. Error: {
  10. Unauthorized: isApp
  11. ? `😆 A conversa encontrou alguns problemas, não se preocupe:
  12. \\ 1️⃣ Se você quiser começar sem configuração, [clique aqui para começar a conversar imediatamente 🚀](${SAAS_CHAT_URL_WITH_PARAM})
  13. \\ 2️⃣ Se você deseja usar seus próprios recursos OpenAI, clique [aqui](/#/settings) para modificar as configurações ⚙️`
  14. : `😆 A conversa encontrou alguns problemas, não se preocupe:
  15. \ 1️⃣ Se você quiser começar sem configuração, [clique aqui para começar a conversar imediatamente 🚀](${SAAS_CHAT_URL_WITH_PARAM})
  16. \ 2️⃣ Se você estiver usando uma versão de implantação privada, clique [aqui](/#/auth) para inserir a chave de acesso 🔑
  17. \ 3️⃣ Se você deseja usar seus próprios recursos OpenAI, clique [aqui](/#/settings) para modificar as configurações ⚙️
  18. `,
  19. },
  20. Auth: {
  21. Title: "Necessário Código de Acesso",
  22. Tips: "Por favor, insira o código de acesso abaixo",
  23. SubTips: "Ou insira sua Chave API OpenAI",
  24. Input: "código de acesso",
  25. Confirm: "Confirmar",
  26. Later: "Depois",
  27. Return: "Voltar",
  28. SaasTips: "A configuração é muito complicada, quero usá-la imediatamente",
  29. TopTips:
  30. "🥳 Oferta de Lançamento do NextChat AI, desbloqueie o OpenAI o1, GPT-4o, Claude-3.5 e os mais recentes grandes modelos agora",
  31. },
  32. ChatItem: {
  33. ChatItemCount: (count: number) => `${count} mensagens`,
  34. },
  35. Chat: {
  36. SubTitle: (count: number) => `${count} mensagens`,
  37. EditMessage: {
  38. Title: "Editar Todas as Mensagens",
  39. Topic: {
  40. Title: "Tópico",
  41. SubTitle: "Mudar o tópico atual",
  42. },
  43. },
  44. Actions: {
  45. ChatList: "Ir Para Lista de Chat",
  46. CompressedHistory: "Prompt de Memória Histórica Comprimida",
  47. Export: "Exportar Todas as Mensagens como Markdown",
  48. Copy: "Copiar",
  49. Stop: "Parar",
  50. Retry: "Tentar Novamente",
  51. Pin: "Fixar",
  52. PinToastContent: "Fixada 1 mensagem para prompts contextuais",
  53. PinToastAction: "Visualizar",
  54. Delete: "Deletar",
  55. Edit: "Editar",
  56. RefreshTitle: "Atualizar Título",
  57. RefreshToast: "Solicitação de atualização de título enviada",
  58. },
  59. Commands: {
  60. new: "Iniciar um novo chat",
  61. newm: "Iniciar um novo chat com máscara",
  62. next: "Próximo Chat",
  63. prev: "Chat Anterior",
  64. clear: "Limpar Contexto",
  65. del: "Deletar Chat",
  66. },
  67. InputActions: {
  68. Stop: "Parar",
  69. ToBottom: "Para o Mais Recente",
  70. Theme: {
  71. auto: "Automático",
  72. light: "Tema Claro",
  73. dark: "Tema Escuro",
  74. },
  75. Prompt: "Prompts",
  76. Masks: "Máscaras",
  77. Clear: "Limpar Contexto",
  78. Settings: "Configurações",
  79. },
  80. Rename: "Renomear Chat",
  81. Typing: "Digitando…",
  82. Input: (submitKey: string) => {
  83. var inputHints = `${submitKey} para enviar`;
  84. if (submitKey === String(SubmitKey.Enter)) {
  85. inputHints += ", Shift + Enter para quebrar linha";
  86. }
  87. return inputHints + ", / para buscar prompts, : para usar comandos";
  88. },
  89. Send: "Enviar",
  90. Config: {
  91. Reset: "Redefinir para Padrão",
  92. SaveAs: "Salvar como Máscara",
  93. },
  94. IsContext: "Prompt Contextual",
  95. },
  96. Export: {
  97. Title: "Exportar Mensagens",
  98. Copy: "Copiar Tudo",
  99. Download: "Baixar",
  100. MessageFromYou: "Mensagem De Você",
  101. MessageFromChatGPT: "Mensagem De ChatGPT",
  102. Share: "Compartilhar para ShareGPT",
  103. Format: {
  104. Title: "Formato de Exportação",
  105. SubTitle: "Markdown ou Imagem PNG",
  106. },
  107. IncludeContext: {
  108. Title: "Incluindo Contexto",
  109. SubTitle: "Exportar prompts de contexto na máscara ou não",
  110. },
  111. Steps: {
  112. Select: "Selecionar",
  113. Preview: "Pré-visualizar",
  114. },
  115. Image: {
  116. Toast: "Capturando Imagem...",
  117. Modal:
  118. "Pressione longamente ou clique com o botão direito para salvar a imagem",
  119. },
  120. },
  121. Select: {
  122. Search: "Buscar",
  123. All: "Selecionar Tudo",
  124. Latest: "Selecionar Mais Recente",
  125. Clear: "Limpar",
  126. },
  127. Memory: {
  128. Title: "Prompt de Memória",
  129. EmptyContent: "Nada ainda.",
  130. Send: "Enviar Memória",
  131. Copy: "Copiar Memória",
  132. Reset: "Resetar Sessão",
  133. ResetConfirm:
  134. "Resetar irá limpar o histórico de conversa atual e a memória histórica. Você tem certeza que quer resetar?",
  135. },
  136. Home: {
  137. NewChat: "Novo Chat",
  138. DeleteChat: "Confirmar para deletar a conversa selecionada?",
  139. DeleteToast: "Chat Deletado",
  140. Revert: "Reverter",
  141. },
  142. Settings: {
  143. Title: "Configurações",
  144. SubTitle: "Todas as Configurações",
  145. Danger: {
  146. Reset: {
  147. Title: "Resetar Todas as Configurações",
  148. SubTitle: "Resetar todos os itens de configuração para o padrão",
  149. Action: "Resetar",
  150. Confirm: "Confirmar para resetar todas as configurações para o padrão?",
  151. },
  152. Clear: {
  153. Title: "Limpar Todos os Dados",
  154. SubTitle: "Limpar todas as mensagens e configurações",
  155. Action: "Limpar",
  156. Confirm: "Confirmar para limpar todas as mensagens e configurações?",
  157. },
  158. },
  159. Lang: {
  160. Name: "Language",
  161. All: "Todos os Idiomas",
  162. },
  163. Avatar: "Avatar",
  164. FontSize: {
  165. Title: "Tamanho da Fonte",
  166. SubTitle: "Ajustar o tamanho da fonte do conteúdo do chat",
  167. },
  168. FontFamily: {
  169. Title: "Fonte do Chat",
  170. SubTitle:
  171. "Fonte do conteúdo do chat, deixe vazio para aplicar a fonte padrão global",
  172. Placeholder: "Nome da Fonte",
  173. },
  174. InjectSystemPrompts: {
  175. Title: "Inserir Prompts de Sistema",
  176. SubTitle: "Inserir um prompt de sistema global para cada requisição",
  177. },
  178. InputTemplate: {
  179. Title: "Modelo de Entrada",
  180. SubTitle: "A mensagem mais recente será preenchida neste modelo",
  181. },
  182. Update: {
  183. Version: (x: string) => `Versão: ${x}`,
  184. IsLatest: "Última versão",
  185. CheckUpdate: "Verificar Atualização",
  186. IsChecking: "Verificando atualização...",
  187. FoundUpdate: (x: string) => `Nova versão encontrada: ${x}`,
  188. GoToUpdate: "Atualizar",
  189. },
  190. SendKey: "Tecla de Envio",
  191. Theme: "Tema",
  192. TightBorder: "Borda Ajustada",
  193. SendPreviewBubble: {
  194. Title: "Bolha de Pré-visualização de Envio",
  195. SubTitle: "Pré-visualizar markdown na bolha",
  196. },
  197. AutoGenerateTitle: {
  198. Title: "Gerar Título Automaticamente",
  199. SubTitle: "Gerar um título adequado baseado no conteúdo da conversa",
  200. },
  201. Sync: {
  202. CloudState: "Última Atualização",
  203. NotSyncYet: "Ainda não sincronizado",
  204. Success: "Sincronização bem sucedida",
  205. Fail: "Falha na sincronização",
  206. Config: {
  207. Modal: {
  208. Title: "Configurar Sincronização",
  209. Check: "Verificar Conexão",
  210. },
  211. SyncType: {
  212. Title: "Tipo de Sincronização",
  213. SubTitle: "Escolha seu serviço de sincronização favorito",
  214. },
  215. Proxy: {
  216. Title: "Habilitar Proxy CORS",
  217. SubTitle: "Habilitar um proxy para evitar restrições de cross-origin",
  218. },
  219. ProxyUrl: {
  220. Title: "Endpoint de Proxy",
  221. SubTitle: "Apenas aplicável ao proxy CORS embutido para este projeto",
  222. },
  223. WebDav: {
  224. Endpoint: "Endpoint WebDAV",
  225. UserName: "Nome de Usuário",
  226. Password: "Senha",
  227. },
  228. UpStash: {
  229. Endpoint: "URL REST Redis UpStash",
  230. UserName: "Nome do Backup",
  231. Password: "Token REST Redis UpStash",
  232. },
  233. },
  234. LocalState: "Dados Locais",
  235. Overview: (overview: any) => {
  236. return `${overview.chat} chats,${overview.message} mensagens,${overview.prompt} prompts,${overview.mask} máscaras`;
  237. },
  238. ImportFailed: "Falha ao importar do arquivo",
  239. },
  240. Mask: {
  241. Splash: {
  242. Title: "Tela de Início da Máscara",
  243. SubTitle:
  244. "Mostrar uma tela de início da máscara antes de iniciar novo chat",
  245. },
  246. Builtin: {
  247. Title: "Esconder Máscaras Embutidas",
  248. SubTitle: "Esconder máscaras embutidas na lista de máscaras",
  249. },
  250. },
  251. Prompt: {
  252. Disable: {
  253. Title: "Desabilitar auto-completar",
  254. SubTitle: "Digite / para acionar auto-completar",
  255. },
  256. List: "Lista de Prompts",
  257. ListCount: (builtin: number, custom: number) =>
  258. `${builtin} embutidos, ${custom} definidos pelo usuário`,
  259. Edit: "Editar",
  260. Modal: {
  261. Title: "Lista de Prompts",
  262. Add: "Adicionar Um",
  263. Search: "Buscar Prompts",
  264. },
  265. EditModal: {
  266. Title: "Editar Prompt",
  267. },
  268. },
  269. HistoryCount: {
  270. Title: "Contagem de Mensagens Anexadas",
  271. SubTitle: "Número de mensagens enviadas anexadas por requisição",
  272. },
  273. CompressThreshold: {
  274. Title: "Limite de Compressão de Histórico",
  275. SubTitle:
  276. "Irá comprimir se o comprimento das mensagens não comprimidas exceder o valor",
  277. },
  278. Usage: {
  279. Title: "Saldo da Conta",
  280. SubTitle(used: any, total: any) {
  281. return `Usado este mês ${used}, assinatura ${total}`;
  282. },
  283. IsChecking: "Verificando...",
  284. Check: "Verificar",
  285. NoAccess: "Insira a Chave API para verificar o saldo",
  286. },
  287. Access: {
  288. SaasStart: {
  289. Title: "Usar NextChat AI",
  290. Label: "(A solução mais econômica)",
  291. SubTitle:
  292. "Mantido oficialmente pelo NextChat, pronto para uso sem configuração, suporta os mais recentes grandes modelos como OpenAI o1, GPT-4o e Claude-3.5",
  293. ChatNow: "Conversar agora",
  294. },
  295. AccessCode: {
  296. Title: "Código de Acesso",
  297. SubTitle: "Controle de Acesso Habilitado",
  298. Placeholder: "Insira o Código",
  299. },
  300. CustomEndpoint: {
  301. Title: "Endpoint Personalizado",
  302. SubTitle: "Use serviço personalizado Azure ou OpenAI",
  303. },
  304. Provider: {
  305. Title: "Provedor do Modelo",
  306. SubTitle: "Selecione Azure ou OpenAI",
  307. },
  308. OpenAI: {
  309. ApiKey: {
  310. Title: "Chave API OpenAI",
  311. SubTitle: "Usar Chave API OpenAI personalizada",
  312. Placeholder: "sk-xxx",
  313. },
  314. Endpoint: {
  315. Title: "Endpoint OpenAI",
  316. SubTitle:
  317. "Deve começar com http(s):// ou usar /api/openai como padrão",
  318. },
  319. },
  320. Azure: {
  321. ApiKey: {
  322. Title: "Chave API Azure",
  323. SubTitle: "Verifique sua chave API do console Azure",
  324. Placeholder: "Chave API Azure",
  325. },
  326. Endpoint: {
  327. Title: "Endpoint Azure",
  328. SubTitle: "Exemplo: ",
  329. },
  330. ApiVerion: {
  331. Title: "Versão API Azure",
  332. SubTitle: "Verifique sua versão API do console Azure",
  333. },
  334. },
  335. Anthropic: {
  336. ApiKey: {
  337. Title: "Chave API Anthropic",
  338. SubTitle: "Verifique sua chave API do console Anthropic",
  339. Placeholder: "Chave API Anthropic",
  340. },
  341. Endpoint: {
  342. Title: "Endpoint Address",
  343. SubTitle: "Exemplo: ",
  344. },
  345. ApiVerion: {
  346. Title: "Versão API (Versão api claude)",
  347. SubTitle: "Verifique sua versão API do console Anthropic",
  348. },
  349. },
  350. CustomModel: {
  351. Title: "Modelos Personalizados",
  352. SubTitle: "Opções de modelo personalizado, separados por vírgula",
  353. },
  354. },
  355. Model: "Modelo",
  356. CompressModel: {
  357. Title: "Modelo de Compressão",
  358. SubTitle: "Modelo usado para comprimir o histórico",
  359. },
  360. Temperature: {
  361. Title: "Temperatura",
  362. SubTitle: "Um valor maior torna a saída mais aleatória",
  363. },
  364. TopP: {
  365. Title: "Top P",
  366. SubTitle: "Não altere este valor junto com a temperatura",
  367. },
  368. MaxTokens: {
  369. Title: "Máximo de Tokens",
  370. SubTitle: "Comprimento máximo de tokens de entrada e tokens gerados",
  371. },
  372. PresencePenalty: {
  373. Title: "Penalidade de Presença",
  374. SubTitle:
  375. "Um valor maior aumenta a probabilidade de falar sobre novos tópicos",
  376. },
  377. FrequencyPenalty: {
  378. Title: "Penalidade de Frequência",
  379. SubTitle:
  380. "Um valor maior diminui a probabilidade de repetir a mesma linha",
  381. },
  382. },
  383. Store: {
  384. DefaultTopic: "Nova Conversa",
  385. BotHello: "Olá! Como posso ajudá-lo hoje?",
  386. Error: "Algo deu errado, por favor tente novamente mais tarde.",
  387. Prompt: {
  388. History: (content: string) =>
  389. "Este é um resumo do histórico de chat como um recapitulativo: " +
  390. content,
  391. Topic:
  392. "Por favor, gere um título de quatro a cinco palavras resumindo nossa conversa sem qualquer introdução, pontuação, aspas, períodos, símbolos ou texto adicional. Remova as aspas que o envolvem.",
  393. Summarize:
  394. "Resuma a discussão brevemente em 200 palavras ou menos para usar como um prompt para o contexto futuro.",
  395. },
  396. },
  397. Copy: {
  398. Success: "Copiado para a área de transferência",
  399. Failed:
  400. "Falha na cópia, por favor conceda permissão para acessar a área de transferência",
  401. },
  402. Download: {
  403. Success: "Conteúdo baixado para seu diretório.",
  404. Failed: "Falha no download.",
  405. },
  406. Context: {
  407. Toast: (x: any) => `Com ${x} prompts contextuais`,
  408. Edit: "Configurações do Chat Atual",
  409. Add: "Adicionar um Prompt",
  410. Clear: "Contexto Limpo",
  411. Revert: "Reverter",
  412. },
  413. Plugin: {
  414. Name: "Plugin",
  415. },
  416. FineTuned: {
  417. Sysmessage: "Você é um assistente que",
  418. },
  419. SearchChat: {
  420. Name: "Pesquisar",
  421. Page: {
  422. Title: "Pesquisar histórico de chat",
  423. Search: "Digite palavras-chave para pesquisa",
  424. NoResult: "Nenhum resultado encontrado",
  425. NoData: "Sem dados",
  426. Loading: "Carregando",
  427. SubTitle: (count: number) => `Encontrado ${count} resultados`,
  428. },
  429. Item: {
  430. View: "Ver",
  431. },
  432. },
  433. Mask: {
  434. Name: "Máscara",
  435. Page: {
  436. Title: "Template de Prompt",
  437. SubTitle: (count: number) => `${count} templates de prompt`,
  438. Search: "Buscar Templates",
  439. Create: "Criar",
  440. },
  441. Item: {
  442. Info: (count: number) => `${count} prompts`,
  443. Chat: "Chat",
  444. View: "Visualizar",
  445. Edit: "Editar",
  446. Delete: "Deletar",
  447. DeleteConfirm: "Confirmar para deletar?",
  448. },
  449. EditModal: {
  450. Title: (readonly: boolean) =>
  451. `Editar Template de Prompt ${readonly ? "(somente leitura)" : ""}`,
  452. Download: "Baixar",
  453. Clone: "Clonar",
  454. },
  455. Config: {
  456. Avatar: "Avatar do Bot",
  457. Name: "Nome do Bot",
  458. Sync: {
  459. Title: "Usar Configuração Global",
  460. SubTitle: "Usar configuração global neste chat",
  461. Confirm:
  462. "Confirmar para substituir a configuração personalizada pela configuração global?",
  463. },
  464. HideContext: {
  465. Title: "Esconder Prompts de Contexto",
  466. SubTitle: "Não mostrar prompts de contexto no chat",
  467. },
  468. Share: {
  469. Title: "Compartilhar Esta Máscara",
  470. SubTitle: "Gerar um link para esta máscara",
  471. Action: "Copiar Link",
  472. },
  473. },
  474. },
  475. NewChat: {
  476. Return: "Retornar",
  477. Skip: "Apenas Começar",
  478. Title: "Escolher uma Máscara",
  479. SubTitle: "Converse com a Alma por trás da Máscara",
  480. More: "Encontre Mais",
  481. NotShow: "Nunca Mostrar Novamente",
  482. ConfirmNoShow:
  483. "Confirmar para desabilitar?Você pode habilitar nas configurações depois.",
  484. },
  485. UI: {
  486. Confirm: "Confirmar",
  487. Cancel: "Cancelar",
  488. Close: "Fechar",
  489. Create: "Criar",
  490. Edit: "Editar",
  491. Export: "Exportar",
  492. Import: "Importar",
  493. Sync: "Sincronizar",
  494. Config: "Configurar",
  495. },
  496. Exporter: {
  497. Description: {
  498. Title: "Apenas mensagens após a limpeza do contexto serão exibidas",
  499. },
  500. Model: "Modelo",
  501. Messages: "Mensagens",
  502. Topic: "Tópico",
  503. Time: "Tempo",
  504. },
  505. URLCommand: {
  506. Code: "Código de acesso detectado a partir da url, confirmar para aplicar? ",
  507. Settings:
  508. "Configurações detectadas a partir da url, confirmar para aplicar?",
  509. },
  510. };
  511. export default pt;