forked from XiaoMo/ChatGPT-Next-Web
Merge pull request #3308 from yuri-filipe/main
This commit is contained in:
commit
4f8a0b7711
@ -1,5 +1,6 @@
|
||||
import cn from "./cn";
|
||||
import en from "./en";
|
||||
import pt from "./pt";
|
||||
import tw from "./tw";
|
||||
import id from "./id";
|
||||
import fr from "./fr";
|
||||
@ -23,6 +24,7 @@ export type { LocaleType, PartialLocaleType } from "./cn";
|
||||
const ALL_LANGS = {
|
||||
cn,
|
||||
en,
|
||||
pt,
|
||||
tw,
|
||||
jp,
|
||||
ko,
|
||||
@ -47,6 +49,7 @@ export const AllLangs = Object.keys(ALL_LANGS) as Lang[];
|
||||
export const ALL_LANG_OPTIONS: Record<Lang, string> = {
|
||||
cn: "简体中文",
|
||||
en: "English",
|
||||
pt: "Português",
|
||||
tw: "繁體中文",
|
||||
jp: "日本語",
|
||||
ko: "한국어",
|
||||
|
466
app/locales/pt.ts
Normal file
466
app/locales/pt.ts
Normal file
@ -0,0 +1,466 @@
|
||||
import { SubmitKey } from "../store/config";
|
||||
import { LocaleType } from "../locales/index";
|
||||
import { getClientConfig } from "../config/client";
|
||||
|
||||
const isApp = !!getClientConfig()?.isApp;
|
||||
|
||||
const pt: LocaleType = {
|
||||
WIP: "Em breve...",
|
||||
Error: {
|
||||
Unauthorized: isApp
|
||||
? "Chave API inválida, por favor verifique em [Configurações](/#/settings)."
|
||||
: "Acesso não autorizado, por favor insira o código de acesso em [auth](/#/auth) ou insira sua Chave API OpenAI.",
|
||||
},
|
||||
Auth: {
|
||||
Title: "Necessário Código de Acesso",
|
||||
Tips: "Por favor, insira o código de acesso abaixo",
|
||||
SubTips: "Ou insira sua Chave API OpenAI",
|
||||
Input: "código de acesso",
|
||||
Confirm: "Confirmar",
|
||||
Later: "Depois",
|
||||
},
|
||||
ChatItem: {
|
||||
ChatItemCount: (count: number) => `${count} mensagens`,
|
||||
},
|
||||
Chat: {
|
||||
SubTitle: (count: number) => `${count} mensagens`,
|
||||
EditMessage: {
|
||||
Title: "Editar Todas as Mensagens",
|
||||
Topic: {
|
||||
Title: "Tópico",
|
||||
SubTitle: "Mudar o tópico atual",
|
||||
},
|
||||
},
|
||||
Actions: {
|
||||
ChatList: "Ir Para Lista de Chat",
|
||||
CompressedHistory: "Prompt de Memória Histórica Comprimida",
|
||||
Export: "Exportar Todas as Mensagens como Markdown",
|
||||
Copy: "Copiar",
|
||||
Stop: "Parar",
|
||||
Retry: "Tentar Novamente",
|
||||
Pin: "Fixar",
|
||||
PinToastContent: "Fixada 1 mensagem para prompts contextuais",
|
||||
PinToastAction: "Visualizar",
|
||||
Delete: "Deletar",
|
||||
Edit: "Editar",
|
||||
},
|
||||
Commands: {
|
||||
new: "Iniciar um novo chat",
|
||||
newm: "Iniciar um novo chat com máscara",
|
||||
next: "Próximo Chat",
|
||||
prev: "Chat Anterior",
|
||||
clear: "Limpar Contexto",
|
||||
del: "Deletar Chat",
|
||||
},
|
||||
InputActions: {
|
||||
Stop: "Parar",
|
||||
ToBottom: "Para o Mais Recente",
|
||||
Theme: {
|
||||
auto: "Automático",
|
||||
light: "Tema Claro",
|
||||
dark: "Tema Escuro",
|
||||
},
|
||||
Prompt: "Prompts",
|
||||
Masks: "Máscaras",
|
||||
Clear: "Limpar Contexto",
|
||||
Settings: "Configurações",
|
||||
},
|
||||
Rename: "Renomear Chat",
|
||||
Typing: "Digitando…",
|
||||
Input: (submitKey: string) => {
|
||||
var inputHints = `${submitKey} para enviar`;
|
||||
if (submitKey === String(SubmitKey.Enter)) {
|
||||
inputHints += ", Shift + Enter para quebrar linha";
|
||||
}
|
||||
return inputHints + ", / para buscar prompts, : para usar comandos";
|
||||
},
|
||||
Send: "Enviar",
|
||||
Config: {
|
||||
Reset: "Redefinir para Padrão",
|
||||
SaveAs: "Salvar como Máscara",
|
||||
},
|
||||
IsContext: "Prompt Contextual",
|
||||
},
|
||||
Export: {
|
||||
Title: "Exportar Mensagens",
|
||||
Copy: "Copiar Tudo",
|
||||
Download: "Baixar",
|
||||
MessageFromYou: "Mensagem De Você",
|
||||
MessageFromChatGPT: "Mensagem De ChatGPT",
|
||||
Share: "Compartilhar para ShareGPT",
|
||||
Format: {
|
||||
Title: "Formato de Exportação",
|
||||
SubTitle: "Markdown ou Imagem PNG",
|
||||
},
|
||||
IncludeContext: {
|
||||
Title: "Incluindo Contexto",
|
||||
SubTitle: "Exportar prompts de contexto na máscara ou não",
|
||||
},
|
||||
Steps: {
|
||||
Select: "Selecionar",
|
||||
Preview: "Pré-visualizar",
|
||||
},
|
||||
Image: {
|
||||
Toast: "Capturando Imagem...",
|
||||
Modal:
|
||||
"Pressione longamente ou clique com o botão direito para salvar a imagem",
|
||||
},
|
||||
},
|
||||
Select: {
|
||||
Search: "Buscar",
|
||||
All: "Selecionar Tudo",
|
||||
Latest: "Selecionar Mais Recente",
|
||||
Clear: "Limpar",
|
||||
},
|
||||
Memory: {
|
||||
Title: "Prompt de Memória",
|
||||
EmptyContent: "Nada ainda.",
|
||||
Send: "Enviar Memória",
|
||||
Copy: "Copiar Memória",
|
||||
Reset: "Resetar Sessão",
|
||||
ResetConfirm:
|
||||
"Resetar irá limpar o histórico de conversa atual e a memória histórica. Você tem certeza que quer resetar?",
|
||||
},
|
||||
Home: {
|
||||
NewChat: "Novo Chat",
|
||||
DeleteChat: "Confirmar para deletar a conversa selecionada?",
|
||||
DeleteToast: "Chat Deletado",
|
||||
Revert: "Reverter",
|
||||
},
|
||||
Settings: {
|
||||
Title: "Configurações",
|
||||
SubTitle: "Todas as Configurações",
|
||||
Danger: {
|
||||
Reset: {
|
||||
Title: "Resetar Todas as Configurações",
|
||||
SubTitle: "Resetar todos os itens de configuração para o padrão",
|
||||
Action: "Resetar",
|
||||
Confirm: "Confirmar para resetar todas as configurações para o padrão?",
|
||||
},
|
||||
Clear: {
|
||||
Title: "Limpar Todos os Dados",
|
||||
SubTitle: "Limpar todas as mensagens e configurações",
|
||||
Action: "Limpar",
|
||||
Confirm: "Confirmar para limpar todas as mensagens e configurações?",
|
||||
},
|
||||
},
|
||||
Lang: {
|
||||
Name: "Idioma",
|
||||
All: "Todos os Idiomas",
|
||||
},
|
||||
Avatar: "Avatar",
|
||||
FontSize: {
|
||||
Title: "Tamanho da Fonte",
|
||||
SubTitle: "Ajustar o tamanho da fonte do conteúdo do chat",
|
||||
},
|
||||
InjectSystemPrompts: {
|
||||
Title: "Inserir Prompts de Sistema",
|
||||
SubTitle: "Inserir um prompt de sistema global para cada requisição",
|
||||
},
|
||||
InputTemplate: {
|
||||
Title: "Modelo de Entrada",
|
||||
SubTitle: "A mensagem mais recente será preenchida neste modelo",
|
||||
},
|
||||
|
||||
Update: {
|
||||
Version: (x: string) => `Versão: ${x}`,
|
||||
IsLatest: "Última versão",
|
||||
CheckUpdate: "Verificar Atualização",
|
||||
IsChecking: "Verificando atualização...",
|
||||
FoundUpdate: (x: string) => `Nova versão encontrada: ${x}`,
|
||||
GoToUpdate: "Atualizar",
|
||||
},
|
||||
SendKey: "Tecla de Envio",
|
||||
Theme: "Tema",
|
||||
TightBorder: "Borda Ajustada",
|
||||
SendPreviewBubble: {
|
||||
Title: "Bolha de Pré-visualização de Envio",
|
||||
SubTitle: "Pré-visualizar markdown na bolha",
|
||||
},
|
||||
AutoGenerateTitle: {
|
||||
Title: "Gerar Título Automaticamente",
|
||||
SubTitle: "Gerar um título adequado baseado no conteúdo da conversa",
|
||||
},
|
||||
Sync: {
|
||||
CloudState: "Última Atualização",
|
||||
NotSyncYet: "Ainda não sincronizado",
|
||||
Success: "Sincronização bem sucedida",
|
||||
Fail: "Falha na sincronização",
|
||||
|
||||
Config: {
|
||||
Modal: {
|
||||
Title: "Configurar Sincronização",
|
||||
Check: "Verificar Conexão",
|
||||
},
|
||||
SyncType: {
|
||||
Title: "Tipo de Sincronização",
|
||||
SubTitle: "Escolha seu serviço de sincronização favorito",
|
||||
},
|
||||
Proxy: {
|
||||
Title: "Habilitar Proxy CORS",
|
||||
SubTitle: "Habilitar um proxy para evitar restrições de cross-origin",
|
||||
},
|
||||
ProxyUrl: {
|
||||
Title: "Endpoint de Proxy",
|
||||
SubTitle: "Apenas aplicável ao proxy CORS embutido para este projeto",
|
||||
},
|
||||
|
||||
WebDav: {
|
||||
Endpoint: "Endpoint WebDAV",
|
||||
UserName: "Nome de Usuário",
|
||||
Password: "Senha",
|
||||
},
|
||||
|
||||
UpStash: {
|
||||
Endpoint: "URL REST Redis UpStash",
|
||||
UserName: "Nome do Backup",
|
||||
Password: "Token REST Redis UpStash",
|
||||
},
|
||||
},
|
||||
|
||||
LocalState: "Dados Locais",
|
||||
Overview: (overview: any) => {
|
||||
return `${overview.chat} chats,${overview.message} mensagens,${overview.prompt} prompts,${overview.mask} máscaras`;
|
||||
},
|
||||
ImportFailed: "Falha ao importar do arquivo",
|
||||
},
|
||||
Mask: {
|
||||
Splash: {
|
||||
Title: "Tela de Início da Máscara",
|
||||
SubTitle:
|
||||
"Mostrar uma tela de início da máscara antes de iniciar novo chat",
|
||||
},
|
||||
Builtin: {
|
||||
Title: "Esconder Máscaras Embutidas",
|
||||
SubTitle: "Esconder máscaras embutidas na lista de máscaras",
|
||||
},
|
||||
},
|
||||
Prompt: {
|
||||
Disable: {
|
||||
Title: "Desabilitar auto-completar",
|
||||
SubTitle: "Digite / para acionar auto-completar",
|
||||
},
|
||||
List: "Lista de Prompts",
|
||||
ListCount: (builtin: number, custom: number) =>
|
||||
`${builtin} embutidos, ${custom} definidos pelo usuário`,
|
||||
Edit: "Editar",
|
||||
Modal: {
|
||||
Title: "Lista de Prompts",
|
||||
Add: "Adicionar Um",
|
||||
Search: "Buscar Prompts",
|
||||
},
|
||||
EditModal: {
|
||||
Title: "Editar Prompt",
|
||||
},
|
||||
},
|
||||
HistoryCount: {
|
||||
Title: "Contagem de Mensagens Anexadas",
|
||||
SubTitle: "Número de mensagens enviadas anexadas por requisição",
|
||||
},
|
||||
CompressThreshold: {
|
||||
Title: "Limite de Compressão de Histórico",
|
||||
SubTitle:
|
||||
"Irá comprimir se o comprimento das mensagens não comprimidas exceder o valor",
|
||||
},
|
||||
|
||||
Usage: {
|
||||
Title: "Saldo da Conta",
|
||||
SubTitle(used: any, total: any) {
|
||||
return `Usado este mês ${used}, assinatura ${total}`;
|
||||
},
|
||||
IsChecking: "Verificando...",
|
||||
Check: "Verificar",
|
||||
NoAccess: "Insira a Chave API para verificar o saldo",
|
||||
},
|
||||
Access: {
|
||||
AccessCode: {
|
||||
Title: "Código de Acesso",
|
||||
SubTitle: "Controle de Acesso Habilitado",
|
||||
Placeholder: "Insira o Código",
|
||||
},
|
||||
CustomEndpoint: {
|
||||
Title: "Endpoint Personalizado",
|
||||
SubTitle: "Use serviço personalizado Azure ou OpenAI",
|
||||
},
|
||||
Provider: {
|
||||
Title: "Provedor do Modelo",
|
||||
SubTitle: "Selecione Azure ou OpenAI",
|
||||
},
|
||||
OpenAI: {
|
||||
ApiKey: {
|
||||
Title: "Chave API OpenAI",
|
||||
SubTitle: "Usar Chave API OpenAI personalizada",
|
||||
Placeholder: "sk-xxx",
|
||||
},
|
||||
|
||||
Endpoint: {
|
||||
Title: "Endpoint OpenAI",
|
||||
SubTitle:
|
||||
"Deve começar com http(s):// ou usar /api/openai como padrão",
|
||||
},
|
||||
},
|
||||
Azure: {
|
||||
ApiKey: {
|
||||
Title: "Chave API Azure",
|
||||
SubTitle: "Verifique sua chave API do console Azure",
|
||||
Placeholder: "Chave API Azure",
|
||||
},
|
||||
|
||||
Endpoint: {
|
||||
Title: "Endpoint Azure",
|
||||
SubTitle: "Exemplo: ",
|
||||
},
|
||||
|
||||
ApiVerion: {
|
||||
Title: "Versão API Azure",
|
||||
SubTitle: "Verifique sua versão API do console Azure",
|
||||
},
|
||||
},
|
||||
CustomModel: {
|
||||
Title: "Modelos Personalizados",
|
||||
SubTitle: "Opções de modelo personalizado, separados por vírgula",
|
||||
},
|
||||
},
|
||||
|
||||
Model: "Modelo",
|
||||
Temperature: {
|
||||
Title: "Temperatura",
|
||||
SubTitle: "Um valor maior torna a saída mais aleatória",
|
||||
},
|
||||
TopP: {
|
||||
Title: "Top P",
|
||||
SubTitle: "Não altere este valor junto com a temperatura",
|
||||
},
|
||||
MaxTokens: {
|
||||
Title: "Máximo de Tokens",
|
||||
SubTitle: "Comprimento máximo de tokens de entrada e tokens gerados",
|
||||
},
|
||||
PresencePenalty: {
|
||||
Title: "Penalidade de Presença",
|
||||
SubTitle:
|
||||
"Um valor maior aumenta a probabilidade de falar sobre novos tópicos",
|
||||
},
|
||||
FrequencyPenalty: {
|
||||
Title: "Penalidade de Frequência",
|
||||
SubTitle:
|
||||
"Um valor maior diminui a probabilidade de repetir a mesma linha",
|
||||
},
|
||||
},
|
||||
Store: {
|
||||
DefaultTopic: "Nova Conversa",
|
||||
BotHello: "Olá! Como posso ajudá-lo hoje?",
|
||||
Error: "Algo deu errado, por favor tente novamente mais tarde.",
|
||||
Prompt: {
|
||||
History: (content: string) =>
|
||||
"Este é um resumo do histórico de chat como um recapitulativo: " +
|
||||
content,
|
||||
Topic:
|
||||
"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.",
|
||||
Summarize:
|
||||
"Resuma a discussão brevemente em 200 palavras ou menos para usar como um prompt para o contexto futuro.",
|
||||
},
|
||||
},
|
||||
Copy: {
|
||||
Success: "Copiado para a área de transferência",
|
||||
Failed:
|
||||
"Falha na cópia, por favor conceda permissão para acessar a área de transferência",
|
||||
},
|
||||
Download: {
|
||||
Success: "Conteúdo baixado para seu diretório.",
|
||||
Failed: "Falha no download.",
|
||||
},
|
||||
Context: {
|
||||
Toast: (x: any) => `Com ${x} prompts contextuais`,
|
||||
Edit: "Configurações do Chat Atual",
|
||||
Add: "Adicionar um Prompt",
|
||||
Clear: "Contexto Limpo",
|
||||
Revert: "Reverter",
|
||||
},
|
||||
Plugin: {
|
||||
Name: "Plugin",
|
||||
},
|
||||
FineTuned: {
|
||||
Sysmessage: "Você é um assistente que",
|
||||
},
|
||||
Mask: {
|
||||
Name: "Máscara",
|
||||
Page: {
|
||||
Title: "Template de Prompt",
|
||||
SubTitle: (count: number) => `${count} templates de prompt`,
|
||||
Search: "Buscar Templates",
|
||||
Create: "Criar",
|
||||
},
|
||||
Item: {
|
||||
Info: (count: number) => `${count} prompts`,
|
||||
Chat: "Chat",
|
||||
View: "Visualizar",
|
||||
Edit: "Editar",
|
||||
Delete: "Deletar",
|
||||
DeleteConfirm: "Confirmar para deletar?",
|
||||
},
|
||||
EditModal: {
|
||||
Title: (readonly: boolean) =>
|
||||
`Editar Template de Prompt ${readonly ? "(somente leitura)" : ""}`,
|
||||
Download: "Baixar",
|
||||
Clone: "Clonar",
|
||||
},
|
||||
Config: {
|
||||
Avatar: "Avatar do Bot",
|
||||
Name: "Nome do Bot",
|
||||
Sync: {
|
||||
Title: "Usar Configuração Global",
|
||||
SubTitle: "Usar configuração global neste chat",
|
||||
Confirm:
|
||||
"Confirmar para substituir a configuração personalizada pela configuração global?",
|
||||
},
|
||||
HideContext: {
|
||||
Title: "Esconder Prompts de Contexto",
|
||||
SubTitle: "Não mostrar prompts de contexto no chat",
|
||||
},
|
||||
Share: {
|
||||
Title: "Compartilhar Esta Máscara",
|
||||
SubTitle: "Gerar um link para esta máscara",
|
||||
Action: "Copiar Link",
|
||||
},
|
||||
},
|
||||
},
|
||||
NewChat: {
|
||||
Return: "Retornar",
|
||||
Skip: "Apenas Começar",
|
||||
Title: "Escolher uma Máscara",
|
||||
SubTitle: "Converse com a Alma por trás da Máscara",
|
||||
More: "Encontre Mais",
|
||||
NotShow: "Nunca Mostrar Novamente",
|
||||
ConfirmNoShow:
|
||||
"Confirmar para desabilitar?Você pode habilitar nas configurações depois.",
|
||||
},
|
||||
|
||||
UI: {
|
||||
Confirm: "Confirmar",
|
||||
Cancel: "Cancelar",
|
||||
Close: "Fechar",
|
||||
Create: "Criar",
|
||||
Edit: "Editar",
|
||||
Export: "Exportar",
|
||||
Import: "Importar",
|
||||
Sync: "Sincronizar",
|
||||
Config: "Configurar",
|
||||
},
|
||||
Exporter: {
|
||||
Description: {
|
||||
Title: "Apenas mensagens após a limpeza do contexto serão exibidas",
|
||||
},
|
||||
Model: "Modelo",
|
||||
Messages: "Mensagens",
|
||||
Topic: "Tópico",
|
||||
Time: "Tempo",
|
||||
},
|
||||
|
||||
URLCommand: {
|
||||
Code: "Código de acesso detectado a partir da url, confirmar para aplicar? ",
|
||||
Settings:
|
||||
"Configurações detectadas a partir da url, confirmar para aplicar?",
|
||||
},
|
||||
};
|
||||
|
||||
export default pt;
|
Loading…
Reference in New Issue
Block a user