1
0
mirror of https://github.com/1Panel-dev/1Panel.git synced 2025-01-18 15:59:16 +08:00

Traducao pt br (#7624)

This commit is contained in:
Lucas Pedro 2025-01-05 23:57:34 -03:00 committed by GitHub
parent 2844f6db7f
commit 120d0dd7c6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 2766 additions and 13 deletions

View File

@ -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 {

View File

@ -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()
}

View 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: "

View File

@ -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,

File diff suppressed because it is too large Load Diff

View File

@ -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 = '日本語';

View File

@ -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' },
]);