mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2025-01-19 00:09:16 +08:00
Traducao pt br (#7624)
This commit is contained in:
parent
2844f6db7f
commit
120d0dd7c6
@ -29,7 +29,7 @@ type Login struct {
|
||||
Captcha string `json:"captcha"`
|
||||
CaptchaID string `json:"captchaID"`
|
||||
AuthMethod string `json:"authMethod" validate:"required,oneof=jwt session"`
|
||||
Language string `json:"language" validate:"required,oneof=zh en tw jp ru ms"`
|
||||
Language string `json:"language" validate:"required,oneof=zh en tw jp ru ms pt-BR"`
|
||||
}
|
||||
|
||||
type MFALogin struct {
|
||||
|
@ -84,6 +84,10 @@ func UseI18n() gin.HandlerFunc {
|
||||
if lang == "" {
|
||||
lang = "zh"
|
||||
}
|
||||
//(dev: lucasplcorrea) - Ensuring support for pt-BR as a separate language
|
||||
if lang == "pt-BR" {
|
||||
lang = "pt-BR"
|
||||
}
|
||||
global.I18n = i18n.NewLocalizer(bundle, lang)
|
||||
}
|
||||
}
|
||||
@ -99,6 +103,8 @@ func Init() {
|
||||
_, _ = bundle.LoadMessageFileFS(fs, "lang/zh-Hant.yaml")
|
||||
_, _ = bundle.LoadMessageFileFS(fs, "lang/fa.yaml")
|
||||
_, _ = bundle.LoadMessageFileFS(fs, "lang/pt.yaml")
|
||||
// (dev: lucasplcorrea) - Add pt-BR.yaml
|
||||
_, _ = bundle.LoadMessageFileFS(fs, "lang/pt-BR.yaml")
|
||||
_, _ = bundle.LoadMessageFileFS(fs, "lang/jp.yaml")
|
||||
_, _ = bundle.LoadMessageFileFS(fs, "lang/ru.yaml")
|
||||
_, _ = bundle.LoadMessageFileFS(fs, "lang/ms.yaml")
|
||||
@ -108,9 +114,7 @@ func UseI18nForCmd(lang string) {
|
||||
if lang == "" {
|
||||
lang = "en"
|
||||
}
|
||||
if lang == "pt-BR" {
|
||||
lang = "pt"
|
||||
}
|
||||
|
||||
if bundle == nil {
|
||||
Init()
|
||||
}
|
||||
|
283
backend/i18n/lang/pt-BR.yaml
Normal file
283
backend/i18n/lang/pt-BR.yaml
Normal file
@ -0,0 +1,283 @@
|
||||
ErrInvalidParams: "Erro nos parâmetros da solicitação: {{ .detail }}",
|
||||
ErrTokenParse: "Erro na geração do token: {{ .detail }}",
|
||||
ErrInitialPassword: "Erro na senha inicial",
|
||||
ErrInternalServer: "Erro interno do serviço: {{ .detail }}",
|
||||
ErrRecordExist: "Registro já existente",
|
||||
ErrRecordNotFound: "Registros não encontrados",
|
||||
ErrStructTransform: "Falha na conversão de tipo: {{ .detail }}",
|
||||
ErrNotLogin: "Usuário não está logado: {{ .detail }}",
|
||||
ErrPasswordExpired: "A senha atual expirou: {{ .detail }}",
|
||||
ErrNotSupportType: "O sistema não suporta o tipo atual: {{ .detail }}",
|
||||
ErrApiConfigStatusInvalid: "Acesso à interface da API proibido: {{ .detail }}",
|
||||
ErrApiConfigKeyInvalid: "Erro na chave da interface da API: {{ .detail }}",
|
||||
ErrApiConfigIPInvalid: "O IP da interface da API não está na lista de permissões: {{ .detail }}",
|
||||
ErrApiConfigDisable: "Esta interface proíbe o uso de chamadas de API: {{ .detail }}",
|
||||
|
||||
#common
|
||||
ErrNameIsExist: "O nome já existe",
|
||||
ErrDemoEnvironment: "Servidor de demonstração, operação proibida!",
|
||||
ErrCmdTimeout: "Tempo limite de execução do comando excedido!",
|
||||
ErrCmdIllegal: "O comando contém caracteres ilegais. Por favor, modifique e tente novamente!",
|
||||
ErrPortExist: 'A porta {{ .port }} já está ocupada por {{ .type }} [{{ .name }}]',
|
||||
TYPE_APP: "Aplicação",
|
||||
TYPE_RUNTIME: "Ambiente de execução",
|
||||
TYPE_DOMAIN: "Nome de domínio",
|
||||
ErrTypePort: 'Erro no formato da porta {{ .name }}',
|
||||
ErrTypePortRange: 'O intervalo da porta deve estar entre 1-65535',
|
||||
Success: "Sucesso",
|
||||
Failed: "Falhou",
|
||||
SystemRestart: "A reinicialização do sistema causa interrupção da tarefa",
|
||||
|
||||
#app
|
||||
ErrPortInUsed: "A porta {{ .detail }} já está em uso",
|
||||
ErrAppLimit: "O limite de instalação de aplicativos foi excedido",
|
||||
ErrAppRequired: "O aplicativo {{ .detail }} é necessário",
|
||||
ErrNotInstall: "Aplicativo não instalado",
|
||||
ErrPortInOtherApp: "A porta {{ .port }} já está em uso pelo aplicativo {{ .apps }}",
|
||||
ErrDbUserNotValid: "Banco de dados padrão, nome de usuário e senha não correspondem!",
|
||||
ErrDockerComposeNotValid: "Erro no formato do arquivo docker-compose!",
|
||||
ErrUpdateBuWebsite: "O aplicativo foi atualizado com sucesso, mas a modificação do arquivo de configuração do site falhou. Verifique a configuração!",
|
||||
Err1PanelNetworkFailed: "Falha ao criar a rede padrão do container! {{ .detail }}",
|
||||
ErrFileParse: "Falha ao analisar o arquivo docker-compose do aplicativo!",
|
||||
ErrInstallDirNotFound: "O diretório de instalação não existe",
|
||||
AppStoreIsUpToDate: "Atualizado",
|
||||
LocalAppVersionNull: "O aplicativo {{.name}} não está sincronizado com a versão! Não foi possível adicionar à lista de aplicativos",
|
||||
LocalAppVersionErr: "Falha ao sincronizar a versão {{.version}} do {{.name}}! {{.err}}",
|
||||
ErrFileNotFound: "O arquivo {{.name}} não existe",
|
||||
ErrFileParseApp: "Falha ao analisar o arquivo {{.name}} {{.err}}",
|
||||
ErrAppDirNull: "O diretório da versão não existe",
|
||||
LocalAppErr: "Falha ao sincronizar o aplicativo {{.name}}! {{.err}}",
|
||||
ErrContainerName: "O nome do container já existe",
|
||||
ErrAppSystemRestart: "A reinicialização do 1Panel causa a interrupção da tarefa",
|
||||
ErrCreateHttpClient: "Falha ao criar a solicitação HTTP {{.err}}",
|
||||
ErrHttpReqTimeOut: "Tempo limite da solicitação excedido {{.err}}",
|
||||
ErrHttpReqFailed: "Falha na solicitação {{.err}}",
|
||||
ErrHttpReqNotFound: "O arquivo não existe",
|
||||
ErrNoSuchHost: "Falha na conexão de rede",
|
||||
ErrImagePullTimeOut: "Tempo limite ao puxar a imagem",
|
||||
ErrContainerNotFound: "O container {{ .name }} não existe",
|
||||
ErrContainerMsg: "O container {{ .name }} está anormal, verifique o log na página do container para mais detalhes",
|
||||
ErrAppBackup: "Falha no backup do aplicativo {{ .name }} erro {{.err}}",
|
||||
ErrImagePull: "Falha ao puxar a imagem {{ .name }} erro {{.err}}",
|
||||
ErrVersionTooLow: "A versão atual do 1Panel é muito baixa para atualizar a loja de aplicativos, por favor atualize a versão",
|
||||
ErrAppNameExist: "O nome do aplicativo já existe",
|
||||
AppStoreIsSyncing: "A loja de aplicativos está sincronizando, tente novamente mais tarde",
|
||||
ErrGetCompose: "Falha ao obter o arquivo docker-compose.yml! {{ .detail }}",
|
||||
ErrAppWarn: "Status anormal, verifique o log",
|
||||
ErrAppParamKey: "Exceção no campo do parâmetro {{ .name }}",
|
||||
ErrAppUpgrade: "Falha ao atualizar o aplicativo {{ .name }} {{ .err }}",
|
||||
AppRecover: "Aplicativo {{ .name }} revertido",
|
||||
PullImageStart: "Iniciando o download da imagem {{ .name }}",
|
||||
PullImageSuccess: "Imagem baixada com sucesso",
|
||||
UpgradeAppStart: "Iniciando a atualização do aplicativo {{ .name }}",
|
||||
UpgradeAppSuccess: "Aplicativo {{ .name }} atualizado com sucesso",
|
||||
|
||||
#file
|
||||
ErrFileCanNotRead: "Não foi possível ler o arquivo"
|
||||
ErrFileToLarge: "O arquivo é muito grande"
|
||||
ErrPathNotFound: "Caminho não encontrado"
|
||||
ErrMovePathFailed: "O caminho de destino não pode conter o caminho original!"
|
||||
ErrLinkPathNotFound: "O caminho de destino não existe!"
|
||||
ErrFileIsExist: "O arquivo ou diretório já existe!"
|
||||
ErrFileUpload: "Falha ao fazer upload do arquivo {{.name}} {{.detail}}"
|
||||
ErrFileDownloadDir: "Pasta de download não é suportada"
|
||||
ErrCmdNotFound: "O comando {{ .name }} não existe, por favor, instale este comando no host primeiro"
|
||||
ErrSourcePathNotFound: "O diretório de origem não existe"
|
||||
ErrFavoriteExist: "Este caminho já foi adicionado aos favoritos"
|
||||
ErrInvalidChar: "Caracteres ilegais são proibidos"
|
||||
ErrPathNotDelete: "O diretório selecionado não pode ser excluído"
|
||||
|
||||
#website
|
||||
ErrDomainIsExist: "O domínio já existe"
|
||||
ErrAliasIsExist: "O alias já existe"
|
||||
ErrAppDelete: "Outro site usa este aplicativo"
|
||||
ErrGroupIsUsed: "O grupo está em uso e não pode ser excluído"
|
||||
ErrBackupMatch: "O arquivo de backup não corresponde aos dados parciais atuais do site: {{ .detail }}"
|
||||
ErrBackupExist: "O arquivo de backup corresponde a uma parte dos dados originais que não existe: {{ .detail }}"
|
||||
ErrPHPResource: "O ambiente local não suporta a troca!"
|
||||
ErrPathPermission: "Foi detectada uma pasta com permissões diferentes de 1000:1000 no diretório de índice, o que pode causar um erro de acesso negado ao acessar o site. Clique no botão salvar acima"
|
||||
ErrDomainIsUsed: "O domínio já está sendo usado pelo site {{ .name }}"
|
||||
ErrDomainFormat: "O formato do domínio {{ .name }} está incorreto"
|
||||
ErrDefaultAlias: "default é um nome reservado, por favor, use outro nome"
|
||||
ErrImageNotExist: "A imagem do ambiente de execução {{.name}} não existe, por favor, reconfigure o ambiente"
|
||||
|
||||
#ssl
|
||||
ErrSSLCannotDelete: "O certificado {{ .name }} está sendo usado pelo site e não pode ser removido"
|
||||
ErrAccountCannotDelete: "O certificado associado à conta não pode ser excluído"
|
||||
ErrSSLApply: "O certificado foi assinado com sucesso, mas o recarregamento do OpenResty falhou, por favor, verifique a configuração!"
|
||||
ErrEmailIsExist: "O email já existe"
|
||||
ErrSSLKeyNotFound: "O arquivo da chave privada não existe"
|
||||
ErrSSLCertificateNotFound: "O arquivo do certificado não existe"
|
||||
ErrSSLKeyFormat: "Erro na verificação do arquivo da chave privada"
|
||||
ErrSSLCertificateFormat: "Erro no formato do arquivo do certificado, por favor, use o formato PEM"
|
||||
ErrEabKidOrEabHmacKeyCannotBlank: "EabKid ou EabHmacKey não podem estar vazios"
|
||||
ErrOpenrestyNotFound: "O modo HTTP requer a instalação prévia do OpenResty"
|
||||
ApplySSLStart: "Iniciando aplicação do certificado, domínio [{{ .domain }}], método de aplicação [{{ .type }}]"
|
||||
dnsAccount: "DNS Automático"
|
||||
dnsManual: "DNS Manual"
|
||||
http: "HTTP"
|
||||
ApplySSLFailed: "A aplicação do certificado para [{{ .domain }}] falhou, {{.detail}}"
|
||||
ApplySSLSuccess: "Certificado para [{{ .domain }}] aplicado com sucesso!"
|
||||
DNSAccountName: "Conta DNS [{{ .name }}], provedor [{{.type}}]"
|
||||
PushDirLog: "Certificado enviado para o diretório [{{ .path }}] {{ .status }}"
|
||||
ErrDeleteCAWithSSL: "Há um certificado emitido sob a organização atual, não pode ser excluído"
|
||||
ErrDeleteWithPanelSSL: "A configuração SSL do painel usa este certificado, não pode ser excluído"
|
||||
ErrDefaultCA: "A autoridade certificadora padrão não pode ser excluída"
|
||||
ApplyWebSiteSSLLog: "Iniciando atualização do certificado do site {{ .name }}"
|
||||
ErrUpdateWebsiteSSL: "Falha ao atualizar o certificado do site {{ .name }}: {{ .err }}"
|
||||
ApplyWebSiteSSLSuccess: "Certificado do site atualizado com sucesso"
|
||||
ErrExecShell: "Falha na execução do script {{ .err }}"
|
||||
ExecShellStart: "Iniciando execução do script"
|
||||
ExecShellSuccess: "Script executado com sucesso"
|
||||
StartUpdateSystemSSL: "Iniciando atualização do certificado do sistema"
|
||||
UpdateSystemSSLSuccess: "Certificado do sistema atualizado com sucesso"
|
||||
|
||||
#mysql
|
||||
ErrUserIsExist: "O usuário atual já existe. Por favor, insira um novo usuário"
|
||||
ErrDatabaseIsExist: "O banco de dados atual já existe. Por favor, insira um novo banco de dados"
|
||||
ErrExecTimeOut: "Tempo de execução SQL expirado, por favor, verifique o banco de dados"
|
||||
ErrRemoteExist: "O banco de dados remoto já existe com este nome, por favor, modifique e tente novamente"
|
||||
ErrLocalExist: "O banco de dados local já existe com este nome, por favor, modifique e tente novamente"
|
||||
|
||||
#redis
|
||||
ErrTypeOfRedis: "O tipo do arquivo de recuperação não corresponde ao modo de persistência atual. Modifique o tipo do arquivo e tente novamente"
|
||||
|
||||
#container
|
||||
ErrInUsed: "{{ .detail }} está em uso e não pode ser excluído"
|
||||
ErrObjectInUsed: "Este objeto está em uso e não pode ser excluído"
|
||||
ErrPortRules: "O número de portas não corresponde. Por favor, insira novamente!"
|
||||
ErrPgImagePull: "Tempo limite ao tentar puxar a imagem. Configure a aceleração de imagem ou puxe manualmente a imagem postgres:16.0-alpine e tente novamente"
|
||||
|
||||
#runtime
|
||||
ErrDirNotFound: "A pasta de build não existe! Por favor, verifique a integridade dos arquivos!"
|
||||
ErrFileNotExist: "O arquivo {{ .detail }} não existe! Por favor, verifique a integridade do arquivo de origem!"
|
||||
ErrImageBuildErr: "Falha ao construir a imagem"
|
||||
ErrImageExist: "A imagem já existe!"
|
||||
ErrDelWithWebsite: "O ambiente operacional está associado a um site e não pode ser excluído"
|
||||
ErrRuntimeStart: "Falha ao iniciar"
|
||||
ErrPackageJsonNotFound: "O arquivo package.json não existe"
|
||||
ErrScriptsNotFound: "Nenhum item de configuração de scripts foi encontrado no package.json"
|
||||
ErrContainerNameNotFound: "Não foi possível obter o nome do contêiner. Por favor, verifique o arquivo .env"
|
||||
ErrNodeModulesNotFound: "A pasta node_modules não existe! Edite o ambiente de execução ou aguarde até que o ambiente seja iniciado com sucesso"
|
||||
|
||||
#setting
|
||||
ErrBackupInUsed: "A conta de backup já está sendo usada em um cronjob e não pode ser excluída"
|
||||
ErrBackupCheck: "Falha ao testar a conexão com a conta de backup {{ .err }}"
|
||||
ErrOSSConn: "Não foi possível recuperar a versão mais recente. Por favor, verifique se o servidor pode se conectar à rede externa."
|
||||
ErrEntrance: "Erro nas informações da entrada de segurança. Por favor, verifique e tente novamente!"
|
||||
|
||||
#tool
|
||||
ErrConfigNotFound: "O arquivo de configuração não existe"
|
||||
ErrConfigParse: "Erro no formato do arquivo de configuração"
|
||||
ErrConfigIsNull: "O arquivo de configuração não pode estar vazio"
|
||||
ErrConfigDirNotFound: "O diretório de execução não existe"
|
||||
ErrConfigAlreadyExist: "Um arquivo de configuração com o mesmo nome já existe"
|
||||
ErrUserFindErr: "Falha ao encontrar o usuário {{ .name }} {{ .err }}"
|
||||
|
||||
#ssh
|
||||
ErrFirewallNone: "Nenhum serviço firewalld ou ufw foi detectado no sistema. Por favor, verifique e tente novamente!"
|
||||
ErrFirewallBoth: "Os serviços firewalld e ufw foram detectados no sistema. Para evitar conflitos, desinstale um deles e tente novamente!"
|
||||
|
||||
#cronjob
|
||||
ErrBashExecute: "Erro na execução do script. Por favor, verifique as informações específicas na área de saída da tarefa."
|
||||
ErrCutWebsiteLog: "Falha ao cortar os logs do site {{ .name }}, erro {{ .err }}"
|
||||
CutWebsiteLogSuccess: "Logs do site {{ .name }} cortados com sucesso, caminho do backup {{ .path }}"
|
||||
|
||||
#toolbox
|
||||
ErrNotExistUser: "O usuário atual não existe. Por favor, modifique e tente novamente!"
|
||||
ErrBanAction: "Falha na configuração. O serviço {{ .name }} atual está indisponível, por favor, verifique e tente novamente!"
|
||||
ErrClamdscanNotFound: "O comando clamdscan não foi detectado. Por favor, consulte a documentação para instalá-lo!"
|
||||
|
||||
#waf
|
||||
ErrScope: "A modificação dessa configuração não é suportada"
|
||||
ErrStateChange: "Falha ao modificar o estado"
|
||||
ErrRuleExist: "A regra já existe"
|
||||
ErrRuleNotExist: "A regra não existe"
|
||||
ErrParseIP: "Erro no formato do IP"
|
||||
ErrDefaultIP: "default é um nome reservado, por favor, escolha outro nome"
|
||||
ErrGroupInUse: "O grupo de IPs está sendo usado na lista de bloqueio/permitidos e não pode ser excluído"
|
||||
ErrGroupExist: "O nome do grupo de IPs já existe"
|
||||
ErrIPRange: "Intervalo de IP inválido"
|
||||
ErrIPExist: "O IP já existe"
|
||||
|
||||
#license
|
||||
ErrLicense: "Erro no formato da licença, por favor, verifique e tente novamente!"
|
||||
ErrLicenseCheck: "Falha na verificação da licença, por favor, verifique e tente novamente!"
|
||||
ErrLicenseSave: "Falha ao salvar as informações da licença, erro {{ .err }}, por favor, tente novamente!"
|
||||
ErrLicenseSync: "Falha ao sincronizar as informações da licença, nenhuma informação de licença detectada no banco de dados!"
|
||||
ErrXpackNotFound: "Esta seção é um recurso da edição profissional. Por favor, importe a licença primeiro na interface Configurações do Painel - Licença."
|
||||
ErrXpackNotActive: "Esta seção é um recurso da edição profissional. Por favor, sincronize o status da licença primeiro na interface Configurações do Painel - Licença."
|
||||
ErrXpackOutOfDate: "A licença atual expirou, por favor, reimporte a licença na interface Configurações do Painel - Licença."
|
||||
ErrXpackLost: "A licença atingiu o número máximo de tentativas de reexecução. Por favor, acesse as páginas [Configurações] [Licença] e clique manualmente no botão de sincronização para garantir que os recursos da versão profissional funcionem corretamente."
|
||||
ErrXpackTimeout: "Tempo limite de solicitação, a conexão de rede pode estar instável, por favor, tente novamente mais tarde!"
|
||||
|
||||
#license
|
||||
ErrAlert: "Erro no formato das informações do alerta, por favor, verifique e tente novamente!"
|
||||
ErrAlertPush: "Erro no envio do alerta, por favor, verifique e tente novamente!"
|
||||
ErrAlertSave: "Erro ao salvar o alerta, por favor, verifique e tente novamente!"
|
||||
ErrAlertSync: "Erro na sincronização do alerta, por favor, verifique e tente novamente!"
|
||||
ErrAlertRemote: "Erro de alerta remoto, por favor, verifique e tente novamente!"
|
||||
|
||||
#cmd
|
||||
AppVersion: "Versão do aplicativo"
|
||||
AppCommands: "Comandos relacionados ao aplicativo"
|
||||
AppInit: "Inicializar aplicativo"
|
||||
AppKeyVal: "Chave do aplicativo (somente suporta inglês)"
|
||||
AppCreateFileErr: "Falha ao criar o arquivo {{ .name }} {{ .err }}"
|
||||
AppCreateDirErr: "Falha ao criar a pasta {{ .name }} {{ .err }}"
|
||||
AppMissKey: "Chave do aplicativo ausente, use -k para especificar"
|
||||
AppMissVersion: "Versão do aplicativo ausente, use -v para especificar"
|
||||
AppVersionExist: "A versão já existe!"
|
||||
AppCreateSuccessful: "Criação bem-sucedida!"
|
||||
AppWriteErr: "Falha ao escrever no arquivo {{ .name }} {{ .err }}"
|
||||
SudoHelper: "Por favor, use {{ .cmd }} ou altere para o usuário root"
|
||||
ListenIPCommands: "Trocar IP de escuta"
|
||||
ListenIPv4: "Escutando em IPv4"
|
||||
ListenIPv6: "Escutando em IPv6"
|
||||
ListenChangeSuccessful: "Troca bem-sucedida! Agora escutando em {{ .value }}"
|
||||
ResetCommands: "Redefinir informações do sistema"
|
||||
ResetMFA: "Cancelar autenticação de dois fatores do 1Panel"
|
||||
ResetHttps: "Cancelar login https do 1Panel"
|
||||
ResetEntrance: "Cancelar entrada segura do 1Panel"
|
||||
ResetIPs: "Cancelar restrições de IP autorizado do 1Panel"
|
||||
ResetDomain: "Cancelar vinculação de domínio do 1Panel"
|
||||
RestoreCommands: "Restaurar serviço e dados do 1Panel"
|
||||
RestoreNoSuchFile: "Nenhum arquivo disponível para restauração"
|
||||
RestoreStep1: "(1/5) Iniciando a restauração do serviço e dados do 1Panel a partir do diretório {{ .name }}..."
|
||||
RestoreStep2: "(2/5) Restauração do binário do 1Panel bem-sucedida"
|
||||
RestoreStep3: "(3/5) Restauração dos scripts do 1Panel bem-sucedida"
|
||||
RestoreStep4: "(4/5) Restauração do serviço do 1Panel bem-sucedida"
|
||||
RestoreStep5: "(5/5) Restauração dos dados do 1Panel bem-sucedida"
|
||||
RestoreSuccessful: "Restauração bem-sucedida! Reiniciando o serviço, por favor, aguarde..."
|
||||
UpdateCommands: "Atualizar informações do painel"
|
||||
UpdateUser: "Atualizar usuário do painel"
|
||||
UpdatePassword: "Atualizar senha do painel"
|
||||
UpdatePort: "Atualizar porta do painel"
|
||||
UpdateUserNull: "Erro: usuário do painel está vazio!"
|
||||
UpdateUserBlank: "Erro: o usuário do painel contém espaços!"
|
||||
UpdateUserFormat: "Erro: Formato de usuário do painel inválido! Apenas suporta inglês, chinês, números e _, comprimento de 3-30."
|
||||
UpdateUserErr: "Erro: Falha ao atualizar o usuário do painel, {{ .err }}"
|
||||
UpdateSuccessful: "Atualização bem-sucedida!"
|
||||
UpdateUserResult: "Usuário do painel: {{ .name }}"
|
||||
UpdatePasswordRead: "Erro: Falha ao ler as informações da senha do painel, {{ .err }}"
|
||||
UpdatePasswordNull: "Erro: A senha do painel está vazia!"
|
||||
UpdateUPasswordBlank: "Erro: A senha do painel contém espaços!"
|
||||
UpdatePasswordFormat: "Erro: A senha do painel suporta apenas letras, números, caracteres especiais !@#$%*_,.?, comprimento de 8-30!"
|
||||
UpdatePasswordLen: "Erro: Por favor, insira uma senha com mais de 6 caracteres!"
|
||||
UpdatePasswordRe: "Confirmar senha:"
|
||||
UpdatePasswordErr: "Erro: Falha ao atualizar a senha do painel, {{ .err }}"
|
||||
UpdatePasswordSame: "Erro: As duas senhas não correspondem, por favor, verifique e tente novamente!"
|
||||
UpdatePasswordResult: "Senha do painel: {{ .name }}"
|
||||
UpdatePortFormat: "Erro: O número da porta deve estar entre 1 e 65535!"
|
||||
UpdatePortUsed: "Erro: O número da porta já está em uso, por favor, verifique e tente novamente!"
|
||||
UpdatePortErr: "Erro: Falha ao atualizar a porta do painel, {{ .err }}"
|
||||
UpdatePortResult: "Porta do painel: {{ .name }}"
|
||||
UpdatePortFirewallAdd: "Falha ao adicionar regra de porta ao firewall, {{ .err }}, por favor, adicione manualmente a porta {{ .name }} às regras do firewall."
|
||||
UpdatePortFirewallDel: "Erro: Falha ao excluir a porta do firewall, {{ .err }}"
|
||||
UpdatePortFirewallReload: "Falha ao recarregar o firewall, {{ .err }}, por favor, recarregue o firewall manualmente."
|
||||
UserInfo: "Obter informações do painel"
|
||||
UserInfoAddr: "Endereço do painel: "
|
||||
UserInfoPassHelp: "Dica: Para alterar a senha, você pode executar o comando: "
|
||||
DBConnErr: "Erro: Falha ao inicializar a conexão com o banco de dados, {{ .err }}"
|
||||
SystemVersion: "versão: "
|
||||
SystemMode: "modo: "
|
@ -2,6 +2,7 @@ import { createI18n } from 'vue-i18n';
|
||||
import zh from './modules/zh';
|
||||
import tw from './modules/tw';
|
||||
import en from './modules/en';
|
||||
import ptBr from './modules/pt-br';
|
||||
import jp from './modules/jp';
|
||||
import ru from './modules/ru';
|
||||
import ms from './modules/ms';
|
||||
@ -15,6 +16,7 @@ const i18n = createI18n({
|
||||
zh,
|
||||
tw,
|
||||
en,
|
||||
'pt-br': ptBr,
|
||||
jp,
|
||||
ru,
|
||||
ms,
|
||||
|
2464
frontend/src/lang/modules/pt-br.ts
Normal file
2464
frontend/src/lang/modules/pt-br.ts
Normal file
File diff suppressed because it is too large
Load Diff
@ -55,20 +55,16 @@
|
||||
<el-dropdown-item v-if="globalStore.isIntl" command="en">
|
||||
English
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item v-if="globalStore.isIntl" command="jp">
|
||||
日本語
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item command="zh">中文(简体)</el-dropdown-item>
|
||||
<el-dropdown-item command="tw">中文(繁體)</el-dropdown-item>
|
||||
<el-dropdown-item v-if="!globalStore.isIntl" command="en">
|
||||
English
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item v-if="!globalStore.isIntl" command="jp">
|
||||
日本語
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item command="pt-BR">Portugês (Brasil)</el-dropdown-item>
|
||||
<el-dropdown-item command="jp">日本語</el-dropdown-item>
|
||||
<el-dropdown-item command="ru">Русский</el-dropdown-item>
|
||||
<el-dropdown-item command="ms">Bahasa Melayu</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
<el-dropdown-item command="ru">Русский</el-dropdown-item>
|
||||
<el-dropdown-item command="ms">Bahasa Melayu</el-dropdown-item>
|
||||
</template>
|
||||
</el-dropdown>
|
||||
</div>
|
||||
@ -278,7 +274,9 @@ function handleCommand(command: string) {
|
||||
dropdownText.value = '中文(简体)';
|
||||
} else if (command === 'en') {
|
||||
dropdownText.value = 'English';
|
||||
} else if (command === 'tw') {
|
||||
} else if (command === 'pt-BR') {
|
||||
dropdownText.value = 'Português (Brasil)';
|
||||
}else if (command === 'tw') {
|
||||
dropdownText.value = '中文(繁體)';
|
||||
} else if (command === 'jp') {
|
||||
dropdownText.value = '日本語';
|
||||
|
@ -318,6 +318,8 @@ const languageOptions = ref([
|
||||
{ value: 'zh', label: '中文(简体)' },
|
||||
{ value: 'tw', label: '中文(繁體)' },
|
||||
...(!globalStore.isIntl ? [{ value: 'en', label: 'English' }] : []),
|
||||
{ value: 'pt-BR', label: 'Português (Brasil)' },
|
||||
{ value: 'jp', label: '日本語' },
|
||||
{ value: 'ru', label: 'Русский' },
|
||||
{ value: 'ms', label: 'Bahasa Melayu' },
|
||||
]);
|
||||
|
Loading…
x
Reference in New Issue
Block a user