fix: Fix the problem that the website directory is not backed up duri… (#8280)

This commit is contained in:
ssongliu
2025-03-31 09:35:49 +00:00
committed by GitHub
parent c7b6e15c1d
commit ac722054d2
26 changed files with 2944 additions and 2329 deletions
+7
View File
@@ -469,6 +469,13 @@ func (a *AppInstallService) SyncAll(systemInit bool) error {
}
continue
}
if i.Status == constant.StatusWaitingRestart {
dockerComposePath := i.GetComposePath()
_, _ = compose.Up(dockerComposePath)
i.Status = constant.StatusRunning
_ = appInstallRepo.Save(context.Background(), &i)
continue
}
if !systemInit {
if err = syncAppInstallStatus(&i, false); err != nil {
global.LOG.Errorf("sync install app[%s] error,mgs: %s", i.Name, err.Error())
+17 -3
View File
@@ -135,6 +135,7 @@ func (u *SnapshotService) UpdateDescription(req dto.UpdateDescription) error {
type SnapshotJson struct {
BaseDir string `json:"baseDir"`
OperestyDir string `json:"operestyDir"`
BackupDataDir string `json:"backupDataDir"`
Size uint64 `json:"size"`
}
@@ -322,12 +323,12 @@ func loadPanelFile(fileOp fileUtils.FileOp) ([]dto.DataTree, error) {
Path: path.Join(global.Dir.DataDir, fileItem.Name()),
}
switch itemData.Label {
case "agent", "conf", "runtime", "docker", "secret", "task":
case "agent", "runtime", "docker", "task", "geo", "secret", "uploads":
itemData.IsDisable = true
case "clamav":
case "clamav", "download", "resource":
panelPath := path.Join(global.Dir.DataDir, itemData.Label)
itemData.Children, _ = loadFile(panelPath, 5, fileOp)
default:
case "apps", "backup", "log", "db", "tmp":
continue
}
if fileItem.IsDir() {
@@ -351,6 +352,19 @@ func loadPanelFile(fileOp fileUtils.FileOp) ([]dto.DataTree, error) {
data = append(data, itemData)
}
openrestySite, _ := settingRepo.GetValueByKey("WEBSITE_DIR")
if len(openrestySite) != 0 && !strings.Contains(openrestySite, global.Dir.DataDir) {
sizeItem, _ := fileOp.GetDirSize(openrestySite)
data = append(data, dto.DataTree{
ID: uuid.NewString(),
Label: "www",
IsCheck: true,
IsDisable: true,
Path: openrestySite,
Size: uint64(sizeItem),
})
}
return data, nil
}
+44 -8
View File
@@ -116,7 +116,8 @@ func (u *SnapshotService) SnapshotReCreate(id uint) error {
func handleSnapshot(req dto.SnapshotCreate, taskItem *task.Task, jobID uint) error {
rootDir := path.Join(global.Dir.TmpDir, "system", req.Name)
itemHelper := snapHelper{SnapID: req.ID, Task: *taskItem, FileOp: files.NewFileOp(), Ctx: context.Background()}
openrestyDir, _ := settingRepo.GetValueByKey("WEBSITE_DIR")
itemHelper := snapHelper{SnapID: req.ID, Task: *taskItem, FileOp: files.NewFileOp(), Ctx: context.Background(), OpenrestyDir: openrestyDir}
baseDir := path.Join(rootDir, "base")
_ = os.MkdirAll(baseDir, os.ModePerm)
@@ -168,7 +169,7 @@ func handleSnapshot(req dto.SnapshotCreate, taskItem *task.Task, jobID uint) err
req.InterruptStep = ""
}
taskItem.AddSubTask(
taskItem.AddSubTaskWithAlias(
"SnapCloseDBConn",
func(t *task.Task) error {
taskItem.Log("---------------------- 6 / 8 ----------------------")
@@ -214,6 +215,8 @@ type snapHelper struct {
FileOp files.FileOp
Wg *sync.WaitGroup
Task task.Task
OpenrestyDir string
}
func loadDbConn(snap *snapHelper, targetDir string, req dto.SnapshotCreate) error {
@@ -247,6 +250,12 @@ func loadDbConn(snap *snapHelper, targetDir string, req dto.SnapshotCreate) erro
return err
}
}
if !req.WithTaskLog {
err = os.Remove(path.Join(targetDir, "db/task.db"))
if err != nil {
return err
}
}
if !req.WithOperationLog {
err = snap.snapCoreDB.Exec("DELETE FROM operation_logs").Error
snap.Task.LogWithStatus(i18n.GetMsgByKey("SnapDeleteOperationLog"), err)
@@ -312,6 +321,7 @@ func snapBaseData(snap snapHelper, targetDir string) error {
remarkInfo, _ := json.MarshalIndent(SnapshotJson{
BaseDir: global.Dir.BaseDir,
OperestyDir: snap.OpenrestyDir,
BackupDataDir: global.Dir.LocalBackupDir,
}, "", "\t")
err = os.WriteFile(path.Join(targetDir, "snapshot.json"), remarkInfo, 0640)
@@ -327,6 +337,12 @@ func snapAppImage(snap snapHelper, req dto.SnapshotCreate, targetDir string) err
snap.Task.Log("---------------------- 3 / 8 ----------------------")
snap.Task.LogStart(i18n.GetMsgByKey("SnapInstallApp"))
var appInstalls []model.AppInstall
_ = snap.snapAgentDB.Where("1 = 1").Find(&appInstalls).Error
for _, item := range appInstalls {
_ = snap.snapAgentDB.Where("id = ?", item.ID).Updates(map[string]interface{}{"status": constant.StatusWaitingRestart}).Error
}
var imageList []string
existStr, _ := cmd.Exec("docker images | awk '{print $1\":\"$2}' | grep -v REPOSITORY:TAG")
existImages := strings.Split(existStr, "\n")
@@ -334,6 +350,9 @@ func snapAppImage(snap snapHelper, req dto.SnapshotCreate, targetDir string) err
for _, item := range app.Children {
if item.Label == "appImage" && item.IsCheck {
for _, existImage := range existImages {
if len(existImage) == 0 {
continue
}
if existImage == item.Name {
imageList = append(imageList, item.Name)
}
@@ -342,10 +361,10 @@ func snapAppImage(snap snapHelper, req dto.SnapshotCreate, targetDir string) err
}
}
snap.Task.Log(strings.Join(imageList, " "))
if len(imageList) != 0 {
snap.Task.Logf("docker save %s | gzip -c > %s", strings.Join(imageList, " "), path.Join(targetDir, "images.tar.gz"))
std, err := cmd.Execf("docker save %s | gzip -c > %s", strings.Join(imageList, " "), path.Join(targetDir, "images.tar.gz"))
snap.Task.LogWithStatus(i18n.GetMsgByKey("SnapDockerSave"), errors.New(std))
if err != nil {
snap.Task.LogFailedWithErr(i18n.GetMsgByKey("SnapDockerSave"), errors.New(std))
return errors.New(std)
@@ -421,25 +440,32 @@ func snapPanelData(snap snapHelper, req dto.SnapshotCreate, targetDir string) er
}
}
}
excludes = append(excludes, "./tmp")
excludes = append(excludes, "./cache")
excludes = append(excludes, "./uploads")
excludes = append(excludes, "./db")
excludes = append(excludes, "./resource")
excludes = append(excludes, "./tmp")
if !req.WithSystemLog {
excludes = append(excludes, "./log/1Panel*")
}
if !req.WithTaskLog {
excludes = append(excludes, "./log/AI")
excludes = append(excludes, "./log/AppStore")
excludes = append(excludes, "./log/Cronjob")
excludes = append(excludes, "./log/Image")
excludes = append(excludes, "./log/Compose")
excludes = append(excludes, "./log/Database")
excludes = append(excludes, "./log/RuntimeExtension")
excludes = append(excludes, "./log/Website")
excludes = append(excludes, "./log/App")
excludes = append(excludes, "./log/Snapshot")
excludes = append(excludes, "./log/AppStore")
excludes = append(excludes, "./log/Website")
}
rootDir := global.Dir.DataDir
if strings.Contains(global.Dir.LocalBackupDir, rootDir) {
excludes = append(excludes, "."+strings.ReplaceAll(global.Dir.LocalBackupDir, rootDir, ""))
}
if len(snap.OpenrestyDir) != 0 && strings.Contains(snap.OpenrestyDir, rootDir) {
excludes = append(excludes, "."+strings.ReplaceAll(snap.OpenrestyDir, rootDir, ""))
}
ignoreVal, _ := settingRepo.Get(settingRepo.WithByKey("SnapshotIgnore"))
rules := strings.Split(ignoreVal.Value, ",")
for _, ignore := range rules {
@@ -450,6 +476,16 @@ func snapPanelData(snap snapHelper, req dto.SnapshotCreate, targetDir string) er
}
err := snap.FileOp.TarGzCompressPro(false, rootDir, path.Join(targetDir, "1panel_data.tar.gz"), "", strings.Join(excludes, ";"))
snap.Task.LogWithStatus(i18n.GetMsgByKey("SnapCompressPanel"), err)
if err != nil {
return err
}
if len(snap.OpenrestyDir) != 0 {
err := snap.FileOp.TarGzCompressPro(false, snap.OpenrestyDir, path.Join(targetDir, "website.tar.gz"), "", "")
snap.Task.LogWithStatus(i18n.GetMsgByKey("SnapWebsite"), err)
if err != nil {
return err
}
}
return err
}
+37 -40
View File
@@ -1,13 +1,11 @@
package service
import (
"context"
"encoding/json"
"fmt"
"os"
"path"
"strings"
"sync"
"github.com/1Panel-dev/1Panel/agent/app/repo"
@@ -19,7 +17,6 @@ import (
"github.com/1Panel-dev/1Panel/agent/i18n"
"github.com/1Panel-dev/1Panel/agent/utils/cmd"
"github.com/1Panel-dev/1Panel/agent/utils/common"
"github.com/1Panel-dev/1Panel/agent/utils/compose"
"github.com/1Panel-dev/1Panel/agent/utils/files"
"github.com/pkg/errors"
)
@@ -160,6 +157,17 @@ func (u *SnapshotService) SnapshotRecover(req dto.SnapshotRecover) error {
itemHelper.Task.LogStart(i18n.GetWithName("RecoverPanelData", snap.Name))
err := itemHelper.FileOp.TarGzExtractPro(path.Join(rootDir, snap.Name, "/1panel_data.tar.gz"), path.Join(snapJson.BaseDir, "1panel"), "")
itemHelper.Task.LogWithStatus(i18n.GetMsgByKey("Decompress"), err)
if err != nil {
return err
}
if len(snapJson.OperestyDir) != 0 {
err := itemHelper.FileOp.TarGzExtractPro(path.Join(rootDir, snap.Name, "/website.tar.gz"), snapJson.OperestyDir, "")
itemHelper.Task.LogWithStatus(i18n.GetMsgByKey("RecoverWebsite"), err)
if err != nil {
return err
}
}
return err
},
nil,
@@ -219,11 +227,24 @@ func backupBeforeRecover(name string, itemHelper *snapRecoverHelper) error {
if err != nil {
return err
}
err = itemHelper.FileOp.CopyDirWithExclude(global.Dir.LocalBackupDir, rootDir, []string{"system_snapshot"})
itemHelper.Task.LogWithStatus(i18n.GetWithName("SnapCopy", global.Dir.LocalBackupDir), err)
if err != nil {
return err
openrestyDir, _ := settingRepo.GetValueByKey("WEBSITE_DIR")
if len(openrestyDir) != 0 && !strings.Contains(openrestyDir, global.Dir.DataDir) {
err := itemHelper.FileOp.CopyDirWithExclude(openrestyDir, rootDir, nil)
itemHelper.Task.LogWithStatus(i18n.GetWithName("SnapCopy", openrestyDir), err)
if err != nil {
return err
}
}
if len(global.Dir.LocalBackupDir) != 0 && !strings.Contains(global.Dir.LocalBackupDir, global.Dir.DataDir) {
err = itemHelper.FileOp.CopyDirWithExclude(global.Dir.LocalBackupDir, rootDir, []string{"system_snapshot"})
itemHelper.Task.LogWithStatus(i18n.GetWithName("SnapCopy", global.Dir.LocalBackupDir), err)
if err != nil {
return err
}
}
err = itemHelper.FileOp.CopyFile("/usr/local/bin/1pctl", baseDir)
itemHelper.Task.LogWithStatus(i18n.GetWithName("SnapCopy", "/usr/local/bin/1pctl"), err)
if err != nil {
@@ -235,19 +256,17 @@ func backupBeforeRecover(name string, itemHelper *snapRecoverHelper) error {
if err != nil {
return err
}
}
err = itemHelper.FileOp.CopyFile("/usr/local/bin/1panel-agent", baseDir)
itemHelper.Task.LogWithStatus(i18n.GetWithName("SnapCopy", "/usr/local/bin/1panel-agent"), err)
if err != nil {
return err
}
if global.IsMaster {
err = itemHelper.FileOp.CopyFile("/etc/systemd/system/1panel-core.service", baseDir)
itemHelper.Task.LogWithStatus(i18n.GetWithName("SnapCopy", "/etc/systemd/system/1panel-core.service"), err)
if err != nil {
return err
}
}
err = itemHelper.FileOp.CopyFile("/usr/local/bin/1panel-agent", baseDir)
itemHelper.Task.LogWithStatus(i18n.GetWithName("SnapCopy", "/usr/local/bin/1panel-agent"), err)
if err != nil {
return err
}
err = itemHelper.FileOp.CopyFile("/etc/systemd/system/1panel-agent.service", baseDir)
itemHelper.Task.LogWithStatus(i18n.GetWithName("SnapCopy", "/etc/systemd/system/1panel-agent.service"), err)
if err != nil {
@@ -294,35 +313,13 @@ func recoverAppData(src string, itemHelper *snapRecoverHelper) error {
if _, err := os.Stat(path.Join(src, "images.tar.gz")); err != nil {
itemHelper.Task.Log(i18n.GetMsgByKey("RecoverAppEmpty"))
return nil
} else {
std, err := cmd.Execf("docker load < %s", path.Join(src, "images.tar.gz"))
if err != nil {
itemHelper.Task.LogFailedWithErr(i18n.GetMsgByKey("RecoverAppImage"), errors.New(std))
return fmt.Errorf("docker load images failed, err: %v", err)
}
itemHelper.Task.LogSuccess(i18n.GetMsgByKey("RecoverAppImage"))
}
appInstalls, err := appInstallRepo.ListBy(context.Background())
itemHelper.Task.LogWithStatus(i18n.GetMsgByKey("RecoverAppList"), err)
std, err := cmd.Execf("docker load < %s", path.Join(src, "images.tar.gz"))
if err != nil {
return err
itemHelper.Task.LogFailedWithErr(i18n.GetMsgByKey("RecoverAppImage"), errors.New(std))
return fmt.Errorf("docker load images failed, err: %v", err)
}
var wg sync.WaitGroup
for i := 0; i < len(appInstalls); i++ {
wg.Add(1)
appInstalls[i].Status = constant.StatusRebuilding
_ = appInstallRepo.Save(context.Background(), &appInstalls[i])
go func(app model.AppInstall) {
defer wg.Done()
dockerComposePath := app.GetComposePath()
_, _ = compose.Up(dockerComposePath)
app.Status = constant.StatusRunning
_ = appInstallRepo.Save(context.Background(), &app)
}(appInstalls[i])
}
wg.Wait()
itemHelper.Task.LogSuccess(i18n.GetMsgByKey("RecoverAppImage"))
return nil
}
+10
View File
@@ -89,6 +89,16 @@ func (u *SnapshotService) SnapshotRollback(req dto.SnapshotRecover) error {
},
nil,
)
openrestyDir, _ := settingRepo.GetValueByKey("WEBSITE_DIR")
if len(openrestyDir) != 0 {
taskItem.AddSubTask(
i18n.GetWithName("SnapCopy", openrestyDir),
func(t *task.Task) error {
return FileOp.CopyDir(path.Join(rootDir, "www"), openrestyDir)
},
nil,
)
}
taskItem.AddSubTask(
i18n.GetWithName("SnapCopy", global.Dir.BaseDir),
func(t *task.Task) error {
+34 -33
View File
@@ -1,39 +1,40 @@
package constant
const (
StatusRunning = "Running"
StatusCanceled = "Canceled"
StatusDone = "Done"
StatusWaiting = "Waiting"
StatusSuccess = "Success"
StatusFailed = "Failed"
StatusUploading = "Uploading"
StatusEnable = "Enable"
StatusDisable = "Disable"
StatusNone = "None"
StatusDeleted = "Deleted"
StatusExecuting = "Executing"
StatusBuilding = "Building"
StatusReCreating = "Recreating"
StatusStopped = "Stopped"
StatusCreating = "Creating"
StatusStartErr = "StartErr"
StatusNormal = "Normal"
StatusError = "Error"
StatusStarting = "Starting"
StatusRestarting = "ReStarting"
StatusUnHealthy = "UnHealthy"
StatusInstalling = "Installing"
StatusDownloadErr = "DownloadErr"
StatusUpgrading = "Upgrading"
StatusUpgradeErr = "UpgradeErr"
StatusRebuilding = "Rebuilding"
StatusSyncing = "Syncing"
StatusSyncSuccess = "SyncSuccess"
StatusPaused = "Paused"
StatusUpErr = "UpErr"
StatusInstallErr = "InstallErr"
StatusUninstalling = "Uninstalling"
StatusRunning = "Running"
StatusCanceled = "Canceled"
StatusDone = "Done"
StatusWaiting = "Waiting"
StatusSuccess = "Success"
StatusFailed = "Failed"
StatusUploading = "Uploading"
StatusEnable = "Enable"
StatusDisable = "Disable"
StatusNone = "None"
StatusDeleted = "Deleted"
StatusExecuting = "Executing"
StatusBuilding = "Building"
StatusReCreating = "Recreating"
StatusStopped = "Stopped"
StatusCreating = "Creating"
StatusStartErr = "StartErr"
StatusNormal = "Normal"
StatusError = "Error"
StatusStarting = "Starting"
StatusRestarting = "ReStarting"
StatusUnHealthy = "UnHealthy"
StatusInstalling = "Installing"
StatusDownloadErr = "DownloadErr"
StatusUpgrading = "Upgrading"
StatusUpgradeErr = "UpgradeErr"
StatusRebuilding = "Rebuilding"
StatusSyncing = "Syncing"
StatusSyncSuccess = "SyncSuccess"
StatusPaused = "Paused"
StatusUpErr = "UpErr"
StatusInstallErr = "InstallErr"
StatusUninstalling = "Uninstalling"
StatusWaitingRestart = "WaitingRestart"
OrderDesc = "descending"
OrderAsc = "ascending"
+378 -335
View File
@@ -1,379 +1,422 @@
ErrInvalidParams: "Request parameter error: {{ .detail }}"
ErrInternalServer: "Service internal error: {{ .detail }}"
ErrRecordExist: "Record already exists"
ErrRecordNotFound: "Records not found"
ErrStructTransform: "Type conversion failure: {{ .detail }}"
ErrNotSupportType: "The system does not support the current type: {{ .detail }}"
ErrInvalidParams: 'Request parameter error: {{ .detail }}'
ErrTokenParse: 'Token generation error: {{ .detail }}'
ErrInitialPassword: 'Original password is incorrect'
ErrInternalServer: 'Internal server error: {{ .detail }}'
ErrRecordExist: 'Record already exists'
ErrRecordNotFound: 'Record not found'
ErrStructTransform: 'Type conversion failed: {{ .err }}'
ErrNotLogin: 'User not logged in: {{ .detail }}'
ErrPasswordExpired: 'The current password has expired: {{ .detail }}'
ErrNotSupportType: 'The system does not support the current type: {{ .name }}'
ErrProxy: 'Request error, please check the node status: {{ .detail }}'
ErrApiConfigStatusInvalid: 'Access to the API interface is prohibited: {{ .detail }}'
ErrApiConfigKeyInvalid: 'API interface key error: {{ .detail }}'
ErrApiConfigIPInvalid: 'The IP used to call the API interface is not in the whitelist: {{ .detail }}'
ErrApiConfigDisable: 'This interface prohibits the use of API interface calls: {{ .detail }}'
ErrApiConfigKeyTimeInvalid: 'API interface timestamp error: {{ .detail }}'
#common
ErrUsernameIsExist: "Username already exists"
ErrNameIsExist: "Name is already exist"
ErrDemoEnvironment: "Demo server, prohibit this operation!"
ErrCmdTimeout: "Command execution timed out"
ErrCmdIllegal: "The command contains illegal characters. Please modify and try again!"
ErrPortExist: "{{ .port }} port is already occupied by {{ .type }} [{{ .name }}]"
TYPE_APP: "Application"
TYPE_RUNTIME: "Runtime environment"
TYPE_DOMAIN: "Domain name"
ErrTypePort: "Port {{ .name }} format error"
Success: "Success"
Failed: "Failed"
SystemRestart: "System restart causes task interruption"
ErrGroupIsDefault: "Default group, cannot be deleted"
ErrGroupIsInWebsiteUse: "Group is being used by other websites, cannot be deleted"
ErrUsernameIsExist: 'Username already exists'
ErrNameIsExist: 'Name already exists'
ErrDemoEnvironment: 'Demo server, this operation is forbidden!'
ErrCmdTimeout: 'Command execution timed out!'
ErrCmdIllegal: 'There are illegal characters in the execution command, please modify it and try again!'
ErrPortExist: '{{ .port }} port is already occupied by {{ .type }} [{{ .name }}]'
TYPE_APP: 'Application'
TYPE_RUNTIME: 'Runtime environment'
TYPE_DOMAIN: 'Domain Name'
ErrTypePort: 'Port {{ .name }} format is incorrect'
ErrTypePortRange: 'The port range needs to be between 1-65535'
Success: 'Success'
Failed: 'Failed'
SystemRestart: 'Task interrupted due to system restart'
ErrGroupIsDefault: 'Default group, cannot be deleted'
ErrGroupIsInWebsiteUse: 'The group is being used by another website and cannot be deleted.'
#backup
ErrBackupLocalDelete: "Deleting local server backup accounts is not currently supported."
ErrBackupLocalCreate: "Creating local server backup accounts is not currently supported."
ErrBackupInUsed: 'The backup account has been used in the scheduled task and cannot be deleted.'
ErrBackupCheck: 'Backup account test connection failed {{ .err }}'
ErrBackupLocalDelete: 'Deleting the local server backup account is not supported yet'
ErrBackupLocalCreate: 'Creating local server backup accounts is not supported yet'
#app
ErrPortInUsed: "{{ .detail }} port already in use"
ErrAppLimit: "App exceeds install limit"
ErrAppRequired: "{{ .detail }} app is required"
ErrNotInstall: "App not installed"
ErrPortInOtherApp: "{{ .port }} port already in use by app {{ .apps }}"
ErrDbUserNotValid: "Stock database, username and password do not match"
ErrDockerComposeNotValid: "docker-compose file format error!"
ErrUpdateBuWebsite: "The application was updated successfully, but the modification of the website configuration file failed, please check the configuration!"
Err1PanelNetworkFailed: "Default container network creation failed! {{ .detail }}"
ErrFileParse: "Application docker-compose file parsing failed!"
ErrInstallDirNotFound: "The installation directory does not exist. To uninstall it, please choose to force uninstall."
AppStoreIsUpToDate: "The app store is already up to date"
LocalAppVersionNull: "The {{.name}} app is not synced to version! Could not add to application list"
LocalAppVersionErr: "{{.name}} failed to sync version {{.version}}! {{.err}}"
ErrFileNotFound: "{{.name}} file does not exist"
ErrFileParseApp: "Failed to parse {{.name}} file {{.err}}"
ErrAppDirNull: "version folder does not exist"
LocalAppErr: "App {{.name}} sync failed! {{.err}}"
ErrContainerName: "ContainerName is already exist"
ErrAppSystemRestart: "1Panel restart causes the task to terminate"
ErrCreateHttpClient: "Failed to create HTTP request {{.err}}"
ErrHttpReqTimeOut: "Request timed out {{.err}}"
ErrHttpReqFailed: "Request failed {{.err}}"
ErrHttpReqNotFound: "The file does not exist"
ErrNoSuchHost: "Network connection failed"
ErrImagePullTimeOut: "Image pull timeout"
ErrContainerNotFound: "{{ .name }} container does not exist"
ErrContainerMsg: "{{ .name }} container is abnormal, please check the log on the container page for details"
ErrAppBackup: "{{ .name }} application backup failed err {{.err}}"
ErrImagePull: "{{ .name }} image pull failed err {{.err}}"
ErrVersionTooLow: "The current 1Panel version is too low to update the app store, please upgrade the version"
ErrAppNameExist: "App name is already exist"
AppStoreIsSyncing: "The App Store is syncing, please try again later"
ErrGetCompose: "Failed to obtain docker-compose.yml file! {{ .detail }}"
ErrAppWarn: "Abnormal status, please check the log"
ErrAppParamKey: "Parameter {{ .name }} field exception"
ErrAppUpgrade: "Failed to upgrade application {{ .name }} {{ .err }}"
AppRecover: "App {{ .name }} rolled back "
PullImageStart: "Start pulling image {{ .name }}"
PullImageSuccess: "Image pulled successfully"
UpgradeAppStart: "Start upgrading application {{ .name }}"
UpgradeAppSuccess: "App {{ .name }} upgraded successfully"
AppStoreIsLastVersion: "The app store is up to date"
AppStoreSyncSuccess: "App store synchronized successfully"
SyncAppDetail: "Synchronize app configuration"
AppVersionNotMatch: "{{ .name }} app requires an update to 1Panel, skipping synchronization"
MoveSiteDir: "The current upgrade requires migrating the OpenResty website directory"
MoveSiteToDir: "Migrate the website directory to {{ .name }}"
ErrMoveSiteDir: "Failed to migrate the website directory"
MoveSiteDirSuccess: "Successfully migrated the website directory"
DeleteRuntimePHP: "Delete PHP runtime environment",
CustomAppStoreNotConfig: "Please configure the offline package address in the app store settings",
CustomAppStoreNotFound: "Failed to retrieve app store package, please check if it exists",
CustomAppStoreFileValid: "App store package must be in .tar.gz format"
PullImageTimeout: "Image pull timeout, please check the network and try again"
ErrAppIsDown: "{{ .name }} application status is abnormal, please check"
ErrPortInUsed: '{{ .detail }} port is already occupied!'
ErrAppLimit: 'The number of applications installed has exceeded the limit'
ErrAppRequired: 'Please install the {{ .detail }} application first'
ErrNotInstall: 'Application not installed'
ErrPortInOtherApp: '{{ .port }} port is already occupied by application {{ .apps }}!'
ErrDbUserNotValid: 'Existing database, username and password do not match!'
ErrDockerComposeNotValid: 'The docker-compose file format is incorrect'
ErrUpdateBuWebsite: 'The application was updated successfully, but the website configuration file modification failed. Please check the configuration! '
Err1PanelNetworkFailed: 'Default container network creation failed! {{ .detail }}'
ErrFileParse: 'Application docker-compose file parsing failed!'
ErrInstallDirNotFound: 'The installation directory does not exist. If you need to uninstall, please select Force Uninstall'
AppStoreIsUpToDate: 'The app store is already the latest version'
LocalAppVersionNull: '{{ .name }} application is not synchronized to the version! Cannot be added to the application list'
LocalAppVersionErr: '{{ .name }} sync version {{ .version }} failed! {{ .err }}'
ErrFileNotFound: '{{ .name }} file does not exist'
ErrFileParseApp: '{{ .name }} file parsing failed {{ .err }}'
ErrAppDirNull: 'The version folder does not exist'
LocalAppErr: 'Application {{ .name }} sync failed! {{ .err }}'
ErrContainerName: 'Container name already exists'
ErrAppSystemRestart: '1Panel restart caused the task to terminate'
ErrCreateHttpClient: 'Failed to create request {{ .err }}'
ErrHttpReqTimeOut: 'Request timed out {{ .err }}'
ErrHttpReqFailed: 'Request failed {{ .err }}'
ErrNoSuchHost: 'Unable to find the requested server {{ .err }}'
ErrHttpReqNotFound: 'The requested resource {{ .err }} could not be found'
ErrImagePullTimeOut: 'Image pull timeout'
ErrContainerNotFound: '{{ .name }} container does not exist'
ErrContainerMsg: '{{ .name }} container is abnormal. Please check the log on the container page for details'
ErrAppBackup: '{{ .name }} application backup failed {{ .err }}'
ErrImagePull: 'Image pull failed {{ .err }}'
ErrVersionTooLow: 'The current 1Panel version is too low to update the App Store. Please upgrade the version before operating.'
ErrAppNameExist: 'The application name already exists'
AppStoreIsSyncing: 'The App Store is syncing, please try again later'
ErrGetCompose: 'Failed to obtain the docker-compose.yml file! {{ .detail }}'
ErrAppWarn: 'Abnormal status, please check the log'
ErrAppParamKey: 'Parameter {{ .name }} field is abnormal'
ErrAppUpgrade: 'Application {{ .name }} upgrade failed {{ .err }}'
AppRecover: 'Rollback application {{ .name }}'
PullImageStart: 'Start pulling image {{ .name }}'
PullImageSuccess: 'Image pull successful'
UpgradeAppStart: 'Start upgrading application {{ .name }}'
UpgradeAppSuccess: 'Application {{ .name }} upgraded successfully'
AppStoreIsLastVersion: 'The App Store is already the latest version'
AppStoreSyncSuccess: 'App Store synchronization successful'
SyncAppDetail: 'Synchronize application configuration'
AppVersionNotMatch: '{{ .name }} application requires a higher 1Panel version, skipping synchronization'
MoveSiteDir: 'The current upgrade requires migration of the OpenResty website directory'
MoveSiteToDir: 'Migrate site directory to {{ .name }}'
ErrMoveSiteDir: 'Failed to migrate site directory'
MoveSiteDirSuccess: 'Successful migration of website directory'
DeleteRuntimePHP: 'Delete PHP runtime'
CustomAppStoreNotConfig: 'Please set the offline package address in the app store'
CustomAppStoreNotFound: 'Failed to obtain the app store package, please check whether it exists'
CustomAppStoreFileValid: 'App store packages need to be in .tar.gz format'
PullImageTimeout: 'Pull image timeout, please try to increase the image acceleration or change to another image acceleration'
ErrAppIsDown: '{{ .name }} application status is abnormal, please check'
ErrCustomApps: 'There is an installed application, please uninstall it first'
ErrCustomRuntimes: 'There is an installed runtime environment, please delete it first'
#file
ErrFileCanNotRead: "File can not read"
ErrFileToLarge: "file is too large"
ErrPathNotFound: "Path is not found"
ErrMovePathFailed: "The target path cannot contain the original path!"
ErrLinkPathNotFound: "Target path does not exist!"
ErrFileIsExist: "File or directory already exists!"
ErrFileUpload: "Failed to upload file {{.name}} {{.detail}}"
ErrFileDownloadDir: "Download folder not supported"
ErrCmdNotFound: "{{ .name}} command does not exist, please install this command on the host first"
ErrSourcePathNotFound: "Source directory does not exist"
ErrFavoriteExist: "This path has been collected"
ErrInvalidChar: "Illegal characters are prohibited"
ErrPathNotDelete: "The selected directory cannot be deleted"
ErrFileCanNotRead: 'This file does not support preview'
ErrFileToLarge: 'The file is larger than 10M and cannot be opened'
ErrPathNotFound: 'Directory does not exist'
ErrMovePathFailed: 'The target path cannot contain the original path!'
ErrLinkPathNotFound: 'The target path does not exist!'
ErrFileIsExist: 'The file or folder already exists!'
ErrFileUpload: '{{ .name }} failed to upload file {{ .detail }}'
ErrFileDownloadDir: 'Download folder is not supported'
ErrCmdNotFound: '{{ .name}} command does not exist, please install this command on the host first'
ErrSourcePathNotFound: 'Source directory does not exist'
ErrFavoriteExist: 'This path has already been favorited'
ErrInvalidChar: 'Illegal characters are not allowed'
ErrPathNotDelete: 'The selected directory cannot be deleted'
#website
ErrDomainIsExist: "Domain is already exist"
ErrAliasIsExist: "Alias is already exist"
ErrAppDelete: "Other Website use this App"
ErrGroupIsUsed: "The group is in use and cannot be deleted"
ErrBackupMatch: "the backup file does not match the current partial data of the website: {{ .detail}}"
ErrBackupExist: "the backup file corresponds to a portion of the original data that does not exist: {{ .detail}}"
ErrPHPResource: "The local runtime does not support switching"
ErrPathPermission: "A folder with non-1000:1000 permissions was detected in the index directory, which may cause an Access denied error when accessing the website. Please click the save button above"
ErrDomainIsUsed: "Domain is already used by website {{ .name }}"
ErrDomainFormat: "{{ .name }} domain format error"
ErrDefaultAlias: "default is a reserved code name, please use another code name"
ErrParentWebsite: "You need to delete the subsite(s) {{ .name }} first"
ErrBuildDirNotFound: "Build directory does not exist"
ErrImageNotExist: "Running environment {{.name}} image does not exist, please re-edit the running environment"
ErrDomainIsExist: 'Domain name already exists'
ErrAliasIsExist: 'Alias already exists'
ErrAppDelete: 'Other websites use this app and cannot delete it'
ErrBackupMatch: 'The backup file does not match some of the current website data {{ .detail }}'
ErrBackupExist: 'The corresponding part of the source data in the backup file does not exist {{ .detail }}'
ErrPHPResource: 'The local operating environment does not support switching! '
ErrPathPermission: 'A folder with non-1000:1000 permissions was detected in the index directory, which may cause an Access denied error on the website. Please click the Save button above'
ErrDomainIsUsed: 'The domain name is already used by the website [{{ .name }}]'
ErrDomainFormat: '{{ .name }} domain name format is incorrect'
ErrDefaultAlias: 'default is a reserved code, please use another code'
ErrParentWebsite: 'You need to delete the subsite {{ .name }} first'
ErrBuildDirNotFound: 'The build directory does not exist'
ErrImageNotExist: 'The operating environment {{ .name }} image does not exist, please re-edit the operating environment'
#ssl
ErrSSLCannotDelete: "The certificate {{ .name }} is being used by the website and cannot be removed"
ErrAccountCannotDelete: "The certificate associated with the account cannot be deleted"
ErrSSLApply: "The certificate continues to be signed successfully, but openresty reload fails, please check the configuration"
ErrEmailIsExist: "Email is already exist"
ErrSSLKeyNotFound: "The private key file does not exist"
ErrSSLCertificateNotFound: "The certificate file does not exist"
ErrSSLKeyFormat: "Private key file verification error"
ErrSSLCertificateFormat: "Certificate file format error, please use pem format"
ErrEabKidOrEabHmacKeyCannotBlank: "EabKid or EabHmacKey cannot be empty"
ErrOpenrestyNotFound: "Http mode requires Openresty to be installed first"
ApplySSLStart: "Start applying for certificate, domain name [{{ .domain }}] application method [{{ .type }}] "
dnsAccount: "DNS Automatic"
dnsManual: "DNS Manual"
http: "HTTP"
ApplySSLFailed: "Application for [{{ .domain }}] certificate failed, {{.detail}} "
ApplySSLSuccess: "Application for [{{ .domain }}] certificate successful! ! "
DNSAccountName: "DNS account [{{ .name }}] manufacturer [{{.type}}]"
PushDirLog: "Certificate pushed to directory [{{ .path }}] {{ .status }}"
ErrDeleteCAWithSSL: "There is an issued certificate under the current organization and cannot be deleted"
ErrDeleteWithPanelSSL: "Panel SSL configuration uses this certificate and cannot be deleted"
ErrDefaultCA: "The default organization cannot be deleted"
ApplyWebSiteSSLLog: "Start updating {{ .name }} website certificate"
ErrUpdateWebsiteSSL: "{{ .name }} website failed to update certificate: {{ .err }}"
ApplyWebSiteSSLSuccess: "Update website certificate successfully"
StartUpdateSystemSSL: "Start updating system certificate"
UpdateSystemSSLSuccess: "Update system certificate successfully"
ErrExecShell: "Exec Shell err {{.err}}"
ExecShellStart: "Start executing script"
ExecShellSuccess: "Script executed successfully"
ErrSSLCannotDelete: 'The {{ .name }} certificate is being used by a website and cannot be deleted'
ErrAccountCannotDelete: 'The account is associated with a certificate and cannot be deleted'
ErrSSLApply: 'Certificate renewal successful, openresty reload failed, please check the configuration!'
ErrEmailIsExist: 'The mailbox already exists'
ErrSSLKeyNotFound: 'The private key file does not exist'
ErrSSLCertificateNotFound: 'The certificate file does not exist'
ErrSSLKeyFormat: 'Private key file verification failed'
ErrSSLCertificateFormat: 'The certificate file format is incorrect, please use pem format'
ErrEabKidOrEabHmacKeyCannotBlank: 'EabKid or EabHmacKey cannot be blank'
ErrOpenrestyNotFound: 'Http mode requires Openresty to be installed first'
ApplySSLStart: 'Start applying for a certificate, domain name [{{ .domain }}] application method [{{ .type }}] '
dnsAccount: 'DNS Auto'
dnsManual: 'DNS Manual'
http: 'HTTP'
ApplySSLFailed: 'Application for [{{ .domain }}] certificate failed, {{ .detail }} '
ApplySSLSuccess: 'Apply for [{{ .domain }}] certificate successfully! !'
DNSAccountName: 'DNS account [{{ .name }}] vendor [{{ .type }}]'
PushDirLog: 'Certificate pushed to directory [{{ .path }}] {{ .status }}'
ErrDeleteCAWithSSL: 'The current organization has a certificate that has been issued and cannot be deleted.'
ErrDeleteWithPanelSSL: 'Panel SSL configuration uses this certificate and cannot be deleted'
ErrDefaultCA: 'The default authority cannot be deleted'
ApplyWebSiteSSLLog: 'Starting to renew the {{ .name }} website certificate'
ErrUpdateWebsiteSSL: '{{ .name }} website certificate update failed: {{ .err }}'
ApplyWebSiteSSLSuccess: 'Update website certificate successfully'
ErrExecShell: 'Failed to execute script {{ .err }}'
ExecShellStart: 'Start executing the script'
ExecShellSuccess: 'Script execution successful'
StartUpdateSystemSSL: 'Start updating system certificate'
UpdateSystemSSLSuccess: 'Update system certificate successfully'
ErrWildcardDomain: 'Unable to apply for wildcard domain name certificate in HTTP mode'
#mysql
ErrUserIsExist: "The current user already exists. Please enter a new user"
ErrDatabaseIsExist: "The current database already exists. Please enter a new database"
ErrExecTimeOut: "SQL execution timed out, please check the database"
ErrRemoteExist: "The remote database already exists with that name, please modify it and try again"
ErrLocalExist: "The local database already exists with that name, please modify it and try again"
ErrUserIsExist: 'The current user already exists, please re-enter'
ErrDatabaseIsExist: 'The current database already exists, please re-enter'
ErrExecTimeOut: 'SQL execution timed out, please check the database'
ErrRemoteExist: 'The remote database already exists with this name, please modify it and try again'
ErrLocalExist: 'The name already exists in the local database, please modify it and try again'
#redis
ErrTypeOfRedis: "The recovery file type does not match the current persistence mode. Modify the file type and try again"
ErrTypeOfRedis: 'The recovery file type does not match the current persistence method, please modify it and try again'
#container
ErrInUsed: "{{ .detail }} is in use and cannot be deleted"
ErrObjectInUsed: "This object is in use and cannot be deleted"
ErrObjectBeDependent: "This image is dependent on other images and can't be deleted"
ErrPortRules: "The number of ports does not match, please re-enter!"
ErrPgImagePull: "Image pull timeout. Please configure image acceleration or manually pull the postgres:16.0-alpine image and try again"
ErrInUsed: '{{ .detail }} is in use and cannot be deleted'
ErrObjectInUsed: 'The object is in use and cannot be deleted'
ErrObjectBeDependent: 'This image depends on other images and cannot be deleted'
ErrPortRules: 'Port number does not match, please re-enter!'
ErrPgImagePull: 'Image pull timed out, please configure image acceleration or manually pull the {{ .name }} image and try again'
#runtime
ErrDirNotFound: "The build folder does not exist! Please check file integrity"
ErrFileNotExist: "{{ .detail }} file does not exist! Please check source file integrity"
ErrImageBuildErr: "Image build failed"
ErrImageExist: "Image is already exist"
ErrDelWithWebsite: "The operating environment has been associated with a website and cannot be deleted"
ErrRuntimeStart: "Failed to start"
ErrPackageJsonNotFound: "package.json file does not exist"
ErrScriptsNotFound: "No scripts configuration item was found in package.json"
ErrContainerNameNotFound: "Unable to get container name, please check .env file"
ErrNodeModulesNotFound: "The node_modules folder does not exist! Please edit the running environment or wait for the running environment to start successfully"
ErrContainerNameIsNull: "Container name cannot be empty"
#setting
ErrBackupInUsed: "The backup account is already being used in a cronjob and cannot be deleted."
ErrBackupCheck: "Backup account test connection failed {{ .err}}"
ErrOSSConn: "Unable to retrieve the latest version, please check if the server can connect to the external network."
ErrEntrance: "Security entrance information error. Please check and try again!"
ErrDirNotFound: 'The build folder does not exist! Please check the file integrity!'
ErrFileNotExist: '{{ .detail }} file does not exist! Please check the integrity of the source file!'
ErrImageBuildErr: 'Image build failed'
ErrImageExist: 'Image already exists!'
ErrDelWithWebsite: 'The operating environment is already associated with a website and cannot be deleted'
ErrRuntimeStart: 'Startup failed'
ErrPackageJsonNotFound: 'package.json file does not exist'
ErrScriptsNotFound: 'The scripts configuration item was not found in package.json'
ErrContainerNameNotFound: 'Unable to get container name, please check .env file'
ErrNodeModulesNotFound: 'The node_modules folder does not exist! Please edit the runtime environment or wait for the runtime environment to start successfully'
ErrContainerNameIsNull: 'Container name does not exist'
#tool
ErrConfigNotFound: "Configuration file does not exist"
ErrConfigParse: "Configuration file format error"
ErrConfigIsNull: "The configuration file is not allowed to be empty"
ErrConfigDirNotFound: "The running directory does not exist"
ErrConfigAlreadyExist: "A configuration file with the same name already exists"
ErrUserFindErr: "Failed to find user {{ .name }} {{ .err }}"
ErrConfigNotFound: 'Configuration file does not exist'
ErrConfigParse: 'The configuration file format is incorrect'
ErrConfigIsNull: 'Configuration file cannot be empty'
ErrConfigDirNotFound: 'The running directory does not exist'
ErrConfigAlreadyExist: 'A configuration file with the same name already exists'
ErrUserFindErr: 'User {{ .name }} search failed {{ .err }}'
#ssh
ErrFirewallNone: "No firewalld or ufw service detected on the system. Please check and try again!"
ErrFirewallBoth: "Both firewalld and ufw services are detected on the system. To avoid conflicts, please uninstall one and try again!"
ErrFirewallNone: 'No system firewalld or ufw service detected, please check and try again!'
ErrFirewallBoth: 'It is detected that the system has both firewalld and ufw services. To avoid conflicts, please uninstall and try again!'
#cronjob
ErrCutWebsiteLog: "{{ .name }} website log cutting failed, error {{ .err }}"
CutWebsiteLogSuccess: "{{ .name }} website log cut successfully, backup path {{ .path }}"
HandleShell: "Execute script {{ .name }}"
HandleNtpSync: "System time synchronization"
HandleSystemClean: "System cache cleanup"
ErrCutWebsiteLog: '{{ .name }} website log cutting failed, error {{ .err }}'
CutWebsiteLogSuccess: '{{ .name }} website log cut successfully, backup path {{ .path }}'
HandleShell: 'Execute script {{ .name }}'
HandleNtpSync: 'System time synchronization'
HandleSystemClean: 'System cache cleanup'
#toolbox
ErrNotExistUser: "The current user does not exist. Please modify and retry!"
ErrBanAction: "Setting failed, the current {{ .name }} service is unavailable, please check and try again!"
ErrClamdscanNotFound: "The clamdscan command was not detected, please refer to the documentation to install it!"
ErrNotExistUser: 'The current user does not exist, please modify and try again!'
ErrBanAction: 'Setting failed. The current {{ .name }} service is unavailable. Please check and try again!'
ErrClamdscanNotFound: 'The clamdscan command was not detected, please refer to the documentation to install it!'
#waf
ErrScope: "Modification of this configuration is not supported"
ErrStateChange: "State modification failed"
ErrRuleExist: "Rule is Exist"
ErrRuleNotExist: "Rule is not Exist"
ErrParseIP: "IP format error"
ErrDefaultIP: "default is a reserved name, please change it to another name"
ErrGroupInUse: "The IP group is used by the black/white list and cannot be deleted"
ErrGroupExist: "IP group name already exists"
ErrIPRange: "Wrong IP range"
ErrIPExist: "IP is exit"
urlDefense: 'URL Rules'
urlHelper: 'Forbidden Access URLs'
dirFilter: 'Directory Filtering'
ErrScope: 'Modifying this configuration is not supported'
ErrStateChange: 'State change failed'
ErrRuleExist: 'Rule already exists'
ErrRuleNotExist: 'Rule does not exist'
ErrParseIP: 'Wrong IP format'
ErrDefaultIP: 'default is a reserved name, please change it to another name'
ErrGroupInUse: 'IP group is used by blacklist/whitelist and cannot be deleted'
ErrGroupExist: 'IP group name already exists'
ErrIPRange: 'Wrong IP range'
ErrIPExist: 'IP already exists'
urlDefense: 'URL rules'
urlHelper: 'Prohibited URL'
dirFilter: 'Directory filter'
xss: 'XSS'
phpExec: 'PHP Script Execution'
oneWordTrojan: 'One-Liner Trojan'
appFilter: 'Application Dangerous Directory Filtering'
phpExec: 'PHP script execution'
oneWordTrojan: 'One Word Trojan'
appFilter: 'Apply dangerous directory filtering'
webshell: 'Webshell'
args: 'Parameter Rules'
protocolFilter: 'Protocol Filtering'
javaFileter: 'Java Dangerous File Filtering'
scannerFilter: 'Scanner Filtering'
escapeFilter: 'Escape Filtering'
customRule: 'Custom Rules'
httpMethod: 'HTTP Method Filtering'
fileExt: 'File Upload Restrictions'
defaultIpBlack: 'Malicious IP Group'
args: 'Parameter rules'
protocolFilter: 'Protocol filtering'
javaFileter: 'Java dangerous file filter'
scannerFilter: 'Scanner filter'
escapeFilter: 'escape filter'
customRule: 'Custom rule'
httpMethod: 'HTTP method filtering'
fileExt: 'File upload restrictions'
defaultIpBlack: 'Malicious IP group'
cookie: 'Cookie Rules'
urlBlack: 'URL Blacklist'
uaBlack: 'User-Agent Blacklist'
attackCount: 'Attack Frequency Limit'
fileExtCheck: 'File Upload Restrictions'
geoRestrict: 'Geographical Access Restrictions'
unknownWebsite: 'Unauthorized Domain Access'
notFoundCount: '404 Frequency Limit'
headerDefense: 'Header Rules'
defaultUaBlack: 'User-Agent Rules'
methodWhite: 'HTTP Rules'
captcha: 'Captcha'
fiveSeconds: '5 Seconds Verification'
vulnCheck: 'Supplementary Rules'
acl: 'Custom Rules'
sql: 'SQL Injection'
cc: 'Access Frequency Limit'
defaultUrlBlack: 'URL Rules'
sqlInject: 'SQL Injection'
ErrDBNotExist: "Database does not exist"
allow: "Allow"
deny: "Deny"
urlBlack: 'URL blacklist'
uaBlack: 'User-Agent blacklist'
attackCount: 'Attack frequency limit'
fileExtCheck: 'File upload restrictions'
geoRestrict: 'Regional access restrictions'
unknownWebsite: 'Unauthorized domain name access'
notFoundCount: '404 Rate Limit'
headerDefense: 'Header rules'
defaultUaBlack: 'User-Agent rules'
methodWhite: 'HTTP rules'
captcha: 'human-machine verification'
fiveSeconds: '5 seconds verification'
vulnCheck: 'Supplementary rules'
acl: 'Custom rules'
sql: 'SQL injection'
cc: 'Access frequency limit'
defaultUrlBlack: 'URL rules'
sqlInject: 'SQL injection'
ErrDBNotExist: 'Database does not exist'
allow: 'allow'
deny: 'deny'
OpenrestyNotFound: 'Openresty is not installed'
#task
TaskStart: "{{.name}} Start [START]"
TaskEnd: "{{.name}} End [COMPLETED]"
TaskFailed: "{{.name}} Failed"
TaskTimeout: "{{.name}} Timeout"
TaskSuccess: "{{.name}} Success"
TaskRetry: "Starting {{.name}} Retry"
SubTaskSuccess: "{{ .name }} Success"
SubTaskFailed: "{{ .name }} Failed: {{ .err }}"
TaskInstall: "Install"
TaskUninstall: "Uninstall"
TaskCreate: "Create"
TaskDelete: "Delete"
TaskUpgrade: "Upgrade"
TaskUpdate: "Update"
TaskRestart: "Restart"
TaskRollback: "Rollback"
TaskPull: "Pull"
TaskBuild: "Build"
TaskPush: "Push"
TaskHandle: "Execute"
Website: "Website"
App: "App"
Runtime: "Runtime"
Database: "Database"
ConfigFTP: "Create FTP User {{ .name }}"
ConfigOpenresty: "Create Openresty Configuration File"
InstallAppSuccess: "App {{ .name }} Installed Successfully"
ConfigRuntime: "Configure Runtime"
ConfigApp: "Configure App"
SuccessStatus: "{{ .name }} Success"
FailedStatus: "{{ .name }} Failed {{.err}}"
HandleLink: "Handle App Link"
HandleDatabaseApp: "Handle App Parameters"
ExecShell: "Execute {{ .name }} Script"
PullImage: "Pull Image"
Start: "Start"
Run: "Run"
Stop: "Stop"
Image: "Image"
Container: "Container"
Compose: "Compose"
AppLink: "Associated Application"
EnableSSL: "Enable HTTPS"
AppStore: "App Store"
TaskSync: "Sync"
LocalApp: "Local App"
SubTask: "Subtask"
RuntimeExtension: "Runtime Extension"
TaskIsExecuting: "Task is executing"
TaskStart: '{{ .name }} task starts [START]'
TaskEnd: '{{ .name }} Task completed [COMPLETED]'
TaskFailed: '{{ .name }} task failed'
TaskTimeout: '{{ .name }} timed out'
TaskSuccess: '{{ .name }} Task succeeded'
TaskRetry: 'Start {{ .name }}th retry'
SubTaskSuccess: '{{ .name }} succeeded'
SubTaskFailed: '{{ .name }} failed: {{ .err }}'
TaskInstall: 'Install'
TaskUninstall: 'Uninstall'
TaskCreate: 'Create'
TaskDelete: 'Delete'
TaskUpgrade: 'Upgrade'
TaskUpdate: 'Update'
TaskRestart: 'Restart'
TaskBackup: 'Backup'
TaskRecover: 'Recover'
TaskRollback: 'Rollback'
TaskPull: 'Pull'
TaskBuild: 'Build'
TaskPush: 'Push'
TaskHandle: 'Execute'
Website: 'Website'
App: 'Application'
Runtime: 'Runtime environment'
Database: 'Database'
ConfigFTP: 'Create FTP user {{ .name }}'
ConfigOpenresty: 'Create Openresty configuration file'
InstallAppSuccess: 'Application {{ .name }} installed successfully'
ConfigRuntime: 'Configure the runtime environment'
ConfigApp: 'Configuration Application'
SuccessStatus: '{{ .name }} succeeded'
FailedStatus: '{{ .name }} failed {{ .err }}'
HandleLink: 'Handle application association'
HandleDatabaseApp: 'Handling application parameters'
ExecShell: 'Execute {{ .name }} script'
PullImage: 'Pull image'
Start: 'Start'
Run: 'Start'
Stop: 'Stop'
Image: 'Mirror'
Compose: 'Orchestration'
Container: 'Container'
AppLink: 'Linked Application'
EnableSSL: 'Enable HTTPS'
AppStore: 'App Store'
TaskSync: 'Synchronize'
LocalApp: 'Local Application'
SubTask: 'Subtask'
RuntimeExtension: 'Runtime Environment Extension'
TaskIsExecuting: 'Task is running'
CustomAppstore: 'Custom application warehouse'
# task - snapshot
Snapshot: "Snapshot"
SnapDBInfo: "Write 1Panel database information"
SnapCopy: "Copy files & directories {{ .name }} "
SnapNewDB: "Initialize database {{ .name }} connection "
SnapDeleteOperationLog: "Delete operation log"
SnapDeleteLoginLog: "Delete access log"
SnapDeleteMonitor: "Delete monitoring data"
SnapRemoveSystemIP: "Remove system IP"
SnapBaseInfo: "Write 1Panel basic information"
SnapInstallApp: "Backup installed applications in 1Panel"
SnapDockerSave: "Compress installed applications"
SnapLocalBackup: "Backup 1Panel local backup directory"
SnapCompressBackup: "Compress local backup directory"
SnapPanelData: "Backup 1Panel data directory"
SnapCompressPanel: "Compress data directory"
SnapCloseDBConn: "Close database connection"
SnapCompress: "Create snapshot file"
SnapCompressFile: "Compress snapshot file"
SnapCheckCompress: "Check snapshot compressed file"
SnapCompressSize: "Snapshot file size {{ .name }}"
SnapUpload: "Upload snapshot file"
SnapLoadBackup: "Get backup account information"
SnapUploadTo: "Upload snapshot file to {{ .name }}"
SnapUploadRes: "Upload snapshot file to {{ .name }}"
# task - ai
OllamaModelPull: 'Pull Ollama model {{ .name }}'
OllamaModelSize: 'Get the size of Ollama model {{ .name }}'
# task-snapshot
Snapshot: 'Snapshot'
SnapDBInfo: 'Write 1Panel database information'
SnapCopy: 'Copy files & directories {{ .name }}'
SnapNewDB: 'Initialize database {{ .name }} connection'
SnapDeleteOperationLog: 'Delete operation log'
SnapDeleteLoginLog: 'Delete access log'
SnapDeleteMonitor: 'Delete monitoring data'
SnapRemoveSystemIP: 'Remove system IP'
SnapBaseInfo: 'Write 1Panel basic information'
SnapInstallApp: 'Backup 1Panel installed applications'
SnapDockerSave: 'Compress installed applications'
SnapLocalBackup: 'Backup 1Panel local backup directory'
SnapCompressBackup: 'Compress local backup directory'
SnapPanelData: 'Backup 1Panel data directory'
SnapCompressPanel: 'Compressed Data Directory'
SnapWebsite: 'Backup 1Panel website directory'
SnapCloseDBConn: 'Close the database connection'
SnapCompress: 'Make snapshot files'
SnapCompressFile: 'Compress snapshot file'
SnapCheckCompress: 'Check snapshot compression file'
SnapCompressSize: 'Snapshot file size {{ .name }}'
SnapUpload: 'Upload snapshot file'
SnapLoadBackup: 'Get backup account information'
SnapUploadTo: 'Upload snapshot file to {{ .name }}'
SnapUploadRes: 'Upload snapshot file to {{ .name }}'
SnapshotRecover: 'Snapshot Restore'
RecoverDownload: 'Download snapshot file'
Download: 'Download'
RecoverDownloadAccount: 'Get snapshot download backup account {{ .name }}'
RecoverDecompress: 'Decompress snapshot compressed files'
Decompress: 'Decompression'
BackupBeforeRecover: 'Backup system-related data before snapshot'
Readjson: 'Read the Json file in the snapshot'
ReadjsonPath: 'Get the Json file path in the snapshot'
ReadjsonContent: 'Read Json file'
ReadjsonMarshal: 'Json escape processing'
RecoverApp: 'Restore installed apps'
RecoverWebsite: 'Recover website directory'
RecoverAppImage: 'Restore snapshot image backup'
RecoverCompose: 'Restore other composer content'
RecoverComposeList: 'Get all composers to be restored'
RecoverComposeItem: 'Recover compose {{ .name }}'
RecoverAppEmpty: 'No application image backup was found in the snapshot file'
RecoverBaseData: 'Recover base data and files'
RecoverDaemonJsonEmpty: 'Both the snapshot file and the current machine do not have the container configuration daemon.json file'
RecoverDaemonJson: 'Restore container configuration daemon.json file'
RecoverDBData: 'Recover database data'
RecoverBackups: 'Restore local backup directory'
RecoverPanelData: 'Recovery data directory'
# task - container
ContainerNewCliet: "Initialize Docker Client"
ContainerImagePull: "Pull container image {{ .name }}"
ContainerRemoveOld: "Remove the original container { .name }"
ContainerImageCheck: "Check if the image is pulled correctly"
ContainerLoadInfo: "Retrieve basic information about the container"
ContainerRecreate: "Container update failed, now starting to restore the original container"
ContainerCreate: "Create new container {{ .name }}"
ContainerCreateFailed: "Container creation failed, delete the failed container"
ContainerStartCheck: "Check if the container has started"
ContainerNewCliet: 'Initialize Docker Client'
ContainerImagePull: 'Pull container image {{ .name }}'
ContainerRemoveOld: 'Remove the original container {{ .name }}'
ContainerImageCheck: 'Check if the image is pulled normally'
ContainerLoadInfo: 'Get basic container information'
ContainerRecreate: 'Container update failed, now starting to restore the original container'
ContainerCreate: 'Create a new container {{ .name }}'
ContainerCreateFailed: 'Container creation failed, delete the failed container'
ContainerStartCheck: 'Check if the container has been started'
# task - image
ImageBuild: "Image build"
ImageBuildStdoutCheck: "Parse image output"
ImaegBuildRes: "Image build output: {{ .name }}"
ImagePull: "Pull image"
ImageRepoAuthFromDB: "Get repository authentication information from database"
ImaegPullRes: "Image pull output: {{ .name }}"
ImagePush: "Push image"
ImageRenameTag: "Rename image tag"
ImageNewTag: "New image tag {{ .name }}"
ImaegPushRes: "Image push output: {{ .name }}"
ComposeCreate: "Create compose"
ComposeCreateRes: "Compose creation output: {{ .name }}"
ImageBuild: 'Image Build'
ImageBuildStdoutCheck: 'Parse image output content'
ImaegBuildRes: 'Image build output: {{ .name }}'
ImagePull: 'Pull image'
ImageRepoAuthFromDB: 'Get repository authentication information from the database'
ImaegPullRes: 'Image pull output: {{ .name }}'
ImagePush: 'Push image'
ImageRenameTag: 'Modify image tag'
ImageNewTag: 'New image tag {{ .name }}'
ImaegPushRes: 'Image push output: {{ .name }}'
ComposeCreate: 'Create a composition'
ComposeCreateRes: 'Compose create output: {{ .name }}'
# task - website
BackupNginxConfig: "Backup website OpenResty configuration file"
CompressFileSuccess: "Directory compression successful, compressed as {{.name}}"
CompressDir: "Compress directory"
DeCompressFile: "Decompress file {{ .name }}"
ErrCheckValid: "Failed to validate backup file, {{ .name }}"
Rollback: "Rollback"
websiteDir: "Website directory"
RecoverFailedStartRollBack: "Recovery failed, starting rollback"
AppBackupFileIncomplete: "Backup file is incomplete; missing app.json or app.tar.gz file"
AppAttributesNotMatch: "Application type or name does not match"
BackupNginxConfig: 'Backup website OpenResty configuration file'
CompressFileSuccess: 'Compress directory successfully, compressed to {{ .name }}'
CompressDir: 'Compression directory'
DeCompressFile: 'Decompress file {{ .name }}'
ErrCheckValid: 'Backup file verification failed, {{ .name }}'
Rollback: 'Rollback'
websiteDir: 'Website Directory'
RecoverFailedStartRollBack: 'Recovery failed, start rollback'
AppBackupFileIncomplete: 'The backup file is incomplete and lacks app.json or app.tar.gz files'
AppAttributesNotMatch: 'Application type or name does not match'
#alert
ErrAlert: "Alert information format error, please check and try again!"
ErrAlertPush: "Alert push error, please check and try again!"
ErrAlertSave: "Alert save error, please check and try again!"
ErrAlertSync: "Alert sync error, please check and try again!"
ErrAlertRemote: "Remote alert error, please check and try again!"
ErrAlert: 'The format of the warning message is incorrect, please check and try again!'
ErrAlertPush: 'Error in pushing alert information, please check and try again!'
ErrAlertSave: 'Error saving the alarm information, please check and try again!'
ErrAlertSync: 'Alarm information synchronization error, please check and try again!'
ErrAlertRemote: 'Alarm message remote error, please check and try again!'
+391 -295
View File
@@ -1,326 +1,422 @@
ErrInvalidParams: "リクエストパラメータエラー{{.Detail}}"
ErrTokenParse: "トークン生成エラー{{.Detail}}"
ErrInitialPassword: "初期パスワードエラー"
ErrInternalServer: "サービス内部エラー:{{.Detail}}"
ErrRecordExist: "レコードすでに存在します"
ErrRecordNotFound: "記録が見つかりません"
ErrStructTransform: "タイプ変換障害:{{.Detail}}"
ErrNotLogin: "ユーザーログインしません{{.Detail}}"
ErrPasswordExpired: "現在のパスワード期限切れになっています{{.Detail}}"
ErrNotSupportType: "システムは現在のタイプをサポートしていません:{{.Detail}}"
ErrApiConfigStatusInvalid: "APIインターフェイスアクセス禁止:{{.Detail}}"
ErrApiConfigKeyInvalid: "APIインターフェイスキーエラー:{{.Detail}}"
ErrApiConfigIPInvalid: "APIインターフェイスIPはホワイトリストにありません:{{.Detail}}"
ErrApiConfigDisable: "このインターフェイスは、APIインターフェイスコールの使用を禁止しています:{{.Detail}}"
ErrInvalidParams: 'リクエストパラメータエラー: {{ .detail }}'
ErrTokenParse: 'トークン生成エラー: {{ .detail }}'
ErrInitialPassword: '元のパスワードが正しくありません'
ErrInternalServer: '内部サーバーエラー: {{ .detail }}'
ErrRecordExist: 'レコードすでに存在します'
ErrRecordNotFound: 'レコードが見つかりません'
ErrStructTransform: '型変換に失敗しました: {{ .err }}'
ErrNotLogin: 'ユーザーログインしていません: {{ .detail }}'
ErrPasswordExpired: '現在のパスワードの有効期限切れています: {{ .detail }}'
ErrNotSupportType: 'システムは現在のタイプ: {{ .name }} をサポートしていません'
ErrProxy: 'リクエスト エラーです。ノードのステータスを確認してください: {{ .detail }}'
ErrApiConfigStatusInvalid: 'API インターフェースへのアクセスは禁止されています: {{ .detail }}'
ErrApiConfigKeyInvalid: 'API インターフェース キー エラー: {{ .detail }}'
ErrApiConfigIPInvalid: 'API インターフェースの呼び出しに使用された IP がホワイトリストにありません: {{ .detail }}'
ErrApiConfigDisable: 'このインターフェースは、API インターフェース呼び出しの使用を禁止しています: {{ .detail }}'
ErrApiConfigKeyTimeInvalid: 'API インターフェースのタイムスタンプ エラー: {{ .detail }}'
#common
ErrUsernameIsExist: "ユーザー名は既に存在します"
ErrNameIsExist: "名前はすでに存在しています"
ErrDemoEnvironment: "デモサーバー、この操作禁止します!"
ErrCmdTimeout: "コマンド実行がタイムアウトしました"
ErrCmdIllegal: "コマンドには違法な文字が含まれています。変更してもう一度やり直してください"
ErrPortExist: '{{.port}}ポートはすでに{{.type}} [{{.name}}]によって占有されています'
TYPE_APP: "応用"
TYPE_RUNTIME: "ランタイム環境"
TYPE_DOMAIN: "ドメイン名"
ErrTypePort: 'port {{.name}}フォーマットエラー'
ErrTypePortRange: 'ポートレンジは1-65535の間である必要があります'
Success: "成功"
Failed: "失敗した"
SystemRestart: "システムの再起動によりタスクが中断されます"
ErrGroupIsDefault: "デフォルトグループ、削除できません"
ErrGroupIsInWebsiteUse: "グループは他のウェブサイトで使用されています、削除できません"
ErrUsernameIsExist: 'ユーザー名は既に存在します'
ErrNameIsExist: '名前はに存在します'
ErrDemoEnvironment: 'デモ サーバー、この操作禁止されています!'
ErrCmdTimeout: 'コマンド実行がタイムアウトしました!'
ErrCmdIllegal: '実行コマンドに不正な文字が含まれています。修正してもう一度お試しください。'
ErrPortExist: '{{ .port }} ポートは{{ .type }} [{{ .name }}] によって既に使用されています'
TYPE_APP: 'アプリケーション'
TYPE_RUNTIME: 'ランタイム環境'
TYPE_DOMAIN: 'ドメイン名'
ErrTypePort: 'ポート {{ .name }} の形式が正しくありません'
ErrTypePortRange: 'ポート範囲は 1 65535 である必要があります'
Success: '成功'
Failed: '失敗'
SystemRestart: 'システムの再起動によりタスクが中断されました'
ErrGroupIsDefault: 'デフォルト グループ、削除できません'
ErrGroupIsInWebsiteUse: 'グループは別の Web サイトで使用されているため、削除できません。'
#backup
ErrBackupInUsed: 'バックアップ アカウントはスケジュールされたタスクで使用されているため、削除できません。'
ErrBackupCheck: 'バックアップ アカウントのテスト接続に失敗しました {{ .err }}'
ErrBackupLocalDelete: 'ローカル サーバーのバックアップ アカウントの削除はまだサポートされていません'
ErrBackupLocalCreate: 'ローカル サーバーのバックアップ アカウントの作成はまだサポートされていません'
#app
ErrPortInUsed: "{{.Detail}}ポートはすでに使用されています"
ErrAppLimit: "アプリはインストール制限を超えています"
ErrAppRequired: "{{.Detail}}アプリが必要です"
ErrNotInstall: "アプリがインストールされていません"
ErrPortInOtherApp: "{{.port}}ポートは既にapp {{.apps}}使用されています"
ErrDbUserNotValid: "ストックデータベース、ユーザー名、パスワードが一致しません"
ErrDockerComposeNotValid: "Docker-Composeファイル形式のエラー!"
ErrUpdateBuWebsite: 'アプリケーションは正常に更新されましたが、Webサイト構成ファイルの変更に失敗しました。構成を確認してください'
Err1PanelNetworkFailed: 'デフォルトのコンテナネットワークの作成に失敗しました{{ 。詳細 }}'
ErrFileParse: 'アプリケーションDocker-Composeファイルの解析失敗しました'
ErrInstallDirNotFound: 'インストールディレクトリ存在しません'
AppStoreIsUpToDate: '最新の'
LocalAppVersionNull: '{{.name}}アプリはバージョンに同期されませんアプリケーションリストに追加できませんでした'
LocalAppVersionErr: '{{.name}}}バージョン{{.version}}の同期に失敗しました{{.err}}'
ErrFileNotFound: '{{.name}}ファイル存在しません'
ErrFileParseApp: '{{.name}} file {{.err}}を解析できなかった'
ErrAppDirNull: 'バージョンフォルダー存在しません'
LocalAppErr: "app {{.name}}同期失敗しました{{.err}}"
ErrContainerName: "cantablernameはすでに存在しています"
ErrAppSystemRestart: "1パネルの再起動によりタスクが終了します"
ErrCreateHttpClient: "http request {{.err}}の作成に失敗しました"
ErrHttpReqTimeOut: "リクエスト{{.err}}"
ErrHttpReqFailed: "リクエストが失敗しました{{.err}}"
ErrHttpReqNotFound: "ファイルは存在しません"
ErrNoSuchHost: "ネットワーク接続に失敗しました"
ErrImagePullTimeOut: '画像プルタイムアウト'
ErrContainerNotFound: '{{.name}}コンテナ存在しません'
ErrContainerMsg: '{{.name}}コンテナ異常です。詳細についてはコンテナページのログを確認してください'
ErrAppBackup: '{{.name}}アプリケーションバックアップ失敗したerr {{.err}}'
ErrImagePull: '{{.name}}画像プルFailed err {{.err}}'
ErrVersionTooLow: '現在の1パネルバージョンが低すぎApp Storeを更新できないので、バージョンをアップグレードしてください'
ErrAppNameExist: 'アプリ名はすでに存在しています'
AppStoreIsSyncing: 'App Storeが同期しています。後でもう一度やり直してください'
ErrGetCompose: "docker-compose.ymlファイル取得できませんでした!{{ 。詳細 }}"
ErrAppWarn: "異常なステータス、ログを確認してください"
ErrAppParamKey: "parameter {{.name}}フィールド例外"
ErrAppUpgrade: "アプリケーションのアップグレードに失敗しました{{.name}} {{.err}}"
AppRecover: "app {{.name}}ロールバック"
PullImageStart: "画像の引っ張りを開始{{.name}}"
PullImageSuccess: "画像が正常に引っ張られました"
UpgradeAppStart: "アプリケーションのアップグレードを起動{{.name}}"
UpgradeAppSuccess: "App {{.Name}}アップグレードされました"
ErrAppIsDown: "{{ .name }} アプリケーションの状態が異常です、確認してください"
ErrPortInUsed: '{{ .detail }} ポートはすでに使用されています!'
ErrAppLimit: 'インストールされているアプリケーションの数が制限を超えました'
ErrAppRequired: 'まず {{ .detail }} アプリケーションをインストールしてください'
ErrNotInstall: 'アプリケーションがインストールされていません'
ErrPortInOtherApp: '{{ .port }} ポートは既にアプリケーション {{ .apps }} によって使用されています!'
ErrDbUserNotValid: '既存のデータベース、ユーザー名、およびパスワードが一致しません!'
ErrDockerComposeNotValid: 'docker-compose ファイル形式が正しくありません'
ErrUpdateBuWebsite: 'アプリケーションは正常に更新されましたが、Web サイト構成ファイルの変更に失敗しました。設定を確認してください! '
Err1PanelNetworkFailed: 'デフォルトのコンテナ ネットワークの作成に失敗しました{{ .detail }}'
ErrFileParse: 'アプリケーションの docker-compose ファイルの解析失敗しました!'
ErrInstallDirNotFound: 'インストール ディレクトリ存在しません。アンインストールする必要がある場合は、強制アンインストールを選択してください。'
AppStoreIsUpToDate: 'アプリストアはすでに最新バージョンです'
LocalAppVersionNull: '{{ .name }} アプリケーションはバージョンに同期されていませんアプリリストに追加できません'
LocalAppVersionErr: '{{ .name }} バージョン {{ .version }} の同期に失敗しました! {{ .err }}'
ErrFileNotFound: '{{ .name }} ファイル存在しません'
ErrFileParseApp: '{{ .name }} ファイルの解析に失敗しました {{ .err }}'
ErrAppDirNull: 'バージョン フォルダー存在しません'
LocalAppErr: 'アプリケーション {{ .name }}同期失敗しました! {{ .err }}'
ErrContainerName: 'コンテナ名が既に存在します'
ErrAppSystemRestart: '1Panel の再起動によりタスクが終了しました'
ErrCreateHttpClient: 'リクエスト {{ .err }} の作成に失敗しました'
ErrHttpReqTimeOut: 'リクエストがタイムアウトしました {{ .err }}'
ErrHttpReqFailed: 'リクエストが失敗しました {{ .err }}'
ErrNoSuchHost: '要求されたサーバー {{ .err }} が見つかりません'
ErrHttpReqNotFound: '要求されたリソース {{ .err }} が見つかりませんでした'
ErrImagePullTimeOut: 'イメージ プル タイムアウト'
ErrContainerNotFound: '{{ .name }} コンテナ存在しません'
ErrContainerMsg: '{{ .name }} コンテナ異常です。詳細についてはコンテナページのログを確認してください'
ErrAppBackup: '{{ .name }} アプリケーションバックアップ失敗しました。エラー {{ .err }}'
ErrImagePull: 'イメージのプルに失敗しました {{ .err }}'
ErrVersionTooLow: '現在の 1Panel のバージョンが低すぎるため、App Store を更新できません。操作する前にバージョンをアップグレードしてください'
ErrAppNameExist: 'アプリケーション名がすでに存在します'
AppStoreIsSyncing: 'App Store が同期中です。しばらくしてからもう一度お試しください'
ErrGetCompose: 'docker-compose.yml ファイル取得に失敗しました! {{ .detail }}'
ErrAppWarn: '異常な状態です。ログを確認してください'
ErrAppParamKey: 'パラメータ {{ .name }} フィールドが異常です'
ErrAppUpgrade: 'アプリケーション {{ .name }} のアップグレードに失敗しました {{ .err }}'
AppRecover: 'アプリケーション {{ .name }}ロールバックします'
PullImageStart: "イメージ {{ .name }} のプルを開始します"
PullImageSuccess: 'イメージのプルが成功しました'
UpgradeAppStart: 'アプリケーション {{ .name }} のアップグレードを開始します'
UpgradeAppSuccess: 'アプリケーション {{ .name }} が正常にアップグレードされました'
AppStoreIsLastVersion: 'App Store はすでに最新バージョンです'
AppStoreSyncSuccess: 'App Store の同期が成功しました'
SyncAppDetail: 'アプリケーション構成を同期する'
AppVersionNotMatch: '{{ .name }} アプリケーションには、より高い 1Panel バージョンが必要なため、同期をスキップします'
MoveSiteDir: '現在のアップグレードでは、OpenResty Web サイト ディレクトリの移行が必要です'
MoveSiteToDir: 'サイト ディレクトリを {{ .name }} に移行します'
ErrMoveSiteDir: 'サイト ディレクトリの移行に失敗しました'
MoveSiteDirSuccess: 'Web サイト ディレクトリの移行に成功しました'
DeleteRuntimePHP: 'PHP ランタイムを削除する'
CustomAppStoreNotConfig: 'アプリストアでオフライン パッケージ アドレスを設定してください'
CustomAppStoreNotFound: 'アプリストア パッケージを取得できませんでした。存在するかどうかを確認してください'
CustomAppStoreFileValid: 'App Store パッケージは .tar.gz 形式である必要があります'
PullImageTimeout: 'プル イメージのタイムアウトです。イメージのアクセラレーションを増やすか、別のイメージのアクセラレーションに変更してください'
ErrAppIsDown: '{{ .name }} アプリケーションの状態が異常です。確認してください'
ErrCustomApps: 'インストールされているアプリケーションがあります。まずアンインストールしてください'
ErrCustomRuntimes: 'ランタイム環境がインストールされています。まずそれを削除してください'
#file
ErrFileCanNotRead: "ファイルは読み取れません"
ErrFileToLarge: "ファイルが大きすぎます"
ErrPathNotFound: "パスは見つかりません"
ErrMovePathFailed: "ターゲットパスに元のパスが含まれていません!"
ErrLinkPathNotFound: "ターゲットパス存在しません"
ErrFileIsExist: "ファイルまたはディレクトリはすでに存在します"
ErrFileUpload: "file {{.name}} {{.detail}}}のアップロードに失敗しました"
ErrFileDownloadDir: "サポートされていないフォルダーをダウンロードします"
ErrCmdNotFound: "{{.name}}コマンド存在しません。最初にホストにこのコマンドをインストールしてください"
ErrSourcePathNotFound: "ソースディレクトリ存在しません"
ErrFavoriteExist: "このパスが収集されました"
ErrInvalidChar: "違法なキャラクターは禁止されています"
ErrPathNotDelete: "選択したディレクトリ削除することはできません"
ErrFileCanNotRead: 'このファイルはプレビューをサポートしていません'
ErrFileToLarge: 'ファイルは 10M より大きいため開けません'
ErrPathNotFound: 'ディレクトリが存在しません'
ErrMovePathFailed: 'ターゲット パスに元のパスを含めることはできません!'
ErrLinkPathNotFound: 'ターゲット パス存在しません!'
ErrFileIsExist: 'ファイルまたはフォルダーは既に存在します!'
ErrFileUpload: '{{ .name }} はファイル {{ .detail }} のアップロードに失敗しました'
ErrFileDownloadDir: 'ダウンロード フォルダーはサポートされていません'
ErrCmdNotFound: '{{ .name}} コマンド存在しません。まずこのコマンドをホストにインストールしてください'
ErrSourcePathNotFound: 'ソース ディレクトリ存在しません'
ErrFavoriteExist: 'このパスはすでにお気に入りに登録されています'
ErrInvalidChar: '不正な文字は許可されません'
ErrPathNotDelete: '選択されたディレクトリ削除できません'
#website
ErrDomainIsExist: "ドメインはすでに存在しています"
ErrAliasIsExist: "エイリアスすでに存在しています"
ErrAppDelete: '他のウェブサイトこのアプリを使用します'
ErrGroupIsUsed: "グループは使用されており、削除することはできません"
ErrBackupMatch: "バックアップファイルは、ウェブサイトの現在の部分的なデータと一致しません{{.Detail}}"
ErrBackupExist: 'バックアップファイルは、存在しない元のデータの一部に対応しています。{{.Detail}}'
ErrPHPResource: 'ローカルランタイムはスイッチングをサポートしません!'
ErrPathPermission: 'インデックスディレクトリで1000:1000以外のアクセス許可を持つフォルダーが検出されたため、Webサイトにアクセスするとアクセスが拒否された場合があります。上の[保存]ボタンをクリックしてください'
ErrDomainIsUsed: "ドメインはすでにWebサイトで使用されています{{.Name}}"
ErrDomainFormat: "{{.name}}ドメイン形式エラー"
ErrDefaultAlias: "デフォルトは予約済みのコード名です。別のコード名を使用してください"
ErrImageNotExist: "実行中の環境{{.name}}画像は存在しません。実行中の環境を再編集してください"
ErrDomainIsExist: 'ドメイン名は既に存在します'
ErrAliasIsExist: 'エイリアスすでに存在します'
ErrAppDelete: '他のウェブサイトこのアプリを使用しているため、削除できません'
ErrBackupMatch: 'バックアップ ファイルは、現在の Web サイト データ {{ .detail }} の一部と一致しません'
ErrBackupExist: 'バックアップ ファイル内のソース データの対応する部分が存在しません {{ .detail }}'
ErrPHPResource: 'ローカルオペレーティング環境は切り替えをサポートしていません! '
ErrPathPermission: 'インデックス ディレクトリに 1000:1000 以外の権限を持つフォルダーが検出されました。これにより、Web サイトでアクセス拒否エラーが発生する可能性があります。上記の保存ボタンをクリックしてください。'
ErrDomainIsUsed: 'ドメイン名はウェブサイト [{{ .name }}] で既に使用されています'
ErrDomainFormat: '{{ .name }} ドメイン名の形式が正しくありません'
ErrDefaultAlias: 'デフォルトは予約済みのコードです。別のコードを使用してください'
ErrParentWebsite: 'まずサブサイト {{ .name }} を削除する必要があります'
ErrBuildDirNotFound: 'ビルド ディレクトリが存在しません'
ErrImageNotExist: 'オペレーティング環境 {{ .name }} イメージが存在しません。オペレーティング環境を再編集してください'
#ssl
ErrSSLCannotDelete: "証明書{{.Name}}Webサイトで使用されており、削除できません"
ErrAccountCannotDelete: "アカウントに関連付けられた証明書を削除することはできません"
ErrSSLApply: "証明書は引き続き正常に署名されていますが、OpenRestyロード失敗します。構成を確認してください"
ErrEmailIsExist: 'メールはすでに存在しています'
ErrSSLKeyNotFound: '秘密キーファイル存在しません'
ErrSSLCertificateNotFound: '証明書ファイル存在しません'
ErrSSLKeyFormat: '秘密キーファイル検証エラー'
ErrSSLCertificateFormat: '証明書ファイル形式エラー、PEM形式を使用してください'
ErrEabKidOrEabHmacKeyCannotBlank: 'eabkidまたはeabhmackeyは空にすることはできません'
ErrOpenrestyNotFound: 'HTTPモードでは、最初にOpenRestyをインストールする必要があります'
ApplySSLStart: '証明書ドメイン名[{{.domain}}]アプリケーションメソッド[{{.type}}]の申請を開始します'
dnsAccount: "DNSオートマチック"
dnsManual: "DNSマニュアル"
http: "http"
ApplySSLFailed: '[{{.domain}}]証明書のアプリケーションが失敗しました、{{.detail}}'
ApplySSLSuccess: '[{{{.domain}}]証明書のアプリケーションが成功しました!!'
DNSAccountName: 'dnsアカウント[{{.name}}]メーカー[{{.type}}]'
PushDirLog: 'ディレクトリにプッシュされた証明書[{{.Path}}] {{.Status}}'
ErrDeleteCAWithSSL: "現在の組織の下に発行された証明書があり、削除できません"
ErrDeleteWithPanelSSL: "パネルSSL構成はこの証明書を使用しており、削除できません"
ErrDefaultCA: "デフォルトの証明書当局は削除できません"
ApplyWebSiteSSLLog: "{{.name}} Webサイト証明書の更新を開始します"
ErrUpdateWebsiteSSL: "{{.name}}ウェブサイト証明書の更新に失敗しました{{.err}}"
ApplyWebSiteSSLSuccess: "ウェブサイトの証明書を正常に更新します"
ErrExecShell: "スクリプトの実行に失敗した{{.err}}"
ExecShellStart: "スクリプトの実行を開始します"
ExecShellSuccess: "スクリプトは正常に実行されました"
StartUpdateSystemSSL: "システム証明書の更新を開始します"
UpdateSystemSSLSuccess: "システム証明書を正常に更新します"
ErrSSLCannotDelete: '{{ .name }} 証明書は Web サイトで使用されているため、削除できません'
ErrAccountCannotDelete: 'アカウントは証明書に関連付けられているため、削除できません'
ErrSSLApply: '証明書の更新は成功しましたが、openresty の再ロード失敗しました。設定を確認してください。'
ErrEmailIsExist: 'メールボックスは既に存在します'
ErrSSLKeyNotFound: '秘密ファイル存在しません'
ErrSSLCertificateNotFound: '証明書ファイル存在しません'
ErrSSLKeyFormat: '秘密ファイル検証に失敗しました'
ErrSSLCertificateFormat: '証明書ファイル形式が正しくありません。pem 形式を使用してください'
ErrEabKidOrEabHmacKeyCannotBlank: 'EabKid または EabHmacKey は空にできません'
ErrOpenrestyNotFound: 'Http モードでは、まず Openresty をインストールする必要があります'
ApplySSLStart: '証明書の申請を開始します。ドメイン名 [{{ .domain }}] 申請方法 [{{ .type }}] '
dnsAccount: 'DNS 自動'
dnsManual: 'DNS マニュアル'
http: "HTTP"
ApplySSLFailed: '[{{ .domain }}] 証明書の申請に失敗しました、{{ .detail }}'
ApplySSLSuccess: '[{{ .domain }}] 証明書の申請に成功しました! '
DNSAccountName: 'DNS アカウント [{{ .name }}] ベンダー [{{ .type }}]'
PushDirLog: '証明書がディレクトリ [{{ .path }}] {{ .status }} にプッシュされました'
ErrDeleteCAWithSSL: '現在の組織には発行済みの証明書があり、削除できません。'
ErrDeleteWithPanelSSL: 'パネル SSL 構成はこの証明書を使用しているため、削除できません'
ErrDefaultCA: 'デフォルトの権限を削除できません'
ApplyWebSiteSSLLog: '{{ .name }} ウェブサイト証明書の更新を開始しています'
ErrUpdateWebsiteSSL: '{{ .name }} Web サイト証明書の更新に失敗しました: {{ .err }}'
ApplyWebSiteSSLSuccess: 'Web サイトの証明書を正常に更新しました'
ErrExecShell: 'スクリプト {{ .err }} の実行に失敗しました'
ExecShellStart: 'スクリプトの実行を開始します'
ExecShellSuccess: 'スクリプトの実行が成功しました'
StartUpdateSystemSSL: 'システム証明書の更新を開始します'
UpdateSystemSSLSuccess: 'システム証明書を正常に更新しました'
ErrWildcardDomain: 'HTTP モードでワイルドカード ドメイン名証明書を申請できません'
#mysql
ErrUserIsExist: "現在のユーザーはすでに存在しています。新しいユーザーを入力してください"
ErrDatabaseIsExist: "現在のデータベースはすでに存在しています。新しいデータベースを入力してください"
ErrExecTimeOut: "SQL実行タイミングを出して、データベースを確認してください"
ErrRemoteExist: "リモートデータベースはすでにその名前に存在しています。それを変更して、再試行してください"
ErrLocalExist: "ローカルデータベースはすでにその名前に存在しています。それを変更してもう一度試しください"
ErrUserIsExist: '現在のユーザーはに存在します。入力してください'
ErrDatabaseIsExist: '現在のデータベースはに存在します。入力してください'
ErrExecTimeOut: 'SQL 実行タイムアウトしました。データベースを確認してください'
ErrRemoteExist: 'この名前のリモート データベースはに存在します。変更してもう一度お試しください'
ErrLocalExist: '名前はローカル データベースに既に存在します。変更してもう一度試しください'
#redis
ErrTypeOfRedis: "回復ファイルのタイプは、現在の永続性モードと一致しません。ファイルタイプを変更して再試行してください"
ErrTypeOfRedis: 'リカバリ ファイルの種類が現在の永続化方法と一致しません。変更して再試行してください'
#container
ErrInUsed: "{{.Detail}}が使用されており、削除できません"
ErrObjectInUsed: "このオブジェクトは使用されており、削除することはできません"
ErrPortRules: "ポートの数が一致しません。再入力してください!"
ErrPgImagePull: "画像プルタイムアウト。画像の加速を構成するか、Postgres:16.0-Alpine画像を手動で引いて、再試行してください"
ErrInUsed: '{{ .detail }} は使用中のため削除できません'
ErrObjectInUsed: 'オブジェクトは使用中のため削除できません'
ErrObjectBeDependent: 'このイメージは他のイメージに依存しているため、削除できません'
ErrPortRules: 'ポート番号が一致しません。再入力してください。'
ErrPgImagePull: 'イメージのプルがタイムアウトしました。イメージのアクセラレーションを設定するか、{{ .name }} イメージを手動でプルして再試行してください'
#runtime
ErrDirNotFound: "ビルドフォルダー存在しませんファイルの整合性を確認してください"
ErrFileNotExist: "{{.Detail}}ファイル存在しませんソースファイルの完全性を確認してください"
ErrImageBuildErr: "画像ビルド失敗しました"
ErrImageExist: "画像すでに存在しています!"
ErrDelWithWebsite: "運用環境はウェブサイトに関連付けられており、削除することはできません"
ErrRuntimeStart: "開始に失敗しました"
ErrPackageJsonNotFound: "package.jsonファイル存在しません"
ErrScriptsNotFound: "Package.jsonにスクリプト構成アイテムは見つかりませんでした"
ErrContainerNameNotFound: "コンテナ名を取得できない場合は、.envファイルを確認してください"
ErrNodeModulesNotFound: "node_modulesフォルダーは存在しません!実行中の環境を編集するか、実行中の環境が正常に開始するのを待ちます"
#setting
ErrBackupInUsed: "バックアップアカウントは既にCronjobで使用されており、削除することはできません。"
ErrBackupCheck: "バックアップアカウントテスト接続に失敗した{{.err}}"
ErrOSSConn: "最新バージョンを取得できない場合は、サーバーが外部ネットワークに接続できるかどうかを確認してください。"
ErrEntrance: "セキュリティ入り口情報エラー。チェックしてもう一度やり直してください!"
ErrDirNotFound: 'ビルド フォルダー存在しませんファイルの整合性を確認してください。'
ErrFileNotExist: '{{ .detail }} ファイル存在しませんソース ファイルの整合性を確認してください。'
ErrImageBuildErr: 'イメージのビルド失敗しました'
ErrImageExist: '画像すでに存在します!'
ErrDelWithWebsite: 'オペレーティング環境は既に Web サイトに関連付けられているため、削除できません'
ErrRuntimeStart: '起動に失敗しました'
ErrPackageJsonNotFound: 'package.json ファイル存在しません'
ErrScriptsNotFound: 'スクリプト構成項目が package.json に見つかりませんでした'
ErrContainerNameNotFound: 'コンテナ名を取得できません。.env ファイルを確認してください'
ErrNodeModulesNotFound: 'node_modules フォルダ存在しません。ランタイム環境を編集するか、ランタイム環境が正常に起動するまでお待ちください。'
ErrContainerNameIsNull: 'コンテナ名が存在しません'
#tool
ErrConfigNotFound: "構成ファイル存在しません"
ErrConfigParse: "構成ファイル形式エラー"
ErrConfigIsNull: "構成ファイルは空にすることは許可されていません"
ErrConfigDirNotFound: "実行中のディレクトリ存在しません"
ErrConfigAlreadyExist: "同じ名前の構成ファイルがに存在しています"
ErrUserFindErr: "ユーザー{{.name}} {{.err}}を見つけられなかった"
ErrConfigNotFound: '構成ファイル存在しません'
ErrConfigParse: '構成ファイル形式が正しくありません'
ErrConfigIsNull: '構成ファイルは空にできません'
ErrConfigDirNotFound: '実行ディレクトリ存在しません'
ErrConfigAlreadyExist: '同じ名前の設定ファイルがすでに存在します'
ErrUserFindErr: 'ユーザー {{ .name }} の検索に失敗しました {{ .err }}'
#ssh
ErrFirewallNone: "システムでFirewalldまたはUFWサービス検出されませんでした。チェックしてもう一度やり直してください"
ErrFirewallBoth: "FirewalldサービスとUFWサービスの両方がシステムで検出されま。競合を避けるために、1つをアンインストールして再試行してください"
ErrFirewallNone: 'システムのファイアウォールまたは ufw サービス検出されませんでした。確認してもう一度お試しください。'
ErrFirewallBoth: 'システムにfirewalldとufwの両方のサービスがあることが検出されました。競合を避けるためアンインストールしてもう一度お試しください。'
#cronjob
ErrBashExecute: "スクリプト実行エラー、タスク出力テキスト領域の特定の情報を確認してください。"
ErrCutWebsiteLog: "{{.Name}} Webサイトログの切断が失敗した、エラー{{.err}}"
CutWebsiteLogSuccess: "{{.Name}} Webサイトログカットに正常にカット、バックアップパス{{.Path}}"
ErrCutWebsiteLog: '{{ .name }} ウェブサイトのログの切り取りに失敗しました。エラー {{ .err }}'
CutWebsiteLogSuccess: '{{ .name }} ウェブサイトログが正常にカットされました。バックアップ パス {{ .path }}'
HandleShell: 'スクリプト {{ .name }} を実行します'
HandleNtpSync: 'システム時刻の同期'
HandleSystemClean: 'システム キャッシュのクリーンアップ'
#toolbox
ErrNotExistUser: "現在のユーザーは存在しません。変更して再試行してください"
ErrBanAction: "失敗した設定では、現在の{{.name}}サービス利用できません。チェックして再試行してください"
ErrClamdscanNotFound: "Clamdscanコマンド検出されませんでした。インストールするためにドキュメントを参照してください"
ErrNotExistUser: '現在のユーザーは存在しません。変更してもう一度お試しください。'
ErrBanAction: '設定に失敗しました。現在の {{ .name }} サービス利用できません。確認してもう一度お試しください。'
ErrClamdscanNotFound: 'clamdscan コマンド検出されませんでした。インストールするにドキュメントを参照してください。'
#waf
ErrScope: "この設定の変更はサポートされていません"
ErrStateChange: "ステータスの変更に失敗しました"
ErrRuleExist: "ルールはすでに存在します"
ErrRuleNotExist: "ルールが存在しません"
ErrParseIP: "IP 形式が正しくありません"
ErrDefaultIP: "default は予約名です。の名前を使用してください"
ErrGroupInUse: "IP グループはブラックリスト/ホワイトリストで使用中です。削除できません"
ErrGroupExist: "IP グループ名すでに存在します"
ErrIPRange: "IP 範囲が正しくありません"
ErrIPExist: "IP すでに存在します"
urlDefense: "URL ルール"
urlHelper: "禁止された URL"
dirFilter: "ディレクトリフィルタ"
xss: "XSS"
phpExec: "PHP スクリプト実行"
oneWordTrojan: "ワンワードトロイの木馬"
appFilter: "アプリケーション危険ディレクトリフィルタ"
webshell: "Webshell"
args: "パラメータルール"
protocolFilter: "プロトコルフィルタ"
javaFileter: "Java 危険ファイルフィルタ"
scannerFilter: "スキャナフィルタ"
escapeFilter: "エスケープフィルタ"
customRule: "カスタムルール"
httpMethod: "HTTP メソッドフィルタ"
fileExt: "ファイルアップロード制限"
defaultIpBlack: "悪意のある IP グループ"
cookie: "Cookie ルール"
urlBlack: "URL ブラックリスト"
uaBlack: "User-Agent ブラックリスト"
attackCount: "攻撃頻度制限"
fileExtCheck: "ファイルアップロード制限"
geoRestrict: "地域アクセス制限"
unknownWebsite: "未承認ドメインアクセス"
notFoundCount: "404 頻度制限"
headerDefense: "Header ルール"
defaultUaBlack: "User-Agent ルール"
methodWhite: "HTTP ルール"
captcha: "人間と機械の検証"
fiveSeconds: "5 秒検証"
vulnCheck: "補足ルール"
acl: "カスタムルール"
sql: "SQL インジェクション"
cc: "アクセス頻度制限"
defaultUrlBlack: "URL ルール"
sqlInject: "SQL インジェクション"
ErrDBNotExist: "データベースが存在しません"
allow: "許可"
deny: "禁止"
ErrScope: 'この構成の変更はサポートされていません'
ErrStateChange: '状態の変更に失敗しました'
ErrRuleExist: 'ルールはに存在します'
ErrRuleNotExist: 'ルールが存在しません'
ErrParseIP: 'IP 形式が間違っています'
ErrDefaultIP: 'デフォルトは予約名です。の名前に変更してください'
ErrGroupInUse: 'IP グループはブラックリスト/ホワイトリストで使用されており、削除できません'
ErrGroupExist: 'IP グループ名すでに存在します'
ErrIPRange: 'IP 範囲が間違っています'
ErrIPExist: 'IP すでに存在します'
urlDefense: 'URL ルール'
urlHelper: '禁止された URL'
dirFilter: 'ディレクトリ フィルター'
xss: 'XSS'
phpExec: 'PHP スクリプト実行'
oneWordTrojan: 'ワンワードトロイの木馬'
appFilter: '危険ディレクトリフィルタリングを適用する'
webshell: 'ウェブシェル'
args: 'パラメータルール'
protocolFilter: 'プロトコルフィルタリング'
javaFileter: 'Java 危険ファイル フィルター'
scannerFilter: 'スキャナ フィルタ'
escapeFilter: 'エスケープフィルター'
customRule: 'カスタムルール'
httpMethod: 'HTTP メソッド フィルタリング'
fileExt: 'ファイルアップロード制限'
defaultIpBlack: '悪意のある IP グループ'
cookie: 'クッキールール'
urlBlack: 'URL ブラックリスト'
uaBlack: 'ユーザーエージェント ブラックリスト'
attackCount: '攻撃頻度制限'
fileExtCheck: 'ファイルアップロード制限'
geoRestrict: '地域アクセス制限'
unknownWebsite: '不正なドメインアクセス'
notFoundCount: '404 レート制限'
headerDefense: 'ヘッダールール'
defaultUaBlack: 'ユーザーエージェントルール'
methodWhite: 'HTTP ルール'
captcha: '人間と機械による認証'
fiveSeconds: '5秒検証'
vulnCheck: '補足ルール'
acl: 'カスタムルール'
sql: 'SQL インジェクション'
cc: 'アクセス頻度制限'
defaultUrlBlack: 'URL ルール'
sqlInject: 'SQL インジェクション'
ErrDBNotExist: 'データベースが存在しません'
allow: '許可'
deny: '拒否'
OpenrestyNotFound: 'Openresty がインストールされていません'
#license
ErrLicense: "ライセンス形式のエラー、チェックして再試行してください!"
ErrLicenseCheck: "ライセンスの確認が失敗しました。チェックしてもう一度やり直してください!"
ErrLicenseSave: "ライセンス情報の保存に失敗しました、{{.err}}、もう一度やり直してください!"
ErrLicenseSync: "ライセンス情報の同期に失敗し、データベースでライセンス情報は検出されませんでした!"
ErrXpackNotFound: "このセクションはプロフェッショナルエディション機能です。最初にパネルsettings-licenseインターフェイスにライセンスをインポートしてください"
ErrXpackNotActive: "このセクションはプロフェッショナルエディション機能です。最初にパネル設定リセンスインターフェイスでライセンスステータスを同期してください"
ErrXpackOutOfDate: "現在のライセンスの有効期限が切れています。パネル設定リセンスインターフェイスにライセンスを再輸入してください"
ErrXpackLost: "ライセンスは、再試行の最大数に達しました。[設定] [ライセンス]ページに移動し、[同期]ボタンを手動でクリックして、プロフェッショナルバージョンの機能が適切に機能していることを確認してください。"
ErrXpackTimeout: "リクエストタイムアウト、ネットワーク接続が不安定な場合があります。後でもう一度やり直してください!"
#task
TaskStart: '{{ .name }} タスクが開始されました [START]'
TaskEnd: '{{ .name }} タスクが完了しました [COMPLETED]'
TaskFailed: '{{ .name }} タスクが失敗しました'
TaskTimeout: '{{ .name }} がタイムアウトしました'
TaskSuccess: '{{ .name }} タスクが成功しました'
TaskRetry: '{{ .name }} 回目の再試行を開始します'
SubTaskSuccess: '{{ .name }} が成功しました'
SubTaskFailed: '{{ .name }} が失敗しました: {{ .err }}'
TaskInstall: 'インストール'
TaskUninstall: 'アンインストール'
TaskCreate: '作成'
TaskDelete: '削除'
TaskUpgrade: 'アップグレード'
TaskUpdate: '更新'
TaskRestart: '再起動'
TaskBackup: 'バックアップ'
TaskRecover: '回復'
TaskRollback: 'ロールバック'
TaskPull: 'プル'
TaskBuild: 'ビルド'
TaskPush: 'プッシュ'
TaskHandle: '実行'
Website: 'ウェブサイト'
App: 'アプリケーション'
Runtime: 'ランタイム環境'
Database: 'データベース'
ConfigFTP: 'FTP ユーザー {{ .name }} を作成します'
ConfigOpenresty: 'Openresty 構成ファイルを作成する'
InstallAppSuccess: 'アプリケーション {{ .name }} が正常にインストールされました'
ConfigRuntime: 'ランタイム環境を構成する'
ConfigApp: '構成アプリケーション'
SuccessStatus: '{{ .name }} は成功しました'
FailedStatus: '{{ .name }} が {{ .err }} に失敗しました'
HandleLink: 'ハンドルアプリケーションの関連付け'
HandleDatabaseApp: 'アプリケーション パラメータの処理'
ExecShell: '{{ .name }} スクリプトを実行する'
PullImage: 'イメージをプル'
Start: '開始'
Run: '開始'
Stop: '停止'
Image: '鏡'
Compose: 'オーケストレーション'
Container: 'コンテナ'
AppLink: 'リンクされたアプリケーション'
EnableSSL: 'HTTPS を有効にする'
AppStore: 'Appストア'
TaskSync: '同期'
LocalApp: 'ローカルアプリケーション'
SubTask: 'サブタスク'
RuntimeExtension: 'ランタイム環境拡張'
TaskIsExecuting: 'タスクは実行中です'
CustomAppstore: 'カスタム アプリケーション ウェアハウス'
#license
ErrAlert: "情報形式のエラーをアラートしてください。チェックして再試行してください!"
ErrAlertPush: "アラートプッシュエラー、チェックして再試行してください!"
ErrAlertSave: "エラーを保存してください、チェックして再試行してください!"
ErrAlertSync: "アラート同期エラー、チェックして再試行してください!"
ErrAlertRemote: "リモートアラートエラー、チェックして再試行してください!"
#task - ai
OllamaModelPull: 'Ollama モデル {{ .name }} をプルします'
OllamaModelSize: "Ollama モデル {{ .name }} のサイズを取得します"
#cmd
AppVersion: "アプリバージョン"
AppCommands: "アプリ関連のコマンド"
AppInit: "アプリを初期化します"
AppKeyVal: "アプリキー(英語のみをサポートする)"
AppCreateFileErr: "file {{.name}}作成に失敗した{{.err}}"
AppCreateDirErr: "Folder {{.name}}作成に失敗した{{.err}}"
AppMissKey: "アプリキーがありません、-kを使用して指定します"
AppMissVersion: "アプリバージョンがありません、-vを使用して指定します"
AppVersionExist: "バージョンはすでに存在します!"
AppCreateSuccessful: "創造は成功しました!"
AppWriteErr: "file {{.name}} write failed {{.err}}"
SudoHelper: "{{.cmd}}を使用するか、ルートユーザーに切り替えてください"
ListenIPCommands: "リスニングIPを切り替えます"
ListenIPv4: "IPv4で聞いてください"
ListenIPv6: "IPv6で聞く"
ListenChangeSuccessful: "切り替え成功!{{.Value}}で聞いています"
ResetCommands: "システム情報をリセットします"
ResetMFA: "1パネルの2要素認証をキャンセルします"
ResetHttps: "1Panel HTTPSログインをキャンセルします"
ResetEntrance: "1パネルの安全な入り口をキャンセルします"
ResetIPs: "1パネル認定IP制限をキャンセルします"
ResetDomain: "1パネルドメインバインディングをキャンセルします"
RestoreCommands: "ロールバック1パネルサービスとデータ"
RestoreNoSuchFile: "ロールバックに使用できるファイルはありません"
RestoreStep1: "1/5{{.name}}ディレクトリからの1パネルサービスとデータの開始ロールバック..."
RestoreStep2: "(2/5)1パネルバイナリロールバックが成功しました"
RestoreStep3: "(3/5)1パネルスクリプトロールバック成功"
RestoreStep4: "(4/5)1パネルサービスロールバックが成功しました"
RestoreStep5: "(5/5)1パネルデータロールバックが成功しました"
RestoreSuccessful: "ロールバックが成功しました!サービスを再起動します、待ってください..."
UpdateCommands: "パネル情報を更新します"
UpdateUser: "パネルユーザーを更新します"
UpdatePassword: "パスワードを更新します"
UpdatePort: "パネルポートを更新します"
UpdateUserNull: "エラー:パネルユーザーは空です!"
UpdateUserBlank: "エラー:パネルユーザーにはスペースが含まれています!"
UpdateUserFormat: "エラー:無効なパネルユーザー形式!英語、中国語、数字、_、長さ3〜30のみをサポートしています"
UpdateUserErr: "エラー:パネルユーザーの更新に失敗しました{{.err}}"
UpdateSuccessful: "更新成功!"
UpdateUserResult: "パネルユーザー:{{.name}}"
UpdatePasswordRead: "エラー:パネルパスワード情報の読み取りに失敗しました、{{.err}}"
UpdatePasswordNull: "エラー:パネルパスワードは空です!"
UpdateUPasswordBlank: "エラー:パスワードにはスペースが含まれています!"
UpdatePasswordFormat: "エラー:パネルパスワードは、文字、数字、特殊文字のみをサポートします!@#$%*_、。、、長さ8-30!"
UpdatePasswordLen: "エラー:6文字より長くパスワードを入力してください!"
UpdatePasswordRe: "パスワードを認証する:"
UpdatePasswordErr: "エラー:{{.err}}のパスワードの更新に失敗しました"
UpdatePasswordSame: "エラー:2つのパスワードが一致しません。チェックして再試行してください!"
UpdatePasswordResult: "パネルパスワード:{{.name}}"
UpdatePortFormat: "エラー:入力ポート番号は1〜65535でなければなりません!"
UpdatePortUsed: "エラー:ポート番号はすでに使用されています。チェックして再試行してください!"
UpdatePortErr: "エラー:パネルポートの更新に失敗しました{{.err}}"
UpdatePortResult: "パネルポート:{{.name}}"
UpdatePortFirewallAdd: "ファイアウォールポートルールの追加に失敗した{{.err}}、ファイアウォールルールに{{.name}}ポートを手動で追加してください。"
UpdatePortFirewallDel: "エラー:ファイアウォールポートの削除に失敗しました、{{.err}}"
UpdatePortFirewallReload: "ファイアウォールのリロードに失敗しました{{.err}}、ファイアウォールを手動でリロードしてください。"
UserInfo: "パネル情報を取得します"
UserInfoAddr: "パネルアドレス:"
UserInfoPassHelp: "ヒント:パスワードを変更するには、コマンドを実行できます。"
DBConnErr: "エラー:データベース接続の初期化に失敗しました、{{.err}}"
SystemVersion: "バージョン:"
SystemMode: "モード:"
#task - snapshot
Snapshot: 'スナップショット'
SnapDBInfo: '1Panel データベース情報を書き込む'
SnapCopy: 'ファイルとディレクトリ {{ .name }} をコピーします'
SnapNewDB: 'データベース {{ .name }} 接続を初期化します'
SnapDeleteOperationLog: '操作ログの削除'
SnapDeleteLoginLog: 'アクセスログを削除する'
SnapDeleteMonitor: '監視データを削除する'
SnapRemoveSystemIP: 'システム IP を削除します'
SnapBaseInfo: '1Panel の基本情報を書き込む'
SnapInstallApp: '1Panel にインストールされたアプリケーションをバックアップする'
SnapDockerSave: 'インストールされたアプリケーションを圧縮する'
SnapLocalBackup: '1Panel ローカル バックアップ ディレクトリをバックアップします'
SnapCompressBackup: 'ローカル バックアップ ディレクトリを圧縮する'
SnapPanelData: '1Panel データ ディレクトリをバックアップ'
SnapCompressPanel: '圧縮データ ディレクトリ'
SnapWebsite: '1Panel ウェブサイト ディレクトリのバックアップ'
SnapCloseDBConn: 'データベース接続を閉じる'
SnapCompress: 'スナップショット ファイルを作成する'
SnapCompressFile: 'スナップショット ファイルを圧縮する'
SnapCheckCompress: 'スナップショット圧縮ファイルをチェックする'
SnapCompressSize: 'スナップショット ファイル サイズ {{ .name }}'
SnapUpload: 'スナップショット ファイルをアップロード'
SnapLoadBackup: 'バックアップ アカウント情報を取得する'
SnapUploadTo: 'スナップショット ファイルを {{ .name }} にアップロードします'
SnapUploadRes: 'スナップショット ファイルを {{ .name }} にアップロードします'
SnapshotRecover: 'スナップショットの復元'
RecoverDownload: 'スナップショット ファイルをダウンロード'
Download: 'ダウンロード'
RecoverDownloadAccount: 'スナップショット ダウンロード バックアップ アカウント {{ .name }} を取得します'
RecoverDecompress: 'スナップショット圧縮ファイルを解凍する'
Decompress: '減圧'
BackupBeforeRecover: 'スナップショットの前にシステム関連データをバックアップする'
Readjson: 'スナップショット内の Json ファイルを読み取ります'
ReadjsonPath: 'スナップショット内の Json ファイル パスを取得します'
ReadjsonContent: 'Json ファイルを読み取ります'
ReadjsonMarshal: 'Json エスケープ処理'
RecoverApp: 'インストールされたアプリを復元する'
RecoverWebsite: 'ウェブサイトディレクトリを回復する'
RecoverAppImage: 'スナップショットイメージのバックアップを復元する'
RecoverCompose: '他のコンポーザーのコンテンツを復元する'
RecoverComposeList: 'すべてのコンポーザーを復元する'
RecoverComposeItem: '{{ .name }} の作成を回復する'
RecoverAppEmpty: 'スナップショット ファイルにアプリケーション イメージのバックアップが見つかりませんでした'
RecoverBaseData: '基本データとファイルを回復する'
RecoverDaemonJsonEmpty: 'スナップショット ファイルと現在のマシンの両方に、コンテナー構成 daemon.json ファイルがありません'
RecoverDaemonJson: 'コンテナ構成 daemon.json ファイルを復元する'
RecoverDBData: 'データベース データを回復する'
RecoverBackups: 'ローカル バックアップ ディレクトリを復元する'
RecoverPanelData: 'リカバリデータディレクトリ'
#task - container
ContainerNewCliet: 'Docker クライアントを初期化する'
ContainerImagePull: 'コンテナ イメージ {{ .name }} をプルします'
ContainerRemoveOld: '元のコンテナ {{ .name }} を削除します'
ContainerImageCheck: 'イメージが正常にプルされているかどうかを確認します'
ContainerLoadInfo: 'コンテナの基本情報を取得する'
ContainerRecreate: 'コンテナの更新に失敗しました。元のコンテナの復元を開始しています'
ContainerCreate: '新しいコンテナ {{ .name }} を作成します'
ContainerCreateFailed: 'コンテナの作成に失敗しました。失敗したコンテナを削除してください'
ContainerStartCheck: 'コンテナが起動されているかどうかを確認します'
#task - image
ImageBuild: 'イメージビルド'
ImageBuildStdoutCheck: '画像出力コンテンツを解析する'
ImaegBuildRes: 'イメージビルド出力: {{ .name }}'
ImagePull: '画像をプル'
ImageRepoAuthFromDB: 'データベースからリポジトリ認証情報を取得する'
ImaegPullRes: "画像プル出力: {{ .name }}"
ImagePush: '画像をプッシュ'
ImageRenameTag: '画像タグを変更する'
ImageNewTag: '新しい画像タグ {{ .name }}'
ImaegPushRes: '画像プッシュ出力: {{ .name }}'
ComposeCreate: 'コンポジションを作成する'
ComposeCreateRes: "Compose 作成出力: {{ .name }}"
#task - website
BackupNginxConfig: 'ウェブサイトの OpenResty 構成ファイルをバックアップする'
CompressFileSuccess: 'ディレクトリを正常に圧縮しました。{{ .name }} に圧縮されました'
CompressDir: '圧縮ディレクトリ'
DeCompressFile: 'ファイル {{ .name }} を解凍します'
ErrCheckValid: 'バックアップ ファイルの検証に失敗しました、{{ .name }}'
Rollback: 'ロールバック'
websiteDir: 'ウェブサイトディレクトリ'
RecoverFailedStartRollBack: 'リカバリに失敗しました。ロールバックを開始します'
AppBackupFileIncomplete: 'バックアップ ファイルが不完全で、app.json または app.tar.gz ファイルが不足しています'
AppAttributesNotMatch: 'アプリケーションの種類または名前が一致しません'
#alert
ErrAlert: '警告メッセージの形式が正しくありません。確認してもう一度お試しください。'
ErrAlertPush: 'アラート情報のプッシュ中にエラーが発生しました。確認してもう一度お試しください。'
ErrAlertSave: 'アラーム情報の保存中にエラーが発生しました。確認してもう一度お試しください。'
ErrAlertSync: 'アラーム情報の同期エラーです。確認してもう一度お試しください。'
ErrAlertRemote: 'アラーム メッセージのリモート エラーです。確認してもう一度お試しください。'
+404 -311
View File
@@ -1,329 +1,422 @@
ErrInvalidParams: "요청 매개변수 오류: {{ .detail }}"
ErrTokenParse: "토큰 생성 오류: {{ .detail }}"
ErrInitialPassword: "초기 비밀번호 오류"
ErrInternalServer: "서버 내부 오류: {{ .detail }}"
ErrRecordExist: "기록이 이미 존재합니다"
ErrRecordNotFound: "기록을 찾을 수 없습니다"
ErrStructTransform: "형식 변환 실패: {{ .detail }}"
ErrNotLogin: "사용자가 로그인지 않았습니다: {{ .detail }}"
ErrPasswordExpired: "현재 비밀번호가 만료되었습니다: {{ .detail }}"
ErrNotSupportType: "시스템에서 현재 유형을 지원하지 않습니다: {{ .detail }}"
ErrApiConfigStatusInvalid: "API 인터페이스 액세스 금지: {{ .detail }}"
ErrApiConfigKeyInvalid: "API 인터페이스 키 오류: {{ .detail }}"
ErrApiConfigIPInvalid: "API 인터페이스 IP가 화이트리스트에 없습니다: {{ .detail }}"
ErrApiConfigDisable: "이 인터페이스는 API 호출을 금지합니다: {{ .detail }}"
ErrApiConfigKeyTimeInvalid: "API 인터페이스 타임스탬프 오류: {{ .detail }}"
ErrInvalidParams: '요청 매개변수 오류: {{ .detail }}'
ErrTokenParse: '토큰 생성 오류: {{ .detail }}'
ErrInitialPassword: '원래 비밀번호가 올바르지 않습니다'
ErrInternalServer: '내부 서버 오류: {{ .detail }}'
ErrRecordExist: '레코드가 이미 존재합니다'
ErrRecordNotFound: '레코드를 찾을 수 없습니다'
ErrStructTransform: '유형 변환 실패했습니다: {{ .err }}'
ErrNotLogin: '사용자가 로그인지 않았습니다: {{ .detail }}'
ErrPasswordExpired: '현재 비밀번호가 만료되었습니다: {{ .detail }}'
ErrNotSupportType: '시스템 현재 유형 {{ .name }}을 지원하지 않습니다.'
ErrProxy: '요청 오류, 노드 상태를 확인하세요: {{ .detail }}'
ErrApiConfigStatusInvalid: 'API 인터페이스에 대한 액세스가 금지되었습니다: {{ .detail }}'
ErrApiConfigKeyInvalid: 'API 인터페이스 키 오류: {{ .detail }}'
ErrApiConfigIPInvalid: 'API 인터페이스를 호출하는 데 사용된 IP가 허용 목록에 없습니다: {{ .detail }}'
ErrApiConfigDisable: '이 인터페이스는 API 인터페이스 호출 사용을 금지합니다: {{ .detail }}'
ErrApiConfigKeyTimeInvalid: 'API 인터페이스 타임스탬프 오류: {{ .detail }}'
# 공통
ErrUsernameIsExist: "사용자 이름이 이미 존재합니다"
ErrNameIsExist: "이름이 이미 존재합니다"
ErrDemoEnvironment: "데모 서버에서는 이 작업 금지되어 있습니다!"
ErrCmdTimeout: "명령 실행 시간이 초과되었습니다!"
ErrCmdIllegal: "명령에 잘못된 문자가 포함되어 있습니다. 수정 다시 시도하세요!"
ErrPortExist: '{{ .port }} 포트 {{ .type }} [{{ .name }}]에 의해 이미 사용 중입니다'
TYPE_APP: "애플리케이션"
TYPE_RUNTIME: "실행 환경"
TYPE_DOMAIN: "도메인 이름"
ErrTypePort: '포트 {{ .name }} 형식 오류'
ErrTypePortRange: '포트 범위는 1-65535 사이여야 합니다'
Success: "성공"
Failed: "실패"
SystemRestart: "시스템 재시작으로 인해 작업이 중단되었습니다"
ErrGroupIsDefault: "기본 그룹, 삭제할 수 없습니다"
ErrGroupIsInWebsiteUse: "그룹이 다른 웹사이트에서 사용 중입니다, 삭제할 수 없습니다"
#흔한
ErrUsernameIsExist: '사용자 이름이 이미 존재합니다'
ErrNameIsExist: '이름이 이미 존재합니다'
ErrDemoEnvironment: '데모 서버, 이 작업 금지되어 있습니다!'
ErrCmdTimeout: '명령 실행 시간이 초과되었습니다!'
ErrCmdIllegal: '실행 명령에 잘못된 문자가 있습니다. 수정하여 다시 시도하세요!'
ErrPortExist: '{{ .port }} 포트는 이미 {{ .type }} [{{ .name }}]에 의해 사용되고 있습니다.'
TYPE_APP: '응용 프로그램'
TYPE_RUNTIME: '런타임 환경'
TYPE_DOMAIN: '도메인 이름'
ErrTypePort: '포트 {{ .name }} 형식이 올바르지 않습니다'
ErrTypePortRange: '포트 범위는 1-65535 사이여야 합니다.'
Success: '성공'
Failed: '실패했습니다'
SystemRestart: '시스템 재시작으로 인해 작업이 중단되었습니다'
ErrGroupIsDefault: '기본 그룹, 삭제할 수 없습니다'
ErrGroupIsInWebsiteUse: '그룹이 다른 웹사이트에서 사용 중이므로 삭제할 수 없습니다.'
# 애플리케이션
ErrPortInUsed: "{{ .detail }} 포트가 이미 사용 중입니다"
ErrAppLimit: "앱 설치 제한을 초과했습니다"
ErrAppRequired: "{{ .detail }} 앱이 필요합니다"
ErrNotInstall: "앱이 설치되지 않습니다"
ErrPortInOtherApp: "{{ .port }} 포트가 {{ .apps }} 앱에 의해 이미 사용 중입니다"
ErrDbUserNotValid: "데이터베이스 사용자 이름과 비밀번호가 일치하지 않습니다!"
ErrDockerComposeNotValid: "docker-compose 파일 형식 오류!"
ErrUpdateBuWebsite: "애플리케이션이 성공적으로 업데이트되었지만, 웹사이트 구성 파일 수정에 실패했습니다. 구성을 확인하세요!"
Err1PanelNetworkFailed: "기본 컨테이너 네트워크 생성 실패! {{ .detail }}"
ErrFileParse: "애플리케이션 docker-compose 파일 분석 실패!"
ErrInstallDirNotFound: "설치 디렉터리가 존재하지 않습니다"
AppStoreIsUpToDate: "최신 상태입니다"
LocalAppVersionNull: "{{.name}} 앱 버전이 동기화되지 않았습니다! 애플리케이션 목록에 추가할 수 없습니다"
LocalAppVersionErr: "{{.name}} 버전 {{.version}} 동기화 실패! {{.err}}"
ErrFileNotFound: "{{.name}} 파일이 존재하지 않습니다"
ErrFileParseApp: "{{.name}} 파일 분석 실패 {{.err}}"
ErrAppDirNull: "버전 폴더가 존재하지 않습니다"
LocalAppErr: "앱 {{.name}} 동기화 실패! {{.err}}"
ErrContainerName: "컨테이너 이름이 이미 존재합니다"
ErrAppSystemRestart: "1Panel 재시작으로 인해 작업이 중단되었습니다"
ErrCreateHttpClient: "HTTP 요청 생성 실패 {{.err}}"
ErrHttpReqTimeOut: "요청 시간이 초과되었습니다 {{.err}}"
ErrHttpReqFailed: "요청 실패 {{.err}}"
ErrHttpReqNotFound: "파일이 존재하지 않습니다"
ErrNoSuchHost: "네트워크 연결 실패"
ErrImagePullTimeOut: "이미지 가져오기 시간 초과"
ErrContainerNotFound: "{{ .name }} 컨테이너가 존재하지 않습니다"
ErrContainerMsg: "{{ .name }} 컨테이너가 비정상적입니다. 자세한 내용은 컨테이너 페이지의 로그를 확인하세요"
ErrAppBackup: "{{ .name }} 애플리케이션 백업 실패 오류 {{.err}}"
ErrImagePull: "{{ .name }} 이미지 가져오기 실패 오류 {{.err}}"
ErrVersionTooLow: "현재 1Panel 버전이 낮아 앱 스토어를 업데이트할 수 없습니다. 버전을 업그레이드하세요"
ErrAppNameExist: "앱 이름이 이미 존재합니다"
AppStoreIsSyncing: "앱 스토어가 동기화 중입니다. 나중에 다시 시도하세요"
ErrGetCompose: "docker-compose.yml 파일 가져오기 실패! {{ .detail }}"
ErrAppWarn: "비정상 상태, 로그를 확인하세요"
ErrAppParamKey: "매개변수 {{ .name }} 필드 예외"
ErrAppUpgrade: "애플리케이션 {{ .name }} 업그레이드 실패 {{ .err }}"
AppRecover: "앱 {{ .name }} 롤백 완료"
PullImageStart: "이미지 {{ .name }} 가져오기 시작"
PullImageSuccess: "이미지 가져오기 성공"
UpgradeAppStart: "애플리케이션 {{ .name }} 업그레이드 시작"
UpgradeAppSuccess: "앱 {{ .name }} 업그레이드 성공"
ErrAppIsDown: "{{ .name }} 애플리케이션 상태가 비정상입니다. 확인하세요"
#지원
ErrBackupInUsed: '백업 계정이 예약된 작업에 사용되었으므로 삭제할 수 없습니다.'
ErrBackupCheck: '백업 계정 테스트 연결에 실패했습니다 {{ .err }}'
ErrBackupLocalDelete: '로컬 서버 백업 계정 삭제는 아직 지원되지 않습니다.'
ErrBackupLocalCreate: '로컬 서버 백업 계정 생성은 아직 지원되지 않습니다.'
# 파일
ErrFileCanNotRead: "파일을 읽을 수 없습니다"
ErrFileToLarge: "파일이 너무 큽니다"
ErrPathNotFound: "경로를 찾을 수 없습니다"
ErrMovePathFailed: "대상 경로가 원래 경로를 포함할 수 없습니다!"
ErrLinkPathNotFound: "대상 경로가 존재하지 않습니다!"
ErrFileIsExist: "파일 또는 디렉터리가 이미 존재합니다!"
ErrFileUpload: "파일 업로드 실패 {{.name}} {{.detail}}"
ErrFileDownloadDir: "다운로드 폴더는 지원되지 않습니다"
ErrCmdNotFound: "{{ .name }} 명령이 존재하지 않습니다. 호스트에 이 명령을 먼저 설치하세요"
ErrSourcePathNotFound: "소스 디렉터리가 존재하지 않습니다"
ErrFavoriteExist: "이 경로는 이미 즐겨찾기에 추가되었습니다"
ErrInvalidChar: "잘못된 문자는 금지됩니다"
ErrPathNotDelete: "선택한 디렉터리는 삭제할 수 없습니다"
#
ErrPortInUsed: '{{ .detail }} 포트가 이미 사용 중입니다!'
ErrAppLimit: '설치된 애플리케이션 수가 한도를 초과했습니다'
ErrAppRequired: '먼저 {{ .detail }} 애플리케이션을 설치하세요'
ErrNotInstall: '응용 프로그램이 설치되지 않았습니다'
ErrPortInOtherApp: '{{ .port }} 포트는 이미 {{ .apps }} 애플리케이션에 의해 사용되고 있습니다!'
ErrDbUserNotValid: '기존 데이터베이스, 사용자 이름 및 비밀번호가 일치하지 않습니다!'
ErrDockerComposeNotValid: 'docker-compose 파일 형식이 올바르지 않습니다'
ErrUpdateBuWebsite: '응용 프로그램이 성공적으로 업데이트되었지만, 웹사이트 구성 파일 수정에 실패했습니다. 구성을 확인하세요! '
Err1PanelNetworkFailed: '기본 컨테이너 네트워크 생성에 실패했습니다! {{ .세부 사항 }}'
ErrFileParse: '응용 프로그램 docker-compose 파일 구문 분석에 실패했습니다!'
ErrInstallDirNotFound: '설치 디렉토리가 존재하지 않습니다. 제거를 원하실 경우 강제 제거 를 선택해주세요.'
AppStoreIsUpToDate: '앱 스토어가 이미 최신 버전입니다'
LocalAppVersionNull: '{{ .name }} 애플리케이션이 버전과 동기화되지 않았습니다! 앱 목록에 추가할 수 없습니다.'
LocalAppVersionErr: '{{ .name }} 동기화 버전 {{ .version }}이 실패했습니다! {{ .err }}'
ErrFileNotFound: '{{ .name }} 파일이 존재하지 않습니다'
ErrFileParseApp: '{{ .name }} 파일 구문 분석에 실패했습니다 {{ .err }}'
ErrAppDirNull: '버전 폴더가 존재하지 않습니다'
LocalAppErr: '애플리케이션 {{ .name }} 동기화에 실패했습니다! {{ .err }}'
ErrContainerName: '컨테이너 이름이 이미 존재합니다'
ErrAppSystemRestart: '1패널 재시작으로 인해 작업이 종료되었습니다'
ErrCreateHttpClient: '요청 {{ .err }}을(를) 생성하지 못했습니다.'
ErrHttpReqTimeOut: '요청 시간이 초과되었습니다 {{ .err }}'
ErrHttpReqFailed: '요청이 실패했습니다 {{ .err }}'
ErrNoSuchHost: '요청한 서버 {{ .err }}을 찾을 수 없습니다'
ErrHttpReqNotFound: '요청한 리소스 {{ .err }}을 찾을 수 없습니다.'
ErrImagePullTimeOut: '이미지 풀링 시간 초과'
ErrContainerNotFound: '{{ .name }} 컨테이너가 존재하지 않습니다'
ErrContainerMsg: '{{ .name }} 컨테이너가 비정상입니다. 자세한 내용은 컨테이너 페이지의 로그를 확인하세요.'
ErrAppBackup: '{{ .name }} 애플리케이션 백업에 실패했습니다 {{ .err }}'
ErrImagePull: '이미지 가져오기에 실패했습니다 {{ .err }}'
ErrVersionTooLow: '현재 1Panel 버전이 너무 낮아 App Store를 업데이트할 수 없습니다. 작동하시기 전에 버전을 업그레이드하세요.'
ErrAppNameExist: '응용 프로그램 이름이 이미 존재합니다'
AppStoreIsSyncing: 'App Store가 동기화 중입니다. 나중에 다시 시도하세요.'
ErrGetCompose: 'docker-compose.yml 파일을 가져오지 못했습니다! {{ .detail }}'
ErrAppWarn: '비정상적인 상태입니다. 로그를 확인해 주세요.'
ErrAppParamKey: '매개변수 {{ .name }} 필드가 비정상입니다.'
ErrAppUpgrade: '애플리케이션 {{ .name }} 업그레이드에 실패했습니다 {{ .err }}'
AppRecover: '롤백 애플리케이션 {{ .name }}'
PullImageStart: '이미지 {{ .name }} 가져오기 시작'
PullImageSuccess: '이미지 가져오기 성공'
UpgradeAppStart: '애플리케이션 {{ .name }} 업그레이드 시작'
UpgradeAppSuccess: '애플리케이션 {{ .name }}이 성공적으로 업그레이드되었습니다.'
AppStoreIsLastVersion: '앱스토어가 이미 최신 버전입니다'
AppStoreSyncSuccess: '앱스토어 동기화 성공'
SyncAppDetail: '애플리케이션 구성 동기화'
AppVersionNotMatch: '{{ .name }} 애플리케이션에 더 높은 1Panel 버전이 필요하므로 동기화를 건너뜁니다.'
MoveSiteDir: '현재 업그레이드에는 OpenResty 웹사이트 디렉토리 마이그레이션이 필요합니다.'
MoveSiteToDir: '사이트 디렉토리를 {{ .name }}로 마이그레이션'
ErrMoveSiteDir: '사이트 디렉토리를 마이그레이션하지 못했습니다'
MoveSiteDirSuccess: '웹사이트 디렉토리 마이그레이션 성공'
DeleteRuntimePHP: 'PHP 런타임 삭제'
CustomAppStoreNotConfig: '앱 스토어에서 오프라인 패키지 주소를 설정해주세요'
CustomAppStoreNotFound: '앱 스토어 패키지를 가져오지 못했습니다. 해당 패키지가 있는지 확인하세요'
CustomAppStoreFileValid: '앱 스토어 패키지는 .tar.gz 형식이어야 합니다.'
PullImageTimeout: '이미지 가져오기 시간 초과, 이미지 가속을 높이거나 다른 이미지 가속으로 변경해 보세요.'
ErrAppIsDown: '{{ .name }} 애플리케이션 상태가 비정상적입니다. 확인해 주세요'
ErrCustomApps: '설치된 애플리케이션이 있습니다. 먼저 제거해 주세요'
ErrCustomRuntimes: '설치된 런타임 환경이 있습니다. 먼저 삭제해 주세요'
# 웹사이트
ErrDomainIsExist: "도메인 이름이 이미 존재합니다"
ErrAliasIsExist: "별칭이 이미 존재합니다"
ErrAppDelete: "다른 웹사이트에서 이 애플리케이션을 사용 중입니다"
ErrGroupIsUsed: "그룹이 사용 중이므로 삭제할 수 없습니다"
ErrBackupMatch: "백업 파일이 현재 웹사이트 데이터와 일치하지 않습니다: {{ .detail }}"
ErrBackupExist: "백업 파일이 원본 데이터의 일부와 일치하지 않습니다: {{ .detail }}"
ErrPHPResource: "로컬 런타임에서 전환을 지원하지 습니다!"
ErrPathPermission: "인덱스 디렉터리에 1000:1000 권한이 아닌 폴더가 감지되었습니다. 웹사이트 액세스 시 '접근 거부' 오류가 발생할 수 있습니다. 상단의 저장 버튼을 클릭하세요"
ErrDomainIsUsed: "도메인이 웹사이트 {{ .name }}에서 이미 사용 중입니다"
ErrDomainFormat: "{{ .name }} 도메인 형식 오류"
ErrDefaultAlias: "기본은 예약된 코드 이름입니다. 다른 이름을 사용하세요"
ErrImageNotExist: "실행 환경 {{.name}} 이미지가 존재하지 않습니다. 실행 환경을 다시 편집하세요"
#파일
ErrFileCanNotRead: '이 파일은 미리보기를 지원하지 않습니다'
ErrFileToLarge: '파일이 10M보다 커서 열 수 없습니다'
ErrPathNotFound: '디렉토리가 존재하지 않습니다'
ErrMovePathFailed: '대상 경로에는 원래 경로가 포함될 수 없습니다!'
ErrLinkPathNotFound: '대상 경로가 존재하지 않습니다!'
ErrFileIsExist: '파일이나 폴더가 이미 존재합니다!'
ErrFileUpload: '{{ .name }}이 파일 {{ .detail }}을 업로드하지 못했습니다.'
ErrFileDownloadDir: '다운로드 폴더가 지원되지 않습니다'
ErrCmdNotFound: '{{ .name}} 명령이 존재하지 않습니다. 먼저 호스트에 이 명령을 설치하세요'
ErrSourcePathNotFound: '소스 디렉토리가 존재하지 않습니다'
ErrFavoriteExist: '이 경로는 이미 즐겨찾기되었습니다'
ErrInvalidChar: '불법 문자는 허용되지 않습니다'
ErrPathNotDelete: '선택한 디렉토리를 삭제할 수 없습니다'
# SSL 관련
ErrSSLCannotDelete: "인증서 {{ .name }}은(는) 웹사이트에서 사용 중이므로 삭제할 수 없습니다."
ErrAccountCannotDelete: "계정과 연결된 인증서는 삭제할 수 없습니다."
ErrSSLApply: "인증서가 성공적으로 서명되었지만 Openresty 다시 로드에 실패했습니다. 구성을 확인하세요!"
ErrEmailIsExist: "이메일이 이미 존재합니다."
ErrSSLKeyNotFound: "개인 키 파일이 존재하지 않습니다."
ErrSSLCertificateNotFound: "인증서 파일이 존재하지 않습니다."
ErrSSLKeyFormat: "개인 키 파일 검증 오류"
ErrSSLCertificateFormat: "인증서 파일 형식 오류입니다. pem 형식을 사용하세요."
ErrEabKidOrEabHmacKeyCannotBlank: "EabKid 또는 EabHmacKey 는 비워둘 수 없습니다."
ErrOpenrestyNotFound: "HTTP 모드는 먼저 Openresty 를 설치해야 합니다."
ApplySSLStart: "인증서를 신청하기 시작합니다. 도메인 이름 [{{ .domain }}], 신청 방법 [{{ .type }}]"
dnsAccount: "DNS 자동"
dnsManual: "DNS 수동"
http: "HTTP"
ApplySSLFailed: "도메인 [{{ .domain }}] 인증서 신청 실패, {{ .detail }}"
ApplySSLSuccess: "도메인 [{{ .domain }}] 인증서 신청 성공!"
DNSAccountName: "DNS 계정 [{{ .name }}] 제조사 [{{ .type }}]"
PushDirLog: "인증서를 디렉토리 [{{ .path }}]에 푸시했습니다. {{ .status }}"
ErrDeleteCAWithSSL: "현재 조직에 발급된 인증서가 있으므로 삭제할 수 없습니다."
ErrDeleteWithPanelSSL: "패널 SSL 구성이 이 인증서를 사용 중이므로 삭제할 수 없습니다."
ErrDefaultCA: "기본 인증 기관은 삭제할 수 없습니다."
ApplyWebSiteSSLLog: "{{ .name }} 웹사이트 인증서를 업데이트하기 시작합니다."
ErrUpdateWebsiteSSL: "{{ .name }} 웹사이트 인증서 업데이트 실패: {{ .err }}"
ApplyWebSiteSSLSuccess: "웹사이트 인증서 업데이트 성공"
ErrExecShell: "스크립트 실행 실패 {{ .err }}"
ExecShellStart: "스크립트 실행 시작"
ExecShellSuccess: "스크립트 실행 성공"
StartUpdateSystemSSL: "시스템 인증서 업데이트 시작"
UpdateSystemSSLSuccess: "시스템 인증서 업데이트 성공"
#웹사이트
ErrDomainIsExist: '도메인 이름이 이미 존재합니다'
ErrAliasIsExist: '별칭이 이미 존재합니다'
ErrAppDelete: '다른 웹사이트에서 이 앱을 사용하고 있어 삭제할 수 없습니다'
ErrBackupMatch: '백업 파일이 현재 웹사이트 데이터 중 일부 {{ .detail }}와 일치하지 않습니다.'
ErrBackupExist: '백업 파일에 있는 소스 데이터의 해당 부분이 존재하지 않습니다 {{ .detail }}'
ErrPHPResource: '로컬 운영 환경이 전환을 지원하지 않습니다! '
ErrPathPermission: '인덱스 디렉토리에서 1000:1000이 아닌 권한을 가진 폴더가 감지되었습니다. 이로 인해 웹사이트에서 액세스 거부 오류가 발생할 수 있습니다. 위의 저장 버튼을 클릭해주세요.'
ErrDomainIsUsed: '[{{ .name }}] 웹사이트에서 이미 도메인 이름을 사용하고 있습니다.'
ErrDomainFormat: '{{ .name }} 도메인 이름 형식이 올바르지 않습니다'
ErrDefaultAlias: '기본값은 예약된 코드입니다. 다른 코드를 사용하세요'
ErrParentWebsite: '먼저 하위 사이트 {{ .name }}을 삭제해야 합니다.'
ErrBuildDirNotFound: '빌드 디렉토리가 존재하지 않습니다'
ErrImageNotExist: '운영 환경 {{ .name }} 이미지가 존재하지 않습니다. 운영 환경을 다시 편집하세요.'
# MySQL
ErrUserIsExist: "현재 사용자가 이미 존재합니다. 새로운 사용자를 입력하세요."
ErrDatabaseIsExist: "현재 데이터베이스가 이미 존재합니다. 새로운 데이터베이스를 입력하세요."
ErrExecTimeOut: "SQL 실행이 시간 초과되었습니다. 데이터베이스를 확인하세요."
ErrRemoteExist: "원격 데이터베이스에 동일한 이름이 이미 존재합니다. 이름을 수정한 후 다시 시도하세요."
ErrLocalExist: "로컬 데이터베이스에 동일한 이름이 이미 존재합니다. 이름을 수정한 후 다시 시도하세요."
#SSL인증
ErrSSLCannotDelete: '{{ .name }} 인증서는 웹사이트에서 사용 중이므로 삭제할 수 없습니다.'
ErrAccountCannotDelete: '계정이 인증서와 연결되어 있어 삭제할 수 없습니다.'
ErrSSLApply: '인증서 갱신이 성공했으나, openresty 재로드에 실패했습니다. 구성을 확인해 주세요!'
ErrEmailIsExist: '사서함이 이미 존재합니다'
ErrSSLKeyNotFound: '개인 키 파일이 존재하지 않습니다'
ErrSSLCertificateNotFound: '인증서 파일이 존재하지 않습니다'
ErrSSLKeyFormat: '개인 키 파일 검증에 실패했습니다'
ErrSSLCertificateFormat: '인증서 파일 형식이 올바르지 않습니다. pem 형식을 사용하세요.'
ErrEabKidOrEabHmacKeyCannotBlank: 'EabKid 또는 EabHmacKey는 비워둘 수 없습니다'
ErrOpenrestyNotFound: 'Http 모드를 사용하려면 먼저 Openresty를 설치해야 합니다.'
ApplySSLStart: '인증서 신청 시작, 도메인 이름 [{{ .domain }}] 신청 방법 [{{ .type }}] '
dnsAccount: 'DNS 자동'
dnsManual: 'DNS 매뉴얼'
http: 'HTTP'
ApplySSLFailed: '[{{ .domain }}] 인증서 신청이 실패했습니다. {{ .detail }} '
ApplySSLSuccess: '[{{ .domain }}] 인증서 신청이 성공적으로 완료되었습니다! ! '
DNSAccountName: 'DNS 계정 [{{ .name }}] 공급업체 [{{ .type }}]'
PushDirLog: '인증서가 [{{ .path }}] {{ .status }} 디렉토리로 푸시되었습니다.'
ErrDeleteCAWithSSL: '현재 조직에는 발급된 인증서가 있어 삭제할 수 없습니다.'
ErrDeleteWithPanelSSL: '패널 SSL 구성은 이 인증서를 사용하므로 삭제할 수 없습니다.'
ErrDefaultCA: '기본 권한을 삭제할 수 없습니다'
ApplyWebSiteSSLLog: '{{ .name }} 웹사이트 인증서 갱신 시작'
ErrUpdateWebsiteSSL: '{{ .name }} 웹사이트 인증서 업데이트에 실패했습니다: {{ .err }}'
ApplyWebSiteSSLSuccess: '웹사이트 인증서 업데이트 성공'
ErrExecShell: '스크립트 {{ .err }}을 실행하지 못했습니다.'
ExecShellStart: '스크립트 실행 시작'
ExecShellSuccess: '스크립트 실행 성공'
StartUpdateSystemSSL: '시스템 인증서 업데이트 시작'
UpdateSystemSSLSuccess: '시스템 인증서 업데이트가 성공적으로 완료되었습니다.'
ErrWildcardDomain: 'HTTP 모드에서 와일드카드 도메인 이름 인증서를 신청할 수 없습니다'
# Redis
ErrTypeOfRedis: "복구 파일 형식이 현재 지속성 모드와 일치하지 않습니다. 파일 형식을 수정한 후 다시 시도하세요."
#마이SQL
ErrUserIsExist: '현재 사용자가 이미 존재합니다. 다시 입력하세요'
ErrDatabaseIsExist: '현재 데이터베이스가 이미 존재합니다. 다시 입력하세요'
ErrExecTimeOut: 'SQL 실행 시간이 초과되었습니다. 데이터베이스를 확인하십시오.'
ErrRemoteExist: '이 이름을 가진 원격 데이터베이스가 이미 존재합니다. 수정하고 다시 시도하세요'
ErrLocalExist: '이름이 로컬 데이터베이스에 이미 존재합니다. 이름을 수정하고 다시 시도하세요'
# Container
ErrInUsed: "{{ .detail }}이(가) 사용 중이므로 삭제할 수 없습니다."
ErrObjectInUsed: "이 객체는 사용 중이므로 삭제할 수 없습니다."
ErrObjectBeDependent: "이 이미지는 다른 이미지에 의해 의존되고 있어 삭제할 수 없습니다."
ErrPortRules: "포트 수가 일치하지 않습니다. 다시 입력하세요!"
ErrPgImagePull: "이미지 가져오기 시간이 초과되었습니다. 이미지 가속 구성을 설정하거나 postgres:16.0-alpine 이미지를 수동으로 가져온 후 다시 시도하세요."
#레디스
ErrTypeOfRedis: '복구 파일 유형이 현재 지속성 방법과 일치하지 않습니다. 수정하고 다시 시도하세요'
# Runtime
ErrDirNotFound: "빌드 폴더가 존재하지 않습니다! 파일의 무결성을 확인하세요!"
ErrFileNotExist: "{{ .detail }} 파일이 존재하지 않습니다! 소스 파일의 무결성을 확인하세요!"
ErrImageBuildErr: "이미지 빌드 실패"
ErrImageExist: "이미지가 이미 존재합니다!"
ErrDelWithWebsite: "운영 환경이 웹사이트와 연결되어 있어 삭제할 수 없습니다."
ErrRuntimeStart: "실행 시작 실패"
ErrPackageJsonNotFound: "package.json 파일이 존재하지 않습니다."
ErrScriptsNotFound: "package.json 에서 스크립트 구성 항목을 찾을 수 없습니다."
ErrContainerNameNotFound: "컨테이너 이름을 가져올 수 없습니다. .env 파일을 확인하세요."
ErrNodeModulesNotFound: "node_modules 폴더가 존재하지 않습니다! 실행 환경을 편집하거나 실행 환경이 성공적으로 시작되기를 기다리세요."
#컨테이너
ErrInUsed: '{{ .detail }}이 사용 중이므로 삭제할 수 없습니다'
ErrObjectInUsed: '개체가 사용 중이므로 삭제할 수 없습니다'
ErrObjectBeDependent: '이 이미지는 다른 이미지에 의존하므로 삭제할 수 없습니다'
ErrPortRules: '포트 번호가 일치하지 않습니다. 다시 입력하세요!'
ErrPgImagePull: '이미지 풀링 시간이 초과되었습니다. 이미지 가속을 구성하거나 {{ .name }} 이미지를 수동으로 풀링한 다음 다시 시도하세요.'
# Setting
ErrBackupInUsed: "백업 계정이 크론 작업에 사용 중이므로 삭제할 수 없습니다."
ErrBackupCheck: "백업 계정 연결 테스트 실패 {{ .err }}"
ErrOSSConn: "최신 버전을 가져올 수 없습니다. 서버가 외부 네트워크에 연결할 수 있는지 확인하세요."
ErrEntrance: "보안 입구 정보 오류. 확인 후 다시 시도하세요!"
#실행 시간
ErrDirNotFound: '빌드 폴더가 존재하지 않습니다! 파일 무결성을 확인하세요!'
ErrFileNotExist: '{{ .detail }} 파일이 존재하지 않습니다! 소스 파일의 무결성을 확인하세요!'
ErrImageBuildErr: '이미지 빌드 실패'
ErrImageExist: '이미지가 이미 존재합니다!'
ErrDelWithWebsite: '운영 환경이 이미 웹사이트와 연결되어 있어 삭제할 수 없습니다'
ErrRuntimeStart: '시작 실패'
ErrPackageJsonNotFound: 'package.json 파일이 존재하지 않습니다'
ErrScriptsNotFound: 'package.json에서 스크립트 구성 항목을 찾을 수 없습니다.'
ErrContainerNameNotFound: '컨테이너 이름을 가져올 수 없습니다. .env 파일을 확인하세요.'
ErrNodeModulesNotFound: 'node_modules 폴더가 없습니다! 런타임 환경을 편집하거나 런타임 환경이 성공적으로 시작될 때까지 기다리십시오'
ErrContainerNameIsNull: '컨테이너 이름이 존재하지 않습니다'
# Tool
ErrConfigNotFound: "구성 파일이 존재하지 않습니다."
ErrConfigParse: "구성 파일 형식 오류"
ErrConfigIsNull: "구성 파일은 비워둘 수 없습니다."
ErrConfigDirNotFound: "실행 디렉토리가 존재하지 않습니다."
ErrConfigAlreadyExist: "동일한 이름의 구성 파일이 이미 존재합니다."
ErrUserFindErr: "사용자 {{ .name }} 찾기 실패 {{ .err }}"
#도구
ErrConfigNotFound: '구성 파일이 존재하지 않습니다'
ErrConfigParse: '구성 파일 형식이 올바르지 않습니다'
ErrConfigIsNull: '구성 파일은 비어 있을 수 없습니다'
ErrConfigDirNotFound: '실행 디렉토리가 존재하지 않습니다'
ErrConfigAlreadyExist: '같은 이름의 구성 파일이 이미 존재합니다'
ErrUserFindErr: '사용자 {{ .name }} 검색에 실패했습니다 {{ .err }}'
# SSH
ErrFirewallNone: "시스템에서 firewalld 또는 ufw 서비스 감지못했습니다. 확인 다시 시도하세요!"
ErrFirewallBoth: "시스템에서 firewalld 와 ufw 서비스가 모두 감지되었습니다. 충돌을 방지하려면 하나를 제거한 후 다시 시도하세요!"
#ssh
ErrFirewallNone: '시스템 방화벽이나 ufw 서비스 감지않았습니다. 확인하고 다시 시도하세요!'
ErrFirewallBoth: '시스템에 방화벽과 ufw 서비스가 모두 있는 것으로 감지되었습니다. 충돌을 하려면 제거한 후 다시 시도하세요!'
# Cronjob
ErrBashExecute: "스크립트 실행 오류. 작업 출력 텍스트 영역에서 구체적인 정보를 확인하세요."
ErrCutWebsiteLog: "{{ .name }} 웹사이트 로그 자르기 실패, 오류 {{ .err }}"
CutWebsiteLogSuccess: "{{ .name }} 웹사이트 로그 자르기 성공, 백업 경로 {{ .path }}"
#크론잡
ErrCutWebsiteLog: '{{ .name }} 웹사이트 로그 잘라내기에 실패했습니다. 오류 {{ .err }}'
CutWebsiteLogSuccess: '{{ .name }} 웹사이트 로그가 성공적으로 잘렸습니다. 백업 경로 {{ .path }}'
HandleShell: '스크립트 {{ .name }} 실행'
HandleNtpSync: '시스템 시간 동기화'
HandleSystemClean: '시스템 캐시 정리'
# Toolbox
ErrNotExistUser: "현재 사용자가 존재하지 않습니다. 수정 후 다시 시도하세요!"
ErrBanAction: "설정 실패, 현재 {{ .name }} 서비스 사용할 수 없습니다. 확인 다시 시도하세요!"
ErrClamdscanNotFound: "clamdscan 명령 감지못했습니다. 설치 문서를 참조하세요!"
#도구상자
ErrNotExistUser: '현재 사용자가 존재하지 않습니다. 수정 후 다시 시도하세요!'
ErrBanAction: '설정 실패했습니다. 현재 {{ .name }} 서비스 사용할 수 없습니다. 확인하고 다시 시도하세요!'
ErrClamdscanNotFound: 'clamdscan 명령 감지않았습니다. 설서를 참조하여 설치하세요!'
# WAF
ErrScope: "이 설정의 수정은 지원되지 않습니다"
ErrStateChange: "상태 변경 실패"
ErrRuleExist: "규칙이 이미 존재합니다"
ErrRuleNotExist: "규칙이 존재하지 않습니다"
ErrParseIP: "IP 형식이 잘못되었습니다"
ErrDefaultIP: "default는 예약된 이름입니다. 다른 이름을 사용하세요"
ErrGroupInUse: "IP 그룹이 블랙리스트/화이트리스트에 사용 중입니다. 삭제할 수 없습니다"
ErrGroupExist: "IP 그룹 이름이 이미 존재합니다"
ErrIPRange: "IP 범위가 잘못되었습니다"
ErrIPExist: "IP가 이미 존재합니다"
urlDefense: "URL 규칙"
urlHelper: "금지된 URL"
dirFilter: "디렉토리 필터"
xss: "XSS"
phpExec: "PHP 스크립트 실행"
oneWordTrojan: "원워드 트로이 목마"
appFilter: "애플리케이션 위험 디렉토리 필터"
webshell: "Webshell"
args: "매개변수 규칙"
protocolFilter: "프로토콜 필터"
javaFileter: "Java 위험 파일 필터"
scannerFilter: "스캐너 필터"
escapeFilter: "이스케이프 필터"
customRule: "사용자 정의 규칙"
httpMethod: "HTTP 메드 필터"
fileExt: "파일 업로드 제한"
defaultIpBlack: "악성 IP 그룹"
cookie: "쿠키 규칙"
urlBlack: "URL 블랙리스트"
uaBlack: "User-Agent 블랙리스트"
attackCount: "공격 빈도 제한"
fileExtCheck: "파일 업로드 제한"
geoRestrict: "지역 접근 제한"
unknownWebsite: "무단 도메인 접근"
notFoundCount: "404 도 제한"
headerDefense: "헤더 규칙"
defaultUaBlack: "User-Agent 규칙"
methodWhite: "HTTP 규칙"
captcha: "인간-기계 검증"
fiveSeconds: "5초 검증"
vulnCheck: "보충 규칙"
acl: "사용자 정의 규칙"
sql: "SQL 인젝션"
cc: "접근 빈도 제한"
defaultUrlBlack: "URL 규칙"
sqlInject: "SQL 인젝션"
ErrDBNotExist: "데이터베이스가 존재하지 않습니다"
allow: "허용"
deny: "금지"
#와프
ErrScope: '이 구성을 수정하는 것은 지원되지 않습니다'
ErrStateChange: '상태 변경 실패했습니다'
ErrRuleExist: '규칙이 이미 존재합니다'
ErrRuleNotExist: '규칙이 존재하지 않습니다'
ErrParseIP: '잘못된 IP 형식'
ErrDefaultIP: '기본값은 예약된 이름입니다. 다른 이름으로 변경해 주세요'
ErrGroupInUse: 'IP 그룹이 블랙리스트/화이트리스트에 사용 중이므로 삭제할 수 없습니다.'
ErrGroupExist: 'IP 그룹 이름이 이미 존재합니다'
ErrIPRange: '잘못된 IP 범위'
ErrIPExist: 'IP가 이미 존재합니다'
urlDefense: 'URL 규칙'
urlHelper: '금지된 URL'
dirFilter: '디렉토리 필터'
xss: 'XSS'
phpExec: 'PHP 스크립트 실행'
oneWordTrojan: '한 단어 트로이'
appFilter: '위험 디렉토리 필터링 적용'
webshell: '웹쉘'
args: '매개변수 규칙'
protocolFilter: '프로토콜 필터링'
javaFileter: 'Java 위험 파일 필터'
scannerFilter: '스캐너 필터'
escapeFilter: '탈출 필터'
customRule: '사용자 정의 규칙'
httpMethod: 'HTTP 메드 필터링'
fileExt: '파일 업로드 제한'
defaultIpBlack: '악성 IP 그룹'
cookie: '쿠키 규칙'
urlBlack: 'URL 블랙리스트'
uaBlack: '사용자 에이전트 블랙리스트'
attackCount: '공격 빈도 제한'
fileExtCheck: '파일 업로드 제한'
geoRestrict: '지역 접근 제한'
unknownWebsite: '허가받지 않은 도메인 이름 접근'
notFoundCount: '404 도 제한'
headerDefense: '헤더 규칙'
defaultUaBlack: '사용자 에이전트 규칙'
methodWhite: 'HTTP 규칙'
captcha: '인간-기계 검증'
fiveSeconds: '5초 검증'
vulnCheck: '보충 규칙'
acl: '사용자 정의 규칙'
sql: 'SQL 주입'
cc: '접근 주파수 제한'
defaultUrlBlack: 'URL 규칙'
sqlInject: 'SQL 주입'
ErrDBNotExist: '데이터베이스가 존재하지 않습니다'
allow: '허용하다'
deny: '거부하다'
OpenrestyNotFound: 'Openresty가 설치되지 않았습니다'
# License
ErrLicense: "라이선스 형식 오류, 확인 후 다시 시도하세요!"
ErrLicenseCheck: "라이선스 검증 실패, 확인 후 다시 시도하세요!"
ErrXpackVersion: "라이선스 검증 실패, 이 라이선스는 버전 제한이 있어 성공적으로 가져올 수 없습니다. 확인 후 다시 시도하세요!"
ErrLicenseSave: "라이선스 정보 저장 실패, 오류 {{ .err }}. 다시 시도하세요!"
ErrLicenseSync: "라이선스 정보 동기화 실패, 데이터베이스에서 라이선스 정보를 감지하지 못했습니다!"
ErrXpackNotFound: "이 섹션은 전문가 버전 기능입니다. Panel 설정 - 라이선스 인터페이스에서 먼저 라이선스를 가져오세요."
ErrXpackNotActive: "이 섹션은 전문가 버전 기능입니다. Panel 설정 - 라이선스 인터페이스에서 먼저 라이선스 상태를 동기화하세요."
ErrXpackOutOfDate: "현재 라이선스가 만료되었습니다. Panel 설정 - 라이선스 인터페이스에서 라이선스를 다시 가져오세요."
ErrXpackLost: "라이선스가 최대 재시도 횟수에 도달했습니다. [설정] - [라이선스] 페이지로 이동하여 동기화 버튼을 수동으로 클릭해 전문가 버전 기능을 정상적으로 작동시키세요."
ErrXpackTimeout: "요청 시간이 초과되었습니다. 네트워크 연결이 불안정할 수 있으니 나중에 다시 시도하세요!"
#
TaskStart: '[START] {{ .name }} 작업이 시작됩니다.'
TaskEnd: '{{ .name }} 작업이 완료되었습니다 [완료]'
TaskFailed: '{{ .name }} 작업이 실패했습니다'
TaskTimeout: '{{ .name }}의 시간이 초과되었습니다'
TaskSuccess: '{{ .name }} 작업이 성공했습니다'
TaskRetry: '{{ .name }}번째 재시도 시작'
SubTaskSuccess: '{{ .name }}이 성공했습니다'
SubTaskFailed: '{{ .name }}이 실패했습니다: {{ .err }}'
TaskInstall: '설치'
TaskUninstall: '제거'
TaskCreate: '생성'
TaskDelete: '삭제'
TaskUpgrade: '업그레이드'
TaskUpdate: '업데이트'
TaskRestart: '다시 시작'
TaskBackup: '백업'
TaskRecover: '복구'
TaskRollback: '롤백'
TaskPull: '당기기'
TaskBuild: '빌드'
TaskPush: '푸시'
TaskHandle: '실행'
Website: '웹사이트'
App: '애플리케이션'
Runtime: '런타임 환경'
Database: '데이터베이스'
ConfigFTP: 'FTP 사용자 {{ .name }} 생성'
ConfigOpenresty: 'Openresty 구성 파일 생성'
InstallAppSuccess: '애플리케이션 {{ .name }}이 성공적으로 설치되었습니다.'
ConfigRuntime: '런타임 환경 구성'
ConfigApp: '구성 애플리케이션'
SuccessStatus: '{{ .name }}이 성공했습니다'
FailedStatus: '{{ .name }}이(가) {{ .err }}에 실패했습니다'
HandleLink: '핸들 애플리케이션 연결'
HandleDatabaseApp: '애플리케이션 매개변수 처리'
ExecShell: '{{ .name }} 스크립트 실행'
PullImage: '이미지 가져오기'
Start: '시작'
Run: '시작'
Stop: '정지'
Image: '거울'
Compose : '오케스트레이션'
Container: '컨테이너'
AppLink: '연결된 애플리케이션'
EnableSSL: 'HTTPS 활성화'
AppStore: '앱스토어'
TaskSync: '동기화'
LocalApp: '로컬 애플리케이션'
SubTask: '하위 작업'
RuntimeExtension: '런타임 환경 확장'
TaskIsExecuting: '작업이 실행 중입니다'
CustomAppstore: '사용자 정의 애플리케이션 웨어하우스'
# Alert
ErrAlert: "알림 정보 형식 오류, 확인 후 다시 시도하세요!"
ErrAlertPush: "알림 전송 오류, 확인 후 다시 시도하세요!"
ErrAlertSave: "알림 저장 오류, 확인 후 다시 시도하세요!"
ErrAlertSync: "알림 동기화 오류, 확인 후 다시 시도하세요!"
ErrAlertRemote: "원격 알림 오류, 확인 후 다시 시도하세요!"
# 작업 - ai
OllamaModelPull: 'Ollama 모델 {{ .name }}을(를) 끌어오세요'
OllamaModelSize: 'Ollama 모델 {{ .name }}의 크기를 가져옵니다'
# CMD
AppVersion: "앱 버전"
AppCommands: "앱 관련 명령어"
AppInit: "앱 초기화"
AppKeyVal: "앱 키 (영어만 지원)"
AppCreateFileErr: "파일 {{ .name }} 생성 실패 {{ .err }}"
AppCreateDirErr: "폴더 {{ .name }} 생성 실패 {{ .err }}"
AppMissKey: "앱 키가 없습니다. -k 옵션으로 지정하세요."
AppMissVersion: "앱 버전이 없습니다. -v 옵션으로 지정하세요."
AppVersionExist: "버전이 이미 존재합니다!"
AppCreateSuccessful: "생성 성공!"
AppWriteErr: "파일 {{ .name }} 쓰기 실패 {{ .err }}"
SudoHelper: "{{ .cmd }} 명령을 사용하거나 root 사용자로 전환하세요."
ListenIPCommands: "IP 변경"
ListenIPv4: "IPv4 에서 수신 대기"
ListenIPv6: "IPv6 에서 수신 대기"
ListenChangeSuccessful: "변경 성공! 현재 {{ .value }}에서 수신 대기 중입니다."
ResetCommands: "시스템 정보 초기화"
ResetMFA: "1Panel 이중 인증 취소"
ResetHttps: "1Panel HTTPS 로그인 취소"
ResetEntrance: "1Panel 보안 입구 취소"
ResetIPs: "1Panel 허용 IP 제한 취소"
ResetDomain: "1Panel 도메인 바인딩 취소"
RestoreCommands: "1Panel 서비스 및 데이터 복구"
RestoreNoSuchFile: "복구 가능한 파일이 없습니다."
RestoreStep1: "(1/5) {{ .name }} 디렉토리에서 1Panel 서비스 및 데이터 복구 시작..."
RestoreStep2: "(2/5) 1Panel 바이너리 복구 성공"
RestoreStep3: "(3/5) 1Panel 스크립트 복구 성공"
RestoreStep4: "(4/5) 1Panel 서비스 복구 성공"
RestoreStep5: "(5/5) 1Panel 데이터 복구 성공"
RestoreSuccessful: "복구 성공! 서비스를 다시 시작합니다. 잠시만 기다려주세요..."
UpdateCommands: "패널 정보 업데이트"
UpdateUser: "패널 사용자 업데이트"
UpdatePassword: "패널 비밀번호 업데이트"
UpdatePort: "패널 포트 업데이트"
UpdateUserNull: "오류: 패널 사용자가 비어 있습니다!"
UpdateUserBlank: "오류: 패널 사용자에 공백이 포함되어 있습니다!"
UpdateUserFormat: "오류: 잘못된 패널 사용자 형식! 영어, 중국어, 숫자, _만 지원하며 길이는 3~30자입니다."
UpdateUserErr: "오류: 패널 사용자 업데이트 실패 {{ .err }}"
UpdateSuccessful: "업데이트 성공!"
UpdateUserResult: "패널 사용자: {{ .name }}"
UpdatePasswordRead: "오류: 패널 비밀번호 정보 읽기 실패 {{ .err }}"
UpdatePasswordNull: "오류: 패널 비밀번호가 비어 있습니다!"
UpdateUPasswordBlank: "오류: 패널 비밀번호에 공백이 포함되어 있습니다!"
UpdatePasswordFormat: "오류: 패널 비밀번호는 문자, 숫자, 특수 문자 !@#$%*_,.?만 지원하며 길이는 8~30자입니다!"
UpdatePasswordLen: "오류: 6자 이상의 비밀번호를 입력하세요!"
UpdatePasswordRe: "비밀번호 확인:"
UpdatePasswordErr: "오류: 패널 비밀번호 업데이트 실패 {{ .err }}"
UpdatePasswordSame: "오류: 두 비밀번호가 일치하지 않습니다. 확인 후 다시 시도하세요!"
UpdatePasswordResult: "패널 비밀번호: {{ .name }}"
UpdatePortFormat: "오류: 입력한 포트 번호는 1~65535 사이여야 합니다!"
UpdatePortUsed: "오류: 포트 번호가 이미 사용 중입니다. 확인 후 다시 시도하세요!"
UpdatePortErr: "오류: 패널 포트 업데이트 실패 {{ .err }}"
UpdatePortResult: "패널 포트: {{ .name }}"
UpdatePortFirewallAdd: "방화벽 포트 규칙 추가 실패 {{ .err }}, 방화벽 규칙에 {{ .name }} 포트를 수동으로 추가하세요."
UpdatePortFirewallDel: "오류: 방화벽 포트 삭제 실패 {{ .err }}"
UpdatePortFirewallReload: "방화벽 다시 로드 실패 {{ .err }}, 방화벽을 수동으로 다시 로드하세요."
UserInfo: "패널 정보 가져오기"
UserInfoAddr: "패널 주소: "
UserInfoPassHelp: "팁: 비밀번호를 변경하려면 다음 명령어를 실행할 수 있습니다: "
DBConnErr: "오류: 데이터베이스 연결 초기화 실패 {{ .err }}"
SystemVersion: "버전: "
SystemMode: "모드: "
# 작업-스냅샷
Snapshot: '스냅샷'
SnapDBInfo: '1Panel 데이터베이스 정보 쓰기'
SnapCopy: '파일 및 디렉토리 {{ .name }} 복사'
SnapNewDB: '데이터베이스 {{ .name }} 연결 초기화'
SnapDeleteOperationLog: '작업 로그 삭제'
SnapDeleteLoginLog: '액세스 로그 삭제'
SnapDeleteMonitor: '모니터링 데이터 삭제'
SnapRemoveSystemIP: '시스템 IP 제거'
SnapBaseInfo: '1패널 기본 정보 쓰기'
SnapInstallApp: '1Panel 설치된 애플리케이션 백업'
SnapDockerSave: '설치된 애플리케이션 압축'
SnapLocalBackup: '1Panel 로컬 백업 디렉토리 백업'
SnapCompressBackup: '로컬 백업 디렉토리 압축'
SnapPanelData: '1Panel 데이터 디렉토리 백업'
SnapCompressPanel: '압축 데이터 디렉토리'
SnapWebsite: '1Panel 웹사이트 디렉토리 백업'
SnapCloseDBConn: '데이터베이스 연결 닫기'
SnapCompress: '스냅샷 파일 만들기'
SnapCompressFile: '스냅샷 파일 압축'
SnapCheckCompress: '스냅샷 압축 파일 확인'
SnapCompressSize: '스냅샷 파일 크기 {{ .name }}'
SnapUpload: '스냅샷 파일 업로드'
SnapLoadBackup: '백업 계정 정보 가져오기'
SnapUploadTo: '스냅샷 파일을 {{ .name }}에 업로드'
SnapUploadRes: '스냅샷 파일을 {{ .name }}에 업로드'
SnapshotRecover: '스냅샷 복원'
RecoverDownload: '스냅샷 파일 다운로드'
Download: '다운로드'
RecoverDownloadAccount: '스냅샷 다운로드 백업 계정 {{ .name }} 가져오기'
RecoverDecompress: '스냅샷 압축 파일 압축 해제'
Decompress: '감압'
BackupBeforeRecover: '스냅샷 전에 시스템 관련 데이터 백업'
Readjson: '스냅샷에서 Json 파일을 읽습니다'
ReadjsonPath: '스냅샷의 Json 파일 경로 가져오기'
ReadjsonContent: 'Json 파일 읽기'
ReadjsonMarshal: 'Json 이스케이프 처리'
RecoverApp: '설치된 앱 복원'
RecoverWebsite: '웹사이트 디렉토리 복구'
RecoverAppImage: '스냅샷 이미지 백업 복원'
RecoverCompose: '다른 Composer 콘텐츠 복원'
RecoverComposeList: '모든 작곡가를 복원합니다'
RecoverComposeItem: '작성 {{ .name }} 복구'
RecoverAppEmpty: '스냅샷 파일에서 애플리케이션 이미지 백업을 찾을 수 없습니다'
RecoverBaseData: '기본 데이터 및 파일 복구'
RecoverDaemonJsonEmpty: '스냅샷 파일과 현재 머신 모두 컨테이너 구성 daemon.json 파일이 없습니다.'
RecoverDaemonJson: '컨테이너 구성 daemon.json 파일 복원'
RecoverDBData: '데이터베이스 데이터 복구'
RecoverBackups: '로컬 백업 디렉토리 복원'
RecoverPanelData: '복구 데이터 디렉토리'
# 작업 - 컨테이너
ContainerNewCliet: 'Docker 클라이언트 초기화'
ContainerImagePull: '컨테이너 이미지 {{ .name }} 가져오기'
ContainerRemoveOld: '원래 컨테이너 {{ .name }} 제거'
ContainerImageCheck: '이미지가 정상적으로 당겨졌는지 확인'
ContainerLoadInfo: '기본 컨테이너 정보 가져오기'
ContainerRecreate: '컨테이너 업데이트에 실패했습니다. 이제 원래 컨테이너를 복원하기 시작합니다.'
ContainerCreate: '새로운 컨테이너 {{ .name }}를 만듭니다'
ContainerCreateFailed: '컨테이너 생성에 실패했습니다. 실패한 컨테이너를 삭제하세요'
ContainerStartCheck: '컨테이너가 시작되었는지 확인'
# 작업 - 이미지
ImageBuild: '이미지 빌드'
ImageBuildStdoutCheck: '이미지 출력 콘텐츠 구문 분석'
ImaegBuildRes: '이미지 빌드 출력: {{ .name }}'
ImagePull: '이미지 가져오기'
ImageRepoAuthFromDB: '데이터베이스에서 저장소 인증 정보 가져오기'
ImaegPullRes: '이미지 풀 출력: {{ .name }}'
ImagePush: '이미지 푸시'
ImageRenameTag: '이미지 태그 수정'
ImageNewTag: '새로운 이미지 태그 {{ .name }}'
ImaegPushRes: '이미지 푸시 출력: {{ .name }}'
ComposeCreate: '작곡 만들기'
ComposeCreateRes: 'Compose 생성 출력: {{ .name }}'
# 작업 - 웹사이트
BackupNginxConfig: '웹사이트 OpenResty 구성 파일 백업'
CompressFileSuccess: '디렉토리 압축이 성공했습니다. {{ .name }}으로 압축되었습니다.'
CompressDir: '압축 디렉토리'
DeCompressFile: '파일 {{ .name }} 압축 해제'
ErrCheckValid: '백업 파일 검증에 실패했습니다, {{ .name }}'
Rollback: '롤백'
websiteDir: '웹사이트 디렉토리'
RecoverFailedStartRollBack: '복구 실패, 롤백 시작'
AppBackupFileIncomplete: '백업 파일이 불완전하며 app.json 또는 app.tar.gz 파일이 없습니다.'
AppAttributesNotMatch: '애플리케이션 유형 또는 이름이 일치하지 않습니다'
#알리다
ErrAlert: '경고 메시지의 형식이 올바르지 않습니다. 확인하고 다시 시도하세요!'
ErrAlertPush: '알림 정보를 푸시하는 중 오류가 발생했습니다. 확인하고 다시 시도하세요!'
ErrAlertSave: '알람 정보를 저장하는 중 오류가 발생했습니다. 확인하고 다시 시도하세요!'
ErrAlertSync: '알람 정보 동기화 오류입니다. 확인하고 다시 시도하세요!'
ErrAlertRemote: '알람 메시지 원격 오류, 확인하고 다시 시도하세요!'
+422
View File
@@ -0,0 +1,422 @@
ErrInvalidParams: 'Permintaan ralat parameter: {{ .detail }}'
ErrTokenParse: 'Ralat penjanaan token: {{ .detail }}'
ErrInitialPassword: 'Kata laluan asal tidak betul'
ErrInternalServer: 'Ralat pelayan dalaman: {{ .detail }}'
ErrRecordExist: 'Rekod sudah wujud'
ErrRecordNotFound: 'Rekod tidak ditemui'
ErrStructTransform: 'Penukaran jenis gagal: {{ .err }}'
ErrNotLogin: 'Pengguna tidak log masuk: {{ .detail }}'
ErrPasswordExpired: 'Kata laluan semasa telah tamat tempoh: {{ .detail }}'
ErrNotSupportType: 'Sistem tidak menyokong jenis semasa: {{ .name }}'
ErrProxy: 'Ralat permintaan, sila semak status nod: {{ .detail }}'
ErrApiConfigStatusInvalid: 'Akses kepada antara muka API adalah dilarang: {{ .detail }}'
ErrApiConfigKeyInvalid: 'Ralat kunci antara muka API: {{ .detail }}'
ErrApiConfigIPInvalid: 'IP yang digunakan untuk memanggil antara muka API tiada dalam senarai putih: {{ .detail }}'
ErrApiConfigDisable: 'Antara muka ini melarang penggunaan panggilan antara muka API: {{ .detail }}'
ErrApiConfigKeyTimeInvalid: 'Ralat cap masa antara muka API: {{ .detail }}'
#biasa
ErrUsernameIsExist: 'Nama pengguna sudah wujud'
ErrNameIsExist: 'Nama sudah wujud'
ErrDemoEnvironment: 'Pelayan demo, operasi ini dilarang!'
ErrCmdTimeout: 'Pelaksanaan arahan tamat masa!'
ErrCmdIllegal: 'Terdapat aksara yang menyalahi undang-undang dalam perintah pelaksanaan, sila ubah suainya dan cuba lagi!'
ErrPortExist: '{{ .port }} port sudah diduduki oleh {{ .type }} [{{ .name }}]'
TYPE_APP: 'Aplikasi'
TYPE_RUNTIME: 'Persekitaran masa jalan'
TYPE_DOMAIN: 'Nama Domain'
ErrTypePort: Format 'Port {{ .name }} tidak betul'
ErrTypePortRange: 'Julat port perlu antara 1-65535'
Success: 'Kejayaan'
Failed: 'Gagal'
SystemRestart: 'Tugas terganggu kerana sistem mula semula'
ErrGroupIsDefault: 'Kumpulan lalai, tidak boleh dipadamkan'
ErrGroupIsInWebsiteUse: 'Kumpulan sedang digunakan oleh tapak web lain dan tidak boleh dipadamkan.'
#sandaran
ErrBackupInUsed: 'Akaun sandaran telah digunakan dalam tugas yang dijadualkan dan tidak boleh dipadamkan.'
ErrBackupCheck: 'Sambungan ujian akaun sandaran gagal {{ .err }}'
ErrBackupLocalDelete: 'Memadam akaun sandaran pelayan tempatan belum disokong lagi'
ErrBackupLocalCreate: 'Membuat akaun sandaran pelayan tempatan belum disokong lagi'
#app
ErrPortInUsed: 'Port {{ .detail }} sudah diduduki!'
ErrAppLimit: 'Bilangan aplikasi yang dipasang telah melebihi had'
ErrAppRequired: 'Sila pasang aplikasi {{ .detail }} dahulu'
ErrNotInstall: 'Aplikasi tidak dipasang'
ErrPortInOtherApp: 'Port {{ .port }} sudah diduduki oleh aplikasi {{ .apps }}!'
ErrDbUserNotValid: 'Pangkalan data sedia ada, nama pengguna dan kata laluan tidak sepadan!'
ErrDockerComposeNotValid: 'Format fail karang docker tidak betul'
ErrUpdateBuWebsite: 'Aplikasi telah berjaya dikemas kini, tetapi pengubahsuaian fail konfigurasi tapak web gagal. Sila semak konfigurasi! '
Err1PanelNetworkFailed: 'Pembuatan rangkaian kontena lalai gagal! {{ .detail }}'
ErrFileParse: 'Penghuraian fail karang docker aplikasi gagal!'
ErrInstallDirNotFound: 'Direktori pemasangan tidak wujud. Jika anda perlu menyahpasang, sila pilih Paksa Nyahpasang'
AppStoreIsUpToDate: 'Gedung aplikasi sudah pun versi terkini'
LocalAppVersionNull: Aplikasi '{{ .name }} tidak disegerakkan ke versi! Tidak dapat menambah pada senarai apl'
LocalAppVersionErr: '{{ .name }} versi penyegerakan {{ .version }} gagal! {{ .err }}'
ErrFileNotFound: 'Fail {{ .name }} tidak wujud'
ErrFileParseApp: '{{ .name }} penghuraian fail gagal {{ .err }}'
ErrAppDirNull: 'Folder versi tidak wujud'
LocalAppErr: 'Penyegerakan {{ .name }} aplikasi gagal! {{ .err }}'
ErrContainerName: 'Nama kontena sudah wujud'
ErrAppSystemRestart: '1Panel restart menyebabkan tugas ditamatkan'
ErrCreateHttpClient: 'Gagal membuat permintaan {{ .err }}'
ErrHttpReqTimeOut: 'Permintaan tamat masa {{ .err }}'
ErrHttpReqFailed: 'Permintaan gagal {{ .err }}'
ErrNoSuchHost: 'Tidak dapat mencari pelayan yang diminta {{ .err }}'
ErrHttpReqNotFound: 'Sumber yang diminta {{ .err }} tidak dapat ditemui'
ErrImagePullTimeOut: 'Tamat masa tarik imej'
ErrContainerNotFound: 'Bekas {{ .name }} tidak wujud'
ErrContainerMsg: Bekas '{{ .name }} adalah tidak normal. Sila semak log pada halaman kontena untuk butiran'
ErrAppBackup: '{{ .name }} sandaran aplikasi gagal {{ .err }}'
ErrImagePull: 'Tarik imej gagal {{ .err }}'
ErrVersionTooLow: 'Versi 1Panel semasa terlalu rendah untuk mengemas kini App Store. Sila tingkatkan versi sebelum beroperasi.'
ErrAppNameExist: 'Nama aplikasi sudah wujud'
AppStoreIsSyncing: 'App Store sedang menyegerak, sila cuba sebentar lagi'
ErrGetCompose: 'Gagal mendapatkan fail docker-compose.yml! {{ .detail }}'
ErrAppWarn: 'Status tidak normal, sila semak log'
ErrAppParamKey: 'Parameter {{ .name }} medan tidak normal'
ErrAppUpgrade: 'Peningkatan {{ .name }} aplikasi gagal {{ .err }}'
AppRecover: 'Aplikasi tarik balik {{ .name }}'
PullImageStart: 'Mula tarik imej {{ .name }}'
PullImageSuccess: 'Tarik imej berjaya'
UpgradeAppStart: 'Mulakan naik taraf aplikasi {{ .name }}'
UpgradeAppSuccess: 'Aplikasi {{ .name }} berjaya dinaik taraf'
AppStoreIsLastVersion: 'App Store sudah pun versi terkini'
AppStoreSyncSuccess: 'Penyegerakan App Store berjaya'
SyncAppDetail: 'Segerakkan konfigurasi aplikasi'
AppVersionNotMatch: 'Aplikasi {{ .name }} memerlukan versi 1Panel yang lebih tinggi, melangkau penyegerakan'
MoveSiteDir: 'Peningkatan semasa memerlukan penghijrahan direktori tapak web OpenResty'
MoveSiteToDir: 'Pindahkan direktori tapak ke {{ .name }}'
ErrMoveSiteDir: 'Gagal memindahkan direktori tapak'
MoveSiteDirSuccess: 'Penghijrahan direktori tapak web yang berjaya'
DeleteRuntimePHP: 'Padam masa jalan PHP'
CustomAppStoreNotConfig: 'Sila tetapkan alamat pakej luar talian dalam gedung aplikasi'
CustomAppStoreNotFound: 'Gagal mendapatkan pakej kedai aplikasi, sila semak sama ada ia wujud'
CustomAppStoreFileValid: 'Pakej gedung apl perlu dalam format .tar.gz'
PullImageTimeout: 'Tarik tamat masa imej, sila cuba tingkatkan pecutan imej atau tukar kepada pecutan imej lain'
ErrAppIsDown: 'Status permohonan {{ .name }} tidak normal, sila semak'
ErrCustomApps: 'Ada aplikasi yang dipasang, sila nyahpasangnya dahulu'
ErrCustomRuntimes: 'Terdapat persekitaran masa jalan yang dipasang, sila padamkannya dahulu'
#fail
ErrFileCanNotRead: 'Fail ini tidak menyokong pratonton'
ErrFileToLarge: 'Fail lebih besar daripada 10M dan tidak boleh dibuka'
ErrPathNotFound: 'Direktori tidak wujud'
ErrMovePathFailed: 'Laluan sasaran tidak boleh mengandungi laluan asal!'
ErrLinkPathNotFound: 'Laluan sasaran tidak wujud!'
ErrFileIsExist: 'Fail atau folder sudah wujud!'
ErrFileUpload: '{{ .name }} gagal memuat naik fail {{ .detail }}'
ErrFileDownloadDir: 'Folder muat turun tidak disokong'
ErrCmdNotFound: 'Arahan {{ .name}} tidak wujud, sila pasang arahan ini pada hos dahulu'
ErrSourcePathNotFound: 'Direktori sumber tidak wujud'
ErrFavoriteExist: 'Laluan ini telah digemari'
ErrInvalidChar: 'Aksara haram tidak dibenarkan'
ErrPathNotDelete: 'Direktori yang dipilih tidak boleh dipadamkan'
#laman web
ErrDomainIsExist: 'Nama domain sudah wujud'
ErrAliasIsExist: 'Alias sudah wujud'
ErrAppDelete: 'Laman web lain menggunakan aplikasi ini dan tidak boleh memadamkannya'
ErrBackupMatch: 'Fail sandaran tidak sepadan dengan beberapa data tapak web semasa {{ .detail }}'
ErrBackupExist: 'Bahagian sepadan data sumber dalam fail sandaran tidak wujud {{ .detail }}'
ErrPHPResource: 'Persekitaran operasi tempatan tidak menyokong penukaran! '
ErrPathPermission: 'Folder dengan keizinan bukan 1000:1000 telah dikesan dalam direktori indeks, yang mungkin menyebabkan ralat dinafikan Akses pada tapak web. Sila klik butang Simpan di atas'
ErrDomainIsUsed: 'Nama domain telah digunakan oleh tapak web [{{ .name }}]'
ErrDomainFormat: 'Format nama domain {{ .name }} tidak betul'
ErrDefaultAlias: 'lalai ialah kod simpanan, sila gunakan kod lain'
ErrParentWebsite: 'Anda perlu memadamkan subtapak {{ .name }} dahulu'
ErrBuildDirNotFound: 'Direktori binaan tidak wujud'
ErrImageNotExist: 'Imej persekitaran operasi {{ .name }} tidak wujud, sila edit semula persekitaran pengendalian'
#ssl
ErrSSLCannotDelete: 'Sijil {{ .name }} sedang digunakan oleh tapak web dan tidak boleh dipadamkan'
ErrAccountCannotDelete: 'Akaun dikaitkan dengan sijil dan tidak boleh dipadamkan'
ErrSSSLApply: 'Pembaharuan sijil berjaya, muat semula openresty gagal, sila semak konfigurasi!'
ErrEmailIsExist: 'Peti mel sudah wujud'
ErrSSLKeyNotFound: 'Fail kunci peribadi tidak wujud'
ErrSSLCertificateNotFound: 'Fail sijil tidak wujud'
ErrSSLKeyFormat: 'Pengesahan fail kunci peribadi gagal'
ErrSSLCertificateFormat: 'Format fail sijil tidak betul, sila gunakan format pem'
ErrEabKidOrEabHmacKeyCannot Blank: 'EabKid atau EabHmacKey tidak boleh kosong'
ErrOpenrestyNotFound: 'Mod Http memerlukan Openresty dipasang dahulu'
ApplySSLStart: 'Mula memohon sijil, nama domain [{{ .domain }}] kaedah permohonan [{{ .type }}] '
dnsAccount: 'DNS Auto'
dnsManual: 'Manual DNS'
http: 'HTTP'
ApplySSLFailed: 'Permohonan untuk sijil [{{ .domain }}] gagal, {{ .detail }} '
ApplySSLSuccess: 'Berjaya memohon sijil [{{ .domain }}]! ! '
DNSAccountName: 'Akaun DNS [{{ .name }}] vendor [{{ .type }}]'
PushDirLog: 'Sijil ditolak ke direktori [{{ .path }}] {{ .status }}'
ErrDeleteCAWithSSL: 'Organisasi semasa mempunyai sijil yang telah dikeluarkan dan tidak boleh dipadamkan.'
ErrDeleteWithPanelSSL: 'Konfigurasi SSL Panel menggunakan sijil ini dan tidak boleh dipadamkan'
ErrDefaultCA: 'Pihak berkuasa lalai tidak boleh dipadamkan'
ApplyWebSiteSSLLog: 'Mula memperbaharui sijil tapak web {{ .name }}'
ErrUpdateWebsiteSSL: '{{ .name }} kemas kini sijil tapak web gagal: {{ .err }}'
ApplyWebSiteSSLSuccess: 'Berjaya kemas kini sijil tapak web'
ErrExecShell: 'Gagal melaksanakan skrip {{ .err }}'
ExecShellStart: 'Mula melaksanakan skrip'
ExecShellSuccess: 'Pelaksanaan skrip berjaya'
StartUpdateSystemSSL: 'Mula mengemas kini sijil sistem'
UpdateSystemSSLSuccess: 'Berjaya kemas kini sijil sistem'
ErrWildcardDomain: 'Tidak dapat memohon sijil nama domain kad bebas dalam mod HTTP'
#mysql
ErrUserIsExist: 'Pengguna semasa sudah wujud, sila masukkan semula'
ErrDatabaseIsExist: 'Pangkalan data semasa sudah wujud, sila masukkan semula'
ErrExecTimeOut: 'Pelaksanaan SQL tamat masa, sila semak pangkalan data'
ErrRemoteExist: 'Pangkalan data jauh sudah wujud dengan nama ini, sila ubah suainya dan cuba lagi'
ErrLocalExist: 'Nama sudah wujud dalam pangkalan data tempatan, sila ubah suai dan cuba lagi'
#redis
ErrTypeOfRedis: 'Jenis fail pemulihan tidak sepadan dengan kaedah kegigihan semasa, sila ubah suai dan cuba lagi'
#bekas
ErrInUsed: '{{ .detail }} sedang digunakan dan tidak boleh dipadamkan'
ErrObjectInUsed: 'Objek sedang digunakan dan tidak boleh dipadamkan'
ErrObjectBeDependent: 'Imej ini bergantung pada imej lain dan tidak boleh dipadamkan'
ErrPortRules: 'Nombor port tidak sepadan, sila masukkan semula!'
ErrPgImagePull: 'Tarikh imej tamat masa, sila konfigurasikan pecutan imej atau tarik imej {{ .name }} secara manual dan cuba lagi'
#masa berjalan
ErrDirNotFound: 'Folder binaan tidak wujud! Sila semak integriti fail!'
ErrFileNotExist: 'Fail {{ .detail }} tidak wujud! Sila semak integriti fail sumber!'
ErrImageBuildErr: 'Pembinaan imej gagal'
ErrImageExist: 'Imej sudah wujud!'
ErrDelWithWebsite: 'Persekitaran pengendalian sudah dikaitkan dengan tapak web dan tidak boleh dipadamkan'
ErrRuntimeStart: 'Permulaan gagal'
ErrPackageJsonNotFound: 'fail package.json tidak wujud'
ErrScriptsNotFound: 'Item konfigurasi skrip tidak ditemui dalam package.json'
ErrContainerNameNotFound: 'Tidak dapat mendapatkan nama kontena, sila semak fail .env'
ErrNodeModulesNotFound: 'Folder node_modules tidak wujud! Sila edit persekitaran masa jalan atau tunggu persekitaran masa jalan berjaya dimulakan'
ErrContainerNameIsNull: 'Nama kontena tidak wujud'
#alat
ErrConfigNotFound: 'Fail konfigurasi tidak wujud'
ErrConfigParse: 'Format fail konfigurasi tidak betul'
ErrConfigIsNull: 'Fail konfigurasi tidak boleh kosong'
ErrConfigDirNotFound: 'Direktori berjalan tidak wujud'
ErrConfigAlreadyExist: 'Fail konfigurasi dengan nama yang sama sudah wujud'
ErrUserFindErr: 'Pengguna {{ .name }} carian gagal {{ .err }}'
#ssh
ErrFirewallNone: 'Tiada sistem firewalld atau perkhidmatan ufw dikesan, sila semak dan cuba lagi!'
ErrFirewallBoth: 'Telah dikesan bahawa sistem mempunyai perkhidmatan firewalld dan ufw. Untuk mengelakkan konflik, sila nyahpasang dan cuba lagi!'
#cronjob
ErrCutWebsiteLog: '{{ .name }} pemotongan log tapak web gagal, ralat {{ .err }}'
CutWebsiteLogSuccess: '{{ .name }} log tapak web berjaya dipotong, laluan sandaran {{ .path }}'
HandleShell: 'Laksanakan skrip {{ .name }}'
HandleNtpSync: 'Penyegerakan masa sistem'
HandleSystemClean: 'Pembersihan cache sistem'
#kotak alat
ErrNotExistUser: 'Pengguna semasa tidak wujud, sila ubah suai dan cuba lagi!'
ErrBanAction: 'Tetapan gagal. Perkhidmatan {{ .name }} semasa tidak tersedia. Sila semak dan cuba lagi!'
ErrClamdscanNotFound: 'Arahan clamdscan tidak dikesan, sila rujuk dokumentasi untuk memasangnya!'
#waf
ErrScope: 'Mengubah suai konfigurasi ini tidak disokong'
ErrStateChange: 'Perubahan keadaan gagal'
ErrRuleExist: 'Peraturan sudah wujud'
ErrRuleNotExist: 'Peraturan tidak wujud'
ErrParseIP: 'Format IP salah'
ErrDefaultIP: 'default ialah nama simpanan, sila tukar kepada nama lain'
ErrGroupInUse: 'Kumpulan IP digunakan oleh senarai hitam/senarai putih dan tidak boleh dipadamkan'
ErrGroupExist: 'Nama kumpulan IP sudah wujud'
ErrIPRange: 'Julat IP salah'
ErrIPExist: 'IP sudah wujud'
urlDefense: 'Peraturan URL'
urlHelper: 'URL Terlarang'
dirFilter: 'Penapis direktori'
xss: 'XSS'
phpExec: 'Pelaksanaan skrip PHP'
oneWordTrojan: 'One Word Trojan'
appFilter: 'Gunakan penapisan direktori berbahaya'
webshell: 'Webshell'
args: 'Peraturan parameter'
protocolFilter: 'Penapisan protokol'
javaFileter: 'Penapis fail berbahaya Java'
Penapis pengimbas: 'Penapis pengimbas'
escapeFilter: 'penapis melarikan diri'
customRule: 'Peraturan tersuai'
httpMethod: 'Penapisan kaedah HTTP'
fileExt: 'Sekatan muat naik fail'
defaultIpBlack: 'Kumpulan IP berniat jahat'
cookie: 'Peraturan Kuki'
urlBlack: 'senarai hitam URL'
uaBlack: 'Senarai hitam Ejen Pengguna'
attackCount: 'Had kekerapan serangan'
fileExtCheck: 'Sekatan muat naik fail'
geoRestrict: 'Sekatan akses serantau'
unknownWebsite: 'Akses nama domain yang tidak dibenarkan'
notFoundCount: '404 Had Kadar'
headerDefense: 'Peraturan header'
defaultUaBlack: 'Peraturan Ejen Pengguna'
methodWhite: 'Peraturan HTTP'
captcha: 'pengesahan mesin manusia'
fiveSeconds: 'pengesahan 5 saat'
vulnCheck: 'Peraturan tambahan'
acl: 'Peraturan tersuai'
sql: 'suntikan SQL'
cc: 'Had kekerapan akses'
defaultUrlBlack: 'Peraturan URL'
sqlInject: 'Suntikan SQL'
ErrDBNotExist: 'Pangkalan data tidak wujud'
allow: 'membenarkan'
deny: 'menafikan'
OpenrestyNotFound: 'Openresty tidak dipasang'
#tugas
TaskStart: '{{ .name }} Task mula [MULA]'
TaskEnd: '{{ .name }} Task selesai [SELESAI]'
TaskFailed: 'tugas {{ .name }} gagal'
TaskTimeout: '{{ .name }} tamat masa'
TaskSuccess: '{{ .name }} Task berjaya'
TaskRetry: 'Mulakan {{ .name }} cuba semula'
SubTaskSuccess: '{{ .name }} berjaya'
SubTaskFailed: '{{ .name }} gagal: {{ .err }}'
TaskInstall: 'Pasang'
TaskUninstall: 'Nyahpasang'
TaskCreate: 'Buat'
TaskDelete: 'Padam'
TaskUpgrade: 'Naik taraf'
TaskUpdate: 'Kemas kini'
TaskRestart: 'Mulakan semula'
TaskBackup: 'Sandaran'
TaskRecover: 'Pulihkan'
TaskRollback: 'Rollback'
TaskPull: 'Tarik'
TaskBuild: 'Bina'
TaskPush: 'Tolak'
TaskHandle: 'Laksanakan'
Website: 'Laman web'
App: 'Aplikasi'
Runtime: 'Persekitaran masa jalan'
Database: 'Pangkalan Data'
ConfigFTP: 'Buat pengguna FTP {{ .name }}'
ConfigOpenresty: 'Buat fail konfigurasi Openresty'
InstallAppSuccess: 'Aplikasi {{ .name }} berjaya dipasang'
ConfigRuntime: 'Konfigurasikan persekitaran masa jalan'
ConfigApp: 'Aplikasi Konfigurasi'
SuccessStatus: '{{ .name }} berjaya'
FailedStatus: '{{ .name }} gagal {{ .err }}'
HandleLink: 'Kendalikan persatuan aplikasi'
HandleDatabaseApp: 'Mengendalikan parameter aplikasi'
ExecShell: 'Laksanakan skrip {{ .name }}'
PullImage: 'Tarik imej'
Start: 'Mula'
Run: 'Mula'
Stop: 'Berhenti'
Image: 'Cermin'
Compose: 'Orkestrasi'
Container: 'Bekas'
AppLink: 'Aplikasi Terpaut'
EnableSSL: 'Dayakan HTTPS'
AppStore: 'App Store'
TaskSync: 'Segerakkan'
LocalApp: 'Aplikasi Tempatan'
SubTask: 'Subtugas'
RuntimeExtension: 'Sambungan Persekitaran Runtime'
TaskIsExecuting: 'Tugas sedang berjalan'
CustomAppstore: 'Gudang aplikasi tersuai'
# tugasan - ai
OllamaModelPull: 'Tarik model Ollama {{ .name }}'
OllamaModelSize: 'Dapatkan saiz model Ollama {{ .name }}'
# gambar tugasan
Snapshot: 'Snapshot'
SnapDBInfo: 'Tulis maklumat pangkalan data 1Panel'
SnapCopy: 'Salin fail & direktori {{ .name }}'
SnapNewDB: 'Mulakan sambungan {{ .name }} pangkalan data'
SnapDeleteOperationLog: 'Padam log operasi'
SnapDeleteLoginLog: 'Padam log akses'
SnapDeleteMonitor: 'Padamkan data pemantauan'
SnapRemoveSystemIP: 'Alih keluar IP sistem'
SnapBaseInfo: 'Tulis maklumat asas 1Panel'
SnapInstallApp: 'Aplikasi yang dipasang sandaran 1Panel'
SnapDockerSave: 'Mampatkan aplikasi yang dipasang'
SnapLocalBackup: 'Sandaran 1Panel direktori sandaran tempatan'
SnapCompressBackup: 'Mampatkan direktori sandaran tempatan'
SnapPanelData: 'Sandaran direktori data 1Panel'
SnapCompressPanel: 'Direktori Data Mampat'
SnapWebsite: 'Sandaran direktori tapak web 1Panel'
SnapCloseDBConn: 'Tutup sambungan pangkalan data'
SnapCompress: 'Buat fail syot kilat'
SnapCompressFile: 'Mampatkan fail syot kilat'
SnapCheckCompress: 'Semak fail mampatan syot kilat'
SnapCompressSize: 'Saiz fail syot kilat {{ .name }}'
SnapUpload: 'Muat naik fail syot kilat'
SnapLoadBackup: 'Dapatkan maklumat akaun sandaran'
SnapUploadTo: 'Muat naik fail syot kilat ke {{ .name }}'
SnapUploadRes: 'Muat naik fail syot kilat ke {{ .name }}'
SnapshotRecover: 'Snapshot Restore'
RecoverDownload: 'Muat turun fail syot kilat'
Download: 'Muat turun'
RecoverDownloadAccount: 'Dapatkan syot kilat muat turun akaun sandaran {{ .name }}'
RecoverDecompress: 'Nyahmampatkan fail termampat syot kilat'
Decompress: 'Penyahmampatan'
BackupBeforeRecover: 'Sandarkan data berkaitan sistem sebelum syot kilat'
Readjson: 'Baca fail Json dalam petikan'
ReadjsonPath: 'Dapatkan laluan fail Json dalam petikan'
ReadjsonContent: 'Baca fail Json'
ReadjsonMarshal: 'Pemprosesan melarikan diri Json'
RecoverApp: 'Pulihkan apl yang dipasang'
RecoverWebsite: 'Pulihkan direktori tapak web'
RecoverAppImage: 'Pulihkan sandaran imej syot kilat'
RecoverCompose: 'Pulihkan kandungan komposer lain'
RecoverComposeList: 'Dapatkan semua komposer untuk dipulihkan'
RecoverComposeItem: 'Recover compose {{ .name }}'
RecoverAppEmpty: 'Tiada sandaran imej aplikasi ditemui dalam fail syot kilat'
RecoverBaseData: 'Pulihkan data asas dan fail'
RecoverDaemonJsonEmpty: 'Kedua-dua fail syot kilat dan mesin semasa tidak mempunyai fail daemon.json konfigurasi bekas'
RecoverDaemonJson: 'Pulihkan fail daemon.json konfigurasi bekas'
RecoverDBData: 'Pulihkan data pangkalan data'
RecoverBackups: 'Pulihkan direktori sandaran tempatan'
RecoverPanelData: 'Direktori data pemulihan'
# tugas - bekas
ContainerNewCliet: 'Memulakan Klien Docker'
ContainerImagePull: 'Tarik imej bekas {{ .name }}'
ContainerRemoveOld: 'Alih keluar bekas asal {{ .name }}'
ContainerImageCheck: 'Periksa sama ada imej ditarik seperti biasa'
ContainerLoadInfo: 'Dapatkan maklumat bekas asas'
ContainerRecreate: 'Kemas kini kontena gagal, kini mula memulihkan bekas asal'
ContainerCreate: 'Buat bekas baharu {{ .name }}'
ContainerCreateFailed: 'Penciptaan bekas gagal, padamkan bekas yang gagal'
ContainerStartCheck: 'Periksa sama ada bekas telah dimulakan'
# tugas - imej
ImageBuild: 'Membina Imej'
ImageBuildStdoutCheck: 'Menghuraikan kandungan output imej'
ImaegBuildRes: 'Output binaan imej: {{ .name }}'
ImagePull: 'Tarik imej'
ImageRepoAuthFromDB: 'Dapatkan maklumat pengesahan repositori daripada pangkalan data'
ImaegPullRes: 'Output tarik imej: {{ .name }}'
ImagePush: 'Tolak imej'
ImageRenameTag: 'Ubah suai teg imej'
ImageNewTag: 'Teg imej baharu {{ .name }}'
ImaegPushRes: 'Output tolak imej: {{ .name }}'
ComposeCreate: 'Buat gubahan'
ComposeCreateRes: 'Karang cipta output: {{ .name }}'
# tugas - laman web
BackupNginxConfig: 'Fail konfigurasi OpenResty tapak web sandaran'
CompressFileSuccess: 'Mampatkan direktori berjaya, dimampatkan ke {{ .name }}'
CompressDir: 'Direktori mampatan'
DeCompressFile: 'Nyahmampatkan fail {{ .name }}'
ErrCheckValid: 'Pengesahan fail sandaran gagal, {{ .name }}'
Rollback: 'Undur'
websiteDir: 'Direktori Laman Web'
RecoverFailedStartRollBack: 'Pemulihan gagal, mulakan rollback'
AppBackupFileIncomplete: 'Fail sandaran tidak lengkap dan tidak mempunyai fail app.json atau app.tar.gz'
AppAttributesNotMatch: 'Jenis atau nama aplikasi tidak sepadan'
#alert
ErrAlert: 'Format mesej amaran tidak betul, sila semak dan cuba lagi!'
ErrAlertPush: 'Ralat dalam menolak maklumat amaran, sila semak dan cuba lagi!'
ErrAlertSave: 'Ralat menyimpan maklumat penggera, sila semak dan cuba lagi!'
ErrAlertSync: 'Ralat penyegerakan maklumat penggera, sila semak dan cuba lagi!'
ErrAlertRemote: 'Ralat jauh mesej penggera, sila semak dan cuba lagi!'
-328
View File
@@ -1,328 +0,0 @@
ErrInvalidParams: "Ralat parameter permintaan: {{ .detail }}"
ErrTokenParse: "Ralat penjanaan token: {{ .detail }}"
ErrInitialPassword: "Ralat kata laluan awal"
ErrInternalServer: "Ralat dalaman perkhidmatan: {{ .detail }}"
ErrRecordExist: "Rekod sudah wujud"
ErrRecordNotFound: "Rekod tidak dijumpai"
ErrStructTransform: "Kegagalan penukaran jenis: {{ .detail }}"
ErrNotLogin: "Pengguna belum log masuk: {{ .detail }}"
ErrPasswordExpired: "Kata laluan semasa telah tamat tempoh: {{ .detail }}"
ErrNotSupportType: "Sistem tidak menyokong jenis semasa: {{ .detail }}"
ErrApiConfigStatusInvalid: "Akses antara muka API dilarang: {{ .detail }}"
ErrApiConfigKeyInvalid: "Ralat kunci antara muka API: {{ .detail }}"
ErrApiConfigIPInvalid: "IP antara muka API tidak berada dalam senarai putih: {{ .detail }}"
ErrApiConfigDisable: "Antara muka ini melarang penggunaan panggilan API: {{ .detail }}"
ErrApiConfigKeyTimeInvalid: "Ralat cap waktu antara muka API: {{ .detail }}"
#common
ErrUsernameIsExist: "Nama pengguna sudah wujud"
ErrNameIsExist: "Nama sudah wujud"
ErrDemoEnvironment: "Pelayan demo, operasi ini dilarang!"
ErrCmdTimeout: "Pelaksanaan arahan telah tamat masa!"
ErrCmdIllegal: "Arahan mengandungi aksara tidak sah. Sila ubah dan cuba lagi!"
ErrPortExist: 'Port {{ .port }} sudah digunakan oleh {{ .type }} [{{ .name }}]'
TYPE_APP: "Aplikasi"
TYPE_RUNTIME: "Persekitaran runtime"
TYPE_DOMAIN: "Nama domain"
ErrTypePort: 'Format port {{ .name }} adalah salah'
ErrTypePortRange: 'Julat port perlu berada di antara 1-65535'
Success: "Berjaya"
Failed: "Gagal"
SystemRestart: "Mulakan semula sistem menyebabkan gangguan tugas"
ErrGroupIsDefault: "Kumpulan lalai, tidak boleh dipadam"
ErrGroupIsInWebsiteUse: "Kumpulan sedang digunakan oleh laman web lain, tidak boleh dipadam"
#app
ErrPortInUsed: "Port {{ .detail }} sudah digunakan"
ErrAppLimit: "Aplikasi melebihi had pemasangan"
ErrAppRequired: "Aplikasi {{ .detail }} diperlukan"
ErrNotInstall: "Aplikasi tidak dipasang"
ErrPortInOtherApp: "Port {{ .port }} sudah digunakan oleh aplikasi {{ .apps }}"
ErrDbUserNotValid: "Pangkalan data stok, nama pengguna dan kata laluan tidak sepadan!"
ErrDockerComposeNotValid: "Format fail docker-compose adalah salah!"
ErrUpdateBuWebsite: "Aplikasi berjaya dikemas kini, tetapi pengubahsuaian fail konfigurasi laman web gagal, sila semak konfigurasi!"
Err1PanelNetworkFailed: "Penciptaan rangkaian kontena lalai gagal! {{ .detail }}"
ErrFileParse: "Analisis fail docker-compose aplikasi gagal!"
ErrInstallDirNotFound: "Direktori pemasangan tidak wujud"
AppStoreIsUpToDate: "Terkini"
LocalAppVersionNull: "Aplikasi {{.name}} tidak diselaraskan ke versi! Tidak dapat menambah ke senarai aplikasi"
LocalAppVersionErr: "{{.name}} gagal diselaraskan ke versi {{.version}}! {{.err}}"
ErrFileNotFound: "Fail {{.name}} tidak wujud"
ErrFileParseApp: "Gagal menganalisis fail {{.name}} {{.err}}"
ErrAppDirNull: "Folder versi tidak wujud"
LocalAppErr: "Penyelarasan aplikasi {{.name}} gagal! {{.err}}"
ErrContainerName: "Nama Kontena sudah wujud"
ErrAppSystemRestart: "Pemulangan semula 1Panel menyebabkan tugas terhenti"
ErrCreateHttpClient: "Gagal mencipta permintaan HTTP {{.err}}"
ErrHttpReqTimeOut: "Permintaan tamat masa {{.err}}"
ErrHttpReqFailed: "Permintaan gagal {{.err}}"
ErrHttpReqNotFound: "Fail tidak wujud"
ErrNoSuchHost: "Sambungan rangkaian gagal"
ErrImagePullTimeOut: "Tarik imej tamat masa"
ErrContainerNotFound: "Kontena {{ .name }} tidak wujud"
ErrContainerMsg: "Kontena {{ .name }} bermasalah, sila semak log pada halaman kontena untuk maklumat lanjut"
ErrAppBackup: "Sandaran aplikasi {{ .name }} gagal err {{.err}}"
ErrImagePull: "Tarik imej {{ .name }} gagal err {{.err}}"
ErrVersionTooLow: "Versi 1Panel semasa terlalu rendah untuk mengemas kini gedung aplikasi, sila tingkatkan versi"
ErrAppNameExist: "Nama aplikasi sudah wujud"
AppStoreIsSyncing: "Gedung Aplikasi sedang menyelaraskan, sila cuba lagi nanti"
ErrGetCompose: "Gagal mendapatkan fail docker-compose.yml! {{ .detail }}"
ErrAppWarn: "Status tidak normal, sila semak log"
ErrAppParamKey: "Pengecualian medan parameter {{ .name }}"
ErrAppUpgrade: "Gagal menaik taraf aplikasi {{ .name }} {{ .err }}"
AppRecover: "Aplikasi {{ .name }} telah dikembalikan"
PullImageStart: "Memulakan penarikan imej {{ .name }}"
PullImageSuccess: "Imej berjaya ditarik"
UpgradeAppStart: "Memulakan peningkatan aplikasi {{ .name }}"
UpgradeAppSuccess: "Aplikasi {{ .name }} berjaya dinaik taraf"
ErrAppIsDown: "{{ .name }} status aplikasi tidak normal, sila periksa"
#file
ErrFileCanNotRead: "Fail tidak boleh dibaca"
ErrFileToLarge: "Fail terlalu besar"
ErrPathNotFound: "Laluan tidak dijumpai"
ErrMovePathFailed: "Laluan sasaran tidak boleh mengandungi laluan asal!"
ErrLinkPathNotFound: "Laluan sasaran tidak wujud!"
ErrFileIsExist: "Fail atau direktori sudah wujud!"
ErrFileUpload: "Gagal memuat naik fail {{.name}} {{.detail}}"
ErrFileDownloadDir: "Muat turun folder tidak disokong"
ErrCmdNotFound: "Arahan {{ .name }} tidak wujud, sila pasang arahan ini pada hos terlebih dahulu"
ErrSourcePathNotFound: "Direktori sumber tidak wujud"
ErrFavoriteExist: "Laluan ini telah dikumpulkan"
ErrInvalidChar: "Aksara tidak sah adalah dilarang"
ErrPathNotDelete: "Direktori yang dipilih tidak boleh dipadam"
#website
ErrDomainIsExist: "Nama domain sudah wujud"
ErrAliasIsExist: "Alias sudah wujud"
ErrAppDelete: "Laman web lain menggunakan aplikasi ini"
ErrGroupIsUsed: "Kumpulan sedang digunakan dan tidak boleh dipadam"
ErrBackupMatch: "Fail sandaran tidak sepadan dengan data separa laman web semasa: {{ .detail }}"
ErrBackupExist: "Fail sandaran berkaitan dengan sebahagian data asal yang tidak wujud: {{ .detail }}"
ErrPHPResource: "Runtime tempatan tidak menyokong penukaran!"
ErrPathPermission: "Folder dengan kebenaran bukan 1000:1000 dikesan dalam direktori indeks, yang mungkin menyebabkan ralat 'Access denied' semasa mengakses laman web. Sila klik butang simpan di atas"
ErrDomainIsUsed: "Domain sudah digunakan oleh laman web {{ .name }}"
ErrDomainFormat: "Format domain {{ .name }} adalah salah"
ErrDefaultAlias: "default ialah nama kod terpelihara, sila gunakan nama kod lain"
ErrImageNotExist: "Imej persekitaran runtime {{.name}} tidak wujud, sila sunting semula persekitaran runtime"
#ssl
ErrSSLCannotDelete: "Sijil {{ .name }} sedang digunakan oleh laman web dan tidak boleh dihapuskan"
ErrAccountCannotDelete: "Sijil yang dikaitkan dengan akaun tidak boleh dihapuskan"
ErrSSLApply: "Sijil berjaya terus ditandatangani, tetapi reload OpenResty gagal, sila semak konfigurasi!"
ErrEmailIsExist: "Emel sudah wujud"
ErrSSLKeyNotFound: "Fail kunci peribadi tidak wujud"
ErrSSLCertificateNotFound: "Fail sijil tidak wujud"
ErrSSLKeyFormat: "Ralat pengesahan fail kunci peribadi"
ErrSSLCertificateFormat: "Format fail sijil salah, sila gunakan format PEM"
ErrEabKidOrEabHmacKeyCannotBlank: "EabKid atau EabHmacKey tidak boleh kosong"
ErrOpenrestyNotFound: "Mod HTTP memerlukan OpenResty dipasang terlebih dahulu"
ApplySSLStart: "Memulakan permohonan sijil, nama domain [{{ .domain }}], kaedah permohonan [{{ .type }}]"
dnsAccount: "DNS Automatik"
dnsManual: "DNS Manual"
http: "HTTP"
ApplySSLFailed: "Permohonan sijil untuk [{{ .domain }}] gagal, {{.detail}}"
ApplySSLSuccess: "Permohonan sijil untuk [{{ .domain }}] berjaya!"
DNSAccountName: "Akaun DNS [{{ .name }}], pengeluar [{{ .type }}]"
PushDirLog: "Sijil dihantar ke direktori [{{ .path }}] {{ .status }}"
ErrDeleteCAWithSSL: "Terdapat sijil yang telah dikeluarkan di bawah organisasi semasa dan tidak boleh dihapuskan"
ErrDeleteWithPanelSSL: "Konfigurasi SSL panel menggunakan sijil ini dan tidak boleh dihapuskan"
ErrDefaultCA: "Pihak Berkuasa Sijil lalai tidak boleh dihapuskan"
ApplyWebSiteSSLLog: "Memulakan kemas kini sijil laman web {{ .name }}"
ErrUpdateWebsiteSSL: "Sijil laman web {{ .name }} gagal dikemas kini: {{ .err }}"
ApplyWebSiteSSLSuccess: "Sijil laman web berjaya dikemas kini"
ErrExecShell: "Pelaksanaan skrip gagal {{ .err }}"
ExecShellStart: "Memulakan pelaksanaan skrip"
ExecShellSuccess: "Skrip berjaya dilaksanakan"
StartUpdateSystemSSL: "Memulakan kemas kini sijil sistem"
UpdateSystemSSLSuccess: "Sijil sistem berjaya dikemas kini"
#mysql
ErrUserIsExist: "Pengguna semasa sudah wujud. Sila masukkan pengguna baharu"
ErrDatabaseIsExist: "Pangkalan data semasa sudah wujud. Sila masukkan pangkalan data baharu"
ErrExecTimeOut: "Pelaksanaan SQL tamat masa, sila semak pangkalan data"
ErrRemoteExist: "Pangkalan data jauh dengan nama tersebut sudah wujud, sila ubah dan cuba lagi"
ErrLocalExist: "Pangkalan data tempatan dengan nama tersebut sudah wujud, sila ubah dan cuba lagi"
#redis
ErrTypeOfRedis: "Jenis fail pemulihan tidak sepadan dengan mod ketekalan semasa. Sila ubah jenis fail dan cuba lagi."
#container
ErrInUsed: "{{ .detail }} sedang digunakan dan tidak boleh dihapuskan"
ErrObjectInUsed: "Objek ini sedang digunakan dan tidak boleh dihapuskan"
ErrObjectBeDependent: "Imej ini bergantung kepada imej lain dan tidak boleh dihapuskan"
ErrPortRules: "Bilangan port tidak sepadan, sila masukkan semula!"
ErrPgImagePull: "Tarik imej tamat masa. Sila konfigurasikan pecutan imej atau tarik imej postgres:16.0-alpine secara manual dan cuba lagi"
#runtime
ErrDirNotFound: "Folder binaan tidak wujud! Sila semak integriti fail!"
ErrFileNotExist: "Fail {{ .detail }} tidak wujud! Sila semak integriti fail sumber!"
ErrImageBuildErr: "Binaan imej gagal"
ErrImageExist: "Imej sudah wujud!"
ErrDelWithWebsite: "Persekitaran operasi telah dikaitkan dengan laman web dan tidak boleh dihapuskan"
ErrRuntimeStart: "Gagal memulakan"
ErrPackageJsonNotFound: "Fail package.json tidak wujud"
ErrScriptsNotFound: "Tiada item konfigurasi skrip dijumpai dalam package.json"
ErrContainerNameNotFound: "Tidak dapat mendapatkan nama kontena, sila semak fail .env"
ErrNodeModulesNotFound: "Folder node_modules tidak wujud! Sila sunting persekitaran operasi atau tunggu sehingga persekitaran operasi berjaya dimulakan"
#setting
ErrBackupInUsed: "Akaun sandaran sedang digunakan dalam cronjob dan tidak boleh dihapuskan."
ErrBackupCheck: "Ujian sambungan akaun sandaran gagal {{ .err }}"
ErrOSSConn: "Tidak dapat mendapatkan versi terkini, sila semak sama ada pelayan boleh menyambung ke rangkaian luaran."
ErrEntrance: "Ralat maklumat pintu masuk keselamatan. Sila semak dan cuba lagi!"
#tool
ErrConfigNotFound: "Fail konfigurasi tidak wujud"
ErrConfigParse: "Format fail konfigurasi salah"
ErrConfigIsNull: "Fail konfigurasi tidak boleh kosong"
ErrConfigDirNotFound: "Direktori operasi tidak wujud"
ErrConfigAlreadyExist: "Fail konfigurasi dengan nama yang sama sudah wujud"
ErrUserFindErr: "Gagal mencari pengguna {{ .name }} {{ .err }}"
#ssh
ErrFirewallNone: "Tiada perkhidmatan firewalld atau ufw dikesan pada sistem. Sila semak dan cuba lagi!"
ErrFirewallBoth: "Kedua-dua perkhidmatan firewalld dan ufw dikesan pada sistem. Untuk mengelakkan konflik, sila nyahpasang salah satu dan cuba lagi!"
#cronjob
ErrBashExecute: "Ralat pelaksanaan skrip, sila semak maklumat khusus dalam kawasan teks output tugas."
ErrCutWebsiteLog: "Pemotongan log laman web {{ .name }} gagal, ralat {{ .err }}"
CutWebsiteLogSuccess: "Log laman web {{ .name }} berjaya dipotong, laluan sandaran {{ .path }}"
#toolbox
ErrNotExistUser: "Pengguna semasa tidak wujud. Sila ubah dan cuba lagi!"
ErrBanAction: "Tetapan gagal, perkhidmatan {{ .name }} semasa tidak tersedia, sila semak dan cuba lagi!"
ErrClamdscanNotFound: "Perintah clamdscan tidak dikesan, sila rujuk dokumentasi untuk memasangnya!"
#waf
ErrScope: "Tidak menyokong pengubahsuaian konfigurasi ini"
ErrStateChange: "Gagal menukar status"
ErrRuleExist: "Peraturan sudah wujud"
ErrRuleNotExist: "Peraturan tidak wujud"
ErrParseIP: "Format IP tidak betul"
ErrDefaultIP: "default adalah nama terpelihara, sila gunakan nama lain"
ErrGroupInUse: "Kumpulan IP digunakan oleh senarai hitam/putih, tidak boleh dipadam"
ErrGroupExist: "Nama kumpulan IP sudah wujud"
ErrIPRange: "Julat IP tidak betul"
ErrIPExist: "IP sudah wujud"
urlDefense: "Peraturan URL"
urlHelper: "URL Terlarang"
dirFilter: "Penapis Direktori"
xss: "XSS"
phpExec: "Pelaksanaan Skrip PHP"
oneWordTrojan: "Trojan Satu Kata"
appFilter: "Penapis Direktori Berbahaya Aplikasi"
webshell: "Webshell"
args: "Peraturan Parameter"
protocolFilter: "Penapis Protokol"
javaFileter: "Penapis Fail Berbahaya Java"
scannerFilter: "Penapis Pemindai"
escapeFilter: "Penapis Pelarian"
customRule: "Peraturan Tersuai"
httpMethod: "Penapis Kaedah HTTP"
fileExt: "Had Muat Naik Fail"
defaultIpBlack: "Kumpulan IP Merosakkan"
cookie: "Peraturan Kuki"
urlBlack: "Senarai Hitam URL"
uaBlack: "Senarai Hitam User-Agent"
attackCount: "Had Kekerapan Serangan"
fileExtCheck: "Had Muat Naik Fail"
geoRestrict: "Sekatan Akses Wilayah"
unknownWebsite: "Akses Domain Tanpa Kebenaran"
notFoundCount: "Had Kekerapan 404"
headerDefense: "Peraturan Header"
defaultUaBlack: "Peraturan User-Agent"
methodWhite: "Peraturan HTTP"
captcha: "Pengesahan Manusia-Mesin"
fiveSeconds: "Pengesahan 5 Saat"
vulnCheck: "Peraturan Tambahan"
acl: "Peraturan Tersuai"
sql: "Penembakan SQL"
cc: "Had Kekerapan Akses"
defaultUrlBlack: "Peraturan URL"
sqlInject: "Penembakan SQL"
ErrDBNotExist: "Pangkalan Data Tidak Wujud"
allow: "Benarkan"
deny: "Larang"
#license
ErrLicense: "Format lesen salah, sila semak dan cuba lagi!"
ErrLicenseCheck: "Pengesahan lesen gagal, sila semak dan cuba lagi!"
ErrLicenseSave: "Gagal menyimpan maklumat lesen, ralat {{ .err }}, sila cuba lagi!"
ErrLicenseSync: "Gagal menyelaraskan maklumat lesen, tiada maklumat lesen dikesan dalam pangkalan data!"
ErrXpackNotFound: "Bahagian ini adalah ciri edisi profesional, sila import lesen terlebih dahulu dalam Tetapan Panel - Antara Muka Lesen"
ErrXpackNotActive: "Bahagian ini adalah ciri edisi profesional, sila selaraskan status lesen terlebih dahulu dalam Tetapan Panel - Antara Muka Lesen"
ErrXpackOutOfDate: "Lesen semasa telah tamat tempoh, sila import semula lesen dalam Tetapan Panel - Antara Muka Lesen"
ErrXpackLost: "Lesen telah mencapai bilangan maksimum percubaan semula. Sila pergi ke halaman [Tetapan] [Lesen] dan klik butang selaraskan secara manual untuk memastikan ciri versi profesional berfungsi dengan baik."
ErrXpackTimeout: "Permintaan tamat masa, sambungan rangkaian mungkin tidak stabil, sila cuba lagi nanti!"
#license
ErrAlert: "Format maklumat amaran salah, sila semak dan cuba lagi!"
ErrAlertPush: "Ralat penghantaran amaran, sila semak dan cuba lagi!"
ErrAlertSave: "Ralat penyimpanan amaran, sila semak dan cuba lagi!"
ErrAlertSync: "Ralat penyelarasan amaran, sila semak dan cuba lagi!"
ErrAlertRemote: "Ralat amaran jauh, sila semak dan cuba lagi!"
#cmd
AppVersion: "Versi aplikasi"
AppCommands: "Arahan berkaitan aplikasi"
AppInit: "Inisialisasi aplikasi"
AppKeyVal: "Kunci aplikasi (hanya menyokong bahasa Inggeris)"
AppCreateFileErr: "Gagal mencipta fail {{ .name }} {{ .err }}"
AppCreateDirErr: "Gagal mencipta folder {{ .name }} {{ .err }}"
AppMissKey: "Kunci aplikasi hilang, gunakan -k untuk menetapkan"
AppMissVersion: "Versi aplikasi hilang, gunakan -v untuk menetapkan"
AppVersionExist: "Versi sudah wujud!"
AppCreateSuccessful: "Ciptaan berjaya!"
AppWriteErr: "Penulisan fail {{ .name }} gagal {{ .err }}"
SudoHelper: "Sila gunakan {{ .cmd }} atau tukar ke pengguna root"
ListenIPCommands: "Tukar IP mendengar"
ListenIPv4: "Mendengar pada IPv4"
ListenIPv6: "Mendengar pada IPv6"
ListenChangeSuccessful: "Tukar berjaya! Kini mendengar pada {{ .value }}"
ResetCommands: "Tetapkan semula maklumat sistem"
ResetMFA: "Batal pengesahan dua faktor 1Panel"
ResetHttps: "Batal log masuk HTTPS 1Panel"
ResetEntrance: "Batal pintu masuk keselamatan 1Panel"
ResetIPs: "Batal sekatan IP yang dibenarkan 1Panel"
ResetDomain: "Batal pengikatan domain 1Panel"
RestoreCommands: "Pulihkan perkhidmatan dan data 1Panel"
RestoreNoSuchFile: "Tiada fail tersedia untuk pemulihan"
RestoreStep1: "(1/5) Memulakan pemulihan perkhidmatan dan data 1Panel daripada direktori {{ .name }}..."
RestoreStep2: "(2/5) Pemulihan binari 1Panel berjaya"
RestoreStep3: "(3/5) Pemulihan skrip 1Panel berjaya"
RestoreStep4: "(4/5) Pemulihan perkhidmatan 1Panel berjaya"
RestoreStep5: "(5/5) Pemulihan data 1Panel berjaya"
RestoreSuccessful: "Pemulihan berjaya! Memulakan semula perkhidmatan, sila tunggu..."
UpdateCommands: "Kemas kini maklumat panel"
UpdateUser: "Kemas kini pengguna panel"
UpdatePassword: "Kemas kini kata laluan panel"
UpdatePort: "Kemas kini port panel"
UpdateUserNull: "Ralat: Pengguna panel kosong!"
UpdateUserBlank: "Ralat: Pengguna panel mengandungi ruang kosong!"
UpdateUserFormat: "Ralat: Format pengguna panel tidak sah! Hanya menyokong huruf Inggeris, Cina, nombor, dan , dengan panjang 3-30 aksara"
UpdateUserErr: "Ralat: Gagal mengemas kini pengguna panel, {{ .err }}"
UpdateSuccessful: "Kemas kini berjaya!"
UpdateUserResult: "Pengguna panel: {{ .name }}"
UpdatePasswordRead: "Ralat: Gagal membaca maklumat kata laluan panel, {{ .err }}"
UpdatePasswordNull: "Ralat: Kata laluan panel kosong!"
UpdateUPasswordBlank: "Ralat: Kata laluan panel mengandungi ruang kosong!"
UpdatePasswordFormat: "Ralat: Kata laluan panel hanya menyokong huruf, nombor, dan aksara khas !@#$%*,.?, dengan panjang 8-30 aksara!"
UpdatePasswordLen: "Ralat: Sila masukkan kata laluan lebih panjang daripada 6 aksara!"
UpdatePasswordRe: "Sahkan kata laluan:"
UpdatePasswordErr: "Ralat: Gagal mengemas kini kata laluan panel, {{ .err }}"
UpdatePasswordSame: "Ralat: Kedua-dua kata laluan tidak sepadan, sila semak dan cuba lagi!"
UpdatePasswordResult: "Kata laluan panel: {{ .name }}"
UpdatePortFormat: "Ralat: Nombor port yang dimasukkan mesti antara 1 hingga 65535!"
UpdatePortUsed: "Ralat: Nombor port sudah digunakan, sila semak dan cuba lagi!"
UpdatePortErr: "Ralat: Gagal mengemas kini port panel, {{ .err }}"
UpdatePortResult: "Port Panel: {{ .name }}"
UpdatePortFirewallAdd: "Gagal menambah peraturan port firewall, {{ .err }}, sila tambah port {{ .name }} secara manual ke dalam peraturan firewall."
UpdatePortFirewallDel: "Ralat: Gagal memadam port firewall, {{ .err }}"
UpdatePortFirewallReload: "Gagal memuat semula firewall, {{ .err }}, sila muat semula firewall secara manual."
UserInfo: "Dapatkan maklumat panel"
UserInfoAddr: "Alamat panel: "
UserInfoPassHelp: "Petua: Untuk menukar kata laluan, anda boleh menjalankan arahan: "
DBConnErr: "Ralat: Gagal memulakan sambungan pangkalan data, {{ .err }}"
SystemVersion: "Versi: "
SystemMode: "Mod: "
+398 -302
View File
@@ -1,326 +1,422 @@
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 de parâmetro de solicitação: {{ .detail }}'
ErrTokenParse: 'Erro de geração de token: {{ .detail }}'
ErrInitialPassword: 'A senha original está incorreta'
ErrInternalServer: 'Erro interno do servidor: {{ .detail }}'
ErrRecordExist: 'O registro já existe'
ErrRecordNotFound: 'Registro não encontrado'
ErrStructTransform: 'Falha na conversão de tipo: {{ .err }}'
ErrNotLogin: 'Usuário não logado: {{ .detail }}'
ErrPasswordExpired: 'A senha atual expirou: {{ .detail }}'
ErrNotSupportType: 'O sistema não suporta o tipo atual: {{ .name }}'
ErrProxy: 'Erro de solicitação, verifique o status do nó: {{ .detail }}'
ErrApiConfigStatusInvalid: 'O acesso à interface da API é proibido: {{ .detail }}'
ErrApiConfigKeyInvalid: 'Erro de chave da interface da API: {{ .detail }}'
ErrApiConfigIPInvalid: 'O IP usado para chamar a interface da API não está na lista de permissões: {{ .detail }}'
ErrApiConfigDisable: 'Esta interface proíbe o uso de chamadas de interface de API: {{ .detail }}'
ErrApiConfigKeyTimeInvalid: 'Erro de registro de data e hora da interface da API: {{ .detail }}'
#common
ErrUsernameIsExist: "Nome de usuário já existe"
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!"
#comum
ErrUsernameIsExist: 'Nome de usuário já existe'
ErrNameIsExist: 'Nome já existe'
ErrDemoEnvironment: 'Servidor de demonstração, esta operação é proibida!'
ErrCmdTimeout: 'Tempo limite de execução do comando expirou!'
ErrCmdIllegal: 'Há caracteres ilegais no comando de execução, modifique-o 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"
ErrGroupIsDefault: "Grupo padrão, não pode ser excluído"
ErrGroupIsInWebsiteUse: "O grupo está sendo usado por outros sites, não pode ser excluído"
TYPE_APP: 'Aplicativo'
TYPE_RUNTIME: 'Ambiente de tempo de execução'
TYPE_DOMAIN: 'Nome de domínio'
ErrTypePort: 'O formato da porta {{ .name }} está incorreto'
ErrTypePortRange: 'O intervalo de portas precisa estar entre 1-65535'
Success: 'Sucesso'
Failed: 'Falhou'
SystemRestart: 'Tarefa interrompida devido à reinicialização do sistema'
ErrGroupIsDefault: 'Grupo padrão, não pode ser excluído'
ErrGroupIsInWebsiteUse: 'O grupo está sendo usado por outro site e não pode ser excluído.'
#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"
ErrAppIsDown: "{{ .name }} status do aplicativo é anormal, por favor, verifique"
#backup
ErrBackupInUsed: 'A conta de backup foi usada na tarefa agendada e não pode ser excluída.'
ErrBackupCheck: 'Falha na conexão de teste da conta de backup {{ .err }}'
ErrBackupLocalDelete: 'A exclusão da conta de backup do servidor local ainda não é suportada'
ErrBackupLocalCreate: 'A criação de contas de backup do servidor local ainda não é suportada'
#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"
#aplicativo
ErrPortInUsed: 'A porta {{ .detail }} já está ocupada!'
ErrAppLimit: 'O número de aplicativos instalados excedeu o limite'
ErrAppRequired: 'Instale primeiro o aplicativo {{ .detail }}'
ErrNotInstall: 'Aplicativo não instalado'
ErrPortInOtherApp: 'A porta {{ .port }} já está ocupada pelo aplicativo {{ .apps }}!'
ErrDbUserNotValid: 'Banco de dados existente, nome de usuário e senha não correspondem!'
ErrDockerComposeNotValid: 'O formato do arquivo docker-compose está incorreto'
ErrUpdateBuWebsite: 'O aplicativo foi atualizado com sucesso, mas a modificação do arquivo de configuração do site falhou. Por favor, verifique a configuração! '
Err1PanelNetworkFailed: 'Falha na criação da rede de contêiner padrão! {{ .detalhe }}'
ErrFileParse: 'Falha na análise do arquivo docker-compose do aplicativo!'
ErrInstallDirNotFound: 'O diretório de instalação não existe. Se precisar desinstalar, selecione Forçar desinstalação'
AppStoreIsUpToDate: 'A loja de aplicativos já é a versão mais recente'
LocalAppVersionNull: 'O aplicativo {{ .name }} não está sincronizado com a versão! Não é possível adicionar à lista de aplicativos'
LocalAppVersionErr: '{{ .name }} sincronização da versão {{ .version }} falhou! {{ .err }}'
ErrFileNotFound: 'arquivo {{ .name }} não existe'
ErrFileParseApp: 'Falha na análise do arquivo {{ .name }} {{ .err }}'
ErrAppDirNull: 'A pasta da versão não existe'
LocalAppErr: 'Falha na sincronização do aplicativo {{ .name }}! {{ .err }}'
ErrContainerName: 'O nome do contêiner já existe'
ErrAppSystemRestart: '1A reinicialização do painel causou o encerramento da tarefa'
ErrCreateHttpClient: 'Falha ao criar solicitação {{ .err }}'
ErrHttpReqTimeOut: 'Tempo limite da solicitação esgotado {{ .err }}'
ErrHttpReqFailed: 'Falha na solicitação {{ .err }}'
ErrNoSuchHost: 'Não foi possível encontrar o servidor solicitado {{ .err }}'
ErrHttpReqNotFound: 'O recurso solicitado {{ .err }} não pôde ser encontrado'
ErrImagePullTimeOut: 'Tempo limite de extração de imagem'
ErrContainerNotFound: '{{ .name }} container não existe'
ErrContainerMsg: 'O contêiner {{ .name }} está anormal. Por favor, verifique o log na página do contêiner para obter detalhes.'
ErrAppBackup: '{{ .name }} falha no backup do aplicativo {{ .err }}'
ErrImagePull: 'Falha na extração de imagem {{ .err }}'
ErrVersionTooLow: 'A versão atual do 1Panel é muito antiga para atualizar a App Store. Por favor, atualize a versão antes de operar.'
ErrAppNameExist: 'O nome do aplicativo já existe'
AppStoreIsSyncing: 'A App Store está sincronizando, tente novamente mais tarde'
ErrGetCompose: 'Falha ao obter o arquivo docker-compose.yml! {{ .detail }}'
ErrAppWarn: 'Status anormal, verifique o log'
ErrAppParamKey: 'O campo de parâmetro {{ .name }} está anormal'
ErrAppUpgrade: 'Falha na atualização do aplicativo {{ .name }} {{ .err }}'
AppRecover: 'Reverter aplicativo {{ .name }}'
PullImageStart: 'Comece a extrair a imagem {{ .name }}'
PullImageSuccess: 'Imagem retirada com sucesso'
UpgradeAppStart: 'Iniciar atualização do aplicativo {{ .name }}'
UpgradeAppSuccess: 'Aplicativo {{ .name }} atualizado com sucesso'
AppStoreIsLastVersion: 'A App Store já é a versão mais recente'
AppStoreSyncSuccess: 'Sincronização da App Store bem-sucedida'
SyncAppDetail: 'Sincronizar configuração do aplicativo'
AppVersionNotMatch: 'o aplicativo {{ .name }} requer uma versão superior do 1Panel, ignorando a sincronização'
MoveSiteDir: 'A atualização atual requer a migração do diretório do site OpenResty'
MoveSiteToDir: 'Migrar diretório do site para {{ .name }}'
ErrMoveSiteDir: 'Falha ao migrar o diretório do site'
MoveSiteDirSuccess: 'Migração bem-sucedida do diretório do site'
DeleteRuntimePHP: 'Excluir tempo de execução do PHP'
CustomAppStoreNotConfig: 'Defina o endereço do pacote offline na app store'
CustomAppStoreNotFound: 'Falha ao obter o pacote da app store, verifique se ele existe'
CustomAppStoreFileValid: 'Os pacotes da App Store precisam estar no formato .tar.gz'
PullImageTimeout: 'Tempo limite para puxar imagem, tente aumentar a aceleração da imagem ou altere para outra aceleração de imagem'
ErrAppIsDown: 'O status do aplicativo {{ .name }} é anormal, verifique'
ErrCustomApps: 'Há um aplicativo instalado, desinstale-o primeiro'
ErrCustomRuntimes: 'Há um ambiente de execução instalado, exclua-o primeiro'
#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"
#arquivo
ErrFileCanNotRead: 'Este arquivo não suporta visualização'
ErrFileToLarge: 'O arquivo é maior que 10M e não pode ser aberto'
ErrPathNotFound: 'O diretório não existe'
ErrMovePathFailed: 'O caminho de destino não pode conter o caminho original!'
ErrLinkPathNotFound: 'O caminho de destino não existe!'
ErrFileIsExist: 'O arquivo ou pasta já existe!'
ErrFileUpload: '{{ .name }} falhou ao carregar o arquivo {{ .detail }}'
ErrFileDownloadDir: 'A pasta de download não é suportada'
ErrCmdNotFound: 'O comando {{ .name}} não existe, instale este comando no host primeiro'
ErrSourcePathNotFound: 'O diretório de origem não existe'
ErrFavoriteExist: 'Este caminho já foi favorito'
ErrInvalidChar: 'Caracteres ilegais não são permitidos'
ErrPathNotDelete: 'O diretório selecionado não pode ser excluído'
#site
ErrDomainIsExist: 'Nome de domínio já existe'
ErrAliasIsExist: 'Alias já existe'
ErrAppDelete: 'Outros sites usam este aplicativo e não podem excluí-lo'
ErrBackupMatch: 'O arquivo de backup não corresponde a alguns dados atuais do site {{ .detail }}'
ErrBackupExist: 'A parte correspondente dos dados de origem no arquivo de backup não existe {{ .detail }}'
ErrPHPResource: 'O ambiente operacional local não suporta comutação! '
ErrPathPermission: 'Uma pasta com permissões diferentes de 1000:1000 foi detectada no diretório de índice, o que pode causar um erro de acesso negado no site. Clique no botão Salvar acima'
ErrDomainIsUsed: 'O nome de domínio já está sendo usado pelo site [{{ .name }}]'
ErrDomainFormat: 'o formato do nome de domínio {{ .name }} está incorreto'
ErrDefaultAlias: 'padrão é um código reservado, use outro código'
ErrParentWebsite: 'Você precisa excluir o subsite {{ .name }} primeiro'
ErrBuildDirNotFound: 'O diretório de compilação não existe'
ErrImageNotExist: 'A imagem do ambiente operacional {{ .name }} não existe, edite novamente o ambiente operacional'
#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"
ErrSSLCannotDelete: 'O certificado {{ .name }} está sendo usado por um site e não pode ser excluído'
ErrAccountCannotDelete: 'A conta está associada a um certificado e não pode ser excluída'
ErrSSLApply: 'Renovação do certificado bem-sucedida, falha na recarga do Openresty, verifique a configuração!'
ErrEmailIsExist: 'A caixa de correio já existe'
ErrSSLKeyNotFound: 'O arquivo de chave privada não existe'
ErrSSLCertificateNotFound: 'O arquivo de certificado não existe'
ErrSSLKeyFormat: 'Falha na verificação do arquivo de chave privada'
ErrSSLCertificateFormat: 'O formato do arquivo de certificado está incorreto, use o formato pem'
ErrEabKidOrEabHmacKeyCannotBlank: 'EabKid ou EabHmacKey não podem estar em branco'
ErrOpenrestyNotFound: 'O modo HTTP requer que o Openresty seja instalado primeiro'
ApplySSLStart: 'Comece a solicitar um certificado, nome de domínio [{{ .domain }}] método de solicitação [{{ .type }}]'
dnsAccount: 'DNS Automático'
dnsManual: 'Manual DNS'
http: 'HTTP'
ApplySSLFailed: 'Falha na solicitação de certificado [{{ .domain }}], {{ .detail }} '
ApplySSLSuccess: 'Solicitação de certificado [{{ .domain }}] realizada com sucesso! ! '
DNSAccountName: 'Conta DNS [{{ .name }}] fornecedor [{{ .type }}]'
PushDirLog: 'Certificado enviado para o diretório [{{ .path }}] {{ .status }}'
ErrDeleteCAWithSSL: 'A organização atual tem um certificado que foi emitido e não pode ser excluído.'
ErrDeleteWithPanelSSL: 'A configuração SSL do painel usa este certificado e não pode ser excluída'
ErrDefaultCA: 'A autoridade padrão não pode ser excluída'
ApplyWebSiteSSLLog: 'Iniciando a renovação do certificado do site {{ .name }}'
ErrUpdateWebsiteSSL: 'Falha na atualização do certificado do site {{ .name }}: {{ .err }}'
ApplyWebSiteSSLSuccess: 'Atualizar certificado do site com sucesso'
ErrExecShell: 'Falha ao executar o script {{ .err }}'
ExecShellStart: 'Iniciar execução do script'
ExecShellSuccess: 'Execução do script bem-sucedida'
StartUpdateSystemSSL: 'Iniciar atualização do certificado do sistema'
UpdateSystemSSLSuccess: 'Atualizar certificado do sistema com sucesso'
ErrWildcardDomain: 'Não é possível solicitar certificado de nome de domínio curinga no modo HTTP'
#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"
ErrUserIsExist: 'O usuário atual já existe, digite novamente'
ErrDatabaseIsExist: 'O banco de dados atual já existe, digite novamente'
ErrExecTimeOut: 'Tempo limite de execução do SQL expirou, verifique o banco de dados'
ErrRemoteExist: 'O banco de dados remoto já existe com este nome, modifique-o e tente novamente'
ErrLocalExist: 'O nome já existe no banco de dados local, modifique-o 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"
ErrTypeOfRedis: 'O tipo de arquivo de recuperação não corresponde ao método de persistência atual, modifique-o 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"
#recipiente
ErrInUsed: '{{ .detail }} está em uso e não pode ser excluído'
ErrObjectInUsed: 'O objeto está em uso e não pode ser excluído'
ErrObjectBeDependent: 'Esta imagem depende de outras imagens e não pode ser excluída'
ErrPortRules: 'O número da porta não corresponde, digite novamente!'
ErrPgImagePull: 'Tempo limite para extração de imagem. Configure a aceleração de imagem ou extraia manualmente a imagem {{ .name }} 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"
#tempo de execução
ErrDirNotFound: 'A pasta de compilação não existe! Verifique a integridade do arquivo!'
ErrFileNotExist: 'O arquivo {{ .detail }} não existe! Verifique a integridade do arquivo de origem!'
ErrImageBuildErr: 'Falha na criação da imagem'
ErrImageExist: 'A imagem já existe!'
ErrDelWithWebsite: 'O ambiente operacional está associado a um site e não pode ser excluído'
ErrRuntimeStart: 'Falha na inicialização'
ErrPackageJsonNotFound: 'o arquivo package.json não existe'
ErrScriptsNotFound: 'O item de configuração de scripts não foi encontrado em package.json'
ErrContainerNameNotFound: 'Não foi possível obter o nome do contêiner, verifique o arquivo .env'
ErrNodeModulesNotFound: 'A pasta node_modules não existe! Edite o ambiente de execução ou aguarde até que o ambiente de execução inicie com sucesso'
ErrContainerNameIsNull: 'O nome do contêiner não existe'
#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 }}"
#ferramenta
ErrConfigNotFound: 'O arquivo de configuração não existe'
ErrConfigParse: 'O formato do arquivo de configuração está incorreto'
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 na pesquisa do 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!"
ErrFirewallNone: 'Nenhum firewall de sistema ou serviço ufw detectado, verifique e tente novamente!'
ErrFirewallBoth: 'Foi detectado que o sistema possui serviços firewalld e ufw. Para evitar conflitos, desinstale 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 }}"
ErrCutWebsiteLog: '{{ .name }} falha ao cortar o log do site, erro {{ .err }}'
CutWebsiteLogSuccess: '{{ .name }} registro do site cortado com sucesso, caminho de backup {{ .path }}'
HandleShell: 'Executar script {{ .name }}'
HandleNtpSync: 'Sincronização de hora do sistema'
HandleSystemClean: 'Limpeza de cache do sistema'
#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!"
#caixa de ferramentas
ErrNotExistUser: 'O usuário atual não existe, modifique e tente novamente!'
ErrBanAction: 'Falha na configuração. O serviço atual {{ .name }} não está disponível. Verifique e tente novamente!'
ErrClamdscanNotFound: 'O comando clamdscan não foi detectado, consulte a documentação para instalá-lo!'
#waf
ErrScope: "Modificação desta configuração não é suportada"
ErrStateChange: "Falha ao alterar o status"
ErrRuleExist: "Regra já existe"
ErrRuleNotExist: "Regra não existe"
ErrParseIP: "Formato de IP incorreto"
ErrDefaultIP: "default é um nome reservado, por favor, use outro nome"
ErrGroupInUse: "Grupo de IP está em uso pela lista negra/branca, não pode ser excluído"
ErrGroupExist: "Nome do grupo de IP já existe"
ErrIPRange: "Intervalo de IP incorreto"
ErrIPExist: "IP já existe"
urlDefense: "Regras de URL"
urlHelper: "URLs Proibidas"
dirFilter: "Filtro de Diretório"
xss: "XSS"
phpExec: "Execução de Script PHP"
oneWordTrojan: "Trojan de Uma Palavra"
appFilter: "Filtro de Diretório Perigoso de Aplicação"
webshell: "Webshell"
args: "Regras de Parâmetro"
protocolFilter: "Filtro de Protocolo"
javaFileter: "Filtro de Arquivo Perigoso Java"
scannerFilter: "Filtro de Scanner"
escapeFilter: "Filtro de Escape"
customRule: "Regras Personalizadas"
httpMethod: "Filtro de Método HTTP"
fileExt: "Restrição de Upload de Arquivo"
defaultIpBlack: "Grupo de IP Malicioso"
cookie: "Regras de Cookie"
urlBlack: "Lista Negra de URL"
uaBlack: "Lista Negra de User-Agent"
attackCount: "Limite de Frequência de Ataque"
fileExtCheck: "Restrição de Upload de Arquivo"
geoRestrict: "Restrição de Acesso Regional"
unknownWebsite: "Acesso a Domínio Não Autorizado"
notFoundCount: "Limite de Frequência de 404"
headerDefense: "Regras de Cabeçalho"
defaultUaBlack: "Regras de User-Agent"
methodWhite: "Regras HTTP"
captcha: "Verificação Humano-Máquina"
fiveSeconds: "Verificação de 5 Segundos"
vulnCheck: "Regras Complementares"
acl: "Regras Personalizadas"
sql: "Injeção de SQL"
cc: "Limite de Frequência de Acesso"
defaultUrlBlack: "Regras de URL"
sqlInject: "Injeção de SQL"
ErrDBNotExist: "Banco de Dados Não Existe"
allow: "Permitir"
deny: "Negar"
ErrScope: 'A modificação desta configuração não é suportada'
ErrStateChange: 'Falha na alteração de estado'
ErrRuleExist: 'A regra já existe'
ErrRuleNotExist: 'A regra não existe'
ErrParseIP: 'Formato de IP errado'
ErrDefaultIP: 'padrão é um nome reservado, altere-o para outro nome'
ErrGroupInUse: 'O grupo de IP é usado pela lista negra/lista branca e não pode ser excluído'
ErrGroupExist: 'O nome do grupo IP já existe'
ErrIPRange: 'Intervalo de IP errado'
ErrIPExist: 'IP já existe'
urlDefense: 'regras de URL'
urlHelper: 'URL proibido'
dirFilter: 'Filtro de diretório'
xss: 'XSS'
phpExec: 'Execução de script PHP'
oneWordTrojan: 'Cavalo de Tróia de Uma Palavra'
appFilter: 'Aplicar filtragem de diretório perigosa'
webshell: 'Webshell'
args: 'Regras de parâmetros'
protocolFilter: 'Filtragem de protocolo'
javaFileter: 'Filtro de arquivo perigoso Java'
scannerFilter: 'Filtro do scanner'
escapeFilter: 'filtro de escape'
customRule: 'Regra personalizada'
httpMethod: 'Filtragem de método HTTP'
fileExt: 'Restrições de upload de arquivo'
defaultIpBlack: 'Grupo de IP malicioso'
cookie: 'Regras de cookies'
urlBlack: 'lista negra de URLs'
uaBlack: 'Lista negra de agentes do usuário'
attackCount: 'Limite de frequência de ataque'
fileExtCheck: 'Restrições de upload de arquivo'
geoRestrict: 'Restrições de acesso regionais'
unknownWebsite: 'Acesso não autorizado ao nome de domínio'
notFoundCount: 'Limite de taxa 404'
headerDefense: 'Regras de cabeçalho'
defaultUaBlack: 'Regras do agente do usuário'
methodWhite: 'regras HTTP'
captcha: 'verificação homem-máquina'
fiveSeconds: 'verificação de 5 segundos'
vulnCheck: 'Regras suplementares'
acl: 'Regras personalizadas'
sql: 'injeção de SQL'
cc: 'Limite de frequência de acesso'
defaultUrlBlack: 'regras de URL'
sqlInject: 'injeção de SQL'
ErrDBNotExist: 'O banco de dados não existe'
allow: 'permitir'
deny: 'negar'
OpenrestyNotFound: 'Openresty não está instalado'
#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!"
#tarefa
TaskStart: '{{ .name }} A tarefa inicia [START]'
TaskEnd: '{{ .name }} Tarefa concluída [CONCLUÍDA]'
TaskFailed: '{{ .name }} tarefa falhou'
TaskTimeout: '{{ .name }} expirou'
TaskSuccess: '{{ .name }} Tarefa bem-sucedida'
TaskRetry: 'Iniciar {{ .name }}ª nova tentativa'
SubTaskSuccess: '{{ .name }} bem-sucedido'
SubTaskFailed: '{{ .name }} falhou: {{ .err }}'
TaskInstall: 'Instalar'
TaskUninstall: 'Desinstalar'
TaskCreate: 'Criar'
TaskDelete: 'Excluir'
TaskUpgrade: 'Atualizar'
TaskUpdate: 'Atualizar'
TaskRestart: 'Reiniciar'
Backup de Tarefa: 'Backup'
TaskRecover: 'Recuperar'
TaskRollback: 'Reverter'
TaskPull: 'Puxar'
TaskBuild: 'Construir'
TaskPush: 'Empurrar'
TaskHandle: 'Executar'
Website: 'Site'
App: 'Aplicativo'
Runtime: 'Ambiente de tempo de execução'
Database: 'Banco de dados'
ConfigFTP: 'Criar usuário FTP {{ .name }}'
ConfigOpenresty: 'Criar arquivo de configuração Openresty'
InstallAppSuccess: 'Aplicativo {{ .name }} instalado com sucesso'
ConfigRuntime: 'Configurar o ambiente de tempo de execução'
ConfigApp: 'Aplicativo de configuração'
SuccessStatus: '{{ .name }} bem-sucedido'
FailedStatus: '{{ .name }} falhou {{ .err }}'
HandleLink: 'Manipular associação de aplicativos'
HandleDatabaseApp: 'Manipulando parâmetros do aplicativo'
ExecShell: 'Executar script {{ .name }}'
PullImage: 'Puxar imagem'
Start: 'Iniciar'
Run: 'Iniciar'
Stop: 'Pare'
Image: 'Espelho'
Compose: 'Orquestração'
Container: 'Recipiente'
AppLink: 'Aplicativo vinculado'
EnableSSL: 'Habilitar HTTPS'
AppStore: 'Loja de aplicativos'
TaskSync: 'Sincronizar'
LocalApp: 'Aplicativo local'
SubTask: 'Subtarefa'
RuntimeExtension: 'Extensão do ambiente de tempo de execução'
TaskIsExecuting: 'A tarefa está em execução'
CustomAppstore: 'Armazém de aplicativos personalizados'
#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!"
# tarefa - ai
OllamaModelPull: 'Puxar modelo Ollama {{ .name }}'
OllamaModelSize: 'Obtenha o tamanho do modelo Ollama {{ .name }}'
#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: "
# tarefa-instantânea
Snapshot: 'Instantâneo'
SnapDBInfo: 'Escrever informações do banco de dados 1Panel'
SnapCopy: 'Copiar arquivos e diretórios {{ .name }}'
SnapNewDB: 'Inicializar conexão com o banco de dados {{ .name }}'
SnapDeleteOperationLog: 'Excluir log de operação'
SnapDeleteLoginLog: 'Excluir log de acesso'
SnapDeleteMonitor: 'Excluir dados de monitoramento'
SnapRemoveSystemIP: 'Remover IP do sistema'
SnapBaseInfo: 'Escreva informações básicas do 1Panel'
SnapInstallApp: 'Fazer backup dos aplicativos instalados do 1Panel'
SnapDockerSave: 'Compactar aplicativos instalados'
SnapLocalBackup: 'Backup do diretório de backup local do 1Panel'
SnapCompressBackup: 'Compactar diretório de backup local'
SnapPanelData: 'Backup do diretório de dados do 1Panel'
SnapCompressPanel: 'Diretório de dados compactados'
SnapWebsite: 'Backup do diretório do site 1Panel'
SnapCloseDBConn: 'Fechar a conexão com o banco de dados'
SnapCompress: 'Criar arquivos de instantâneos'
SnapCompressFile: 'Compactar arquivo de instantâneo'
SnapCheckCompress: 'Verificar arquivo de compactação de instantâneo'
SnapCompressSize: 'Tamanho do arquivo de instantâneo {{ .name }}'
SnapUpload: 'Carregar arquivo de instantâneo'
SnapLoadBackup: 'Obter informações da conta de backup'
SnapUploadTo: 'Carregar arquivo de instantâneo para {{ .name }}'
SnapUploadRes: 'Carregar arquivo de instantâneo para {{ .name }}'
SnapshotRecover: 'Restauração de instantâneo'
RecoverDownload: 'Baixar arquivo de instantâneo'
Download: 'Baixar'
RecoverDownloadAccount: 'Obter conta de backup de download de instantâneo {{ .name }}'
RecoverDecompress: 'Descompacte arquivos compactados de instantâneos'
Decompress: 'Descompressão'
BackupBeforeRecover: 'Fazer backup de dados relacionados ao sistema antes do snapshot'
Readjson: 'Ler o arquivo Json no snapshot'
ReadjsonPath: 'Obtenha o caminho do arquivo Json no snapshot'
ReadjsonContent: 'Ler arquivo Json'
ReadjsonMarshal: 'Processamento de escape JSON'
RecoverApp: 'Restaurar aplicativos instalados'
RecoverWebsite: 'Recuperar diretório de sites'
RecoverAppImage: 'Restaurar backup de imagem instantânea'
RecoverCompose: 'Restaurar outro conteúdo do compositor'
RecoverComposeList: 'Obter todos os compositores para serem restaurados'
RecoverComposeItem: 'Recuperar composição {{ .name }}'
RecoverAppEmpty: 'Nenhum backup de imagem de aplicativo foi encontrado no arquivo de instantâneo'
RecoverBaseData: 'Recuperar dados e arquivos básicos'
RecoverDaemonJsonEmpty: 'O arquivo de instantâneo e a máquina atual não têm o arquivo daemon.json de configuração do contêiner'
RecoverDaemonJson: 'Restaurar arquivo daemon.json de configuração do contêiner'
RecoverDBData: 'Recuperar dados do banco de dados'
RecoverBackups: 'Restaurar diretório de backup local'
RecoverPanelData: 'Diretório de dados de recuperação'
# tarefa - contêiner
ContainerNewCliet: 'Inicializar cliente Docker'
ContainerImagePull: 'Puxar imagem do contêiner {{ .name }}'
ContainerRemoveOld: 'Remover o contêiner original {{ .name }}'
ContainerImageCheck: 'Verifique se a imagem é extraída normalmente'
ContainerLoadInfo: 'Obter informações básicas do contêiner'
ContainerRecreate: 'A atualização do contêiner falhou, agora iniciando a restauração do contêiner original'
ContainerCreate: 'Criar um novo contêiner {{ .name }}'
ContainerCreateFailed: 'Falha na criação do contêiner, exclua o contêiner com falha'
ContainerStartCheck: 'Verifique se o contêiner foi iniciado'
# tarefa - imagem
ImageBuild: 'Construção de imagem'
ImageBuildStdoutCheck: 'Analisar conteúdo de saída da imagem'
ImaegBuildRes: 'Saída da criação da imagem: {{ .name }}'
ImagePull: 'Puxar imagem'
ImageRepoAuthFromDB: 'Obter informações de autenticação do repositório do banco de dados'
ImaegPullRes: 'Saída de extração de imagem: {{ .name }}'
ImagePush: 'Enviar imagem'
ImageRenameTag: 'Modificar tag de imagem'
ImageNewTag: 'Nova tag de imagem {{ .name }}'
ImaegPushRes: 'Saída de envio de imagem: {{ .name }}'
ComposeCreate: 'Criar uma composição'
ComposeCreateRes: 'Compose cria saída: {{ .name }}'
# tarefa - site
BackupNginxConfig: 'Fazer backup do arquivo de configuração do OpenResty do site'
CompressFileSuccess: 'Diretório compactado com sucesso, compactado para {{ .name }}'
CompressDir: 'Diretório de compressão'
DeCompressFile: 'Descompacte o arquivo {{ .name }}'
ErrCheckValid: 'Falha na verificação do arquivo de backup, {{ .name }}'
Rollback: 'Reversão'
websiteDir: 'Diretório de sites'
RecoverFailedStartRollBack: 'Falha na recuperação, iniciar reversão'
AppBackupFileIncomplete: 'O arquivo de backup está incompleto e não contém os arquivos app.json ou app.tar.gz'
AppAttributesNotMatch: 'O tipo ou nome do aplicativo não corresponde'
#alerta
ErrAlert: 'O formato da mensagem de aviso está incorreto, verifique e tente novamente!'
ErrAlertPush: 'Erro ao enviar informações de alerta, verifique e tente novamente!'
ErrAlertSave: 'Erro ao salvar as informações do alarme. Verifique e tente novamente!'
ErrAlertSync: 'Erro de sincronização de informações de alarme, verifique e tente novamente!'
ErrAlertRemote: 'Erro remoto na mensagem de alarme, verifique e tente novamente!'
+402 -309
View File
@@ -1,329 +1,422 @@
ErrInvalidParams: "Ошибка параметра запроса: {{ .detail }}"
ErrTokenParse: "Ошибка генерации токена: {{ .detail }}"
ErrInitialPassword: "Ошибка исходного пароля"
ErrInternalServer: "Внутренняя ошибка сервиса: {{ .detail }}"
ErrRecordExist: "Запись уже существует"
ErrRecordNotFound: "Записи не найдены"
ErrStructTransform: "Ошибка преобразования типа: {{ .detail }}"
ErrNotLogin: "Пользователь не вошел в систему: {{ .detail }}"
ErrPasswordExpired: "Текущий пароль истек: {{ .detail }}"
ErrNotSupportType: "Система не поддерживает текущий тип: {{ .detail }}"
ErrApiConfigStatusInvalid: "Доступ к API интерфейсу запрещен: {{ .detail }}"
ErrApiConfigKeyInvalid: "Ошибка ключа API интерфейса: {{ .detail }}"
ErrApiConfigIPInvalid: "IP API интерфейса отсутствует в белом списке: {{ .detail }}"
ErrApiConfigDisable: "Этот интерфейс запрещает использование вызовов API интерфейса: {{ .detail }}"
ErrApiConfigKeyTimeInvalid: "Ошибка временной метки интерфейса API: {{ .detail }}"
ErrInvalidParams: 'Ошибка параметра запроса: {{ .detail }}'
ErrTokenParse: 'Ошибка генерации токена: {{ .detail }}'
ErrInitialPassword: сходный пароль неверный'
ErrInternalServer: 'Внутренняя ошибка сервера: {{ .detail }}'
ErrRecordExist: 'Запись уже существует'
ErrRecordNotFound: 'Запись не найдена'
ErrStructTransform: 'Не удалось преобразовать тип: {{ .err }}'
ErrNotLogin: 'Пользователь не вошел в систему: {{ .detail }}'
ErrPasswordExpired: 'Срок действия текущего пароля истек: {{ .detail }}'
ErrNotSupportType: 'Система не поддерживает текущий тип: {{ .name }}'
ErrProxy: 'Ошибка запроса, проверьте статус узла: {{ .detail }}'
ErrApiConfigStatusInvalid: 'Доступ к интерфейсу API запрещен: {{ .detail }}'
ErrApiConfigKeyInvalid: 'Ошибка ключа интерфейса API: {{ .detail }}'
ErrApiConfigIPInvalid: 'IP-адрес, используемый для вызова интерфейса API, отсутствует в белом списке: {{ .detail }}'
ErrApiConfigDisable: 'Этот интерфейс запрещает использование вызовов интерфейса API: {{ .detail }}'
ErrApiConfigKeyTimeInvalid: 'Ошибка временной метки интерфейса API: {{ .detail }}'
#common
ErrUsernameIsExist: "Имя пользователя уже существует"
ErrNameIsExist: "Имя уже существует"
ErrDemoEnvironment: "Демо-сервер, операция запрещена!"
ErrCmdTimeout: "Время выполнения команды истекло!"
ErrCmdIllegal: "Команда содержит недопустимые символы. Пожалуйста, измените и попробуйте снова!"
ErrPortExist: "{{ .port }} порт уже занят {{ .type }} [{{ .name }}]"
TYPE_APP: "Приложение"
TYPE_RUNTIME: "Среда выполнения"
TYPE_DOMAIN: "Доменное имя"
ErrTypePort: "Ошибка формата порта {{ .name }}"
ErrTypePortRange: "Диапазон портов должен быть между 1-65535"
Success: "Успех"
Failed: "Неудача"
SystemRestart: "Перезагрузка системы приводит к прерыванию задачи"
ErrGroupIsDefault: "Группа по умолчанию, невозможно удалить"
ErrGroupIsInWebsiteUse: "Группа используется другими сайтами, невозможно удалить"
#общий
ErrUsernameIsExist: 'Имя пользователя уже существует'
ErrNameIsExist: 'Имя уже существует'
ErrDemoEnvironment: 'Демо-сервер, эта операция запрещена!'
ErrCmdTimeout: 'Время выполнения команды истекло!'
ErrCmdIllegal: 'В команде выполнения есть недопустимые символы. Измените ее и повторите попытку!'
ErrPortExist: 'Порт {{ .port }} уже занят {{ .type }} [{{ .name }}]'
TYPE_APP: 'Приложение'
TYPE_RUNTIME: 'Среда выполнения'
TYPE_DOMAIN: 'Доменное имя'
ErrTypePort: ормат порта {{ .name }} неверен'
ErrTypePortRange: 'Диапазон портов должен быть в пределах 1-65535'
Success: 'Успех'
Failed: 'Не удалось'
SystemRestart: 'Задача прервана из-за перезапуска системы'
ErrGroupIsDefault: 'Группа по умолчанию, не может быть удалена'
ErrGroupIsInWebsiteUse: 'Группа используется другим веб-сайтом и не может быть удалена.'
#app
ErrPortInUsed: "Порт {{ .detail }} уже используется"
ErrAppLimit: "Превышен лимит установки приложения"
ErrAppRequired: "Требуется приложение {{ .detail }}"
ErrNotInstall: "Приложение не установлено"
ErrPortInOtherApp: "Порт {{ .port }} уже используется приложением {{ .apps }}"
ErrDbUserNotValid: "База данных акций, имя пользователя и пароль не совпадают!"
ErrDockerComposeNotValid: "Ошибка формата файла docker-compose!"
ErrUpdateBuWebsite: "Приложение успешно обновлено, но изменение конфигурационного файла веб-сайта не удалось, пожалуйста, проверьте конфигурацию!"
Err1PanelNetworkFailed: "Не удалось создать сеть контейнера по умолчанию! {{ .detail }}"
ErrFileParse: "Не удалось разобрать файл docker-compose приложения!"
ErrInstallDirNotFound: "Директория установки не существует"
AppStoreIsUpToDate: "Обновлено"
LocalAppVersionNull: "Приложение {{.name}} не синхронизировано с версией! Невозможно добавить в список приложений"
LocalAppVersionErr: "{{.name}} не удалось синхронизировать версию {{.version}}! {{.err}}"
ErrFileNotFound: "Файл {{.name}} не существует"
ErrFileParseApp: "Не удалось проанализировать файл {{.name}} {{.err}}"
ErrAppDirNull: "Папка версии не существует"
LocalAppErr: "Синхронизация приложения {{.name}} не удалась! {{.err}}"
ErrContainerName: "Имя контейнера уже существует"
ErrAppSystemRestart: "Перезапуск 1Panel приводит к завершению задачи"
ErrCreateHttpClient: "Не удалось создать HTTP-запрос {{.err}}"
ErrHttpReqTimeOut: "Превышено время ожидания запроса {{.err}}"
ErrHttpReqFailed: "Запрос не выполнен {{.err}}"
ErrHttpReqNotFound: "Файл не существует"
ErrNoSuchHost: "Сбой сетевого подключения"
ErrImagePullTimeOut: "Тайм-аут загрузки образа"
ErrContainerNotFound: "Контейнер {{ .name }} не существует"
ErrContainerMsg: "Контейнер {{ .name }} работает ненормально, пожалуйста, проверьте журнал на странице контейнера для подробностей"
ErrAppBackup: "Резервное копирование приложения {{ .name }} не удалось, ошибка {{.err}}"
ErrImagePull: "Не удалось загрузить образ {{ .name }}, ошибка {{.err}}"
ErrVersionTooLow: "Текущая версия 1Panel слишком стара для обновления магазина приложений, пожалуйста, обновите версию"
ErrAppNameExist: "Имя приложения уже существует"
AppStoreIsSyncing: "Магазин приложений синхронизируется, пожалуйста, попробуйте позже"
ErrGetCompose: "Не удалось получить файл docker-compose.yml! {{ .detail }}"
ErrAppWarn: "Аномальный статус, пожалуйста, проверьте журнал"
ErrAppParamKey: "Исключение в поле параметра {{ .name }}"
ErrAppUpgrade: "Не удалось обновить приложение {{ .name }} {{ .err }}"
AppRecover: "Приложение {{ .name }} откатилось "
PullImageStart: "Начало загрузки образа {{ .name }}"
PullImageSuccess: "Образ успешно загружен"
UpgradeAppStart: "Начало обновления приложения {{ .name }}"
UpgradeAppSuccess: "Приложение {{ .name }} успешно обновлено"
ErrAppIsDown: "{{ .name }} статус приложения аномальный, пожалуйста, проверьте"
#резервное копирование
ErrBackupInUsed: 'Учетная запись резервного копирования использовалась в запланированной задаче и не может быть удалена.'
ErrBackupCheck: 'Проверка подключения к резервной копии учетной записи не удалась {{ .err }}'
ErrBackupLocalDelete: 'Удаление учетной записи резервного копирования локального сервера пока не поддерживается'
ErrBackupLocalCreate: 'Создание учетных записей резервного копирования локального сервера пока не поддерживается'
#file
ErrFileCanNotRead: "Файл недоступен для чтения"
ErrFileToLarge: "Файл слишком большой"
ErrPathNotFound: "Путь не найден"
ErrMovePathFailed: "Целевой путь не может содержать исходный путь!"
ErrLinkPathNotFound: "Целевой путь не существует!"
ErrFileIsExist: "Файл или каталог уже существует!"
ErrFileUpload: "Не удалось загрузить файл {{.name}} {{.detail}}"
ErrFileDownloadDir: "Скачивание папки не поддерживается"
ErrCmdNotFound: "Команда {{ .name}} не существует, пожалуйста, сначала установите эту команду на хосте"
ErrSourcePathNotFound: "Исходный каталог не существует"
ErrFavoriteExist: "Этот путь уже в избранном"
ErrInvalidChar: "Недопустимые символы запрещены"
ErrPathNotDelete: "Выбранный каталог не может быть удален"
#приложение
ErrPortInUsed: '{{ .detail }} порт уже занят!'
ErrAppLimit: 'Количество установленных приложений превысило лимит'
ErrAppRequired: 'Сначала установите приложение {{ .detail }}'
ErrNotInstall: 'Приложение не установлено'
ErrPortInOtherApp: 'Порт {{ .port }} уже занят приложением {{ .apps }}!'
ErrDbUserNotValid: 'Существующая база данных, имя пользователя и пароль не совпадают!'
ErrDockerComposeNotValid: 'Неверный формат файла docker-compose'
ErrUpdateBuWebsite: 'Приложение успешно обновлено, но изменение файла конфигурации веб-сайта не удалось. Пожалуйста, проверьте конфигурацию! '
Err1PanelNetworkFailed: 'Создание сети контейнеров по умолчанию не удалось! {{ .detail }}'
ErrFileParse: 'Ошибка анализа файла docker-compose приложения!'
ErrInstallDirNotFound: 'Каталог установки не существует. Если вам необходимо удалить, выберите Принудительное удаление.'
AppStoreIsUpToDate: 'В магазине приложений уже установлена последняя версия'
LocalAppVersionNull: 'Приложение {{ .name }} не синхронизировано с версией! Невозможно добавить в список приложений.'
LocalAppVersionErr: 'Синхронизация версии {{ .version }} {{ .name }} не удалась! {{ .err }}'
ErrFileNotFound: 'Файл {{ .name }} не существует'
ErrFileParseApp: '{{ .name }} анализ файла не удался {{ .err }}'
ErrAppDirNull: 'Папка версии не существует'
LocalAppErr: 'Синхронизация приложения {{ .name }} не удалась! {{ .err }}'
ErrContainerName: 'Имя контейнера уже существует'
ErrAppSystemRestart: '1Перезапуск панели привел к завершению задачи'
ErrCreateHttpClient: 'Не удалось создать запрос {{ .err }}'
ErrHttpReqTimeOut: 'Истекло время ожидания запроса {{ .err }}'
ErrHttpReqFailed: 'Запрос не выполнен {{ .err }}'
ErrNoSuchHost: 'Не удалось найти запрошенный сервер {{ .err }}'
ErrHttpReqNotFound: 'Запрошенный ресурс {{ .err }} не найден'
ErrImagePullTimeOut: 'Истекло время ожидания извлечения изображения'
ErrContainerNotFound: 'Контейнер {{ .name }} не существует'
ErrContainerMsg: 'Контейнер {{ .name }} ненормален. Подробности смотрите в журнале на странице контейнера.'
ErrAppBackup: '{{ .name }} резервное копирование приложения не удалось {{ .err }}'
ErrImagePull: 'Не удалось извлечь изображение {{ .err }}'
ErrVersionTooLow: 'Текущая версия 1Panel слишком низкая для обновления App Store. Пожалуйста, обновите версию перед началом работы.'
ErrAppNameExist: 'Имя приложения уже существует'
AppStoreIsSyncing: 'App Store синхронизируется, повторите попытку позже'
ErrGetCompose: 'Не удалось получить файл docker-compose.yml! {{ .detail }}'
ErrAppWarn: 'Ненормальное состояние, проверьте журнал'
ErrAppParamKey: 'Поле параметра {{ .name }} ненормально'
ErrAppUpgrade: 'Обновление приложения {{ .name }} не удалось {{ .err }}'
AppRecover: 'Откатить приложение {{ .name }}'
PullImageStart: 'Начать извлечение изображения {{ .name }}'
PullImageSuccess: 'Изображение извлечено успешно'
UpgradeAppStart: 'Начать обновление приложения {{ .name }}'
UpgradeAppSuccess: 'Приложение {{ .name }} успешно обновлено'
AppStoreIsLastVersion: 'В App Store уже установлена последняя версия'
AppStoreSyncSuccess: 'Синхронизация с App Store прошла успешно'
SyncAppDetail: 'Синхронизировать конфигурацию приложения'
AppVersionNotMatch: 'Приложению {{ .name }} требуется более высокая версия 1Panel, синхронизация пропускается'
MoveSiteDir: 'Текущее обновление требует миграции каталога веб-сайта OpenResty'
MoveSiteToDir: 'Перенести каталог сайта в {{ .name }}'
ErrMoveSiteDir: 'Не удалось перенести каталог сайта'
MoveSiteDirSuccess: 'Успешная миграция каталога веб-сайта'
DeleteRuntimePHP: 'Удалить среду выполнения PHP'
CustomAppStoreNotConfig: 'Укажите адрес автономного пакета в магазине приложений'
CustomAppStoreNotFound: 'Не удалось получить пакет магазина приложений. Проверьте, существует ли он'
CustomAppStoreFileValid: 'Пакеты магазина приложений должны быть в формате .tar.gz'
PullImageTimeout: 'Истекло время ожидания извлечения изображения. Попробуйте увеличить ускорение изображения или выбрать другое ускорение изображения'
ErrAppIsDown: '{{ .name }} статус приложения ненормальный, проверьте'
ErrCustomApps: 'Установлено приложение. Сначала удалите его'
ErrCustomRuntimes: 'Установлена среда выполнения. Сначала удалите ее'
#website
ErrDomainIsExist: "Доменное имя уже существует"
ErrAliasIsExist: "Псевдоним уже существует"
ErrAppDelete: "Другой веб-сайт использует это приложение"
ErrGroupIsUsed: "Группа используется и не может быть удалена"
ErrBackupMatch: "файл резервной копии не соответствует текущим данным части сайта: {{ .detail}}"
ErrBackupExist: айл резервной копии соответствует части исходных данных, которая не существует: {{ .detail}}"
ErrPHPResource: "Локальная среда выполнения не поддерживает переключение!"
ErrPathPermission: "Обнаружена папка с правами доступа не 1000:1000 в каталоге индекса, что может вызвать ошибку отказа в доступе при доступе к веб-сайту. Пожалуйста, нажмите кнопку сохранения выше"
ErrDomainIsUsed: "Домен уже используется веб-сайтом {{ .name }}"
ErrDomainFormat: "Ошибка формата домена {{ .name }}"
ErrDefaultAlias: "default — зарезервированное кодовое имя, пожалуйста, используйте другое кодовое имя"
ErrImageNotExist: "Образ рабочей среды {{.name}} не существует, пожалуйста, перенастройте рабочую среду"
#файл
ErrFileCanNotRead: 'Этот файл не поддерживает предварительный просмотр'
ErrFileToLarge: 'Файл больше 10 МБ и не может быть открыт'
ErrPathNotFound: 'Каталог не существует'
ErrMovePathFailed: 'Целевой путь не может содержать исходный путь!'
ErrLinkPathNotFound: 'Целевой путь не существует!'
ErrFileIsExist: айл или папка уже существует!'
ErrFileUpload: '{{ .name }} не удалось загрузить файл {{ .detail }}'
ErrFileDownloadDir: 'Папка загрузки не поддерживается'
ErrCmdNotFound: 'Команда {{ .name }} не существует, сначала установите эту команду на хосте'
ErrSourcePathNotFound: 'Исходный каталог не существует'
ErrFavoriteExist: 'Этот путь уже добавлен в избранное'
ErrInvalidChar: 'Недопустимые символы не допускаются'
ErrPathNotDelete: 'Выбранный каталог не может быть удален'
#веб-сайт
ErrDomainIsExist: 'Доменное имя уже существует'
ErrAliasIsExist: 'Псевдоним уже существует'
ErrAppDelete: 'Другие веб-сайты используют это приложение и не могут его удалить'
ErrBackupMatch: 'Файл резервной копии не соответствует некоторым текущим данным веб-сайта {{ .detail }}'
ErrBackupExist: 'Соответствующая часть исходных данных в файле резервной копии не существует {{ .detail }}'
ErrPHPResource: 'Локальная операционная среда не поддерживает переключение!'
ErrPathPermission: 'В каталоге index обнаружена папка с разрешениями, отличными от 1000:1000, что может привести к ошибке Отказано в доступе на веб-сайте. Пожалуйста, нажмите кнопку Сохранить выше.'
ErrDomainIsUsed: 'Доменное имя уже используется веб-сайтом [{{ .name }}]'
ErrDomainFormat: 'Неверный формат доменного имени {{ .name }}'
ErrDefaultAlias: 'по умолчанию зарезервирован код, используйте другой код'
ErrParentWebsite: 'Сначала вам необходимо удалить дочерний сайт {{ .name }}'
ErrBuildDirNotFound: 'Каталог сборки не существует'
ErrImageNotExist: 'Образ операционной среды {{ .name }} не существует, пожалуйста, отредактируйте операционную среду заново'
#ssl
ErrSSLCannotDelete: "Сертификат {{ .name }} используется веб-сайтом и не может быть удален"
ErrAccountCannotDelete: "Сертификат, связанный с учетной записью, не может быть удален"
ErrSSLApply: "Сертификат продолжает успешно подписываться, но перезагрузка openresty не удалась, пожалуйста, проверьте конфигурацию!"
ErrEmailIsExist: "Электронная почта уже существует"
ErrSSLKeyNotFound: "Файл закрытого ключа не существует"
ErrSSLCertificateNotFound: "Файл сертификата не существует"
ErrSSLKeyFormat: "Ошибка проверки файла закрытого ключа"
ErrSSLCertificateFormat: "Ошибка формата файла сертификата, пожалуйста, используйте формат pem"
ErrEabKidOrEabHmacKeyCannotBlank: "EabKid или EabHmacKey не могут быть пустыми"
ErrOpenrestyNotFound: "Режим HTTP требует предварительной установки Openresty"
ApplySSLStart: "Начать подачу заявки на сертификат, доменное имя [{{ .domain }}] метод подачи заявки [{{ .type }}] "
dnsAccount: "Автоматический DNS"
dnsManual: "Ручной DNS"
http: "HTTP"
ApplySSLFailed: "Заявка на сертификат для [{{ .domain }}] не удалась, {{.detail}} "
ApplySSLSuccess: "Заявка на сертификат для [{{ .domain }}] успешна! "
DNSAccountName: "Учетная запись DNS [{{ .name }}] производитель [{{.type}}]"
PushDirLog: "Сертификат отправлен в каталог [{{ .path }}] {{ .status }}"
ErrDeleteCAWithSSL: "Существует выданный сертификат под текущей организацией, удаление невозможно"
ErrDeleteWithPanelSSL: "Конфигурация SSL панели использует этот сертификат и не может быть удален"
ErrDefaultCA: "Уполномоченный центр по умолчанию не может быть удален"
ApplyWebSiteSSLLog: "Начать обновление сертификата веб-сайта {{ .name }}"
ErrUpdateWebsiteSSL: "Не удалось обновить сертификат веб-сайта {{ .name }}: {{ .err }}"
ApplyWebSiteSSLSuccess: "Сертификат веб-сайта успешно обновлен"
ErrExecShell: "Не удалось выполнить скрипт {{ .err }}"
ExecShellStart: "Начать выполнение скрипта"
ExecShellSuccess: "Скрипт успешно выполнен"
StartUpdateSystemSSL: "Начать обновление системного сертификата"
UpdateSystemSSLSuccess: "Системный сертификат успешно обновлен"
ErrSSLCannotDelete: 'Сертификат {{ .name }} используется веб-сайтом и не может быть удален'
ErrAccountCannotDelete: 'Учетная запись связана с сертификатом и не может быть удалена'
ErrSSLApply: 'Обновление сертификата прошло успешно, перезагрузка OpenResty не удалась, проверьте конфигурацию!'
ErrEmailIsExist: 'Почтовый ящик уже существует'
ErrSSLKeyNotFound: 'Файл закрытого ключа не существует'
ErrSSLCertificateNotFound: 'Файл сертификата не существует'
ErrSSLKeyFormat: роверка файла закрытого ключа не удалась'
ErrSSLCertificateFormat: 'Неверный формат файла сертификата, используйте формат pem'
ErrEabKidOrEabHmacKeyCannotBlank: 'EabKid или EabHmacKey не могут быть пустыми'
ErrOpenrestyNotFound: 'Для режима HTTP необходимо сначала установить Openresty'
ApplySSLStart: 'Начать подачу заявки на сертификат, доменное имя [{{ .domain }}], метод подачи заявки [{{ .type }}]'
dnsAccount: 'DNS Авто'
dnsManual: 'Руководство по DNS'
http: 'HTTP'
ApplySSLFailed: 'Заявка на сертификат [{{ .domain }}] не выполнена, {{ .detail }}'
ApplySSLSuccess: 'Заявка на сертификат [{{ .domain }}] успешно подана! '
DNSAccountName: 'DNS-аккаунт [{{ .name }}] поставщик [{{ .type }}]'
PushDirLog: 'Сертификат перемещен в каталог [{{ .path }}] {{ .status }}'
ErrDeleteCAWithSSL: 'Текущая организация имеет сертификат, который был выдан и не может быть удален.'
ErrDeleteWithPanelSSL: 'Конфигурация SSL панели использует этот сертификат и не может быть удалена'
ErrDefaultCA: 'Невозможно удалить полномочия по умолчанию'
ApplyWebSiteSSLLog: 'Начинается обновление сертификата веб-сайта {{ .name }}'
ErrUpdateWebsiteSSL: 'Обновление сертификата веб-сайта {{ .name }} не удалось: {{ .err }}'
ApplyWebSiteSSLSuccess: 'Сертификат веб-сайта успешно обновлен'
ErrExecShell: 'Не удалось выполнить скрипт {{ .err }}'
ExecShellStart: 'Начать выполнение скрипта'
ExecShellSuccess: 'Скрипт выполнен успешно'
StartUpdateSystemSSL: 'Начать обновление системного сертификата'
UpdateSystemSSLSuccess: 'Сертификат системы обновлен успешно'
ErrWildcardDomain: 'Невозможно подать заявку на получение подстановочного сертификата доменного имени в режиме HTTP'
#mysql
ErrUserIsExist: "Текущий пользователь уже существует. Пожалуйста, введите нового пользователя"
ErrDatabaseIsExist: "Текущая база данных уже существует. Пожалуйста, введите новую базу данных"
ErrExecTimeOut: "Время выполнения SQL запроса истекло, пожалуйста, проверьте базу данных"
ErrRemoteExist: "Удаленная база данных с таким именем уже существует, пожалуйста, измените и попробуйте снова"
ErrLocalExist: "Локальная база данных с таким именем уже существует, пожалуйста, измените и попробуйте снова"
ErrUserIsExist: 'Текущий пользователь уже существует, пожалуйста, введите еще раз'
ErrDatabaseIsExist: 'Текущая база данных уже существует, пожалуйста, введите ее повторно'
ErrExecTimeOut: 'Время выполнения SQL истекло, проверьте базу данных'
ErrRemoteExist: 'Удаленная база данных с таким именем уже существует. Измените его и повторите попытку'
ErrLocalExist: 'Имя уже существует в локальной базе данных, измените его и повторите попытку'
#redis
ErrTypeOfRedis: "Тип восстановленного файла не соответствует текущему режиму сохранения. Измените тип файла и попробуйте снова"
#редис
ErrTypeOfRedis: 'Тип файла восстановления не соответствует текущему методу сохранения. Измените его и повторите попытку'
#container
ErrInUsed: "{{ .detail }} используется и не может быть удален"
ErrObjectInUsed: "Этот объект используется и не может быть удален"
ErrObjectBeDependent: "Этот образ зависит от других образов и не может быть удален"
ErrPortRules: "Количество портов не совпадает, пожалуйста, введите заново!"
ErrPgImagePull: "Тайм-аут загрузки образа. Пожалуйста, настройте ускорение загрузки образа или вручную загрузите образ postgres:16.0-alpine и попробуйте снова"
#контейнер
ErrInUsed: '{{ .detail }} используется и не может быть удален'
ErrObjectInUsed: 'Объект используется и не может быть удален'
ErrObjectBeDependent: 'Это изображение зависит от других изображений и не может быть удалено'
ErrPortRules: 'Номер порта не совпадает, введите заново!'
ErrPgImagePull: 'Время извлечения изображения истекло. Настройте ускорение изображения или вручную извлеките изображение {{ .name }} и повторите попытку'
#runtime
ErrDirNotFound: "Папка сборки не существует! Пожалуйста, проверьте целостность файла!"
ErrFileNotExist: "Файл {{ .detail }} не существует! Пожалуйста, проверьте целостность исходного файла!"
ErrImageBuildErr: "Не удалось создать образ"
ErrImageExist: "Образ уже существует!"
ErrDelWithWebsite: "Рабочая среда уже связана с веб-сайтом и не может быть удалена"
ErrRuntimeStart: "Не удалось запустить"
ErrPackageJsonNotFound: айл package.json не существует"
ErrScriptsNotFound: "Конфигурационный элемент scripts не найден в package.json"
ErrContainerNameNotFound: "Не удалось получить имя контейнера, пожалуйста, проверьте файл .env"
ErrNodeModulesNotFound: "Папка node_modules не существует! Пожалуйста, отредактируйте среду выполнения или дождитесь успешного запуска среды выполнения"
#время выполнения
ErrDirNotFound: 'Папка сборки не существует! Проверьте целостность файла!'
ErrFileNotExist: 'Файл {{ .detail }} не существует! Проверьте целостность исходного файла!'
ErrImageBuildErr: 'Сборка образа не удалась'
ErrImageExist: 'Изображение уже существует!'
ErrDelWithWebsite: 'Операционная среда уже связана с веб-сайтом и не может быть удалена'
ErrRuntimeStart: 'Запуск не удался'
ErrPackageJsonNotFound: айл package.json не существует'
ErrScriptsNotFound: 'Элемент конфигурации скриптов не найден в package.json'
ErrContainerNameNotFound: 'Не удалось получить имя контейнера, проверьте файл .env'
ErrNodeModulesNotFound: 'Папка node_modules не существует! Измените среду выполнения или дождитесь ее успешного запуска'
ErrContainerNameIsNull: 'Имя контейнера не существует'
#setting
ErrBackupInUsed: "Учетная запись резервного копирования уже используется в cronjob и не может быть удалена."
ErrBackupCheck: "Проверка подключения учетной записи резервного копирования не выполнена {{ .err}}"
ErrOSSConn: "Не удалось получить последнюю версию, пожалуйста, проверьте возможность подключения сервера к внешней сети."
ErrEntrance: "Информация о безопасном входе неверна. Пожалуйста, проверьте и попробуйте снова!"
#инструмент
ErrConfigNotFound: 'Файл конфигурации не существует'
ErrConfigParse: 'Неверный формат файла конфигурации'
ErrConfigIsNull: 'Файл конфигурации не может быть пустым'
ErrConfigDirNotFound: 'Рабочий каталог не существует'
ErrConfigAlreadyExist: 'Файл конфигурации с таким именем уже существует'
ErrUserFindErr: 'Поиск пользователя {{ .name }} не удался {{ .err }}'
#tool
ErrConfigNotFound: "Конфигурационный файл не существует"
ErrConfigParse: "Ошибка формата конфигурационного файла"
ErrConfigIsNull: "Конфигурационный файл не может быть пустым"
ErrConfigDirNotFound: "Каталог выполнения не существует"
ErrConfigAlreadyExist: "Конфигурационный файл с таким именем уже существует"
ErrUserFindErr: "Не удалось найти пользователя {{ .name }} {{ .err }}"
#ssh
ErrFirewallNone: "На системе не обнаружен сервис firewalld или ufw. Пожалуйста, проверьте и попробуйте снова!"
ErrFirewallBoth: "На системе обнаружены оба сервиса firewalld и ufw. Чтобы избежать конфликтов, удалите один и попробуйте снова!"
#ссш
ErrFirewallNone: 'Системные службы firewalld или ufw не обнаружены. Проверьте и повторите попытку!'
ErrFirewallBoth: 'Обнаружено, что в системе есть службы firewalld и ufw. Чтобы избежать конфликтов, удалите их и повторите попытку!'
#cronjob
ErrBashExecute: "Ошибка выполнения скрипта, пожалуйста, проверьте конкретную информацию в области вывода задачи."
ErrCutWebsiteLog: "Не удалось разрезать лог веб-сайта {{ .name }}, ошибка {{ .err }}"
CutWebsiteLogSuccess: "Лог веб-сайта {{ .name }} успешно разрезан, путь к резервной копии {{ .path }}"
ErrCutWebsiteLog: '{{ .name }} не удалось вырезать журнал веб-сайта, ошибка {{ .err }}'
CutWebsiteLogSuccess: 'Журнал веб-сайта {{ .name }} успешно вырезан, путь к резервной копии {{ .path }}'
HandleShell: 'Выполнить скрипт {{ .name }}'
HandleNtpSync: 'Синхронизация системного времени'
HandleSystemClean: 'Очистка системного кэша'
#toolbox
ErrNotExistUser: "Текущий пользователь не существует. Пожалуйста, измените и попробуйте снова!"
ErrBanAction: "Установка не выполнена, текущий сервис {{ .name }} недоступен, пожалуйста, проверьте и попробуйте снова!"
ErrClamdscanNotFound: "Команда clamdscan не обнаружена, пожалуйста, обратитесь к документации для установки!"
#ящик для инструментов
ErrNotExistUser: 'Текущий пользователь не существует, измените его и повторите попытку!'
ErrBanAction: 'Настройка не удалась. Текущая служба {{ .name }} недоступна. Проверьте и повторите попытку!'
ErrClamdscanNotFound: 'Команда clamdscan не обнаружена, обратитесь к документации, чтобы установить ее!'
#waf
ErrScope: "Неподдерживаемое изменение этой конфигурации"
ErrStateChange: "Не удалось изменить статус"
ErrRuleExist: "Правило уже существует"
ErrRuleNotExist: "Правило не существует"
ErrParseIP: "Неверный формат IP"
ErrDefaultIP: "default — зарезервированное имя, используйте другое имя"
ErrGroupInUse: руппа IP используется черным/белым списком, не может быть удалена"
ErrGroupExist: "Имя группы IP уже существует"
ErrIPRange: "Неверный диапазон IP"
ErrIPExist: "IP уже существует"
urlDefense: "Правила URL"
urlHelper: "Запрещенные URL"
dirFilter: "Фильтр каталогов"
xss: "XSS"
phpExec: "Выполнение PHP-скрипта"
oneWordTrojan: "Троян с одной командой"
appFilter: ильтр опасных каталогов приложений"
webshell: "Веб-шелл"
args: "Правила параметров"
protocolFilter: "Фильтр протоколов"
javaFileter: "Фильтр опасных файлов Java"
scannerFilter: "Фильтр сканеров"
escapeFilter: "Экранирование фильтра"
customRule: "Пользовательские правила"
httpMethod: "Фильтр HTTP-методов"
fileExt: "Ограничение загрузки файлов"
defaultIpBlack: "Группа вредоносных IP"
cookie: "Правила Cookie"
urlBlack: "Черный список URL"
uaBlack: "Черный список User-Agent"
attackCount: "Ограничение частоты атак"
fileExtCheck: "Ограничение загрузки файлов"
geoRestrict: "Ограничение доступа по региону"
unknownWebsite: "Неавторизованный доступ к домену"
notFoundCount: "Ограничение частоты 404"
headerDefense: "Правила заголовков"
defaultUaBlack: "Правила User-Agent"
methodWhite: "Правила HTTP"
captcha: "Проверка человека-машины"
fiveSeconds: "Проверка за 5 секунд"
vulnCheck: "Дополнительные правила"
acl: "Пользовательские правила"
sql: "SQL-инъекция"
cc: "Ограничение частоты доступа"
defaultUrlBlack: "Правила URL"
sqlInject: "SQL-инъекция"
ErrDBNotExist: "База данных не существует"
allow: "Разрешить"
deny: "Запретить"
#ваф
ErrScope: зменение этой конфигурации не поддерживается'
ErrStateChange: 'He удалось изменить состояние'
ErrRuleExist: 'Правило уже существует'
ErrRuleNotExist: 'Правило не существует'
ErrParseIP: 'Неправильный формат IP'
ErrDefaultIP: 'по умолчанию это зарезервированное имя, пожалуйста, измените его на другое имя'
ErrGroupInUse: 'IP-группа используется черным/белым списком и не может быть удалена'
ErrGroupExist: 'Имя группы IP уже существует'
ErrIPRange: 'Неверный диапазон IP-адресов'
ErrIPExist: 'IP-адрес уже существует'
urlDefense: 'Правила URL'
urlHelper: 'Запрещенный URL'
dirFilter: 'Фильтр каталогов'
xss: 'XSS'
phpExec: 'Выполнение PHP-скрипта'
oneWordTrojan: 'Троян из одного слова'
appFilter: 'Применить фильтрацию опасных каталогов'
webshell: 'Be6-оболочка'
args: 'Правила параметров'
protocolFilter: 'Фильтрация протоколов'
javaFileter: 'Фильтр опасных файлов Java'
scannerFilter: 'Фильтр сканера'
escapeFilter: 'фильтр побега'
customRule: 'Пользовательское правило'
httpMethod: 'Фильтрация метода HTTP'
fileExt: 'Ограничения на загрузку файлов'
defaultIpBlack: 'Вредоносная группа IP'
cookie: 'Правила использования файлов cookie'
urlBlack: 'Черный список URL'
uaBlack: 'Черный список User-Agent'
attackCount: 'Ограничение частоты атак'
fileExtCheck: 'Ограничения на загрузку файлов'
geoRestrict: 'Региональные ограничения доступа'
unknownWebsite: 'Несанкционированный доступ к доменному имени'
notFoundCount: 'Ограничение скорости 404'
headerDefense: 'Правила заголовка'
defaultUaBlack: 'Правила User-Agent'
methodWhite: 'Правила HTTP'
captcha: 'человеко-машинная верификация'
fiveSeconds: '5 секунд проверки'
vulnCheck: 'Дополнительные правила'
acl: 'Пользовательские правила'
sql: 'SQL-инъекция'
cc: 'Ограничение частоты доступа'
defaultUrlBlack: 'Правила URL'
sqlInject: 'SQL-инъекция'
ErrDBNotExist: 'База данных не существует'
allow: 'разрешить'
deny: 'отрицать'
OpenrestyNotFound: 'Openresty не установлен'
#license
ErrLicense: "Ошибка формата лицензии, пожалуйста, проверьте и попробуйте снова!"
ErrLicenseCheck: "Проверка лицензии не выполнена, пожалуйста, проверьте и попробуйте снова!"
ErrXpackVersion: "Ошибка проверки лицензии, эта лицензия ограничена по версии и не может быть успешно импортирована. Пожалуйста, проверьте и попробуйте снова!"
ErrLicenseSave: "Не удалось сохранить информацию о лицензии, ошибка {{ .err }}, пожалуйста, попробуйте снова!"
ErrLicenseSync: "Не удалось синхронизировать информацию о лицензии, в базе данных не обнаружена информация о лицензии!"
ErrXpackNotFound: "Этот раздел является функцией профессионального издания, пожалуйста, сначала импортируйте лицензию в интерфейсе Настройки панели — Лицензия"
ErrXpackNotActive: "Этот раздел является функцией профессионального издания, пожалуйста, сначала синхронизируйте статус лицензии в интерфейсе Настройки панели — Лицензия"
ErrXpackOutOfDate: "Текущая лицензия истекла, пожалуйста, повторно импортируйте лицензию в интерфейсе Настройки панели — Лицензия"
ErrXpackLost: "Лицензия достигла максимального числа попыток повторной попытки. Пожалуйста, перейдите на страницу [Настройки] [Лицензия] и вручную нажмите кнопку синхронизации, чтобы обеспечить корректную работу функций профессиональной версии."
ErrXpackTimeout: "Превышено время ожидания запроса, возможно, нестабильное сетевое соединение, пожалуйста, повторите попытку позже!"
#задача
TaskStart: '{{ .name }} Задача начинается [START]'
TaskEnd: '{{ .name }} Задача выполнена [ЗАВЕРШЕНО]'
TaskFailed: 'Задача {{ .name }} не выполнена'
TaskTimeout: '{{ .name }} истекло время ожидания'
TaskSuccess: '{{ .name }} Задача выполнена успешно'
TaskRetry: 'Начать {{ .name }}-ю повторную попытку'
SubTaskSuccess: '{{ .name }} выполнено успешно'
SubTaskFailed: '{{ .name }} не удалось: {{ .err }}'
TaskInstall: 'Установить'
TaskUninstall: 'Удалить'
TaskCreate: 'Создать'
TaskDelete: 'Удалить'
TaskUpgrade: 'Обновить'
TaskUpdate: 'Обновить'
TaskRestart: 'Перезапуск'
TaskBackup: 'Резервное копирование'
TaskRecover: 'Восстановить'
TaskRollback: 'Откат'
TaskPull: 'Вытянуть'
ЗадачаСборка: 'Сборка'
TaskPush: 'Push'
TaskHandle: 'Выполнить'
Website: 'Be6-сайт'
App: 'Приложение'
Runtime: 'Среда выполнения'
Database: 'База данных'
ConfigFTP: 'Создать пользователя FTP {{ .name }}'
ConfigOpenresty: 'Создать файл конфигурации Openresty'
InstallAppSuccess: 'Приложение {{ .name }} успешно установлено'
ConfigRuntime: 'Настройка среды выполнения'
ConfigApp: 'Приложение конфигурации'
SuccessStatus: '{{ .name }} успешно'
FailedStatus: '{{ .name }} не удалось {{ .err }}'
HandleLink: 'Обработка ассоциации приложений'
HandleDatabaseApp: 'Обработка параметров приложения'
ExecShell: 'Выполнить скрипт {{ .name }}'
PullImage: 'Вытянуть изображение'
Start: 'Старт'
Run: 'Старт'
Stop: 'Стоп'
Image: 'Зеркало'
Compose: 'Оркестровка'
Container: 'Контейнер'
AppLink: 'Связанное приложение'
EnableSSL: 'Включить HTTPS'
AppStore: 'Магазин приложений'
TaskSync: 'Синхронизировать'
LocalApp: 'Локальное приложение'
SubTask: 'Подзадача'
RuntimeExtension: 'Расширение среды выполнения'
TaskIsExecuting: 'Задача выполняется'
CustomAppstore: 'Хранилище пользовательских приложений'
#license
ErrAlert: "Ошибка формата информации об оповещении, пожалуйста, проверьте и попробуйте снова!"
ErrAlertPush: "Ошибка отправки оповещения, пожалуйста, проверьте и попробуйте снова!"
ErrAlertSave: "Ошибка сохранения оповещения, пожалуйста, проверьте и попробуйте снова!"
ErrAlertSync: "Ошибка синхронизации оповещения, пожалуйста, проверьте и попробуйте снова!"
ErrAlertRemote: "Ошибка удаленного оповещения, пожалуйста, проверьте и попробуйте снова!"
# задача - ай
OllamaModelPull: 'Вытянуть модель Ollama {{ .name }}'
OllamaModelSize: 'Получить размер модели Ollama {{ .name }}'
#cmd
AppVersion: "Версия приложения"
AppCommands: "Команды, связанные с приложением"
AppInit: "Инициализировать приложение"
AppKeyVal: "Ключ приложения (поддерживает только английский)"
AppCreateFileErr: "Не удалось создать файл {{ .name }} {{ .err }}"
AppCreateDirErr: "Не удалось создать папку {{ .name }} {{ .err }}"
AppMissKey: "Отсутствует ключ приложения, используйте -k для указания"
AppMissVersion: "Отсутствует версия приложения, используйте -v для указания"
AppVersionExist: "Версия уже существует!"
AppCreateSuccessful: "Создание прошло успешно!"
AppWriteErr: "Ошибка записи файла {{ .name }} {{ .err }}"
SudoHelper: "Пожалуйста, используйте {{ .cmd }} или переключитесь на пользователя root"
ListenIPCommands: "Переключить IP прослушивания"
ListenIPv4: "Прослушивать IPv4"
ListenIPv6: "Прослушивать IPv6"
ListenChangeSuccessful: "Переключение успешно! Теперь прослушивается {{ .value }}"
ResetCommands: "Сбросить информацию системы"
ResetMFA: "Отменить двухфакторную аутентификацию 1Panel"
ResetHttps: "Отменить вход в 1Panel по https"
ResetEntrance: "Отменить безопасный вход в 1Panel"
ResetIPs: "Отменить авторизованные IP-ограничения 1Panel"
ResetDomain: "Отменить привязку домена 1Panel"
RestoreCommands: "Откатить сервис и данные 1Panel"
RestoreNoSuchFile: "Нет доступных файлов для отката"
RestoreStep1: "(1/5) Начало отката сервиса и данных 1Panel из каталога {{ .name }}..."
RestoreStep2: "(2/5) Откат бинарного файла 1Panel успешен"
RestoreStep3: "(3/5) Откат скрипта 1Panel успешен"
RestoreStep4: "(4/5) Откат сервиса 1Panel успешен"
RestoreStep5: "(5/5) Откат данных 1Panel успешен"
RestoreSuccessful: "Откат успешен! Перезапуск службы, пожалуйста, подождите..."
UpdateCommands: "Обновить информацию панели"
UpdateUser: "Обновить пользователя панели"
UpdatePassword: "Обновить пароль панели"
UpdatePort: "Обновить порт панели"
UpdateUserNull: "Ошибка: пользователь панели пуст!"
UpdateUserBlank: "Ошибка: пользователь панели содержит пробелы!"
UpdateUserFormat: "Ошибка: неверный формат пользователя панели! Поддерживаются только английский, китайский, цифры и , длина 3-30"
UpdateUserErr: "Ошибка: не удалось обновить пользователя панели, {{ .err }}"
UpdateSuccessful: "Обновление успешно!"
UpdateUserResult: "Пользователь панели: {{ .name }}"
UpdatePasswordRead: "Ошибка: не удалось прочитать информацию о пароле панели, {{ .err }}"
UpdatePasswordNull: "Ошибка: пароль панели пуст!"
UpdateUPasswordBlank: "Ошибка: пароль панели содержит пробелы!"
UpdatePasswordFormat: "Ошибка: пароль панели поддерживает только буквы, цифры, специальные символы !@#$%* ,., длина 8-30!"
UpdatePasswordLen: "Ошибка: Пожалуйста, введите пароль длиной более 6 символов!"
UpdatePasswordRe: "Подтвердите пароль:"
UpdatePasswordErr: "Ошибка: не удалось обновить пароль панели, {{ .err }}"
UpdatePasswordSame: "Ошибка: два пароля не совпадают, пожалуйста, проверьте и попробуйте снова!"
UpdatePasswordResult: "Пароль панели: {{ .name }}"
UpdatePortFormat: "Ошибка: введенный номер порта должен быть между 1 и 65535!"
UpdatePortUsed: "Ошибка: номер порта уже используется, пожалуйста, проверьте и попробуйте снова!"
UpdatePortErr: "Ошибка: не удалось обновить порт панели, {{ .err }}"
UpdatePortResult: "Порт панели: {{ .name }}"
UpdatePortFirewallAdd: "Не удалось добавить правило порта брандмауэра, {{ .err }}, пожалуйста, вручную добавьте порт {{ .name }} в правила брандмауэра."
UpdatePortFirewallDel: "Ошибка: не удалось удалить порт брандмауэра, {{ .err }}"
UpdatePortFirewallReload: "Не удалось перезагрузить брандмауэр, {{ .err }}, пожалуйста, вручную перезагрузите брандмауэр."
UserInfo: "Получить информацию панели"
UserInfoAddr: "Адрес панели: "
UserInfoPassHelp: "Подсказка: чтобы изменить пароль, вы можете выполнить команду: "
DBConnErr: "Ошибка: не удалось инициализировать подключение к базе данных, {{ .err }}"
SystemVersion: "версия: "
SystemMode: "режим: "
# снимок задачи
Snapshot: 'Снимок'
SnapDBInfo: 'Запись информации о базе данных 1Panel'
SnapCopy: 'Копировать файлы и каталоги {{ .name }}'
SnapNewDB: 'Инициализировать соединение с базой данных {{ .name }}'
SnapDeleteOperationLog: 'Удалить журнал операций'
SnapDeleteLoginLog: 'Удалить журнал доступа'
SnapDeleteMonitor: 'Удалить данные мониторинга'
SnapRemoveSystemIP: 'Удалить системный IP'
SnapBaseInfo: 'Записать основную информацию 1Panel'
SnapInstallApp: 'Резервное копирование установленных приложений 1Panel'
SnapDockerSave: 'Сжать установленные приложения'
SnapLocalBackup: 'Резервное копирование локального каталога резервных копий 1Panel'
SnapCompressBackup: 'Сжать локальный каталог резервных копий'
SnapPanelData: 'Резервное копирование каталога данных 1Panel'
SnapCompressPanel: 'Каталог сжатых данных'
SnapWebsite: 'Резервное копирование каталога веб-сайта 1Panel'
SnapCloseDBConn: 'Закрыть соединение с базой данных'
SnapCompress: 'Создание файлов моментальных снимков'
SnapCompressFile: 'Сжать файл моментального снимка'
SnapCheckCompress: 'Проверить файл сжатия снимка'
SnapCompressSize: 'Размер файла снимка {{ .name }}'
SnapUpload: 'Загрузить файл снимка'
SnapLoadBackup: 'Получить резервную информацию об учетной записи'
SnapUploadTo: 'Загрузить файл снимка в {{ .name }}'
SnapUploadRes: 'Загрузить файл снимка в {{ .name }}'
SnapshotRecover: 'Восстановление моментального снимка'
RecoverDownload: 'Загрузить файл снимка'
Download: 'Скачать'
RecoverDownloadAccount: 'Получить резервную копию учетной записи для загрузки моментального снимка {{ .name }}'
RecoverDecompress: 'Распаковка сжатых файлов моментальных снимков'
Decompress: 'Декомпрессия'
BackupBeforeRecover: 'Резервное копирование системных данных перед созданием снимка'
Readjson: 'Прочитать файл JSON в снимке'
ReadjsonPath: 'Получить путь к файлу JSON в снимке'
ReadjsonContent: 'Прочитать файл Json'
ReadjsonMarshal: 'Обработка Json escape'
RecoverApp: 'Восстановить установленные приложения'
RecoverWebsite: 'Восстановить каталог веб-сайта'
RecoverAppImage: 'Восстановить резервную копию образа снимка'
RecoverCompose: 'Восстановить содержимое другого композитора'
RecoverComposeList: 'Восстановить всех композиторов'
RecoverComposeItem: 'Восстановить сообщение {{ .name }}'
RecoverAppEmpty: 'В файле снимка не найдено резервной копии образа приложения'
RecoverBaseData: 'Восстановить базовые данные и файлы'
RecoverDaemonJsonEmpty: 'Ни файл снимка, ни текущая машина не имеют файла конфигурации контейнера daemon.json'
RecoverDaemonJson: 'Восстановить файл конфигурации контейнера daemon.json'
RecoverDBData: 'Восстановить данные базы данных'
RecoverBackups: 'Восстановить локальный каталог резервных копий'
RecoverPanelData: 'Каталог данных восстановления'
# задача - контейнер
ContainerNewCliet: 'Инициализировать Docker-клиент'
ContainerImagePull: 'Извлечь изображение контейнера {{ .name }}'
ContainerRemoveOld: 'Удалить исходный контейнер {{ .name }}'
ContainerImageCheck: 'Проверьте, нормально ли извлекается изображение'
ContainerLoadInfo: 'Получить основную информацию о контейнере'
ContainerRecreate: 'Обновление контейнера не удалось, сейчас начну восстанавливать исходный контейнер'
ContainerCreate: 'Создать новый контейнер {{ .name }}'
ContainerCreateFailed: 'Создание контейнера не удалось, удалите неудавшийся контейнер'
ContainerStartCheck: 'Проверить, запущен ли контейнер'
# задача - изображение
ImageBuild: 'Создание изображения'
ImageBuildStdoutCheck: 'Анализ содержимого выходного изображения'
ImaegBuildRes: 'Выходные данные сборки образа: {{ .name }}'
ImagePull: 'Вытащить изображение'
ImageRepoAuthFromDB: 'Получить информацию об аутентификации репозитория из базы данных'
ImaegPullRes: 'Выход извлечения изображения: {{ .name }}'
ImagePush: 'Отправить изображение'
ImageRenameTag: 'Изменить тег изображения'
ImageNewTag: 'Новый тег изображения {{ .name }}'
ImaegPushRes: 'Вывод push-изображения: {{ .name }}'
ComposeCreate: 'Создать композицию'
ComposeCreateRes: 'Составить вывод создания: {{ .name }}'
# задача - веб-сайт
BackupNginxConfig: 'Резервное копирование файла конфигурации OpenResty веб-сайта'
CompressFileSuccess: 'Каталог успешно сжат, сжат в {{ .name }}'
CompressDir: 'Каталог сжатия'
DeCompressFile: 'Распаковать файл {{ .name }}'
ErrCheckValid: 'Проверка файла резервной копии не удалась, {{ .name }}'
Rollback: 'Откат'
websiteDir: 'Каталог веб-сайтов'
RecoverFailedStartRollBack: 'Восстановление не удалось, начать откат'
AppBackupFileIncomplete: 'Файл резервной копии неполный и в нем отсутствуют файлы app.json или app.tar.gz'
AppAttributesNotMatch: 'Тип или имя приложения не совпадают'
#тревога
ErrAlert: 'Формат предупреждающего сообщения неверен, проверьте и повторите попытку!'
ErrAlertPush: 'Ошибка при отправке оповещения. Проверьте и повторите попытку!'
ErrAlertSave: 'Ошибка сохранения информации о тревоге, проверьте и повторите попытку!'
ErrAlertSync: 'Ошибка синхронизации информации о тревоге, проверьте и повторите попытку!'
ErrAlertRemote: 'Ошибка удаленного сообщения об ошибке, проверьте и повторите попытку!'
+353 -315
View File
@@ -1,251 +1,255 @@
ErrInvalidParams: "請求參數錯誤: {{ .detail }}"
ErrInternalServer: "伺服器內部錯誤: {{ .detail }}"
ErrRecordExist: "記錄已存在"
ErrRecordNotFound: "記錄未找到"
ErrStructTransform: "類型轉換失敗: {{ .detail }}"
ErrNotSupportType: "系統暫不支持當前類型: {{ .detail }}"
ErrApiConfigStatusInvalid: "API 接口禁止訪問: {{ .detail }}"
ErrApiConfigKeyInvalid: "API 接口密钥錯誤: {{ .detail }}"
ErrApiConfigIPInvalid: "调用 API 接口 IP 不在白名单: {{ .detail }}"
ErrApiConfigDisable: "此接口禁止使用 API 接口調用: {{ .detail }}"
ErrInvalidParams: '請求參數錯誤: {{ .detail }}'
ErrTokenParse: 'Token 產生錯誤: {{ .detail }}'
ErrInitialPassword: '原密碼錯誤'
ErrInternalServer: '服務內部錯誤: {{ .detail }}'
ErrRecordExist: '記錄已存在'
ErrRecordNotFound: '記錄未能找到'
ErrStructTransform: '型別轉換失敗: {{ .err }}'
ErrNotLogin: '使用者未登入: {{ .detail }}'
ErrPasswordExpired: '目前密碼已過期: {{ .detail }}'
ErrNotSupportType: '系統暫不支援目前類型: {{ .name }}'
ErrProxy: '請求錯誤,請檢查該節點狀態: {{ .detail }}'
ErrApiConfigStatusInvalid: 'API 介面禁止存取: {{ .detail }}'
ErrApiConfigKeyInvalid: 'API 介面金鑰錯誤: {{ .detail }}'
ErrApiConfigIPInvalid: '呼叫API 介面IP 不在白名單: {{ .detail }}'
ErrApiConfigDisable: '此介面禁止使用API 介面呼叫: {{ .detail }}'
ErrApiConfigKeyTimeInvalid: 'API 介面時間戳記錯誤: {{ .detail }}'
#common
ErrUsernameIsExist: "使用者名稱已存在"
ErrNameIsExist: "名稱已存在"
ErrDemoEnvironment: "演示伺服器,禁止此操作!"
ErrCmdTimeout: "指令執行時!"
ErrCmdIllegal: "執行令中存在不合法字符,請修改後重試!"
ErrPortExist: "{{ .port }} 埠已被 {{ .type }} [{{ .name }}] 佔用"
TYPE_APP: "應用"
TYPE_RUNTIME: "運作環境"
TYPE_DOMAIN: "網域名稱"
ErrTypePort: "埠 {{ .name }} 格式錯誤"
Success: "成功"
Failed: "失敗"
SystemRestart: "系統重啟導致任務中斷"
ErrInvalidChar: "禁止使用非法字元"
ErrGroupIsDefault: "預設分組,無法刪除"
ErrGroupIsInWebsiteUse: "分組正在被其他網站使用,無法刪除"
ErrUsernameIsExist: '使用者名稱已存在'
ErrNameIsExist: '名稱已存在'
ErrDemoEnvironment: '示範伺服器,禁止此操作!'
ErrCmdTimeout: '指令執行時!'
ErrCmdIllegal: '執行令中存在不合法字符,請修改後重試!'
ErrPortExist: '{{ .port }} 埠已被{{ .type }} [{{ .name }}] 佔用'
TYPE_APP: '應用'
TYPE_RUNTIME: '運作環境'
TYPE_DOMAIN: '網域名稱'
ErrTypePort: '埠{{ .name }} 格式錯誤'
ErrTypePortRange: '連接埠範圍需要在1-65535 之間'
Success: '成功'
Failed: '失敗'
SystemRestart: '系統重新啟動導致任務中斷'
ErrGroupIsDefault: '預設分組,無法刪除'
ErrGroupIsInWebsiteUse: '分組正在被其他網站使用,無法刪除'
#backup
ErrBackupLocalDelete: "暫不支持刪除本地伺服器備份帳號"
ErrBackupLocalCreate: "暫不支持創建本地伺服器備份帳號"
ErrBackupInUsed: '此備份帳號已在排程任務中使用,無法刪除'
ErrBackupCheck: '備份帳號測試連線失敗{{ .err }}'
ErrBackupLocalDelete: '暫時不支援刪除本機伺服器備份帳號'
ErrBackupLocalCreate: '暫時不支援建立本機伺服器備份帳號'
#app
ErrPortInUsed: "{{ .detail }} 端口已被佔用!"
ErrAppLimit: "應用超出安裝數量限制"
ErrAppRequired: "請先安裝 {{ .detail }} 應用"
ErrNotInstall: "應用未安裝"
ErrPortInOtherApp: "{{ .port }} 端口已被應用 {{ .apps }} 佔用!"
ErrDbUserNotValid: "儲存資料庫,用戶名密碼不匹配!"
ErrDockerComposeNotValid: "docker-compose 文件格式錯誤"
ErrUpdateBuWebsite: "應用更新成功,但網站配置文件修改失敗,請檢查配置!"
Err1PanelNetworkFailed: "默認容器網絡創建失敗!{{ .detail }}"
ErrFileParse: "應用 docker-compose 文件解析失敗!"
ErrInstallDirNotFound: "安裝目錄不存在,如需卸載,請選擇強制卸載"
AppStoreIsUpToDate: "應用商店已經是最新版本"
LocalAppVersionNull: "{{.name}} 應用未同步到版本!無法加到應用列表"
LocalAppVersionErr: "{{.name}} 同步版本 {{.version}} 失敗!{{.err}}"
ErrFileNotFound: "{{.name}} 文件不存在"
ErrFileParseApp: "{{.name}} 文件解析失敗 {{.err}}"
ErrAppDirNull: "版本資料夾不存在"
LocalAppErr: "應用 {{.name}} 同步失敗!{{.err}}"
ErrContainerName: "容器名稱已存在"
ErrAppSystemRestart: "1Panel 重導致任務中斷"
ErrCreateHttpClient: "創建HTTP請求失敗 {{.err}}"
ErrHttpReqTimeOut: "請求超時 {{.err}}"
ErrHttpReqFailed: "請求失敗 {{.err}}"
ErrHttpReqNotFound: "文件不存在"
ErrNoSuchHost: "網路連接失敗"
ErrImagePullTimeOut: "鏡像拉取超時"
ErrContainerNotFound: "{{ .name }} 容器不存在"
ErrContainerMsg: "{{ .name }} 容器異常,具體請在容器頁面查看日誌"
ErrAppBackup: "{{ .name }} 應用備份失敗 err {{.err}}"
ErrImagePull: "{{ .name }} 鏡像拉取失敗 err {{.err}}"
ErrVersionTooLow: "當前 1Panel 版本過低,無法更新應用商店,請升級版本之後操作"
ErrAppNameExist: "應用名稱已存在"
AppStoreIsSyncing: "應用程式商店正在同步中,請稍後再試"
ErrGetCompose: "docker-compose.yml 檔案取得失敗!{{ .detail }}"
ErrAppWarn: "狀態異常,請查看日誌"
ErrAppParamKey: "參數 {{ .name }} 欄位異常"
ErrAppUpgrade: "應用程式 {{ .name }} 升級失敗 {{ .err }}"
AppRecover: "應用程式 {{ .name }} 回滾 "
PullImageStart: "開始拉取鏡像 {{ .name }}"
PullImageSuccess: "鏡像拉取成功"
UpgradeAppStart: "開始升級應用程式 {{ .name }}"
UpgradeAppSuccess: "應用程式 {{ .name }} 升級成功"
AppStoreIsLastVersion: "應用商店已經是最新版本"
AppStoreSyncSuccess: "應用商店同步成功"
SyncAppDetail: "同步應用配置"
AppVersionNotMatch: "{{ .name }} 應用需要更1Panel,跳過同步"
MoveSiteDir: "當前升級需要遷移 OpenResty 網站目錄"
MoveSiteToDir: "遷移網站目錄到 {{ .name }}"
ErrMoveSiteDir: "遷移網站目錄失敗"
MoveSiteDirSuccess: "遷移網站目錄成功"
DeleteRuntimePHP: "刪除運行環境 PHP 版本",
CustomAppStoreNotConfig: "請在應用商店設離線包地址",
CustomAppStoreNotFound: "應用商店包獲取失敗,請檢查是否存在",
CustomAppStoreFileValid: "應用商店包需要 .tar.gz 格式"
PullImageTimeout: "拉取鏡像超時,請嘗試增加鏡像加速或更換其他鏡像加速"
ErrAppIsDown: "{{ .name }} 應用狀態異常,請檢查"
ErrPortInUsed: '{{ .detail }} 連接埠已被佔用!'
ErrAppLimit: '應用程式超出安裝數量限制'
ErrAppRequired: '請先安裝{{ .detail }} 應用'
ErrNotInstall: '應用程式未安裝'
ErrPortInOtherApp: '{{ .port }} 連接埠已被應用程式{{ .apps }} 佔用!'
ErrDbUserNotValid: '存量資料庫,使用者名稱密碼不符!'
ErrDockerComposeNotValid: 'docker-compose 檔案格式錯誤'
ErrUpdateBuWebsite: '應用程式更新成功,但網站設定檔修改失敗,請檢查設定! '
Err1PanelNetworkFailed: '預設容器網路建立失敗! {{ .detail }}'
ErrFileParse: '應用docker-compose 檔案解析失敗!'
ErrInstallDirNotFound: '安裝目錄不存在,如需卸載,請選擇強制卸載'
AppStoreIsUpToDate: '應用程式商店已經是最新版本'
LocalAppVersionNull: '{{ .name }} 應用程式未同步到版本!無法加到應用程式列表'
LocalAppVersionErr: '{{ .name }} 同步版本{{ .version }} 失敗! {{ .err }}'
ErrFileNotFound: '{{ .name }} 檔案不存在'
ErrFileParseApp: '{{ .name }} 檔案解析失敗{{ .err }}'
ErrAppDirNull: '版本資料夾不存在'
LocalAppErr: '應用程式{{ .name }} 同步失敗!{{ .err }}'
ErrContainerName: '容器名稱已存在'
ErrAppSystemRestart: '1Panel 重新啟動導致任務終止'
ErrCreateHttpClient: '建立請求失敗{{ .err }}'
ErrHttpReqTimeOut: '請求逾時{{ .err }}'
ErrHttpReqFailed: '請求失敗{{ .err }}'
ErrNoSuchHost: '無法找到請求的伺服器{{ .err }}'
ErrHttpReqNotFound: '無法找到要求的資源{{ .err }}'
ErrImagePullTimeOut: '鏡像拉取逾時'
ErrContainerNotFound: '{{ .name }} 容器不存在'
ErrContainerMsg: '{{ .name }} 容器異常,請在容器頁面查看日誌'
ErrAppBackup: '{{ .name }} 應用備份失敗 {{ .err }}'
ErrImagePull: '鏡像拉取失敗{{ .err }}'
ErrVersionTooLow: '目前1Panel 版本過低,無法更新應用程式商店,請升級版本之後操作'
ErrAppNameExist: '應用程式名稱已存在'
AppStoreIsSyncing: '應用程式商店正在同步中,請稍後再試'
ErrGetCompose: 'docker-compose.yml 檔案取得失敗!{{ .detail }}'
ErrAppWarn: '狀態異常,請檢視日誌'
ErrAppParamKey: '參數{{ .name }} 欄位異常'
ErrAppUpgrade: '應用程式{{ .name }} 升級失敗{{ .err }}'
AppRecover: '應用程式{{ .name }} 回滾'
PullImageStart: '開始拉取鏡像{{ .name }}'
PullImageSuccess: '鏡像拉取成功'
UpgradeAppStart: '開始升級應用程式{{ .name }}'
UpgradeAppSuccess: '應用程式{{ .name }} 升級成功'
AppStoreIsLastVersion: '應用程式商店已經是最新版本'
AppStoreSyncSuccess: '應用程式商店同步成功'
SyncAppDetail: '同步應用程式設定'
AppVersionNotMatch: '{{ .name }} 應用程式需要更高的1Panel 版本,跳過同步'
MoveSiteDir: '目前升級需要遷移OpenResty 網站目錄'
MoveSiteToDir: '遷移網站目錄到{{ .name }}'
ErrMoveSiteDir: '遷移網站目錄失敗'
MoveSiteDirSuccess: '遷移網站目錄成功'
DeleteRuntimePHP: '刪除PHP 運行環境'
CustomAppStoreNotConfig: '請在應用程式商店設離線套件位址'
CustomAppStoreNotFound: '應用程式商店套件取得失敗,請檢查是否存在'
CustomAppStoreFileValid: '應用程式商店包需要.tar.gz 格式'
PullImageTimeout: '拉取鏡像逾時,請嘗試增加鏡像加速或更換其他鏡像加速'
ErrAppIsDown: '{{ .name }} 應用程式狀態異常,請檢查'
ErrCustomApps: '存在已安裝的應用程式,請先解除安裝'
ErrCustomRuntimes: '存在已安裝的運作環境,請先刪除'
#file
ErrFileCanNotRead: "此文件不支預覽"
ErrFileToLarge: "文件超過10M,無法打開"
ErrPathNotFound: "目錄不存在"
ErrMovePathFailed: "目標路徑不能包含原路徑!"
ErrLinkPathNotFound: "目標路徑不存在!"
ErrFileIsExist: "文件或文件夾已存在!"
ErrFileUpload: "{{ .name }} 上傳文件失敗 {{ .detail}}"
ErrFileDownloadDir: "不支下載文件夾"
ErrCmdNotFound: "{{ .name}} 令不存在,請先在宿主機安裝此命令"
ErrSourcePathNotFound: "源目錄不存在"
ErrFavoriteExist: "已收藏此路徑"
ErrPathNotDelete: "所選目錄不可删除"
ErrFileCanNotRead: '此檔案不支預覽'
ErrFileToLarge: '檔案超過10M無法開啟'
ErrPathNotFound: '目錄不存在'
ErrMovePathFailed: '目標路徑不能包含原路徑!'
ErrLinkPathNotFound: '目標路徑不存在!'
ErrFileIsExist: '檔案或資料夾已存在!'
ErrFileUpload: '{{ .name }} 上傳檔案失敗{{ .detail }}'
ErrFileDownloadDir: '不支下載資料夾'
ErrCmdNotFound: '{{ .name}} 令不存在,請先在宿主機安裝此指令'
ErrSourcePathNotFound: '來源目錄不存在'
ErrFavoriteExist: '已收藏此路徑'
ErrInvalidChar: '禁止使用非法字元'
ErrPathNotDelete: '所選目錄不可刪除'
#website
ErrDomainIsExist: "域名已存在"
ErrAliasIsExist: "代號已存在"
ErrAppDelete: "其他網站使用此應用,無法刪除"
ErrGroupIsUsed: "分組正在使用中,無法刪除"
ErrBackupMatch: "該備份文件與當前網站部分數據不匹配: {{ .detail}}"
ErrBackupExist: "該備份文件對應部分原數據不存在: {{ .detail}}"
ErrPHPResource: "本地運行環境不支持切換!"
ErrPathPermission: "index 目錄下偵測到非 1000:1000 權限資料夾,可能導致網站存取 Access denied 錯誤,請點擊上方儲存按鈕"
ErrDomainIsUsed: "域名已被網站【{{ .name }}】使用"
ErrDomainFormat: "{{ .name }} 域名格式不正確"
ErrDefaultAlias: "default 為保留代號,請使用其他代號"
ErrParentWebsite: "需要先刪除子網站 {{ .name }}"
ErrBuildDirNotFound: "編譯目錄不存在"
ErrImageNotExist: "執行環境 {{.name}} 鏡像不存在,請重新編輯執行環境"
ErrDomainIsExist: '網域已存在'
ErrAliasIsExist: '代號已存在'
ErrAppDelete: '其他網站使用此應用程式,無法刪除'
ErrBackupMatch: '該備份檔案與目前網站部分資料不符{{ .detail }}'
ErrBackupExist: '該備份檔案對應部分來源資料不存在{{ .detail }}'
ErrPHPResource: '本地運行環境不支援切換! '
ErrPathPermission: 'index 目錄下偵測到非1000:1000 權限資料夾,可能導致網站存取Access denied 錯誤,請點擊上方儲存按鈕'
ErrDomainIsUsed: '網域名稱已被網站【{{ .name }}】使用'
ErrDomainFormat: '{{ .name }} 網域格式不正確'
ErrDefaultAlias: 'default 為保留代號,請使用其他代號'
ErrParentWebsite: '需要先移除子網站{{ .name }}'
ErrBuildDirNotFound: '建置目錄不存在'
ErrImageNotExist: '執行環境{{ .name }} 映像不存在,請重新編輯執行環境'
#ssl
ErrSSLCannotDelete: "{{ .name }} 證正在被網站使用,無法刪除"
ErrAccountCannotDelete: "帳號關聯證書,無法刪除"
ErrSSLApply: "證書續簽成功,openresty reload失敗,請檢查配置!"
ErrEmailIsExist: "郵箱已存在"
ErrSSLKeyNotFound: "私鑰文件不存在"
ErrSSLCertificateNotFound: "證書文件不存在"
ErrSSLKeyFormat: "私鑰文件校驗錯誤"
ErrSSLCertificateFormat: "證書文件格式錯誤,請使用 pem 格式"
ErrEabKidOrEabHmacKeyCannotBlank: "EabKid 或 EabHmacKey 不能為空"
ErrOpenrestyNotFound: "Http 模式需要先安裝 Openresty"
ApplySSLStart: "開始申請憑證,網域 [{{ .domain }}] 申請方式 [{{ .type }}] "
dnsAccount: "DNS 自動"
dnsManual: "DNS 手排"
http: "HTTP"
ApplySSLFailed: "申請 [{{ .domain }}] 憑證失敗, {{.detail}} "
ApplySSLSuccess: "申請 [{{ .domain }}] 憑證成功! "
DNSAccountName: "DNS 帳號 [{{ .name }}] 廠商 [{{.type}}]"
PushDirLog: "憑證推送到目錄 [{{ .path }}] {{ .status }}"
ErrDeleteCAWithSSL: "目前機構下存在已簽發證書,無法刪除"
ErrDeleteWithPanelSSL: "面板 SSL 配置使用此證書,無法刪除"
ErrDefaultCA: "默認機構不能刪除"
ApplyWebSiteSSLLog: "開始更新 {{ .name }} 網站憑證"
ErrUpdateWebsiteSSL: "{{ .name }} 網站更新憑證失敗: {{ .err }}"
ApplyWebSiteSSLSuccess: "更新網站憑證成功"
StartUpdateSystemSSL: "開始更新系統證書"
UpdateSystemSSLSuccess: "更新系統證書成功"
ErrExecShell: "執行腳本失敗 {{.err}}"
ExecShellStart: "開始執行腳本"
ExecShellSuccess: "腳本執行成功"
ErrSSLCannotDelete: '{{ .name }} 證正在被網站使用,無法刪除'
ErrAccountCannotDelete: '帳號關聯證書,無法刪除'
ErrSSLApply: '憑證續簽成功,openresty reload失敗,請檢查設定!'
ErrEmailIsExist: '郵箱已存在'
ErrSSLKeyNotFound: '私鑰檔案不存在'
ErrSSLCertificateNotFound: '憑證檔案不存在'
ErrSSLKeyFormat: '私鑰檔案校驗失敗'
ErrSSLCertificateFormat: '憑證檔案格式錯誤,請使用pem 格式'
ErrEabKidOrEabHmacKeyCannotBlank: 'EabKid 或EabHmacKey 不能為空'
ErrOpenrestyNotFound: 'Http 模式需要先安裝Openresty'
ApplySSLStart: '開始申請證書,網域名稱[{{ .domain }}] 申請方式[{{ .type }}] '
dnsAccount: 'DNS 自動'
dnsManual: 'DNS 手排'
http: 'HTTP'
ApplySSLFailed: '申請[{{ .domain }}] 憑證失敗 {{ .detail }} '
ApplySSLSuccess: '申請[{{ .domain }}] 憑證成功! '
DNSAccountName: 'DNS 帳號[{{ .name }}] 廠商[{{ .type }}]'
PushDirLog: '憑證推送到目錄[{{ .path }}] {{ .status }}'
ErrDeleteCAWithSSL: '目前機構下存在已簽發證書,無法刪除'
ErrDeleteWithPanelSSL: '面板SSL 配置使用此證書,無法刪除'
ErrDefaultCA: '預設機構不能刪除'
ApplyWebSiteSSLLog: '開始更新{{ .name }} 網站憑證'
ErrUpdateWebsiteSSL: '{{ .name }} 網站更新憑證失敗: {{ .err }}'
ApplyWebSiteSSLSuccess: '更新網站憑證成功'
ErrExecShell: '執行腳本失敗{{ .err }}'
ExecShellStart: '開始執行腳本'
ExecShellSuccess: '腳本執行成功'
StartUpdateSystemSSL: '開始更新系統憑證'
UpdateSystemSSLSuccess: '更新系統憑證成功'
ErrWildcardDomain: 'HTTP 模式無法申請泛網域憑證'
#mysql
ErrUserIsExist: "當前用戶已存在,請重新輸入"
ErrDatabaseIsExist: "當前資料庫已存在,請重新輸入"
ErrExecTimeOut: "SQL 執行時,請檢查數據庫"
ErrRemoteExist: "遠程數據庫已存在該名稱,請修改後重試"
ErrLocalExist: "本地數據庫已存在該名稱,請修改後重試"
ErrUserIsExist: '目前使用者已存在,請重新輸入'
ErrDatabaseIsExist: '目前資料庫已存在,請重新輸入'
ErrExecTimeOut: 'SQL 執行時,請檢查資料庫'
ErrRemoteExist: '遠端資料庫已存在該名稱,請修改後重試'
ErrLocalExist: '本機資料庫已存在該名稱,請修改後重試'
#redis
ErrTypeOfRedis: "恢復文件類型與前持久化方式不符,請修改後重試"
ErrTypeOfRedis: '恢復檔案類型與前持久化方式不符,請修改後重試'
#container
ErrInUsed: "{{ .detail }} 正被使用,無法刪除"
ErrObjectInUsed: "該對象正被使用,無法刪除"
ErrObjectBeDependent: "該鏡像依賴其他鏡像,無法刪除"
ErrPortRules: "端口數目不匹配,請重新輸入!"
ErrPgImagePull: "鏡像拉取時,請配置鏡像加速或手動拉取 postgres:16.0-alpine 鏡像後重試"
ErrInUsed: '{{ .detail }} 正被使用,無法刪除'
ErrObjectInUsed: '該物件正被使用,無法刪除'
ErrObjectBeDependent: '此鏡像依賴其他鏡像,無法刪除'
ErrPortRules: '連接埠數目不匹配,請重新輸入!'
ErrPgImagePull: '鏡像拉取時,請配置鏡像加速或手動拉取{{ .name }} 鏡像後重試'
#runtime
ErrDirNotFound: "build 文件夾不存在!請檢查文件完整性!"
ErrFileNotExist: "{{ .detail }} 文件不存在!請檢查源文件完整性!"
ErrImageBuildErr: "鏡像 build 失敗"
ErrImageExist: "鏡像已存在!"
ErrDelWithWebsite: "運行環境已經關聯網站,無法刪除"
ErrRuntimeStart: "啟動失敗"
ErrPackageJsonNotFound: "package.json 文件不存在"
ErrScriptsNotFound: "沒有在 package.json 中找到 scripts 配置項"
ErrContainerNameNotFound: "無法取得容器名稱,請檢查 .env 文件"
ErrNodeModulesNotFound: "node_modules 文件夾不存在!請編輯運行環境或等待運行環境啟動成功"
ErrContainerNameIsNull: "容器名稱不能為空"
#setting
ErrBackupInUsed: "該備份帳號已在計劃任務中使用,無法刪除"
ErrBackupCheck: "備份帳號測試連接失敗 {{ .err}}"
ErrOSSConn: "無法獲取最新版本,請確認伺服器是否能夠連接外部網路。"
ErrEntrance: "安全入口信息錯誤,請檢查後重試!"
ErrDirNotFound: 'build 資料夾不存在!請檢查檔案完整性!'
ErrFileNotExist: '{{ .detail }} 檔案不存在!請檢查來源檔案完整性!'
ErrImageBuildErr: '鏡像build 失敗'
ErrImageExist: '鏡像已存在!'
ErrDelWithWebsite: '運行環境已經關聯網站,無法刪除'
ErrRuntimeStart: '啟動失敗'
ErrPackageJsonNotFound: 'package.json 檔案不存在'
ErrScriptsNotFound: '沒有在package.json 中找到scripts 設定項'
ErrContainerNameNotFound: '無法取得容器名稱,請檢查.env 檔案'
ErrNodeModulesNotFound: 'node_modules 資料夾不存在!請編輯運行環境或等待運行環境啟動成功'
ErrContainerNameIsNull: '容器名稱不存在'
#tool
ErrConfigNotFound: "配置文件不存在"
ErrConfigParse: "配置文件格式有誤"
ErrConfigIsNull: "配置文件不允許為空"
ErrConfigDirNotFound: "運行目錄不存在"
ErrConfigAlreadyExist: "已存在同名配置文件"
ErrUserFindErr: "用戶 {{ .name }} 找失敗 {{ .err }}"
ErrConfigNotFound: '設定檔不存在'
ErrConfigParse: '設定檔格式有誤'
ErrConfigIsNull: '設定檔不允許為空'
ErrConfigDirNotFound: '運行目錄不存在'
ErrConfigAlreadyExist: '已存在同名設定檔'
ErrUserFindErr: '使用者{{ .name }} 找失敗{{ .err }}'
#ssh
ErrFirewallNone: "未檢測到系統 firewalld 或 ufw 服務,請檢查後重試!"
ErrFirewallBoth: "檢測到系統同時存在 firewalld 或 ufw 服務,為避免衝突,請卸載後重試!"
ErrFirewallNone: '未偵測到系統firewalld 或ufw 服務,請檢查後重試!'
ErrFirewallBoth: '偵測到系統同時存在firewalld 或ufw 服務,為避免衝突,請卸載後重試!'
#cronjob
ErrCutWebsiteLog: "{{ .name }} 網站日誌切割失敗,錯誤 {{ .err }}"
CutWebsiteLogSuccess: "{{ .name }} 網站日誌切割成功,備份路徑 {{ .path }}"
HandleShell: "執行腳本 {{ .name }}"
HandleNtpSync: "系統時間同步"
HandleSystemClean: "系統快取清理"
ErrCutWebsiteLog: '{{ .name }} 網站日誌切割失敗,錯誤{{ .err }}'
CutWebsiteLogSuccess: '{{ .name }} 網站日誌切割成功,備份路徑{{ .path }}'
HandleShell: '執行腳本{{ .name }}'
HandleNtpSync: '系統時間同步'
HandleSystemClean: '系統快取清理'
#toolbox
ErrNotExistUser: "當前使用者不存在,請修改後重試!"
ErrBanAction: "設置失敗,當前 {{ .name }} 服務不可用,請檢查後重試!"
ErrClamdscanNotFound: "未偵測到 clamdscan 指令,請參考文件安裝!"
ErrNotExistUser: '目前使用者不存在,請修改後重試!'
ErrBanAction: '設定失敗,目前{{ .name }} 服務不可用,請檢查後再試一次!'
ErrClamdscanNotFound: '未偵測到clamdscan 指令,請參考文件安裝!'
#waf
ErrScope: "不支援修改此配置"
ErrStateChange: "狀態修改失敗"
ErrRuleExist: "規則已存在"
ErrRuleNotExist: "規則不存在"
ErrParseIP: "IP 格式錯誤"
ErrDefaultIP: "default 為保留名稱,請更換其他名稱"
ErrGroupInUse: "IP 群組被/白名單使用,無法刪除"
ErrGroupExist: "IP 群組名稱已存在"
ErrIPRange: "IP 範圍錯誤"
ErrIPExist: "IP 已存在"
ErrScope: '不支援修改此配置'
ErrStateChange: '狀態修改失敗'
ErrRuleExist: '規則已存在'
ErrRuleNotExist: '規則不存在'
ErrParseIP: 'IP 格式錯誤'
ErrDefaultIP: 'default 為保留名稱,請更換其他名稱'
ErrGroupInUse: 'IP 群組被/白名單使用,無法刪除'
ErrGroupExist: 'IP 群組名稱已存在'
ErrIPRange: 'IP 範圍錯誤'
ErrIPExist: 'IP 已存在'
urlDefense: 'URL 規則'
urlHelper: '禁止訪問的 URL'
urlHelper: '禁止訪問的URL'
dirFilter: '目錄過濾'
xss: 'XSS'
phpExec: 'PHP 腳本執行'
oneWordTrojan: '一句話木馬'
appFilter: '用危險目錄過濾'
appFilter: '用危險目錄過濾'
webshell: 'Webshell'
args: '參數規則'
protocolFilter: '協過濾'
protocolFilter: '協過濾'
javaFileter: 'Java 危險檔案過濾'
scannerFilter: '掃描器過濾'
escapeFilter: '轉義過濾'
customRule: '自定義規則'
customRule: '自規則'
httpMethod: 'HTTP 方法過濾'
fileExt: '檔案上傳限制'
defaultIpBlack: '惡意 IP 組'
defaultIpBlack: '惡意IP 組'
cookie: 'Cookie 規則'
urlBlack: 'URL 黑名單'
uaBlack: 'User-Agent 黑名單'
attackCount: '攻擊頻率限制'
fileExtCheck: '檔案上傳限制'
geoRestrict: '地區訪問限制'
unknownWebsite: '未授權域名訪問'
unknownWebsite: '未授權網域存取'
notFoundCount: '404 頻率限制'
headerDefense: 'Header 規則'
defaultUaBlack: 'User-Agent 規則'
@@ -253,132 +257,166 @@ methodWhite: 'HTTP 規則'
captcha: '人機驗證'
fiveSeconds: '5 秒驗證'
vulnCheck: '補充規則'
acl: '自定義規則'
acl: '自規則'
sql: 'SQL 注入'
cc: '訪問頻率限制'
defaultUrlBlack: 'URL 規則'
sqlInject: 'SQL 注入'
ErrDBNotExist: "數據庫不存在"
allow: "允許"
deny: "禁止"
ErrDBNotExist: '資料庫不存在'
allow: '允許'
deny: '禁止'
OpenrestyNotFound: 'Openresty 未安裝'
#task
TaskStart: "{{.name}} 開始 [START]"
TaskEnd: "{{.name}} 結束 [COMPLETED]"
TaskFailed: "{{.name}} 失敗"
TaskTimeout: "{{.name}} 超時"
TaskSuccess: "{{.name}} 成功"
TaskRetry: "開始第 {{.name}} 次重試"
SubTaskSuccess: "{{ .name }} 成功"
SubTaskFailed: "{{ .name }} 失敗: {{ .err }}"
TaskInstall: "安裝"
TaskUninstall: "卸載"
TaskCreate: "創建"
TaskDelete: "刪除"
TaskUpgrade: "升級"
TaskUpdate: "更新"
TaskRestart: "重啟"
TaskRollback: "回滚"
TaskPull: "拉取"
TaskBuild: "建構"
TaskPush: "推送"
TaskHandle: "執行"
Website: "網站"
App: "應用"
Runtime: "運行環境"
Database: "數據庫"
ConfigFTP: "創建 FTP 用戶 {{ .name }}"
ConfigOpenresty: "創建 Openresty 配置文件"
InstallAppSuccess: "應用 {{ .name }} 安裝成功"
ConfigRuntime: "配置運行環境"
ConfigApp: "配置應用"
SuccessStatus: "{{ .name }} 成功"
FailedStatus: "{{ .name }} 失敗 {{.err}}"
HandleLink: "處理應用關聯"
HandleDatabaseApp: "處理應用參數"
ExecShell: "執行 {{ .name }} 腳本"
PullImage: "拉取鏡像"
Start: "開始"
Run: "啟動"
Stop: "停止"
Image: "鏡像"
Container: "容器"
Compose: "編排"
AppLink: "關聯應用"
EnableSSL: "開啟 HTTPS"
AppStore: "應用商店"
TaskSync: "同步"
LocalApp: "本地應用"
SubTask: "子任務"
RuntimeExtension: "運行環境擴展"
TaskIsExecuting: "任務正在執行中"
TaskStart: '{{ .name }} 任務開始[START]'
TaskEnd: '{{ .name }} 任務結束[COMPLETED]'
TaskFailed: '{{ .name }} 任務失敗'
TaskTimeout: '{{ .name }} 逾時'
TaskSuccess: '{{ .name }} 任務成功'
TaskRetry: '開始第{{ .name }} 次重試'
SubTaskSuccess: '{{ .name }} 成功'
SubTaskFailed: '{{ .name }} 失敗: {{ .err }}'
TaskInstall: '安裝'
TaskUninstall: '卸載'
TaskCreate: '建立'
TaskDelete: '刪除'
TaskUpgrade: '升級'
TaskUpdate: '更新'
TaskRestart: '重啟'
TaskBackup: '備份'
TaskRecover: '恢復'
TaskRollback: '回滾'
TaskPull: '拉取'
TaskBuild: '建置'
TaskPush: '推送'
TaskHandle: '執行'
Website: '網站'
App: '應用程式'
Runtime: '運作環境'
Database: '資料庫'
ConfigFTP: '建立FTP 使用者{{ .name }}'
ConfigOpenresty: '建立Openresty 設定檔'
InstallAppSuccess: '應用程式{{ .name }} 安裝成功'
ConfigRuntime: '設定運行環境'
ConfigApp: '設定應用程式'
SuccessStatus: '{{ .name }} 成功'
FailedStatus: '{{ .name }} 失敗{{ .err }}'
HandleLink: '處理應用程式關聯'
HandleDatabaseApp: '處理應用程式參數'
ExecShell: '執行{{ .name }} 腳本'
PullImage: '拉取鏡像'
Start: '開始'
Run: '啟動'
Stop: '停止'
Image: '鏡像'
Compose: '編排'
Container: '容器'
AppLink: '關聯應用程式'
EnableSSL: '開啟HTTPS'
AppStore: '應用程式商店'
TaskSync: '同步'
LocalApp: '本地應用'
SubTask: '子任務'
RuntimeExtension: '運行環境擴充'
TaskIsExecuting: '任務正在運作'
CustomAppstore: '自訂應用程式倉庫'
# task - snapshot
Snapshot: "快照"
SnapDBInfo: "寫入 1Panel 資料庫資訊"
SnapCopy: "複製檔案&目錄 {{ .name }} "
SnapNewDB: "初始化資料庫 {{ .name }} 連接 "
SnapDeleteOperationLog: "刪除操作日誌"
SnapDeleteLoginLog: "刪除訪問日誌"
SnapDeleteMonitor: "刪除監控數據"
SnapRemoveSystemIP: "移除系統 IP"
SnapBaseInfo: "寫入 1Panel 基本資訊"
SnapInstallApp: "備份 1Panel 已安裝應用"
SnapDockerSave: "壓縮已安裝應用"
SnapLocalBackup: "備份 1Panel 本地備份目錄"
SnapCompressBackup: "壓縮本地備份目錄"
SnapPanelData: "備份 1Panel 資料目錄"
SnapCompressPanel: "壓縮資料目錄"
SnapCloseDBConn: "關閉資料庫連接"
SnapCompress: "製作快照檔案"
SnapCompressFile: "壓縮快照檔案"
SnapCheckCompress: "檢查快照壓縮檔案"
SnapCompressSize: "快照檔案大小 {{ .name }}"
SnapUpload: "上傳快照檔案"
SnapLoadBackup: "獲取備份帳號資訊"
SnapUploadTo: "上傳快照檔案到 {{ .name }}"
SnapUploadRes: "上傳快照檔案到 {{ .name }}"
# task - ai
OllamaModelPull: '拉取Ollama 模型{{ .name }} '
OllamaModelSize: '取得Ollama 模型{{ .name }} 大小'
# task - snapshot
Snapshot: '快照'
SnapDBInfo: '寫入1Panel 資料庫資訊'
SnapCopy: '複製檔案&目錄{{ .name }} '
SnapNewDB: '初始化資料庫{{ .name }} 連線'
SnapDeleteOperationLog: '刪除操作日誌'
SnapDeleteLoginLog: '刪除存取日誌'
SnapDeleteMonitor: '刪除監控資料'
SnapRemoveSystemIP: '移除系統IP'
SnapBaseInfo: '寫入1Panel 基本資料'
SnapInstallApp: '備份1Panel 已安裝應用程式'
SnapDockerSave: '壓縮已安裝應用'
SnapLocalBackup: '備份1Panel 本機備份目錄'
SnapCompressBackup: '壓縮本機備份目錄'
SnapPanelData: '備份1Panel 資料目錄'
SnapCompressPanel: '壓縮資料目錄'
SnapWebsite: '備份1Panel 網站目錄'
SnapCloseDBConn: '關閉資料庫連線'
SnapCompress: '製作快照檔案'
SnapCompressFile: '壓縮快照檔案'
SnapCheckCompress: '檢查快照壓縮檔'
SnapCompressSize: '快照檔案大小{{ .name }}'
SnapUpload: '上傳快照檔案'
SnapLoadBackup: '取得備份帳號資訊'
SnapUploadTo: '上傳快照檔案到{{ .name }}'
SnapUploadRes: '上傳快照檔案到{{ .name }}'
SnapshotRecover: '快照恢復'
RecoverDownload: '下載快照檔案'
Download: '下載'
RecoverDownloadAccount: '取得快照下載備份帳號{{ .name }}'
RecoverDecompress: '解壓縮快照壓縮檔'
Decompress: '解壓縮'
BackupBeforeRecover: '快照前備份系統相關資料'
Readjson: '讀取快照內Json 檔案'
ReadjsonPath: '取得快照內Json 檔案路徑'
ReadjsonContent: '讀取Json 檔案'
ReadjsonMarshal: 'Json 轉義處理'
RecoverApp: '恢復已安裝應用程式'
RecoverWebsite: '恢復網站目錄'
RecoverAppImage: '恢復快照鏡像備份'
RecoverCompose: '恢復其他編排內容'
RecoverComposeList: '取得所有待恢復編排'
RecoverComposeItem: '恢復編排{{ .name }}'
RecoverAppEmpty: '快照檔案中未發現應用程式鏡像備份'
RecoverBaseData: '恢復基礎資料及檔案'
RecoverDaemonJsonEmpty: '快照檔案及目前機器都不存在容器配置daemon.json 檔案'
RecoverDaemonJson: '恢復容器配置daemon.json 檔案'
RecoverDBData: '恢復資料庫資料'
RecoverBackups: '還原本機備份目錄'
RecoverPanelData: '恢復資料目錄'
# task - container
ContainerNewCliet: "初始化 Docker 客戶端"
ContainerImagePull: "拉取容器鏡像 {{ .name }}"
ContainerRemoveOld: "刪除原容器 { .name }"
ContainerImageCheck: "檢查鏡像是否正常拉取"
ContainerLoadInfo: "獲取容器基本信息"
ContainerRecreate: "容器更新失敗,現在開始恢復原容器"
ContainerCreate: "創建新容器 {{ .name }}"
ContainerCreateFailed: "容器創建失敗,刪除失敗容器"
ContainerStartCheck: "檢查容器是否已啟動"
ContainerNewCliet: '初始化Docker Client'
ContainerImagePull: '拉取容器鏡像{{ .name }}'
ContainerRemoveOld: '刪除原容器{{ .name }}'
ContainerImageCheck: '檢查鏡像是否正常拉取'
ContainerLoadInfo: '取得容器基本資訊'
ContainerRecreate: '容器更新失敗,現在開始恢復原容器'
ContainerCreate: '建立新容器{{ .name }}'
ContainerCreateFailed: '容器建立失敗,刪除失敗容器'
ContainerStartCheck: '檢查容器是否已啟動'
# task - image
ImageBuild: "鏡像構建"
ImageBuildStdoutCheck: "解析鏡像輸出內容"
ImaegBuildRes: "鏡像構建輸出:{{ .name }}"
ImagePull: "拉取鏡像"
ImageRepoAuthFromDB: "從數據庫獲取倉庫認證信息"
ImaegPullRes: "鏡像拉取輸出:{{ .name }}"
ImagePush: "推送鏡像"
ImageRenameTag: "修改鏡像 Tag"
ImageNewTag: "新鏡像 Tag {{ .name }}"
ImaegPushRes: "鏡像推輸出:{{ .name }}"
ComposeCreate: "創建編排"
ComposeCreateRes: "編排創建輸出:{{ .name }}"
ImageBuild: '鏡像建置'
ImageBuildStdoutCheck: '解析鏡像輸出內容'
ImaegBuildRes: '鏡像建置輸出:{{ .name }}'
ImagePull: '拉取鏡像'
ImageRepoAuthFromDB: '從資料庫取得倉庫認證資訊'
ImaegPullRes: '鏡像拉取輸出:{{ .name }}'
ImagePush: '推播鏡像'
ImageRenameTag: '修改鏡像Tag'
ImageNewTag: '新鏡像Tag {{ .name }}'
ImaegPushRes: '鏡像推輸出:{{ .name }}'
ComposeCreate: '建立編排'
ComposeCreateRes: '編排建立輸出:{{ .name }}'
# task - website
BackupNginxConfig: "備份網站 OpenResty 配置檔案"
CompressFileSuccess: "壓縮目錄成功,壓縮為 {{.name}}"
CompressDir: "壓縮目錄"
DeCompressFile: "解壓檔案 {{ .name }}"
ErrCheckValid: "校驗備份檔失敗,{{ .name }}"
Rollback: "回滾"
websiteDir: "網站目錄"
RecoverFailedStartRollBack: "恢復失敗,開始回滾"
AppBackupFileIncomplete: "備份文件不完整缺少 app.json 或 app.tar.gz 文件"
AppAttributesNotMatch: "應用類型或名稱不一致"
BackupNginxConfig: '備份網站OpenResty 設定檔'
CompressFileSuccess: '壓縮目錄成功,壓縮為{{ .name }}'
CompressDir: '壓縮目錄'
DeCompressFile: '解壓檔案{{ .name }}'
ErrCheckValid: '校驗備份檔失敗,{{ .name }}'
Rollback: '回滾'
websiteDir: '網站目錄'
RecoverFailedStartRollBack: '恢復失敗,開始回溯'
AppBackupFileIncomplete: '備份檔案不完整缺少app.json 或app.tar.gz 檔案'
AppAttributesNotMatch: '應用程式類型或名稱不一致'
# alert
ErrAlert: "告警資訊格式錯誤,請檢查後重試!"
ErrAlertPush: "告警資訊推送錯誤,請檢查後重試!"
ErrAlertSave: "告警資訊保存錯誤,請檢查後重試!"
ErrAlertSync: "告警資訊同步錯誤,請檢查後重試!"
ErrAlertRemote: "告警資訊遠端錯誤,請檢查後重試!"
#alert
ErrAlert: '警告訊息格式錯誤,請檢查後重試!'
ErrAlertPush: '警告訊息推送錯誤,請檢查後重試!'
ErrAlertSave: '警告訊息儲存錯誤,請檢查後重試!'
ErrAlertSync: '警告訊息同步錯誤,請檢查後重試!'
ErrAlertRemote: '警告訊息遠端錯誤,請檢查後重試!'
+18 -17
View File
@@ -52,12 +52,12 @@ Err1PanelNetworkFailed: '默认容器网络创建失败!{{ .detail }}'
ErrFileParse: '应用 docker-compose 文件解析失败!'
ErrInstallDirNotFound: '安装目录不存在,如需卸载,请选择强制卸载'
AppStoreIsUpToDate: '应用商店已经是最新版本'
LocalAppVersionNull: '{{.name}} 应用未同步到版本!无法添加到应用列表'
LocalAppVersionErr: '{{.name}} 同步版本 {{.version}} 失败!{{ .err }}'
ErrFileNotFound: '{{.name}} 文件不存在'
ErrFileParseApp: '{{.name}} 文件解析失败 {{ .err }}'
LocalAppVersionNull: '{{ .name }} 应用未同步到版本!无法添加到应用列表'
LocalAppVersionErr: '{{ .name }} 同步版本 {{ .version }} 失败!{{ .err }}'
ErrFileNotFound: '{{ .name }} 文件不存在'
ErrFileParseApp: '{{ .name }} 文件解析失败 {{ .err }}'
ErrAppDirNull: '版本文件夹不存在'
LocalAppErr: "应用 {{.name}} 同步失败!{{ .err }}"
LocalAppErr: "应用 {{ .name }} 同步失败!{{ .err }}"
ErrContainerName: "容器名称已存在"
ErrAppSystemRestart: "1Panel 重启导致任务终止"
ErrCreateHttpClient: "创建请求失败 {{ .err }}"
@@ -68,7 +68,7 @@ ErrHttpReqNotFound: "无法找到请求的资源 {{ .err }}"
ErrImagePullTimeOut: '镜像拉取超时'
ErrContainerNotFound: '{{ .name }} 容器不存在'
ErrContainerMsg: '{{ .name }} 容器异常,具体请在容器页面查看日志'
ErrAppBackup: '{{ .name }} 应用备份失败 err {{ .err }}'
ErrAppBackup: '{{ .name }} 应用备份失败 {{ .err }}'
ErrImagePull: '镜像拉取失败 {{ .err }}'
ErrVersionTooLow: '当前 1Panel 版本过低,无法更新应用商店,请升级版本之后操作'
ErrAppNameExist: '应用名称已存在'
@@ -127,7 +127,7 @@ ErrDomainFormat: "{{ .name }} 域名格式不正确"
ErrDefaultAlias: "default 为保留代号,请使用其他代号"
ErrParentWebsite: "需要先删除子网站 {{ .name }}"
ErrBuildDirNotFound: "构建目录不存在"
ErrImageNotExist: "运行环境 {{.name}} 镜像不存在,请重新编辑运行环境"
ErrImageNotExist: "运行环境 {{ .name }} 镜像不存在,请重新编辑运行环境"
#ssl
ErrSSLCannotDelete: "{{ .name }} 证书正在被网站使用,无法删除"
@@ -144,9 +144,9 @@ ApplySSLStart: '开始申请证书,域名 [{{ .domain }}] 申请方式 [{{ .ty
dnsAccount: "DNS 自动"
dnsManual: "DNS 手动"
http: "HTTP"
ApplySSLFailed: '申请 [{{ .domain }}] 证书失败, {{.detail}} '
ApplySSLFailed: '申请 [{{ .domain }}] 证书失败, {{ .detail }} '
ApplySSLSuccess: '申请 [{{ .domain }}] 证书成功!!'
DNSAccountName: 'DNS 账号 [{{ .name }}] 厂商 [{{.type}}]'
DNSAccountName: 'DNS 账号 [{{ .name }}] 厂商 [{{ .type }}]'
PushDirLog: '证书推送到目录 [{{ .path }}] {{ .status }}'
ErrDeleteCAWithSSL: "当前机构下存在已签发证书,无法删除"
ErrDeleteWithPanelSSL: "面板 SSL 配置使用此证书,无法删除"
@@ -268,12 +268,12 @@ deny: "禁止"
OpenrestyNotFound: "Openresty 未安装"
#task
TaskStart: "{{.name}} 任务开始 [START]"
TaskEnd: "{{.name}} 任务结束 [COMPLETED]"
TaskFailed: "{{.name}} 任务失败"
TaskTimeout: "{{.name}} 超时"
TaskSuccess: "{{.name}} 任务成功"
TaskRetry: "开始第 {{.name}} 次重试"
TaskStart: "{{ .name }} 任务开始 [START]"
TaskEnd: "{{ .name }} 任务结束 [COMPLETED]"
TaskFailed: "{{ .name }} 任务失败"
TaskTimeout: "{{ .name }} 超时"
TaskSuccess: "{{ .name }} 任务成功"
TaskRetry: "开始第 {{ .name }} 次重试"
SubTaskSuccess: "{{ .name }} 成功"
SubTaskFailed: "{{ .name }} 失败: {{ .err }}"
TaskInstall: "安装"
@@ -341,6 +341,7 @@ SnapLocalBackup: "备份 1Panel 本地备份目录"
SnapCompressBackup: "压缩本地备份目录"
SnapPanelData: "备份 1Panel 数据目录"
SnapCompressPanel: "压缩数据目录"
SnapWebsite: "备份 1Panel 网站目录"
SnapCloseDBConn: "关闭数据库连接"
SnapCompress: "制作快照文件"
SnapCompressFile: "压缩快照文件"
@@ -363,8 +364,8 @@ ReadjsonPath: "获取快照内 Json 文件路径"
ReadjsonContent: "读取 Json 文件"
ReadjsonMarshal: "Json 转义处理"
RecoverApp: "恢复已安装应用"
RecoverWebsite: "恢复网站目录"
RecoverAppImage: "恢复快照镜像备份"
RecoverAppList: "获取所有待恢复应用"
RecoverCompose: "恢复其他编排内容"
RecoverComposeList: "获取所有待恢复编排"
RecoverComposeItem: "恢复编排 {{ .name }}"
@@ -403,7 +404,7 @@ ComposeCreateRes: "编排创建输出:{{ .name }}"
# task - website
BackupNginxConfig: "备份网站 OpenResty 配置文件"
CompressFileSuccess: "压缩目录成功,压缩为 {{.name}}"
CompressFileSuccess: "压缩目录成功,压缩为 {{ .name }}"
CompressDir: "压缩目录"
DeCompressFile: "解压文件 {{ .name }}"
ErrCheckValid: "校验备份文件失败,{{ .name }}"
+1
View File
@@ -18,6 +18,7 @@ func Init() {
global.Dir.LogDir, _ = fileOp.CreateDirWithPath(true, path.Join(baseDir, "1panel/log"))
global.Dir.TmpDir, _ = fileOp.CreateDirWithPath(true, path.Join(baseDir, "1panel/tmp"))
global.Dir.AppDir, _ = fileOp.CreateDirWithPath(true, path.Join(baseDir, "1panel/apps"))
global.Dir.ResourceDir, _ = fileOp.CreateDirWithPath(true, path.Join(baseDir, "1panel/resource"))
global.Dir.AppResourceDir, _ = fileOp.CreateDirWithPath(true, path.Join(baseDir, "1panel/resource/apps"))
global.Dir.AppInstallDir, _ = fileOp.CreateDirWithPath(true, path.Join(baseDir, "1panel/apps"))
+1 -1
View File
@@ -79,7 +79,7 @@ SubTaskFailed: "{{ .name }} failed: {{ .err }}"
TaskInstall: "Install"
TaskUpgrade: "Upgrade"
SuccessStatus: "{{ .name }} succeeded"
FailedStatus: "{{ .name }} failed {{.err}}"
FailedStatus: "{{ .name }} failed {{ .err }}"
Start: "Start"
SubTask: "Subtask"
+16 -16
View File
@@ -80,7 +80,7 @@ SubTaskFailed: "{{ .name }} 失敗: {{ .err }}"
TaskInstall: "インストール"
TaskUpgrade: "アップグレード"
SuccessStatus: "{{ .name }} 成功"
FailedStatus: "{{ .name }} 失敗 {{.err}}"
FailedStatus: "{{ .name }} 失敗 {{ .err }}"
Start: "開始"
SubTask: "サブタスク"
@@ -108,13 +108,13 @@ AppVersion: "アプリバージョン"
AppCommands: "アプリ関連のコマンド"
AppInit: "アプリを初期化します"
AppKeyVal: "アプリキー(英語のみをサポートする)"
AppCreateFileErr: "file {{.name}}作成に失敗した{{.err}}"
AppCreateDirErr: "Folder {{.name}}作成に失敗した{{.err}}"
AppCreateFileErr: "file {{ .name }}作成に失敗した{{ .err }}"
AppCreateDirErr: "Folder {{ .name }}作成に失敗した{{ .err }}"
AppMissKey: "アプリキーがありません、-kを使用して指定します"
AppMissVersion: "アプリバージョンがありません、-vを使用して指定します"
AppVersionExist: "バージョンはすでに存在します!"
AppCreateSuccessful: "創造は成功しました!"
AppWriteErr: "file {{.name}} write failed {{.err}}"
AppWriteErr: "file {{ .name }} write failed {{ .err }}"
SudoHelper: "{{.cmd}}を使用するか、ルートユーザーに切り替えてください"
ListenIPCommands: "リスニングIPを切り替えます"
ListenIPv4: "IPv4で聞いてください"
@@ -128,7 +128,7 @@ ResetIPs: "1パネル認定IP制限をキャンセルします"
ResetDomain: "1パネルドメインバインディングをキャンセルします"
RestoreCommands: "ロールバック1パネルサービスとデータ"
RestoreNoSuchFile: "ロールバックに使用できるファイルはありません"
RestoreStep1: "1/5{{.name}}ディレクトリからの1パネルサービスとデータの開始ロールバック..."
RestoreStep1: "1/5{{ .name }}ディレクトリからの1パネルサービスとデータの開始ロールバック..."
RestoreStep2: "(2/5)1パネルバイナリロールバックが成功しました"
RestoreStep3: "(3/5)1パネルスクリプトロールバック成功"
RestoreStep4: "(4/5)1パネルサービスロールバックが成功しました"
@@ -141,28 +141,28 @@ UpdatePort: "パネルポートを更新します"
UpdateUserNull: "エラー:パネルユーザーは空です!"
UpdateUserBlank: "エラー:パネルユーザーにはスペースが含まれています!"
UpdateUserFormat: "エラー:無効なパネルユーザー形式!英語、中国語、数字、_、長さ3〜30のみをサポートしています"
UpdateUserErr: "エラー:パネルユーザーの更新に失敗しました{{.err}}"
UpdateUserErr: "エラー:パネルユーザーの更新に失敗しました{{ .err }}"
UpdateSuccessful: "更新成功!"
UpdateUserResult: "パネルユーザー:{{.name}}"
UpdatePasswordRead: "エラー:パネルパスワード情報の読み取りに失敗しました、{{.err}}"
UpdateUserResult: "パネルユーザー:{{ .name }}"
UpdatePasswordRead: "エラー:パネルパスワード情報の読み取りに失敗しました、{{ .err }}"
UpdatePasswordNull: "エラー:パネルパスワードは空です!"
UpdateUPasswordBlank: "エラー:パスワードにはスペースが含まれています!"
UpdatePasswordFormat: "エラー:パネルパスワードは、文字、数字、特殊文字のみをサポートします!@#$%*_、。、、長さ8-30!"
UpdatePasswordLen: "エラー:6文字より長くパスワードを入力してください!"
UpdatePasswordRe: "パスワードを認証する:"
UpdatePasswordErr: "エラー:{{.err}}のパスワードの更新に失敗しました"
UpdatePasswordErr: "エラー:{{ .err }}のパスワードの更新に失敗しました"
UpdatePasswordSame: "エラー:2つのパスワードが一致しません。チェックして再試行してください!"
UpdatePasswordResult: "パネルパスワード:{{.name}}"
UpdatePasswordResult: "パネルパスワード:{{ .name }}"
UpdatePortFormat: "エラー:入力ポート番号は1〜65535でなければなりません!"
UpdatePortUsed: "エラー:ポート番号はすでに使用されています。チェックして再試行してください!"
UpdatePortErr: "エラー:パネルポートの更新に失敗しました{{.err}}"
UpdatePortResult: "パネルポート:{{.name}}"
UpdatePortFirewallAdd: "ファイアウォールポートルールの追加に失敗した{{.err}}、ファイアウォールルールに{{.name}}ポートを手動で追加してください。"
UpdatePortFirewallDel: "エラー:ファイアウォールポートの削除に失敗しました、{{.err}}"
UpdatePortFirewallReload: "ファイアウォールのリロードに失敗しました{{.err}}、ファイアウォールを手動でリロードしてください。"
UpdatePortErr: "エラー:パネルポートの更新に失敗しました{{ .err }}"
UpdatePortResult: "パネルポート:{{ .name }}"
UpdatePortFirewallAdd: "ファイアウォールポートルールの追加に失敗した{{ .err }}、ファイアウォールルールに{{ .name }}ポートを手動で追加してください。"
UpdatePortFirewallDel: "エラー:ファイアウォールポートの削除に失敗しました、{{ .err }}"
UpdatePortFirewallReload: "ファイアウォールのリロードに失敗しました{{ .err }}、ファイアウォールを手動でリロードしてください。"
UserInfo: "パネル情報を取得します"
UserInfoAddr: "パネルアドレス:"
UserInfoPassHelp: "ヒント:パスワードを変更するには、コマンドを実行できます。"
DBConnErr: "エラー:データベース接続の初期化に失敗しました、{{.err}}"
DBConnErr: "エラー:データベース接続の初期化に失敗しました、{{ .err }}"
SystemVersion: "バージョン:"
SystemMode: "モード:"
+1 -1
View File
@@ -79,7 +79,7 @@ SubTaskFailed: "{{ .name }} 실패: {{ .err }}"
TaskInstall: "설치"
TaskUpgrade: "업그레이드"
SuccessStatus: "{{ .name }} 성공"
FailedStatus: "{{ .name }} 실패 {{.err}}"
FailedStatus: "{{ .name }} 실패 {{ .err }}"
Start: "시작"
SubTask: "서브 작업"
+1 -1
View File
@@ -79,7 +79,7 @@ SubTaskFailed: "{{ .name }} gagal: {{ .err }}"
TaskInstall: "Pasang"
TaskUpgrade: "Kemas kini"
SuccessStatus: "{{ .name }} berjaya"
FailedStatus: "{{ .name }} gagal {{.err}}"
FailedStatus: "{{ .name }} gagal {{ .err }}"
Start: "Mula"
SubTask: "Tugas Sub"
+1 -1
View File
@@ -79,7 +79,7 @@ SubTaskFailed: "{{ .name }} falhou: {{ .err }}"
TaskInstall: "Instalar"
TaskUpgrade: "Atualizar"
SuccessStatus: "{{ .name }} bem-sucedido"
FailedStatus: "{{ .name }} falhou {{.err}}"
FailedStatus: "{{ .name }} falhou {{ .err }}"
Start: "Iniciar"
SubTask: "Subtarefa"
+1 -1
View File
@@ -79,7 +79,7 @@ SubTaskFailed: "{{ .name }} не удалось: {{ .err }}"
TaskInstall: "Установить"
TaskUpgrade: "Обновить"
SuccessStatus: "{{ .name }} успешно"
FailedStatus: "{{ .name }} не удалось {{.err}}"
FailedStatus: "{{ .name }} не удалось {{ .err }}"
Start: "Начать"
SubTask: "Подзадача"
+1 -1
View File
@@ -79,7 +79,7 @@ SubTaskFailed: "{{ .name }} 失敗: {{ .err }}"
TaskInstall: "安裝"
TaskUpgrade: "升級"
SuccessStatus: "{{ .name }} 成功"
FailedStatus: "{{ .name }} 失敗 {{.err}}"
FailedStatus: "{{ .name }} 失敗 {{ .err }}"
Start: "開始"
SubTask: "子任務"
+2 -2
View File
@@ -34,7 +34,7 @@ ErrInternalServerKey: "服务内部错误:"
#app
CustomAppStoreFileValid: "应用商店包需要 .tar.gz 格式"
ErrFileNotFound: '{{.name}} 文件不存在'
ErrFileNotFound: '{{ .name }} 文件不存在'
#backup
ErrBackupInUsed: "该备份账号已在计划任务中使用,无法删除"
@@ -80,7 +80,7 @@ SubTaskFailed: "{{ .name }} 失败: {{ .err }}"
TaskInstall: "安装"
TaskUpgrade: "升级"
SuccessStatus: "{{ .name }} 成功"
FailedStatus: "{{ .name }} 失败 {{.err}}"
FailedStatus: "{{ .name }} 失败 {{ .err }}"
Start: "开始"
SubTask: "子任务"
@@ -93,9 +93,9 @@
:props="defaultProps"
show-checkbox
>
<template #default="{ node, data }">
<template #default="{ data }">
<div class="float-left">
<span>{{ load18n(node, data.label) }}</span>
<span>{{ data.label }}</span>
</div>
<div class="ml-4 float-left">
<span v-if="data.size">{{ computeSize(data.size) }}</span>
@@ -220,6 +220,7 @@ const emit = defineEmits(['search']);
const acceptParams = (): void => {
form.downloadAccountID = '';
form.fromAccounts = [];
nowIndex.value = 0;
search();
loadBackups();
drawerVisible.value = true;
@@ -360,12 +361,7 @@ const changeAccount = async () => {
const load18n = (node: any, label: string) => {
if (node.level === 1) {
switch (label) {
case 'agent':
case 'conf':
case 'docker':
case 'log':
case 'runtime':
case 'task':
case 'app':
case 'database':
case 'website':
@@ -483,7 +479,6 @@ const setAppDefaultCheck = async (list: any) => {
for (const item of list) {
if (item.isCheck) {
appRef.value.setChecked(item.id, true, true);
continue;
}
if (item.children) {
setAppDefaultCheck(item.children);
@@ -309,7 +309,7 @@ const openTaskLog = (taskID: string) => {
taskLogRef.value.openWithTaskID(taskID);
};
const openWithResource = (row: any, op: string) => {
op = 'create' ? 'TaskCreate' : 'TaskRecover';
op = op === 'create' ? 'TaskCreate' : 'TaskRecover';
taskLogRef.value.openWithResourceID('Snapshot', op, row.id);
};