diff --git a/backend/i18n/i18n.go b/backend/i18n/i18n.go index 4184295ce..3c93f574a 100644 --- a/backend/i18n/i18n.go +++ b/backend/i18n/i18n.go @@ -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") diff --git a/backend/i18n/lang/en.yaml b/backend/i18n/lang/en.yaml index b72c13ffe..e17a2bdfe 100644 --- a/backend/i18n/lang/en.yaml +++ b/backend/i18n/lang/en.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" diff --git a/backend/i18n/lang/pt-BR.yaml b/backend/i18n/lang/pt-BR.yaml index fb9d80db6..9e9a5158e 100644 --- a/backend/i18n/lang/pt-BR.yaml +++ b/backend/i18n/lang/pt-BR.yaml @@ -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" diff --git a/backend/i18n/lang/ru.yaml b/backend/i18n/lang/ru.yaml index 96fccbccd..c813aa133 100644 --- a/backend/i18n/lang/ru.yaml +++ b/backend/i18n/lang/ru.yaml @@ -205,7 +205,7 @@ ErrIPExist: "IP уже существует" #license ErrLicense: "Ошибка формата лицензии, пожалуйста, проверьте и попробуйте снова!" ErrLicenseCheck: "Проверка лицензии не выполнена, пожалуйста, проверьте и попробуйте снова!" -ErrXpackVersion: "Ошибка проверки лицензии, эта лицензия ограничена по версии и не может быть успешно импортирована. Пожалуйста, проверьте и попробуйте снова!"; +ErrXpackVersion: "Ошибка проверки лицензии, эта лицензия ограничена по версии и не может быть успешно импортирована. Пожалуйста, проверьте и попробуйте снова!" ErrLicenseSave: "Не удалось сохранить информацию о лицензии, ошибка {{ .err }}, пожалуйста, попробуйте снова!" ErrLicenseSync: "Не удалось синхронизировать информацию о лицензии, в базе данных не обнаружена информация о лицензии!" ErrXpackNotFound: "Этот раздел является функцией профессионального издания, пожалуйста, сначала импортируйте лицензию в интерфейсе Настройки панели — Лицензия" diff --git a/backend/i18n/lang/zh-Hant.yaml b/backend/i18n/lang/zh-Hant.yaml index 0404c1299..e48f1d09d 100644 --- a/backend/i18n/lang/zh-Hant.yaml +++ b/backend/i18n/lang/zh-Hant.yaml @@ -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: "該部分為專業版功能,請先在 面板設定-許可證 界面同步許可證狀態" diff --git a/backend/i18n/lang/zh.yaml b/backend/i18n/lang/zh.yaml index d2fd185c6..c544507b0 100644 --- a/backend/i18n/lang/zh.yaml +++ b/backend/i18n/lang/zh.yaml @@ -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 }}"