Files
1Panel/core/i18n/lang/en.yaml
Yuki Guoandssongliu d658395188 feat(sync): sync php extended template (#14299)
* feat(sync): sync php extended template

* fix(i18n): complete resource sync translations

---------

Co-authored-by: ssongliu <sloooop1x@gmail.com>
2026-11-05 15:06:12 +08:00

601 lines
39 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# base errors
ErrInvalidParams: "Invalid request parameters: {{ .detail }}"
ErrTokenParse: "Token generation error: {{ .detail }}"
ErrInitialPassword: "Incorrect initial password"
ErrInternalServer: "Internal server error: {{ .detail }}"
ErrInternalServerKey: "Internal server error:"
ErrRecordExist: "Record already exists"
ErrRecordNotFound: "Record not found"
ErrStructTransform: "Type conversion failed: {{ .detail }}"
ErrNotSupportType: "Unsupported type: {{ .name }}"
ErrDemoEnvironment: "Demo server, this operation is prohibited!"
ErrCmdTimeout: "Command execution timeout!"
ErrPortInUsed: "The {{ .name }} port is already in use!"
ErrFileNotFound: "{{ .name }} file does not exist"
ErrReqFailed: "{{.name}} request failed: {{ .err }}"
# request and entrance
ErrNoSuchHost: "Host resolution failed: {{ .err }}"
ErrHttpReqNotFound: "Requested resource not found: {{ .err }}"
ErrHttpReqFailed: "Request failed {{ .err }}"
ErrHttpReqTimeOut: "Request timed out {{ .err }}"
ErrCreateHttpClient: "Failed to create request {{ .err }}"
ErrProxy: "Request failed; check this node status: {{ .detail }}"
ErrProxySetting: "Proxy server information unavailable {{ .err }}, check and try again!"
ErrEntrance: "Security entrance information error, check and try again!"
ErrEntranceFormat: "Security entry {{ .name }} is not supported. Check and try again."
# login and security
ErrNotLogin: "User not logged in: {{ .detail }}"
ErrSessionDataNotFound: "Session expired"
ErrSessionDataFormat: "Invalid session data format"
ErrPasswordExpired: "Password expired: {{ .detail }}"
ErrLoginLocked: "Too many failed attempts. Login is temporarily locked for 5 minutes."
ErrApiConfigStatusInvalid: "API access disabled: {{ .detail }}"
ErrApiConfigKeyInvalid: "Invalid API key: {{ .detail }}"
ErrApiConfigIPInvalid: "The API request IP is not on the whitelist: {{ .detail }}"
ErrApiConfigDisable: "This interface prohibits API calls: {{ .detail }}"
ErrApiConfigKeyTimeInvalid: "Invalid API timestamp: {{ .detail }}"
ErrApiConfigKeyExpired: "The API Key has expired. Adjust its expiration date or replace the key in the panel’s API Key management."
ErrPasskeyDisabled: "Passkey requires HTTPS to be enabled"
ErrPasskeyNotConfigured: "No passkey configured"
ErrPasskeyLimit: "Passkey limit reached (max 5)"
ErrPasskeySession: "Passkey session expired or invalid"
ErrPasskeyDuplicate: "Passkey already exists"
ErrPasskeyVerify: "Passkey verification failed"
ErrOIDCNotEnabled: "OIDC authentication is not enabled"
ErrOIDCConfigInvalid: "OIDC configuration is invalid"
ErrOIDCConfigChanged: "OIDC configuration changed; start authentication again"
ErrOIDCDiscoveryFailed: "Failed to discover the OIDC provider configuration"
ErrOIDCIssuerMismatch: "The OIDC issuer does not match the configured issuer"
ErrOIDCUnsupportedPKCE: "The OIDC provider does not support the required PKCE method"
ErrOIDCUnsupportedSigningAlgorithm: "The OIDC signing algorithm is not supported"
ErrOIDCInvalidState: "The OIDC login state is invalid or has already been used"
ErrOIDCLoginExpired: "The OIDC login request has expired; try again"
ErrOIDCTokenExchange: "Failed to exchange the OIDC authorization code"
ErrOIDCTokenValidation: "Failed to validate the OIDC token"
ErrOIDCUserInfoValidation: "Failed to validate OIDC user information"
ErrOIDCNameClaimMissing: "The configured OIDC user name claim is missing or invalid"
ErrOIDCNameConflictLocal: "The OIDC user name conflicts with a local user"
ErrOIDCNameConflictLDAP: "The OIDC user name conflicts with an LDAP user"
ErrOIDCNameConflictOIDC: "The OIDC user name conflicts with another OIDC identity"
ErrOIDCDefaultRoleInvalid: "The default role configured for OIDC is unavailable"
ErrOIDCPrivateAddressDenied: "The OIDC endpoint address is not allowed by the network security policy"
ErrOIDCTLSValidation: "OIDC TLS certificate validation failed"
ErrOIDCTestExpired: "The OIDC browser test has expired; run the test again"
ErrOIDCLocalCredentialsReadonly: "OIDC user names and passwords are managed by the identity provider and cannot be changed locally."
ErrOIDCPasswordExpirationUnsupported: "OIDC users do not use the local password expiration policy."
ErrOIDCInternal: "OIDC authentication encountered an internal error. Please try again later."
# user and permission
ErrNoSuchUser: "User information not found, check and try again!"
ErrToMaster: "This user does not have permission to perform this operation on the master node. Check and try again!"
ErrToNode: "This user does not have permission to perform this operation on this node. Check and try again!"
ErrRBAC: "Insufficient user permissions. This operation cannot be performed. Check and try again!"
ErrNoneNode: "This user has no node permissions. Contact an administrator or check and try again!"
ErrOnlySuperAdmin: "Only super admins can use this feature!"
ErrRolePresetCannotDelete: "System preset roles cannot be deleted"
ErrRolePresetCannotUpdate: "System preset roles cannot be updated"
ErrRoleBoundToUser: "This role is already bound to users and cannot be deleted"
ErrRolePresetCannotBind: "System preset roles cannot be assigned to users"
ErrNodeAdminMasterForbidden: "Node Admin permissions cannot be added to the master node"
ErrSuperAdminCannotDelete: "Super admin users cannot be deleted"
ErrGroupIsDefault: "Default group, unable to delete"
ErrGroupIsInUse: "The group is in use and cannot be deleted."
# license
LicenseCheck: 'Check if the license is available'
ErrLicenseInUsed: 'The license is already bound. Check and try again!'
ErrLicenseExpired: 'The license has expired. Check and try again!'
ErrLicense: "License format error, check and retry!"
ErrLicenseCheck: "License validation failed, check and retry!"
ErrXpackVersion: "License validation failed, this license is version-limited, cannot import, check and retry!"
ErrLicenseSave: "Failed to save license information, error {{ .err }}, retry!"
ErrLicenseSync: "License synchronization failed, no license info detected in database!"
ErrLicenseExist: "This license record already exists. You can directly go to the license page for node binding."
ErrXpackNotFound: "This section requires Business Edition. Import a license in Panel Settings > License."
ErrXpackExceptional: "This section requires Business Edition. Sync the license status in Panel Settings > License."
ErrXpackLost: "The license retry limit has been reached. Go to Panel Settings > License and run a manual sync."
ErrEnterpriseLicenseRequired: "Enterprise Edition license is not imported. Import a license first."
ErrDeviceLost: "Required files for license verification are missing, check and try again!"
ErrDeviceErr: "Current environment does not match the license import environment. Edit the license and re-import."
ErrXpackTimeout: "Request timeout, network connection might be unstable, try again later!"
ErrUnbindMaster: "Nodes exist in node management. Remove nodes first, then unbind the current license."
ErrFreeNodeLimit: "The number of nodes that can be added has reached the limit. Purchase and try again."
ErrNodeBound: "This license is bound to another node, check and retry!"
ErrNodeBoundDelete: "This license is bound and does not support delete operations. Check and try again!"
ErrNodeBoundLimit: "The current free node has reached its limit, check and try again!"
ErrLicenseFree: "Free nodes are available only when the license is correctly bound to a node. Verify and retry."
ErrLicenseUnbind: "Community Edition nodes are still linked to this license. Unbind them in Panel Settings > License and try again."
ErrLicenseBindCount: "The new license free node count is less than the currently linked Community Edition node count. Check and try again."
ErrNoSuchNode: "Node information not found, check and retry!"
ErrNodeUnbind: "This node is not within the license binding range, check and retry!"
ErrNodeBind: "This node is already bound to a license, check and retry!"
ErrNodeLocalRollback: "The primary node does not support direct rollback. Run '1pctl restore' manually to roll back."
ErrIntlLicense: "The current version does not support importing international licenses yet. Stay tuned!"
InvalidRequestBodyType: "Invalid request body format. Ensure content matches the required format and retry."
InvalidLicenseCodeType: "Invalid license code format provided, check and try again!"
LicenseNotFoundType: "License not found, no matching record exists in the system for the provided license. Check and try again!"
LicenseRevokedType: "The requested license has been revoked and is no longer usable. Check and try again!"
LicenseExpiredType: "License expired. Renew it or re-import it in Panel Settings - License before retrying."
LicenseProductMismatchType: "The license does not match the requested product or service!"
InvalidAssigneeType: "Invalid target user or device information for license assignment. Check and try again!"
LicenseUsageNotFoundType: "No usage records found. This license has not been activated or used yet. Check and try again!"
LicenseUsageLimitExceededType: "This license is already bound to another node. Check and try again!"
# node and cluster
MasterNode: "Master Node"
Node: "Node"
ErrLocalDelete: "Cannot delete the local node!"
ErrMasterDelete: "Unable to delete the master node. Delete slave nodes first."
ClusterNameIsExist: "Cluster name already exists."
AppStatusUnHealthy: "Failed to fetch application status. Check installation node status in the node list."
MasterNodePortNotAvailable: "Node {{ .name }} port {{ .port }} connectivity check failed. Check firewall/security group settings and master node status."
ClusterMasterNotExist: "Cluster master node is disconnected. Delete child nodes."
# app
CustomAppStoreFileValid: "Application store package requires .tar.gz format"
AppBackup: 'Application backup'
AppBackupPush: 'Transfer application backup file {{.file}} to node {{ .name }}'
ErrSourceTargetSame: 'Source node and target node cannot be the same!'
AppInstall: 'Install application {{ .name }} on node {{ .targetNode }}'
AppInstallCheck: 'Check application installation environment'
# backup
ErrBackupInUsed: "This backup account is used in scheduled tasks and cannot be deleted"
ErrBackupCheck: "Backup account connection test failed {{ .err }}"
ErrBackupLocal: "Local server backup account does not support this operation!"
ErrBackupPublic: "Detected that this backup account is not public, check and try again!"
ErrOSSConn: "Unable to get the latest version. Check server internet connectivity."
MvBackup: "Move data to backup directory"
# alert
ErrAlertSync: "Alert information sync error, check and retry!"
# AI gateway
ErrAIProxyUserGroupIsDefault: "Default user group cannot be deleted."
ErrAIProxyUserGroupInUse: "The user group is in use and cannot be deleted."
ErrAIProxyUserGroupExists: "The user group name already exists."
ErrAIProxyBackendAccountExists: "This model service has already been imported into the AI Gateway account pool."
ErrAIProxyModelGroupInUse: "The model group is in use and cannot be deleted."
ErrAIProxyModelGroupExists: "The model group name already exists."
ErrAIProxySensitiveGroupInUse: "The sensitive word group is in use and cannot be deleted."
ErrAIProxySensitiveGroupExists: "The sensitive word group name already exists."
AIProxyContentPolicyViolation: "Sorry, I cannot process this request because the content may not meet the content policy. Please revise it and try again."
AIBenchmarkRun: "Run AI benchmark"
# task
TaskStart: "{{ .name }} task started [START]"
TaskEnd: "{{ .name }} task ended [COMPLETED]"
TaskFailed: "{{ .name }} task failed"
TaskTimeout: "{{ .name }} timed out"
TaskSuccess: "{{ .name }} task succeeded"
TaskRetry: "Retry {{ .name }}"
SubTaskSuccess: "{{ .name }} succeeded"
SubTaskFailed: "{{ .name }} failed: {{ .err }}"
TaskInstall: "Install"
TaskUpgrade: "Upgrade"
TaskSync: 'Sync'
TaskSyncForNode: "Sync node data"
TaskBackup: "Backup"
TaskPush: "Push"
TaskRsync: "Sync"
SuccessStatus: "{{ .name }} succeeded"
FailedStatus: "{{ .name }} failed {{ .err }}"
Start: "Start"
SubTask: "Subtask"
Skip: "Ignore errors and continue"
Success: "Success"
# AI gateway smart routing tasks
AIProxySmartRouteCreateTask: "Create AI gateway smart routing samples"
AIProxySmartRouteCreateSubTask: "Create samples and generate vectors"
AIProxySmartRouteCreateStart: "Starting sample creation, {{ .total }} in total"
AIProxySmartRouteCreateFailed: "[{{ .current }}/{{ .total }}] Creation failed: type={{ .type }} label={{ .label }} error={{ .err }}"
AIProxySmartRouteCreateSuccess: "[{{ .current }}/{{ .total }}] Created: sampleID={{ .id }} type={{ .type }} label={{ .label }}"
AIProxySmartRouteCreateComplete: "Creation completed: {{ .success }} succeeded, {{ .failed }} failed"
AIProxySmartRouteCreateError: "Sample creation failed: {{ .failed }} failed, last error"
AIProxySmartRouteRebuildTask: "Rebuild AI gateway smart routing sample vectors"
AIProxySmartRouteRebuildSubTask: "Rebuild sample vectors"
AIProxySmartRouteEmbeddingRequired: "Embedding endpoint and model are required"
AIProxySmartRouteRebuildStart: "Starting sample vector rebuild, {{ .total }} in total"
AIProxySmartRouteRebuildFailed: "[{{ .current }}/{{ .total }}] Rebuild failed: sampleID={{ .id }} type={{ .type }} label={{ .label }} error={{ .err }}"
AIProxySmartRouteRebuildSuccess: "[{{ .current }}/{{ .total }}] Rebuilt: sampleID={{ .id }} type={{ .type }} label={{ .label }}"
AIProxySmartRouteRebuildComplete: "Rebuild completed: {{ .success }} succeeded, {{ .failed }} failed"
AIProxySmartRouteRebuildError: "Sample vector rebuild failed: {{ .failed }} failed, last error"
# agent batch task
BatchInstallAgent: "Batch install agent"
DispatchAgentInstallTasks: "Dispatch agent install tasks"
BatchUpgradeAgent: "Batch upgrade agent"
DispatchAgentUpgradeTasks: "Dispatch agent upgrade tasks"
BatchAgentInstallDispatchFailed: "Node {{ .node }} failed to dispatch {{ .agentType }} install task Message: {{ .err }}"
BatchAgentInstallSubmitted: "Node {{ .node }} dispatched {{ .agentType }} install task successfully!"
BatchAgentUpgradeDispatchFailed: "Node {{ .node }} failed to dispatch {{ .agentType }} upgrade task Message: {{ .err }}"
BatchAgentUpgradeAlreadyLatest: "Node {{ .node }} {{ .agent }} is already at the target version, skipped"
BatchAgentUpgradeSubmitted: "Node {{ .node }} dispatched {{ .agent }} upgrade task successfully!"
BatchAgentUpgradeFailed: "Node {{ .node }} failed to dispatch {{ .agent }} upgrade task Message: {{ .err }}"
BatchInstallAgentSkill: "Batch distribute Skill"
DispatchAgentSkillInstallTasks: "Dispatch Skill install tasks"
BatchAgentSkillDispatchFailed: "Node {{ .node }} failed to dispatch {{ .skill }} to {{ .target }} Message: {{ .err }}"
BatchAgentNoAgentsFound: "Node {{ .node }} found no {{ .agentType }} agents, skipped"
BatchAgentSkillSkipped: "Node {{ .node }} {{ .agent }} skipped Message: {{ .msg }}"
BatchAgentSkillInstallSubmitted: "Node {{ .node }} dispatched {{ .skill }} install task to {{ .agent }} successfully!"
BatchAgentSkillInstallFailed: "Node {{ .node }} failed to dispatch {{ .skill }} install task to {{ .agent }} Message: {{ .err }}"
BatchAgentOperateDispatchFailed: "Node {{ .node }} failed to dispatch {{ .agentType }} {{ .operate }} task Message: {{ .err }}"
BatchAgentOperateSkipped: "Node {{ .node }} {{ .agent }} skipped Message: {{ .msg }}"
BatchAgentOperateSubmitted: "Node {{ .node }} dispatched {{ .agent }} {{ .operate }} task successfully!"
BatchAgentOperateFailed: "Node {{ .node }} failed to dispatch {{ .agent }} {{ .operate }} task Message: {{ .err }}"
BatchStartAgent: "Batch start agent"
DispatchAgentStartTasks: "Dispatch agent start tasks"
BatchStopAgent: "Batch stop agent"
DispatchAgentStopTasks: "Dispatch agent stop tasks"
BatchRestartAgent: "Batch restart agent"
DispatchAgentRestartTasks: "Dispatch agent restart tasks"
BatchDeleteAgent: "Batch delete agent"
DispatchAgentDeleteTasks: "Dispatch agent delete tasks"
AgentOperateStart: "Start"
AgentOperateStop: "Stop"
AgentOperateRestart: "Restart"
AgentOperateDelete: "Delete"
# app and skill task
PushAppInstallTaskToNode: "Push app installation task to node [{{ .name }}]"
AppInstallTask: "App installation task"
PushAppFailed: "Failed to push app installation task"
SkillHubInstallTask: "Install skill [{{ .name }}]"
SkillHubInstallToTarget: "Install skill [{{ .name }}] to target [{{ .target }}]"
# script library
ScriptLibrary: "Script Library"
RemoteScriptLibrary: "Remote Script Library"
ScriptSyncSkip: "Script library is already up to date"
DownloadData: "Downloading script library file data.yaml"
DownloadPackage: "Downloading script library package"
AnalyticCompletion: "Analysis completed, now syncing to database..."
# node sync
SyncNode: "Sync data to node {{ .name }}"
LocalName: "'local' name is only used for system local identification"
SyncPackageData: "Package sync data"
SyncPackageEncrypt: "Data package encryption"
SyncRequest: "Request node sync API"
SyncFailedRetry: "Node data sync timeout (attempt {{ .index }}), retrying..."
SyncFailed: "Sync failed, manually sync in the node list!"
SyncSystemProxy: "System Proxy Settings"
SyncScripts: "Script Library"
SyncBackupAccounts: "Backup Accounts"
SyncAlertSetting: "Alert Settings"
SyncCustomApp: "Custom App"
SyncLanguage: "System Language"
SyncEdition: "Region"
# node upgrade
NodeUpgrade: "Upgrade node {{ .name }}"
UpgradeCheck: "Check for node updates"
UpgradeCheckLocal: "Local nodes do not support batch upgrades, skipping..."
UpgradeCheckLatest: "The node is already the latest version, skipping..."
NewSSHClient: "Initializing SSH connection"
BackupBeforeUpgrade: "Backup data before upgrade"
UploadUpgradeFile: "Distribute upgrade files"
RestartAfterUpgrade: "Start service after upgrade"
LoadAutoUpgradeNodesFailed: "Load auto upgrade nodes failed, err: {{ .err }}"
AutoUpgradeNodes: "Auto upgrade nodes: {{ .nodes }}"
UpdateAutoUpgradeNodesStatusFailed: "Update status of auto upgrade nodes failed, err: {{ .err }}"
# node add
MasterData: "Master Node Data"
LoadSftpClient: "Load SFTP Client"
PackageMasterData: "Generate master node backup package"
UploadBackup: "Upload backup data"
TaskAddNode: "Add node"
LoadNodeArch: "Get node architecture info"
LoadNodeArchDetail: "Detected master node architecture: {{ .local }}, child node architecture: {{ .node }}"
LoadNodeUpgradeDetail: "Using the v1 version historical installation directory: {{ .baseDir }}, service listening port: {{ .port }}"
SyncAgentBaseInfo: "Sync basic node info"
GenerateSSLInfo: "Generate node SSL info"
ConnInfoNotMatch: "Connection info mismatch"
MakeAgentPackage: "Generate node installation package"
PrepareNodePackage: "Prepare existing package on child node"
PrepareNodePackageDetail: "Use existing package on child node: {{ .name }}"
SyncNodeConfig: "Sync node configuration"
ErrNodePackagePath: "Enter the absolute file path to the package on the child node"
ErrNodePackageFile: "Failed to process package file {{ .name }}: {{ .err }}"
ErrNodePackageMember: "Package contains an invalid or duplicate entry: {{ .name }}"
ErrNodePackageMismatch: "Package must match main node version {{ .version }} and child node architecture {{ .arch }}"
ErrNodePackageMissing: "Required file missing from package: {{ .name }}"
ErrNodePackageVersion: "Package version {{ .version }} does not match main node version {{ .expected }}"
ErrNodePackageArch: "Agent executable architecture does not match child node architecture {{ .arch }}"
SendAgent: "Distribute node installation package"
StartService: "Start service"
NoBackupNode: "Backup node is empty. Select one and save first"
# node file and image sync
LocalNodeIpFailed: "Failed to get master node IP. Edit the master node and add IP address and SSH authentication information."
HandlePrivateKey: "Handle node private key"
HandlePublicKey: "Handle node public key"
ExchangeFile: "Start syncing {{ .sourcePath }} from node {{ .source }} to node {{ .dest }}:{{ .destPath }}"
NodeFile: "Node file"
ImageSyncTaskName: "Image sync {{ .count }} images"
SSLSyncTaskName: "Certificate sync {{ .count }} certificates"
AppSyncTaskName: "App sync {{ .name }}"
SSLSyncToNode: "Push certificate [{{ .cert }}] to node [{{ .node }}]"
ImageSyncSave: "Save image {{ .image }}"
ImageSyncSaveTags: "Save image tags {{ .tags }}"
ImageSyncToNode: "Sync image {{ .image }} to node {{ .node }}"
ImageSyncLoad: "Load image {{ .image }} on node {{ .node }}"
ImageSyncClean: "Clean temporary files for image {{ .image }}"
ImageSyncNoTag: "Image {{ .image }} has no tag and will be saved by image ID"
ImageSyncFrontendTagsIgnored: "No tags were found for image {{ .image }} on the source node. Frontend tags were ignored."
ImageSyncHandlePrivateKey: "Handle image sync node private key"
ImageSyncHandlePublicKey: "Handle image sync node public key"
ImageSyncTransfer: "Start transferring image temporary file: {{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}"
# command line
SudoHelper: "Use {{ .cmd }} or switch to root user"
UsernameNeed: "Enterprise edition must specify --username"
DBConnErr: "Error: Failed to initialize database connection, {{ .err }}"
SystemVersion: "version: "
SystemMode: "mode: "
# command line - app
AppVersion: "App version"
AppCommands: "App related commands"
AppInit: "Initialize app"
AppKeyVal: "App key (only supports English)"
AppCreateFileErr: "File {{ .name }} creation failed {{ .err }}"
AppCreateDirErr: "Folder {{ .name }} creation failed {{ .err }}"
AppMissKey: "App key missing, use -k to specify"
AppMissVersion: "App version missing, use -v to specify"
AppVersionExist: "Version already exists!"
AppCreateSuccessful: "Creation successful!"
AppWriteErr: "File {{ .name }} write failed {{ .err }}"
# command line - listen IP
ListenIPCommands: "Switch listening ip"
ListenIPv4: "Listen on IPv4"
ListenIPv6: "Listen on IPv6"
ListenChangeSuccessful: "Switch successful! Now listening on {{ .value }}"
# command line - reset
ResetCommands: "Reset system info"
ResetMFA: "Cancel 1Panel two-factor authentication"
ResetHttps: "Cancel 1Panel https login"
ResetEntrance: "Cancel 1Panel secure entrance"
ResetIPs: "Cancel 1Panel authorized ip restrictions"
ResetDomain: "Cancel 1Panel domain binding"
ResetPasskey: "Clear 1Panel passkeys"
# command line - user
UserList: "Get 1Panel user list"
UserTableName: "Name"
UserTableMFAStatus: "MFA Status"
UserTableSuperAdmin: "Super Admin"
UserTableCreatedAt: "Created At"
UserEmptyList: "No users found"
UserInfo: "Get panel information"
UserInfoAddr: "Panel address: "
UserInfoPassHelp: "Tip: To change the password, you can execute the command: "
# command line - restore
RestoreCommands: "Roll back 1Panel service and data"
RestoreNoSuchFile: "No rollback files found"
RestoreStep1: "(1/5) Starting rollback of 1Panel service and data from {{ .name }} directory..."
RestoreStep2: "(2/5) 1Panel binary rollback completed"
RestoreStep3: "(3/5) 1Panel script rollback completed"
RestoreStep4: "(4/5) 1Panel service rollback completed"
RestoreStep5: "(5/5) 1Panel data rollback completed"
RestoreSuccessful: "Rollback completed. Reverted to {{ .version }}. Restarting service..."
# command line - update
UpdateCommands: "Update panel info"
UpdateUser: "Update user information"
UpdatePassword: "Update user password"
UpdatePort: "Update panel port"
UpdateUserNull: "Error: user is empty!"
UpdateUserBlank: "Error: user contains spaces!"
UpdateUserFormat: "Error: Invalid user format! Only supports English, Chinese, numbers, and _, length 3-30"
UpdateUserErr: "Error: Failed to update user, {{ .err }}"
UpdateSuccessful: "Update successful!"
UpdateUserResult: "User: {{ .name }}"
UpdatePasswordRead: "Error: Failed to read user password information, {{ .err }}"
UpdatePasswordNull: "Error: User password is empty!"
UpdateUPasswordBlank: "Error: User password contains spaces!"
UpdatePasswordFormat: "Error: User password supports only letters, numbers, and special characters (!@#$%*_,.?) with a length of 8-30."
UpdatePasswordLen: "Error: Enter a password longer than 6 characters"
UpdatePasswordRe: "Confirm password:"
UpdatePasswordErr: "Error: Failed to update user password, {{ .err }}"
UpdatePasswordSame: "Error: The two passwords do not match, check and try again!"
UpdatePasswordResult: "User password: {{ .name }}"
UpdatePortFormat: "Error: The input port number must be between 1 and 65535!"
UpdatePortUsed: "Error: The port number is already in use, check and try again!"
UpdatePortErr: "Error: Failed to update panel port, {{ .err }}"
UpdatePortResult: "Panel Port: {{ .name }}"
UpdatePortFirewallAdd: "Failed to add firewall port rule, {{ .err }}, manually add the {{ .name }} port to the firewall rules."
UpdatePortFirewallDel: "Error: Failed to delete firewall port, {{ .err }}"
UpdatePortFirewallReload: "Failed to reload the firewall, {{ .err }}, manually reload the firewall."
# mobile app
ErrVerifyToken: 'Token verification failed. Reset and scan again.'
ErrInvalidToken: 'Invalid token. Reset and scan again.'
ErrExpiredToken: 'QR code is no longer valid. Generate a new one and scan again.'
# command export
Name: "Name"
Command: "Command"
# LDAP
ErrLDAPConnectionTest: "LDAP connection test failed. Check the server address, bind account, and network settings."
ErrLDAPLoginTest: "LDAP login test failed. Check the username and password."
LDAPConnectionTestSuccess: "LDAP connection test succeeded."
ErrLDAPDirectorySearch: "Failed to read LDAP users. Check the connection and search settings."
ErrLDAPConfigLoad: "Failed to load the LDAP configuration."
ErrLDAPConfigSave: "Failed to save the LDAP configuration."
ErrLDAPURLInvalid: "The LDAP server address must use ldap:// or ldaps:// and include a valid host."
ErrLDAPBindDNRequired: "The bind DN is required."
ErrLDAPBindPasswordRequired: "The bind password is required."
ErrLDAPUserOURequired: "The user OU is required."
ErrLDAPConnectTimeoutRange: "The connection timeout must be between 1 and 120 seconds."
ErrLDAPSearchPageSizeRange: "The LDAP query page size must be between 1 and 10000."
ErrLDAPResultPageSizeRange: "The result page size cannot exceed 200."
ErrLDAPAttributeMapOnlyName: "The attribute mapping supports only the name field."
ErrLDAPNameAttributeRequired: "The LDAP attribute mapped to name is required."
ErrLDAPAttributeNameInvalid: "The attribute mapping contains an invalid LDAP attribute name."
ErrLDAPUserFilterRequired: "The user filter is required."
ErrLDAPUserFilterInvalid: "The user filter is not a valid LDAP filter."
ErrLDAPAttributeMapObject: "The attribute mapping must be a valid JSON object."
ErrLDAPImportModeInvalid: "The import mode must be selected users or all users."
ErrLDAPImportSelectionRequired: "Select at least one LDAP user to import."
ErrLDAPImportSelectionInvalid: "The selected LDAP users are invalid or no longer exist. Read the directory again."
ErrLDAPConfigChanged: "The LDAP configuration has changed. Read the directory and preview the import again."
ErrLDAPRoleRequired: "Select a role for new LDAP users."
ErrLDAPImportPlanIncomplete: "An incomplete LDAP import plan cannot be executed."
ErrLDAPQueryTokenInvalid: "The LDAP query result has expired. Read the directory again."
ErrLDAPPlanTokenInvalid: "The LDAP import preview has expired. Preview the import again."
ErrLDAPOperationFailed: "The LDAP operation failed. Try again."
ErrLDAPEntryIdentityMissing: "The LDAP entry is missing a stable ID or username."
ErrLDAPDuplicateExternalID: "LDAP returned duplicate user IDs."
ErrLDAPUsernameConflict: "The username is already used by another user."
ErrLDAPUsernameSourceConflict: "The username is already used by a local user or another authentication source."
ErrLDAPUsernameConcurrentConflict: "The username was claimed by another user during import."
ErrLDAPLocalCredentialsReadonly: "LDAP usernames and passwords are managed by LDAP and cannot be changed locally."
ErrLDAPPasswordExpirationUnsupported: "LDAP users do not use the local password expiration policy."
ErrLDAPSyncSourceDisabled: "Enable AD/LDAP before enabling or running synchronization."
ErrLDAPSyncConfigSave: "Failed to save the LDAP synchronization settings."
ErrLDAPSyncSchedule: "Failed to update the LDAP synchronization schedule."
ErrLDAPSyncCronInvalid: "Enter a valid five-field Cron expression."
ErrLDAPSyncWeekdayInvalid: "Select a valid weekday."
ErrLDAPSyncCronRequired: "Enter a Cron expression."
ErrLDAPSyncScheduleTypeInvalid: "Select a valid synchronization schedule type."
ErrLDAPSyncTimeInvalid: "Enter a valid execution time."
ErrLDAPSyncRunning: "An LDAP synchronization task is already running."
ErrLDAPSyncDirectoryIncomplete: "LDAP returned an incomplete full query result. No user status was changed."
ErrLDAPSyncFailed: "LDAP user synchronization failed."
LDAPSyncSuccess: "LDAP user synchronization completed successfully."
ErrSAML2NotEnabled: "SAML2 authentication is not enabled."
ErrSAML2ConfigInvalid: "The SAML2 configuration is invalid."
ErrSAML2ConfigChanged: "The SAML2 configuration has changed. Start authentication again."
ErrSAML2PanelOriginMissing: "Enter a valid 1Panel public URL containing only scheme, host, and optional port."
ErrSAML2MetadataInvalid: "The IdP Metadata is missing or invalid."
ErrSAML2MetadataURLInvalid: "The IdP Metadata URL or an endpoint in the Metadata is not allowed."
ErrSAML2MetadataFetch: "Failed to load the IdP Metadata."
ErrSAML2MetadataCertificate: "The IdP Metadata does not contain a usable signing certificate."
ErrSAML2KeyPairInvalid: "The SP private key and certificate are invalid or do not match."
ErrSAML2NameAttributeMissing: "The configured SAML2 username attribute is missing or invalid."
ErrSAML2DefaultRoleInvalid: "The default role configured for SAML2 is unavailable."
ErrSAML2SLOUnavailable: "The IdP does not provide a supported Single Logout service."
ErrSAML2TestExpired: "The SAML2 test has expired. Run it again."
ErrSAML2LoginExpired: "The SAML2 login request has expired. Try again."
ErrSAML2InvalidState: "The SAML2 login state is invalid or has already been used."
ErrSAML2RequestBuild: "Failed to build the SAML2 request."
ErrSAML2ResponseInvalid: "The SAML2 response is invalid."
ErrSAML2SignatureInvalid: "The SAML2 signature is invalid."
ErrSAML2Replay: "The SAML2 message has already been used."
ErrSAML2NameIDMissing: "The SAML2 NameID is missing or invalid."
ErrSAML2SessionIndexMissing: "The SAML2 SessionIndex is missing or invalid."
ErrSAML2NameConflictLocal: "The SAML2 username conflicts with a local user."
ErrSAML2NameConflictLDAP: "The SAML2 username conflicts with an LDAP user."
ErrSAML2NameConflictOIDC: "The SAML2 username conflicts with an OIDC user."
ErrSAML2NameConflictSAML2: "The SAML2 username conflicts with another SAML2 identity."
ErrSAML2Internal: "An internal error occurred during SAML2 authentication. Try again later."
ErrSAML2LogoutExpired: "The SAML2 logout request has expired."
ErrSAML2LogoutInvalid: "The SAML2 logout message is invalid."
ErrSAML2LocalCredentialsReadonly: "SAML2 usernames and passwords are managed by the identity provider and cannot be changed locally."
ErrSAML2PasswordExpirationUnsupported: "SAML2 users do not use the local password expiration policy."
# API key management
ErrAPIKeyConflict: "The API key changed. Refresh and retry; repeated creation must use the original request parameters"
ErrAPIKeyNameExists: "An unrevoked API key with this name already exists"
ErrAPIKeyNotFound: "The API key does not exist or does not belong to the current user"
ErrAPIKeyAppBindingDisabled: "APP QR binding is not allowed for this API key"
ErrAPIKeyTerminalUpgradeRequired: "Unable to verify API key terminal authorization support. Check the node connection and upgrade its Agent before retrying."
LocalAppSyncDispatch: "Dispatch local app sync"
LocalAppSyncDispatchNode: "Dispatch local app sync to {{.node}} (node task: {{.taskID}})"
ErrLocalAppSyncDisabled: "Local app sync across nodes is disabled"
# MCP connection document
MCPDocumentTitle: "1Panel MCP connection setup prompt"
MCPDocumentIntro: "Give this file to an AI Agent and ask it to complete the setup described here. This file contains the full Token; keep it private."
MCPDocumentTaskTitle: "Configuration task for the AI Agent"
MCPDocumentTask: "Configure 1Panel MCP for the client specified below in the current environment, then verify the connection and tool discovery. Use the connection parameters in the configuration block below."
MCPDocumentClientCodex: "Target client: Codex. First confirm the configuration scope and the actual CODEX_HOME. Use the active config.toml (default: ~/.codex/config.toml) and merge the TOML below into the corresponding mcp_servers entry."
MCPDocumentClientClaude: "Target client: Claude. First confirm the actual client version. The JSON below is intended for clients that support HTTP MCP configuration. Use a configuration location or management method supported by that version; do not put remote HTTP configuration into an entry that only supports stdio."
MCPDocumentClientGeneric: "Target client: a generic MCP client. First identify the client in use and the configuration scope. Ask the user if uncertain; do not guess the configuration file location. Merge the connection parameters below using the client’s syntax."
MCPDocumentSteps: |-
1. Confirm that the target client supports Streamable HTTP and Bearer request headers. Explain the limitation if its version does not support them.
2. Read and back up the existing configuration. Merge the single server entry below, preserving all other MCP and client settings. If the name already exists, update only that entry.
3. Write the URL and Authorization values exactly as provided. Do not regenerate the Token or change panel permissions or service state. Do not put the Token in command history, logs, replies or Git.
4. Keep certificate verification enabled for HTTPS. For a private CA, ask the user to provide a trusted CA; do not automatically trust the server certificate or disable TLS verification. Use HTTP only on trusted networks; configure HTTPS before crossing an untrusted network.
5. Reload through the client, then verify MCP initialization and tools/list. Do not execute tools/call or write operations. If reloading is unavailable, report that a new session or restart is required. Saving a file does not prove a successful connection.
6. Report the client, configuration location, server name, connection and tool discovery results, and any remaining issues. Hide the Token.
MCPDocumentConfigTitle: "Connection configuration"
MCPDocumentNotes: "The panel server checks tool, node and current account permissions on every request. Update the client configuration after regenerating the Token. Access is rejected when the credential is disabled, revoked or expired."
MCPDocumentHTTPWarning: "This address uses unencrypted HTTP. Configure HTTPS before using it on an untrusted network."
# MCP management
ErrMCPConflict: "MCP data conflict. Refresh and review."
ErrMCPSettingsChanged: "Service settings changed. Refresh and review before saving."
ErrMCPCredentialChanged: "Credential changed. Refresh and review before submitting."
ErrMCPCredentialRevoked: "Credential revoked. Create a new one."
ErrMCPCredentialNameExists: "Credential name already exists. Choose another name."
ErrMCPRequestReused: "Request details conflict. Close and reopen this window."
ErrMCPInstallationRunning: "Installation in progress. Check the installation log."
ErrMCPServiceOperationRunning: "Service operation in progress. Refresh when it finishes."
ErrMCPEndpointManagedByWebsite: "The website manages this endpoint. Change it in website settings."
ErrMCPWebsiteConfigurationExists: "A binding or pending operation exists. Clear “Bind a website after installation”."
ErrMCPWebsiteAlreadyBound: "Website already bound. Manage or remove the existing binding."
ErrMCPWebsiteNotBound: "No website bound. Refresh before binding."
ErrMCPWebsiteMissing: "The original website is missing. Remove the stale binding and bind again."
ErrMCPWebsiteOperationPending: "Website operation unconfirmed. Refresh, then retry the original operation."
ErrMCPWebsiteDomainConflict: "This domain and port are in use. Change the domain or port."
ErrMCPWebsiteOwnershipChanged: "Website ownership changed. Review the website and binding settings."
ErrMCPWebsiteDomainChanged: "Website domain changed. Review it and refresh the binding status."
ErrMCPWebsiteDirectoryChanged: "Website directory or permissions changed. Restore them before retrying."
ErrMCPWebsiteProxyModified: "Proxy configuration conflict. Restore the MCP proxy configuration."
ErrMCPWebsiteModified: "Website protocol or settings changed. Review and refresh."
ErrMCPWebsiteRequestChanged: "Website operation record mismatch. Refresh and verify before starting again."
ErrMCPWebsiteProxyNotLoaded: "MCP proxy not loaded. Check website settings and OpenResty."
ErrMCPWebsiteStateUnconfirmed: "Website state unconfirmed. Check the website and OpenResty, then refresh."
ErrMCPPolicyChanged: "Tool catalog or grants changed. Refresh and review before saving."
ErrMCPCatalogUnavailable: "Tool catalog unavailable. Check service status."
ErrMCPDisabled: "MCP service is not enabled."
ErrMCPSecretKeyUnavailable: "Credential encryption unavailable. Try again later."
ErrMCPSecretInvalid: "Token cannot be decrypted. Regenerate it."
ErrMCPCredentialInactive: "Credential is disabled, expired, or revoked."
ErrMCPAuditUnavailable: "Operation audit unavailable. Verify the operation result first."
ErrMCPEndpointUnavailable: "Configure a valid MCP endpoint first."
ErrMCPWebsitePending: "Website outcome unconfirmed. Refresh, then retry the original operation."
ErrMCPWebsiteUnavailable: "Website binding unavailable. Check the website and OpenResty."
ErrMCPWebsiteServiceRequired: "Install the 1Panel MCP service first."
ErrMCPWebsiteHTTPPortRequired: "Use the OpenResty HTTP port for HTTPS binding."
# MCP installation tasks
PanelMCP: "1Panel MCP"
MCPInstallPrepare: "Check the current MCP service"
MCPInstallPullImage: "Check and pull the image"
MCPInstallCatalog: "Validate the tool contract"
MCPInstallStarting: "Start the container and check its health"
MCPInstallSaving: "Save the service configuration"
MCPInstallCompleted: "MCP service installation completed"
MCPInstallRollback: "Installation failed; restore the previous MCP service"
MCPInstallBindWebsite: "Create the bound website"
MCPInstallWebsiteFailed: "Service installed; website binding failed. Resolve it in service settings."
MCPInstallInterrupted: "Panel restart interrupted installation. Verify service status."
MCPInstallFailed: "Installation failed. Check Docker, the image, and panel logs."
MCPInstallRecoveryFailed: "Installation failed and service recovery is incomplete. Verify service status."
MCPInstallLocalImage: "The image exists locally; skip downloading"
MCPInstallVerifyImage: "Validate the image version and managed service contract"
MCPInstallVerifiedImage: "Image validation passed"
PHPExtensionsNoTargets: "No target nodes remain after excluding the source node"
PHPExtensionsSyncTask: "Sync PHP extension template [{{ .name }}]"
PHPExtensionsSyncSkipped: "Node [{{ .node }}] already has an identical template; skipped"
MCPInstallCleanup: "Clean up the previous container"
MCPInstallOldContainerRemoved: "Previous container removed"
MCPInstallOldImageRemoved: "Previous image removed"
MCPInstallOldImageKept: "Previous image retained"
MCPInstallOldImageRetained: "The previous image is referenced or has other tags; it was retained."
MCPInstallCleanupSkipped: "The previous container is absent; skip image cleanup."
MCPInstallCleanupFailed: "MCP service upgraded, but old resources could not be fully cleaned up. Check them manually."