pt.ts 16 KB

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