mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2025-01-18 15:59:16 +08:00
fix: Fix the issue of interface returning internationalization failure (#7668)
This commit is contained in:
parent
381cb61185
commit
6c08a3114a
@ -75,6 +75,7 @@ func GetMsgByKey(key string) string {
|
||||
return content
|
||||
}
|
||||
|
||||
//go:embed lang/*
|
||||
var fs embed.FS
|
||||
var bundle *i18n.Bundle
|
||||
|
||||
@ -84,10 +85,6 @@ 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)
|
||||
}
|
||||
}
|
||||
@ -103,7 +100,6 @@ 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/ja.yaml")
|
||||
_, _ = bundle.LoadMessageFileFS(fs, "lang/ru.yaml")
|
||||
|
@ -205,7 +205,7 @@ ErrIPExist: "IP is exit"
|
||||
#license
|
||||
ErrLicense: "License format error, please check and try again!"
|
||||
ErrLicenseCheck: "License verification failed, please check and try again!"
|
||||
ErrXpackVersion: "License verification failed, this license is version-restricted and cannot be successfully imported. Please check and try again!";
|
||||
ErrXpackVersion: "License verification failed, this license is version-restricted and cannot be successfully imported. Please check and try again!"
|
||||
ErrLicenseSave: "Failed to save license information, error {{ .err }}, please try again!"
|
||||
ErrLicenseSync: "Failed to sync license information, no license information detected in the database!"
|
||||
ErrXpackNotFound: "This section is a professional edition feature, please import the license first in Panel Settings-License interface"
|
||||
|
@ -1,76 +1,76 @@
|
||||
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 }}",
|
||||
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",
|
||||
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",
|
||||
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"
|
||||
|
@ -205,7 +205,7 @@ ErrIPExist: "IP уже существует"
|
||||
#license
|
||||
ErrLicense: "Ошибка формата лицензии, пожалуйста, проверьте и попробуйте снова!"
|
||||
ErrLicenseCheck: "Проверка лицензии не выполнена, пожалуйста, проверьте и попробуйте снова!"
|
||||
ErrXpackVersion: "Ошибка проверки лицензии, эта лицензия ограничена по версии и не может быть успешно импортирована. Пожалуйста, проверьте и попробуйте снова!";
|
||||
ErrXpackVersion: "Ошибка проверки лицензии, эта лицензия ограничена по версии и не может быть успешно импортирована. Пожалуйста, проверьте и попробуйте снова!"
|
||||
ErrLicenseSave: "Не удалось сохранить информацию о лицензии, ошибка {{ .err }}, пожалуйста, попробуйте снова!"
|
||||
ErrLicenseSync: "Не удалось синхронизировать информацию о лицензии, в базе данных не обнаружена информация о лицензии!"
|
||||
ErrXpackNotFound: "Этот раздел является функцией профессионального издания, пожалуйста, сначала импортируйте лицензию в интерфейсе Настройки панели — Лицензия"
|
||||
|
@ -76,7 +76,7 @@ UpgradeAppSuccess: "應用程式 {{ .name }} 升級成功"
|
||||
|
||||
#file
|
||||
ErrFileCanNotRead: "此文件不支援預覽"
|
||||
ErrFileToLarge: "文件超過10M,無法打開"
|
||||
ErrFileToLarge: "文件超過10M,無法打開"
|
||||
ErrPathNotFound: "目錄不存在"
|
||||
ErrMovePathFailed: "目標路徑不能包含原路徑!"
|
||||
ErrLinkPathNotFound: "目標路徑不存在!"
|
||||
@ -91,7 +91,7 @@ ErrPathNotDelete: "所選目錄不可刪除"
|
||||
#website
|
||||
ErrDomainIsExist: "域名已存在"
|
||||
ErrAliasIsExist: "代號已存在"
|
||||
ErrAppDelete: '其他網站使用此應用,無法刪除'
|
||||
ErrAppDelete: '其他網站使用此應用,無法刪除'
|
||||
ErrGroupIsUsed: '分組正在使用中,無法刪除'
|
||||
ErrBackupMatch: '該備份文件與目前網站部分數據不匹配: {{ .detail}}'
|
||||
ErrBackupExist: '該備份文件對應部分原數據不存在: {{ .detail}}'
|
||||
@ -113,11 +113,11 @@ ErrSSLKeyFormat: '私鑰文件校驗錯誤'
|
||||
ErrSSLCertificateFormat: '證書文件格式錯誤,請使用 pem 格式'
|
||||
ErrEabKidOrEabHmacKeyCannotBlank: 'EabKid 或 EabHmacKey 不能為空'
|
||||
ErrOpenrestyNotFound: 'Http 模式需要先安裝 Openresty'
|
||||
ApplySSLStart: '開始申請憑證,網域 [{{ .domain }}] 申請方式 [{{ .type }}] '
|
||||
ApplySSLStart: '開始申請憑證,網域 [{{ .domain }}] 申請方式 [{{ .type }}] '
|
||||
dnsAccount: "DNS 自動"
|
||||
dnsManual: "DNS 手排"
|
||||
http: "HTTP"
|
||||
ApplySSLFailed: '申請 [{{ .domain }}] 憑證失敗, {{.detail}} '
|
||||
ApplySSLFailed: '申請 [{{ .domain }}] 憑證失敗, {{.detail}} '
|
||||
ApplySSLSuccess: '申請 [{{ .domain }}] 憑證成功! ! '
|
||||
DNSAccountName: 'DNS 帳號 [{{ .name }}] 廠商 [{{.type}}]'
|
||||
PushDirLog: '憑證推送到目錄 [{{ .path }}] {{ .status }}'
|
||||
@ -205,8 +205,8 @@ ErrIPExist: "IP 已存在"
|
||||
#license
|
||||
ErrLicense: "許可證格式錯誤,請檢查後重試!"
|
||||
ErrLicenseCheck: "許可證校驗失敗,請檢查後重試!"
|
||||
ErrXpackVersion: "許可證校驗失敗,該許可證受版本限制,無法成功導入,請檢查後重試!";
|
||||
ErrLicenseSave: "許可證資訊保存失敗,錯誤 {{ .err }}, 請重試!"
|
||||
ErrXpackVersion: "許可證校驗失敗,該許可證受版本限制,無法成功導入,請檢查後重試!"
|
||||
ErrLicenseSave: "許可證資訊保存失敗,錯誤 {{ .err }}, 請重試!"
|
||||
ErrLicenseSync: "許可證資訊同步失敗,資料庫中未檢測到許可證資訊!"
|
||||
ErrXpackNotFound: "該部分為專業版功能,請先在 面板設定-許可證 界面導入許可證"
|
||||
ErrXpackNotActive: "該部分為專業版功能,請先在 面板設定-許可證 界面同步許可證狀態"
|
||||
|
@ -75,7 +75,7 @@ UpgradeAppSuccess: "应用 {{ .name }} 升级成功"
|
||||
|
||||
#file
|
||||
ErrFileCanNotRead: "此文件不支持预览"
|
||||
ErrFileToLarge: "文件超过10M,无法打开"
|
||||
ErrFileToLarge: "文件超过10M,无法打开"
|
||||
ErrPathNotFound: "目录不存在"
|
||||
ErrMovePathFailed: "目标路径不能包含原路径!"
|
||||
ErrLinkPathNotFound: "目标路径不存在!"
|
||||
@ -91,7 +91,7 @@ ErrPathNotDelete: "所选目录不可删除"
|
||||
#website
|
||||
ErrDomainIsExist: "域名已存在"
|
||||
ErrAliasIsExist: "代号已存在"
|
||||
ErrAppDelete: '其他网站使用此应用,无法删除'
|
||||
ErrAppDelete: '其他网站使用此应用,无法删除'
|
||||
ErrGroupIsUsed: '分组正在使用中,无法删除'
|
||||
ErrBackupMatch: '该备份文件与当前网站部分数据不匹配 {{ .detail}}'
|
||||
ErrBackupExist: '该备份文件对应部分源数据不存在 {{ .detail}}'
|
||||
@ -113,11 +113,11 @@ ErrSSLKeyFormat: '私钥文件校验失败'
|
||||
ErrSSLCertificateFormat: '证书文件格式错误,请使用 pem 格式'
|
||||
ErrEabKidOrEabHmacKeyCannotBlank: 'EabKid 或 EabHmacKey 不能为空'
|
||||
ErrOpenrestyNotFound: 'Http 模式需要首先安装 Openresty'
|
||||
ApplySSLStart: '开始申请证书,域名 [{{ .domain }}] 申请方式 [{{ .type }}] '
|
||||
ApplySSLStart: '开始申请证书,域名 [{{ .domain }}] 申请方式 [{{ .type }}] '
|
||||
dnsAccount: "DNS 自动"
|
||||
dnsManual: "DNS 手动"
|
||||
http: "HTTP"
|
||||
ApplySSLFailed: '申请 [{{ .domain }}] 证书失败, {{.detail}} '
|
||||
ApplySSLFailed: '申请 [{{ .domain }}] 证书失败, {{.detail}} '
|
||||
ApplySSLSuccess: '申请 [{{ .domain }}] 证书成功!!'
|
||||
DNSAccountName: 'DNS 账号 [{{ .name }}] 厂商 [{{.type}}]'
|
||||
PushDirLog: '证书推送到目录 [{{ .path }}] {{ .status }}'
|
||||
@ -258,7 +258,7 @@ UpdatePassword: "修改面板密码"
|
||||
UpdatePort: "修改面板端口"
|
||||
UpdateUserNull: "错误:输入面板用户为空!"
|
||||
UpdateUserBlank: "错误:输入面板用户中包含空格字符!"
|
||||
UpdateUserFormat: "错误:输入面板用户错误!仅支持英文、中文、数字和_,长度3-30"
|
||||
UpdateUserFormat: "错误:输入面板用户错误!仅支持英文、中文、数字和_,长度3-30"
|
||||
UpdateUserErr: "错误:面板用户修改失败,{{ .err }}"
|
||||
UpdateSuccessful: "修改成功!"
|
||||
UpdateUserResult: "面板用户:{{ .name }}"
|
||||
|
Loading…
x
Reference in New Issue
Block a user