diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index 1a6e1497f062..2af430c76ba7 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -71,7 +71,7 @@ const message = { notAgree: 'Disagree', preview: 'Preview', open: 'Open', - notSave: `Don't Save`, + notSave: "Don't Save", createNewFolder: 'Create new folder', createNewFile: 'Create new file', helpDoc: 'Docs', @@ -150,14 +150,14 @@ const message = { }, msg: { noneData: 'No data available', - delete: `This action cannot be undone. Continue?`, - clean: `This cleanup cannot be undone. Continue?`, + delete: 'This action cannot be undone. Continue?', + clean: 'This cleanup cannot be undone. Continue?', closeDrawerHelper: 'Unsaved changes may be lost. Continue?', deleteSuccess: 'Deleted successfully', loginSuccess: 'Logged in successfully', operationSuccess: 'Completed successfully', copySuccess: 'Copied successfully', - notSupportOperation: `This operation is not supported`, + notSupportOperation: 'This operation is not supported', requestTimeout: 'Request timed out, try again later', infoTitle: 'Notice', notRecords: 'No run records for this task', @@ -168,13 +168,13 @@ const message = { operateConfirm: 'To confirm, type: ', inputOrSelect: 'Select or enter', copyFailed: 'Failed to copy', - operatorHelper: `Run "{1}" on "{0}". This cannot be undone. Continue?`, + operatorHelper: 'Run "{1}" on "{0}". This cannot be undone. Continue?', notFound: 'Sorry, the page you requested does not exist.', - unSupportType: `Current file type is not supported.`, + unSupportType: 'Current file type is not supported.', unSupportSize: 'Uploaded file exceeds {0}M. Confirm.', - fileExist: `The file already exists in the current folder. Repeat uploading is not supported.`, + fileExist: 'The file already exists in the current folder. Repeat uploading is not supported.', fileNameErr: 'Filename must be 1-256 chars and only include letters, numbers, dots, dashes, or underscores', - confirmNoNull: `Make sure the value {0} is not empty.`, + confirmNoNull: 'Make sure the value {0} is not empty.', errPort: 'Invalid port, please check', remove: 'Remove', backupHelper: 'The current operation will back up {0}. Proceed?', @@ -229,13 +229,15 @@ const message = { requiredInput: 'This field is required.', requiredSelect: 'Select an item in the list', illegalChar: 'Injection of characters & ; $ \' ` ( ) " > < | is currently not supported', - illegalInput: `This field mustn't contains illegal characters.`, + illegalInput: "This field mustn't contains illegal characters.", commonName: 'This field must start with non-special characters and must consist of English, Chinese, numbers, ".", "-", and "_" characters with a length of 1-128.', userName: 'This field must consist of English, Chinese, numbers and "_" characters with a length of 3-30.', - simpleName: `This field mustn't start with underscore character and must consist of English, numbers, and "_" characters with a length of 3-30.`, - simplePassword: `This field mustn't start with underscore character and must consist of English, numbers, and "_" characters with a length of 1-30.`, - dbName: `This field mustn't start with underscore character and must consist of English, numbers, and "_" characters with a length of 1-64.`, + simpleName: + 'This field mustn\'t start with underscore character and must consist of English, numbers, and "_" characters with a length of 3-30.', + simplePassword: + 'This field mustn\'t start with underscore character and must consist of English, numbers, and "_" characters with a length of 1-30.', + dbName: 'This field mustn\'t start with underscore character and must consist of English, numbers, and "_" characters with a length of 1-64.', imageName: 'This field must consist of English, numbers, ":", "@", "/", ".", "-", and "_" characters with a length of 1-256.', volumeName: @@ -247,7 +249,8 @@ const message = { complexityPassword: 'This field must consist of English, numbers with a length of 8-30 and contain at least two special characters.', commonPassword: 'This field length must be more than 6.', - linuxName: `This field length must be between 1 and 128. The field mustn't contain these special characters: "{0}".`, + linuxName: + 'This field length must be between 1 and 128. The field mustn\'t contain these special characters: "{0}".', email: 'This field must be a valid email address.', number: 'This field must be a number.', integer: 'This field must be a positive integer.', @@ -262,10 +265,12 @@ const message = { numberRange: 'This field must be a number between {0} and {1}.', paramName: 'This field must consist of English, numbers, ".", "-", and "_" characters with a length of 2-30.', - paramComplexity: `This field mustn't start and end with special characters and must consist of English, numbers, "{0}" characters with a length of 6-128.`, + paramComplexity: + 'This field mustn\'t start and end with special characters and must consist of English, numbers, "{0}" characters with a length of 6-128.', paramUrlAndPort: 'This field must be in the format of "http(s)://(domain name/ip):(port)".', nginxDoc: 'This field must consist of English, numbers and "." characters.', - appName: `This field musnt't start and end with "-" and "_" characters and must consist of English, numbers, "-", and "_" characters with a length of 2-30.`, + appName: + 'This field musnt\'t start and end with "-" and "_" characters and must consist of English, numbers, "-", and "_" characters with a length of 2-30.', containerName: 'Supports letters, numbers, -, _ and .; cannot start with - _ or .; length: 2-128', mirror: 'The mirror acceleration address should start with http(s)://, support English letters (both uppercase and lowercase), numbers, . / and -, and should not contain blank lines.', disableFunction: 'Only support letters ,underscores,and,', @@ -289,7 +294,7 @@ const message = { commonError: 'Request failed', }, service: { - serviceNotStarted: `The {0} service is not started.`, + serviceNotStarted: 'The {0} service is not started.', }, status: { running: 'Running', @@ -416,7 +421,8 @@ const message = { restart_1panel: 'Restart panel', restart_system: 'Restart server', operationSuccess: 'Completed successfully. Rebooting now, refresh the browser later.', - entranceHelper: `Security entrance is not enabled. You can enable it in "Settings -> Security" to improve system security.`, + entranceHelper: + 'Security entrance is not enabled. You can enable it in "Settings -> Security" to improve system security.', appInstalled: 'Applications', systemInfo: 'System information', hostname: 'Hostname', @@ -436,12 +442,10 @@ const message = { runningTime: 'Up since', mem: 'System memory', swapMem: 'Swap', - runSmoothly: 'Low load', runNormal: 'Moderate load', runSlowly: 'High load', runJam: 'Heavy load', - core: 'Physical cores', logicCore: 'Logical cores', corePercent: 'Core Usage', @@ -467,10 +471,8 @@ const message = { available: 'Available', percent: 'Utilization', goInstall: 'Go install', - networkCard: 'NIC', disk: 'Disk', - memo: 'Memo', memoPlaceholder: 'Click the edit button to enable editing.', carouselSetting: 'Carousel settings', @@ -523,17 +525,15 @@ const message = { changePasswordHelper: 'The database has been associated with an application. Changing the password will change the database password of the application at the same time. The change takes effect after the application restarts.', recoverTimeoutHelper: '-1 means no timeout', - confChange: 'Configuration', confNotFound: 'The configuration file could not be found. Please upgrade the application to the latest version in the app store and try again!', - portHelper: 'This port is the exposed port of the container. You need to save the modification separately and restart the container!', - loadFromRemote: 'Sync from server', userBind: 'Bind user', - pgBindHelper: `This operation is used to create a new user and bind it to the target database. Currently, selecting users already existing in the database is not supported.`, + pgBindHelper: + 'This operation is used to create a new user and bind it to the target database. Currently, selecting users already existing in the database is not supported.', pgSuperUser: 'Superuser', loadFromRemoteHelper: 'Sync database info from the server to 1Panel. Continue?', passwordHelper: 'Not available, click to update', @@ -558,14 +558,12 @@ const message = { hasCA: 'Has CA certificate', skipVerify: 'Skip certificate validation', initialDB: 'Initial Database', - formatHelper: 'The current database character set is {0}, the character set inconsistency may cause recovery failure', dropHelper: 'You can drag and drop the uploaded file here or', clickHelper: 'click to upload', supportUpType: 'Only supports sql, sql.gz, tar.gz, .zip file formats. The imported compressed file must contain only one .sql file or include test.sql', - currentStatus: 'Current status', baseParam: 'Basic parameter', performanceParam: 'Performance parameter', @@ -590,14 +588,13 @@ const message = { openTables: 'Open tables', openTablesHelper: 'The configuration value of "table_open_cache" must be greater than or equal to this value.', selectFullJoin: 'Select full join', - selectFullJoinHelper: `If this value is not 0, check table indexes.`, + selectFullJoinHelper: 'If this value is not 0, check table indexes.', selectRangeCheck: 'The number of joins with no index', - selectRangeCheckHelper: `If this value is not 0, check table indexes.`, + selectRangeCheckHelper: 'If this value is not 0, check table indexes.', sortMergePasses: 'Number of sorted merges', sortMergePassesHelper: 'If the value is too large, increase "sort_buffer_size".', tableLocksWaited: 'Lock table number', tableLocksWaitedHelper: 'If the value is too large, consider increasing your database performance.', - performanceTuning: 'Performance tuning', optimizationScheme: 'Optimization scheme', keyBufferSizeHelper: 'Buffer size for index', @@ -615,14 +612,11 @@ const message = { tableOpenCacheHelper: 'Table cache', maxConnectionsHelper: 'Max connections', restart: 'Restart', - slowLog: 'Slow logs', noData: 'No slow logs yet.', - isOn: 'On', longQueryTime: 'threshold(s)', thresholdRangeHelper: 'Enter the correct threshold (1 - 600).', - timeout: 'Timeout(s)', timeoutHelper: 'Idle connection timeout period. 0 indicates that the connection is on continuously.', maxclients: 'Max clients', @@ -645,24 +639,21 @@ const message = { keyspaceMisses: 'Number of failed attempts to find the database key.', hit: 'Find the database key hit ratio.', latestForkUsec: 'The number of microseconds spent on the last fork() operation.', - redisCliHelper: `"redis-cli" not detected. Enable the service first.`, + redisCliHelper: '"redis-cli" not detected. Enable the service first.', redisQuickCmd: 'Redis quick commands', recoverHelper: 'This will overwrite data with [{0}]. Continue?', submitIt: 'Overwrite the data', - baseConf: 'Basic', allConf: 'All', restartNow: 'Restart now', restartNowHelper1: 'You need to restart the system after the configuration changes take effect. If your data needs to be persisted, perform the save operation first.', restartNowHelper: 'This will take effect only after the system restarts.', - persistence: 'Persistence', rdbHelper1: 'second(s), insert', rdbHelper2: 'pieces of data', rdbHelper3: 'Meeting any of the conditions will trigger RDB persistence.', rdbInfo: 'Ensure that the value in the rule list ranges from 1 to 100000', - containerConn: 'Container connection', copyConnURL: 'Copy connection URL', connAddress: 'Address', @@ -726,6 +717,7 @@ const message = { pairingCodeRequired: 'Enter pairing code', pairingApproveSuccess: 'Pairing approved successfully', customProviderHelper: 'Custom model providers do not validate whether the account is available.', + feishuSaveSuccess: 'Saved to Feishu', }, model: { model: 'Models', @@ -773,7 +765,6 @@ const message = { memoryUsed: 'Memory Used', memoryTotal: 'Total Memory', percent: 'Utilization', - base: 'Basic Information', driverVersion: 'Driver Version', cudaVersion: 'CUDA Version', @@ -870,7 +861,7 @@ const message = { containerPruneHelper1: 'This will delete all containers that are in stopped state.', containerPruneHelper2: 'If the containers are from the app store, you need to go to "App Store -> Installed" and click the "Rebuild" button to reinstall them after performing the cleanup.', - containerPruneHelper3: `This operation cannot be undone. Continue?`, + containerPruneHelper3: 'This operation cannot be undone. Continue?', imagePrune: 'Prune', imagePruneSome: 'Clean unlabeled', imagePruneSomeEmpty: 'No images with the "none" tag can be cleaned.', @@ -899,7 +890,7 @@ const message = { cleanLogscope: 'Cleanup Type', downLogHelper1: 'This will download all logs from container {0}. Continue?', downLogHelper2: 'This will download the latest {1} logs from container {0}. Continue?', - cleanLogHelper: `This will require restarting the container and cannot be undone. Continue?`, + cleanLogHelper: 'This will require restarting the container and cannot be undone. Continue?', newName: 'New name', workingDir: 'Working Dir', source: 'Resource usage', @@ -916,7 +907,6 @@ const message = { 'Container engine uses a base value of 1024 for CPU shares. You can increase it to give the container more CPU time.', inputIpv4: 'Example: 192.168.1.1', inputIpv6: 'Example: 2001:0db8:85a3:0000:0000:8a2e:0370:7334', - diskUsage: 'Disk Usage', localVolume: 'Local Storage Volume', buildCache: 'Build Cache', @@ -929,7 +919,6 @@ const message = { sizeRwHelper: 'Size of the writable layer unique to the container', sizeRootFs: 'Virtual Size', sizeRootFsHelper: 'Total size of all image layers the container depends on + container layer', - containerFromAppHelper: 'Detected that this container originates from the app store. App operations may cause current edits to be invalidated.', containerFromAppHelper1: @@ -943,7 +932,6 @@ const message = { privileged: 'Privileged', privilegedHelper: 'Allow the container to perform certain privileged operations on the host, which may increase container risks. Use with caution!', - upgradeHelper: 'Repository Name/Image Name: Image Version', upgradeWarning2: 'The upgrade operation requires rebuilding the container, any unpersisted data will be lost. Continue?', @@ -953,7 +941,6 @@ const message = { targetImage: 'Target image', imageLoadErr: 'No image name detected for the container', appHelper: 'The container comes from the app store, and upgrading may make the service unavailable.', - resource: 'Resource', input: 'Manually input', forcePull: 'Always pull image ', @@ -968,7 +955,7 @@ const message = { autoRemove: 'Auto remove', cpuQuota: 'Number of CPU cores', memoryLimit: 'Memory', - limitHelper: `If set to 0, it means that there is no limitation. The maximum value is {0}`, + limitHelper: 'If set to 0, it means that there is no limitation. The maximum value is {0}', macAddr: 'MAC Address', mount: 'Mount', volumeOption: 'Volume', @@ -999,10 +986,8 @@ const message = { unlessStopped: 'unless-stopped', onFailure: 'on-failure (five times by default)', no: 'never', - refreshTime: 'Refresh interval', cache: 'Cache', - image: 'Image | Images', imagePull: 'Pull', imagePullHelper: @@ -1031,9 +1016,9 @@ const message = { tagHelper: 'One per line. For example,\nkey1=value1\nkey2=value2', imageNameHelper: 'Image name and Tag, for example: nginx:latest', cleanBuildCache: 'Clean build cache', - delBuildCacheHelper: `This will delete all cached artifacts that are generated during builds and cannot be undone. Continue?`, + delBuildCacheHelper: + 'This will delete all cached artifacts that are generated during builds and cannot be undone. Continue?', urlWarning: 'The URL prefix does not need to include http:// or https://. Please modify.', - network: 'Network | Networks', networkHelper: 'This may cause some applications and runtime environments to not work properly. Continue?', networkName: 'Name', @@ -1045,7 +1030,6 @@ const message = { scope: 'IP scope', gateway: 'Gateway', auxAddress: 'Exclude IP', - volume: 'Volume | Volumes', volumeDir: 'Volume directory', nfsEnable: 'Enable NFS storage', @@ -1053,7 +1037,6 @@ const message = { mountpoint: 'Mountpoint', mountpointNFSHelper: 'e.g. /nfs, /nfs-share', options: 'Options', - repo: 'Repository | Repositories', httpRepoHelper: 'Operating an HTTP-type repository requires restarting the Docker service.', httpRepo: 'Choosing HTTP protocol requires restarting the Docker service to add it into insecure registries.', @@ -1067,7 +1050,6 @@ const message = { 'If there are multiple mirrors, newlines must be displayed, for example:\nhttp://xxxxxx.m.daocloud.io \nhttps://xxxxxx.mirror.aliyuncs.com', registrieHelper: 'If multiple private repositories exist, newlines must be displayed, for example:\n172.16.10.111:8081 \n172.16.10.112:8081', - compose: 'Compose | Composes', composeFile: 'Compose File', fromChangeHelper: 'Switching the source will clean the current edited content. Continue?', @@ -1093,7 +1075,6 @@ const message = { composeDownHelper: 'This will stop and remove all containers and networks under the {0} compose. Continue?', composeEnvHelper2: 'This orchestration was created by the 1Panel App Store. Please modify environment variables in the installed applications.', - setting: 'Setting | Settings', goSetting: 'Go to edit', operatorStatusHelper: 'This will "{0}" the Docker service. Continue?', @@ -1124,7 +1105,7 @@ const message = { iptablesHelper2: 'Disabling iptables will result in the containers being unable to communicate with external networks.', daemonJsonPath: 'Conf Path', - serviceUnavailable: `Docker service is not started at present.`, + serviceUnavailable: 'Docker service is not started at present.', startIn: ' to start', sockPath: 'Unix domain socket', sockPathHelper: 'Communication channel between Docker daemon and the client.', @@ -1134,12 +1115,10 @@ const message = { related: 'Related', includeAppstore: 'Show containers from the app store', excludeAppstore: 'Hide App Store Container', - cleanDockerDiskZone: 'Clean up disk space used by Docker', cleanImagesHelper: '( Clean up all images that are not used by any containers )', cleanContainersHelper: '( Clean up all stopped containers )', cleanVolumesHelper: '( Clean up all unused local volumes )', - makeImage: 'Create image', newImageName: 'New image name', commitMessage: 'Commit message', @@ -1147,6 +1126,7 @@ const message = { ifPause: 'Pause Container During Creation', ifMakeImageWithContainer: 'Create New Image from This Container?', finishTime: 'Last stop time', + exportHelper: 'Export selected images to one tar file.', }, cronjob: { importHelper: @@ -1199,7 +1179,8 @@ const message = { directory: 'Backup directory', sourceDir: 'Backup directory', snapshot: 'System snapshot', - allOptionHelper: `The current task plan is to back up all [{0}]. Direct download is not supported at the moment. You can check the backup list of [{0}] menu.`, + allOptionHelper: + 'The current task plan is to back up all [{0}]. Direct download is not supported at the moment. You can check the backup list of [{0}] menu.', exclusionRules: 'Exclusive rule', exclusionRulesHelper: 'Select or enter exclusion rules, press Enter after each set to continue. Exclusion rules will apply to all compression operations in this backup', @@ -1259,7 +1240,6 @@ const message = { cutWebsiteLog: 'Website log rotation', cutWebsiteLogHelper: 'The rotated log files will be backed up to the backup directory of 1Panel.', syncIpGroup: 'Sync WAF IP groups', - requestExpirationTime: 'Upload request expiration time(Hours)', unitHours: 'Unit: Hours', alertTitle: 'Planned Task - {0} 「{1}」 Task Failure Alert', @@ -1284,6 +1264,8 @@ const message = { noSuchApp: 'The {0} service was not detected. Please install it quickly using the script library first!', syncHelper: 'About to sync system script library. This operation only affects system scripts. Continue?', }, + cleanLog: 'Auto clean logs', + cleanLogscope: 'Log retention', }, monitor: { globalFilter: 'Global Filter', @@ -1295,7 +1277,6 @@ const message = { defaultIOHelper: 'Default disk option displayed in monitoring and overview interfaces', cleanMonitor: 'Clear Monitoring Records', cleanHelper: 'This operation will clear all monitoring records including GPU. Continue?', - avgLoad: 'Load average', loadDetail: 'Load detail', resourceUsage: 'Utilization', @@ -1411,26 +1392,31 @@ const message = { timeZone: 'System time zone', localTime: 'Server time', timeZoneChangeHelper: 'Modifying the system time zone requires restarting the service. Continue?', - timeZoneHelper: `If you don't install "timedatectl" command, you may not change the time zone. Because system uses that command to change time zone.`, + timeZoneHelper: + 'If you don\'t install "timedatectl" command, you may not change the time zone. Because system uses that command to change time zone.', timeZoneCN: 'Beijing', timeZoneAM: 'Los Angeles', timeZoneNY: 'New York', ntpALi: 'Alibaba', ntpGoogle: 'Google', syncSite: 'NTP server', - hostnameHelper: `Hostname modification depends on the "hostnamectl" command. If the command is not installed, the modification may fail.`, - userHelper: `The username depends on the "whoami" command for retrieval. If the command is not installed, retrieval may fail.`, - passwordHelper: `Password modification depends on the "chpasswd" command. If the command is not installed, the modification may fail.`, + hostnameHelper: + 'Hostname modification depends on the "hostnamectl" command. If the command is not installed, the modification may fail.', + userHelper: + 'The username depends on the "whoami" command for retrieval. If the command is not installed, retrieval may fail.', + passwordHelper: + 'Password modification depends on the "chpasswd" command. If the command is not installed, the modification may fail.', hostHelper: 'There is an empty value in the provided content. Please check and try again after modification!', dnsCheck: 'Test Availability', dnsOK: 'DNS configuration information is available!', - dnsTestFailed: `DNS configuration information is not available.`, + dnsTestFailed: 'DNS configuration information is not available.', + syncSiteHelper: 'Sync system time with {0}. Continue?', }, fail2ban: { sshPort: 'Listen to SSH port', sshPortHelper: 'Current Fail2ban listens to the SSH connection port of the host', - unActive: `The Fail2ban service is not enabled at present.`, + unActive: 'The Fail2ban service is not enabled at present.', operation: 'You will perform operation "{0}" on Fail2ban service. Continue?', fail2banChange: 'Fail2ban Configuration Modification', ignoreHelper: 'The IP list in the allowlist will be ignored for blocking. Continue?', @@ -1629,7 +1615,7 @@ const message = { unsupportedType: 'Unsupported file type', deleteHelper: 'Are you sure you want to delete the following files? By default, it will enter the recycle bin after deletion', - fileHelper: `Note:\n1. Search results can't be sorted.\n2. Folders can't be sorted by size.`, + fileHelper: "Note:\n1. Search results can't be sorted.\n2. Folders can't be sorted by size.", forceDeleteHelper: 'Permanently delete the file (without entering the recycle bin, delete it directly)', recycleBin: 'Recycle bin', sourcePath: 'Original path', @@ -1658,7 +1644,7 @@ const message = { 'Allowing inscure server connections may lead to data leak or tampering. Use this option only when trusting the download source.', uploadOverLimit: 'The number of files exceeds 1000! Please compress and upload', clashDidNotSupport: 'File names are prohibited from containing .1panel_clash', - clashDeleteAlert: `The "Recycle Bin" folder can't be deleted`, + clashDeleteAlert: 'The "Recycle Bin" folder can\'t be deleted', clashOpenAlert: 'Click the "Recycle Bin" button to open the recycle bin directory', right: 'Forward', back: 'Back', @@ -1676,7 +1662,7 @@ const message = { previewTruncated: 'File is too large, only showing the last part', previewEmpty: 'File is empty or not a text file', previewLargeFile: 'Preview', - panelInstallDir: `1Panel installation directory can't be deleted`, + panelInstallDir: "1Panel installation directory can't be deleted", wgetTask: 'Download Task', existFileTitle: 'Same name file prompt', existFileHelper: 'The uploaded file contains a file with the same name, do you want to overwrite it?', @@ -1770,6 +1756,7 @@ const message = { loginTime: 'Login time', loginIP: 'Login IP', stopSSHWarn: 'Whether to disconnect this SSH connection', + remote: 'Remote SSH', }, setting: { panel: 'Panel', @@ -1847,8 +1834,8 @@ const message = { apiInterface: 'Enable API', apiInterfaceClose: 'Once closed, API interfaces cannot be accessed. Continue?', apiInterfaceHelper: 'Allow third-party applications to access the API.', - apiInterfaceAlert1: `Don't enable it in production environments because it may increase server security risks.`, - apiInterfaceAlert2: `Don't use third-party applications to call the API to prevent potential security threats.`, + apiInterfaceAlert1: "Don't enable it in production environments because it may increase server security risks.", + apiInterfaceAlert2: "Don't use third-party applications to call the API to prevent potential security threats.", apiInterfaceAlert3: 'API document:', apiInterfaceAlert4: 'Usage document:', apiKey: 'API key', @@ -1866,8 +1853,8 @@ const message = { restartNowHelper: 'Configuring Docker proxy requires restarting the Docker service.', restartNow: 'Restart immediately', restartLater: 'Restart manually later', - systemIPWarning: `The server address is not currently set. Set it in the control panel first.`, - systemIPWarning1: `The current server address is set to {0}, and quick redirection is not possible!`, + systemIPWarning: 'The server address is not currently set. Set it in the control panel first.', + systemIPWarning1: 'The current server address is set to {0}, and quick redirection is not possible!', syncTime: 'Server Time', timeZone: 'Time Zone', timeZoneChangeHelper: 'Changing the time zone requires restarting the service. Continue?', @@ -1888,7 +1875,8 @@ const message = { duplicatePassword: 'The new password cannot be the same as the original password, enter again!', diskClean: 'Cache clean', developerMode: 'Preview Program', - developerModeHelper: `You will get to expirence new features and fixes before they're released broadly and give early feedback.`, + developerModeHelper: + "You will get to expirence new features and fixes before they're released broadly and give early feedback.", thirdParty: 'Third-party accounts', scope: 'Scope', public: 'Public', @@ -1983,7 +1971,6 @@ const message = { accountKey: 'Account key', address: 'Address', path: 'Path', - safe: 'Security', passkey: 'Passkey', passkeyManage: 'Manage', @@ -2038,7 +2025,8 @@ const message = { timeoutHelper: '[ {0} days ] The panel password is about to expire. After the expiration, you need to reset the password', complexity: 'Complexity validation', - complexityHelper: `After you enable it, the password validation rule will be: 8-30 characters, including English, numbers, and at least two special characters.`, + complexityHelper: + 'After you enable it, the password validation rule will be: 8-30 characters, including English, numbers, and at least two special characters.', bindDomain: 'Bind domain', unBindDomain: 'Unbind domain', panelSSL: 'Panel SSL', @@ -2057,7 +2045,7 @@ const message = { 'After you set the authorized IP address list, only the IP address in the list can access the panel service.', allowIPsWarning: 'After you set the authorized IP address list, only the IP address in the list can access the panel service. Continue?', - allowIPsHelper1: `Leave it blank to disable the IP address restriction.`, + allowIPsHelper1: 'Leave it blank to disable the IP address restriction.', allowIPEgs: 'One per line. For example,\n172.16.10.111\n172.16.10.0/24', mfa: 'Two-Factor Auth', mfaClose: 'Disabling MFA will reduce the security of the service. Continue?', @@ -2080,7 +2068,8 @@ const message = { sslDisableHelper: 'If the https service is disabled, you need to restart the panel for it to take effect. Continue?', noAuthSetting: 'Unauthorized setting', - noAuthSettingHelper: `When users don't log in with specified security entrance, or don't access the panel from specified IP or domain name, this response can hid panel characteristic.`, + noAuthSettingHelper: + "When users don't log in with specified security entrance, or don't access the panel from specified IP or domain name, this response can hid panel characteristic.", responseSetting: 'Response setting', help200: 'Help Page', error400: 'Bad Request', @@ -2091,14 +2080,13 @@ const message = { error416: 'Range Not Satisfiable', error444: 'Connection Closed', error500: 'Internal Server Error', - https: 'Setting HTTPS for the panel improves access security', strictHelper: 'Non-HTTPS traffic cannot connect to the panel', muxHelper: "The panel will listen on both HTTP and HTTPS protocols and redirect HTTP traffic to HTTPS, but this may reduce the panel's security", certType: 'Certificate type', selfSigned: 'Self signed', - selfSignedHelper: `Browsers may not trust self-signed certificates and may display security warnings.`, + selfSignedHelper: 'Browsers may not trust self-signed certificates and may display security warnings.', select: 'Select', domainOrIP: 'Domain or IP:', timeOut: 'Timeout', @@ -2107,7 +2095,6 @@ const message = { certificate: 'Certificate', backupJump: 'Backup files not in the current backup list, please try downloading from the file directory and importing for backup.', - snapshot: 'Snapshot | Snaphshots', noAppData: 'No system applications available for selection', noBackupData: 'No backup data available for selection', @@ -2166,7 +2153,7 @@ const message = { lastRecoverAt: 'Last recovery time', lastRollbackAt: 'Last rollback time', reDownload: 'Download the backup file again', - recoverErrArch: `Snapshot recovery between different server architectures is not supported!`, + recoverErrArch: 'Snapshot recovery between different server architectures is not supported!', recoverErrSize: 'Detected insufficient disk space, please check or clean up and try again!', recoverHelper: 'Starting recovery from snapshot {0}, confirm the following information before proceeding:', recoverHelper1: 'Recovery requires restarting Docker and 1Panel services', @@ -2177,7 +2164,6 @@ const message = { rollback: 'Rollback', rollbackHelper: 'Rolling back this recovery will replace all files from this recovery, and may require restarting Docker and 1Panel services. Continue?', - upgradeRecord: 'Upgrade record', upgrading: 'Upgrading, please wait...', upgradeHelper: 'The upgrade requires restarting the 1Panel service. Continue?', @@ -2193,7 +2179,6 @@ const message = { versionNotSame: 'Node version mismatch with the main node. Please upgrade in Node Management before retrying.', versionCompare: 'Detected that node {0} is already at the latest upgradable version. Please check the primary node version and try again!', - about: 'About', versionItem: 'Current Version', backupCopies: 'Backup Copies', @@ -2210,7 +2195,6 @@ const message = { forum: 'Discussions', doc2: 'Docs', currentVersion: 'Version', - license: 'License', bindNode: 'Bind Node', menuSetting: 'Menu Settings', @@ -2295,7 +2279,6 @@ const message = { suggest: '(Recommended)', totalScan: 'Total junk files to be cleaned: ', selectScan: 'Total selected junk files: ', - system: 'System Junk Files', systemHelper: 'Temporary files generated during snapshot, upgrade, and other processes', panelOriginal: 'Backup files before system snapshot restore', @@ -2304,7 +2287,6 @@ const message = { upgradeHelper: '(Recommend keeping the latest upgrade backup for system rollback)', snapshot: 'System snapshot temporary files', rollback: 'Backup files before recover', - backup: 'System Backup', backupHelper: 'Backup files not associated with local backup accounts', unknownBackup: 'System Backup', @@ -2313,13 +2295,11 @@ const message = { unknownDatabase: 'Unassociated Database Backup', unknownWebsite: 'Unassociated Website Backup', unknownSnapshot: 'Unassociated Snapshot Backup', - upload: 'Temporary Upload Files', uploadHelper: 'Temporary files uploaded from the system backup list', download: 'Temporary Download Files', downloadHelper: 'Temporary files downloaded from third-party backup accounts by the system', directory: 'Directory', - systemLog: 'Log file', systemLogHelper: 'System logs, task logs, website log files', dockerLog: 'Container operation log files', @@ -2327,12 +2307,10 @@ const message = { shell: 'Shell script scheduled tasks', containerShell: 'Shell script scheduled tasks executed inside containers', curl: 'CURL scheduled tasks', - docker: 'Container garbage', dockerHelper: 'Files such as containers, images, volumes, build cache, etc.', volumes: 'Volumes', buildCache: 'Container Build Cache', - appTmpDownload: 'App temporary download file', unknownWebsiteLog: 'Unlinked website log backup file', }, @@ -2360,9 +2338,9 @@ const message = { stopOperatorHelper: 'The application will be stopped. Continue?', restartOperatorHelper: 'The application will be restarted. Continue?', reloadOperatorHelper: 'The application will be reloaded. Continue?', - checkInstalledWarn: `"{0}" is not detected. Go to "App Store" to install.`, + checkInstalledWarn: '"{0}" is not detected. Go to "App Store" to install.', limitHelper: 'The application has already been installed.', - deleteHelper: `"{0}" has been associated with the following resource(s) and can't be deleted`, + deleteHelper: '"{0}" has been associated with the following resource(s) and can\'t be deleted', checkTitle: 'Hint', defaultConfig: 'Default configuration', defaultConfigHelper: 'It has been restored to the default configuration, it will take effect after saving', @@ -2394,7 +2372,8 @@ const message = { containerNameHelper: 'The container name will be automatically generated when not set', allowPort: 'External access', allowPortHelper: 'Allowing external port access will release the firewall port', - appInstallWarn: `The application dosn't expose the external access port by default. Click "Advanced settings" to expose it.`, + appInstallWarn: + 'The application dosn\'t expose the external access port by default. Click "Advanced settings" to expose it.', upgradeStart: 'Start upgrading! Please refresh the page later', toFolder: 'Open the installation directory', editCompose: 'Edit compose file', @@ -2404,7 +2383,8 @@ const message = { allReadyInstalled: 'Installed', installHelper: 'If you have image pull issues, configure image acceleration.', sortMode: 'Sort', - installWarn: `The external access is not checked, and it will make the application unable to access through external network. Continue?`, + installWarn: + 'The external access is not checked, and it will make the application unable to access through external network. Continue?', showIgnore: 'View ignored applications', cancelIgnore: 'Cancel ignore', ignoreList: 'Ignored applications', @@ -2429,7 +2409,8 @@ const message = { useNew: 'Use custom version', useDefault: 'Use default version', useCustom: 'Customize docker-compose.yml', - useCustomHelper: `Using a custom docker-compose.yml file may cause the application upgrade to fail. If it is not necessary, don't check it.`, + useCustomHelper: + "Using a custom docker-compose.yml file may cause the application upgrade to fail. If it is not necessary, don't check it.", diffHelper: 'The left side is the old version, the right side is the new version. After editing, click to save the custom version', pullImage: 'Pull Image', @@ -2563,7 +2544,8 @@ const message = { deleteAppHelper: 'Delete associated applications and application backups at the same time', deleteBackupHelper: 'Also delete website backups.', deleteDatabaseHelper: 'Also delete the database associated with the website', - deleteConfirmHelper: `The delete operation cannot be undone. Enter "{0}" to confirm deletion.`, + deleteConfirmHelper: + 'The delete operation cannot be undone. Enter "{0}" to confirm deletion.', staticPath: 'The corresponding main directory is ', limit: 'Scheme', blog: 'Forum/Blog', @@ -2784,7 +2766,6 @@ const message = { failTimeout: 'Failure timeout', failTimeoutHelper: 'The time window length for server health checks. When the cumulative number of failures reaches the threshold within this period, the server will be temporarily removed and retried after the same duration. Default 10 seconds', - staticChangePHPHelper: 'Currently a static website, you can switch to a PHP website', proxyCache: 'Reverse Proxy Cache', cacheLimit: 'Cache Space Limit', @@ -2812,7 +2793,6 @@ const message = { preflight: 'Preflight request fast response', preflightHleper: 'When enabled, when the browser sends a cross-origin preflight request (OPTIONS request), the system will automatically return a 204 status code and set the necessary cross-origin response headers', - changeDatabase: 'Change Database', changeDatabaseHelper1: 'Database association is used for backing up and restoring the website.', changeDatabaseHelper2: 'Switching to another database will cause previous backups to be unrecoverable.', @@ -2846,7 +2826,6 @@ const message = { execUser: 'Executing User', execDir: 'Execution Directory', packagist: 'China Full Mirror', - batchOperate: 'Batch Operation', batchOperateHelper: 'Batch {0} websites, continue operation?', stream: 'TCP/UDP Proxy', @@ -2855,7 +2834,6 @@ const message = { 'Set the external listening port number, clients will access the service through this port, separated by commas, e.g., 5222,5223', streamHelper: 'TCP/UDP Port Forwarding and Load Balancing', udp: 'Enable UDP', - syncHtmlHelper: 'Sync to PHP and static websites', }, php: { @@ -2980,9 +2958,9 @@ const message = { 'In manual resolution mode, you need to click the apply button after creation to obtain the DNS resolution value', httpHelper: 'Using HTTP mode requires installing OpenResty and does not support applying for wildcard domain certificates.', - buypassHelper: `Buypass is not accessible in mainland China`, + buypassHelper: 'Buypass is not accessible in mainland China', googleHelper: 'How to get EAB HmacKey and EAB kid', - googleCloudHelper: `Google Cloud API is not accessible in most parts of mainland China`, + googleCloudHelper: 'Google Cloud API is not accessible in most parts of mainland China', skipDNSCheck: 'Skip DNS check', skipDNSCheckHelper: 'Check here only if you encounter a timeout issue during certification request.', cfHelper: 'Do not use Global API Key', @@ -3022,7 +3000,6 @@ const message = { argsCheck: 'GET parameter check', postCheck: 'POST parameter verification', cookieBlockList: 'Cookie blocklist', - dockerHelper: 'The current firewall cannot disable container port mapping. Installed applications can go to the [Installed] page to edit application parameters and configure port release rules.', iptablesHelper: @@ -3032,7 +3009,7 @@ const message = { unUsed: 'Unused', dockerRestart: 'Firewall operations require restarting the Docker service', firewallHelper: '{0} system firewall', - firewallNotStart: `The system firewall is not enabled at present. Enable it first.`, + firewallNotStart: 'The system firewall is not enabled at present. Enable it first.', restartFirewallHelper: 'This operation will restart the current firewall. Continue?', stopFirewallHelper: 'This will make the server lose security protection. Continue?', startFirewallHelper: 'After the firewall is enabled, the server security can be better protected. Continue?', @@ -3040,7 +3017,7 @@ const message = { enableBanPing: 'Block Ping', disableBanPing: 'Unblock Ping', noPingTitle: 'Disable ping', - noPingHelper: `This will disable ping, and the server won't echo ICMP response. Continue?`, + noPingHelper: "This will disable ping, and the server won't echo ICMP response. Continue?", onPingHelper: 'This will enable ping, and hackers may discover your server. Continue?', changeStrategy: 'Change the {0} strategy', changeStrategyIPHelper1: @@ -3057,7 +3034,6 @@ const message = { portHelper2: 'Range port, e.g. 8080-8089', changeStrategyHelper: 'Change [{1}] {0} strategy to [{2}]. After setting, {0} will access {2} externally. Continue?', - strategy: 'Strategy', accept: 'Accept', drop: 'Drop', @@ -3085,7 +3061,6 @@ const message = { exportHelper: 'About to export {0} firewall rules. Continue?', importSuccess: 'Successfully imported {0} rules', importPartialSuccess: 'Import completed: {0} succeeded, {1} failed', - ipv4Limit: 'The current operation only supports IPv4 addresses', basicStatus: 'Current chain {0} is unbound, please bind first!', baseIptables: 'iptables Service', @@ -3123,11 +3098,13 @@ const message = { workDir: 'Working directory', localHelper: 'For local environment installation and offline environment usage issues, see ', versionHelper: 'PHP version, e.g. v8.0', - buildHelper: `If more extensions are selected, the CPU usage will be higher during the image creation process. Avoid selecting all extensions.`, + buildHelper: + 'If more extensions are selected, the CPU usage will be higher during the image creation process. Avoid selecting all extensions.', openrestyWarn: 'PHP needs to be upgraded to OpenResty to version 1.21.4.1 or later to use', toupgrade: 'To Upgrade', edit: 'Edit runtime', - extendHelper: `If the extensions you need are not in the list, you can manually input the extension name. For example, input "sockets", then select the first one.`, + extendHelper: + 'If the extensions you need are not in the list, you can manually input the extension name. For example, input "sockets", then select the first one.', rebuildHelper: 'After editing the extension, you need to rebuild the PHP application to take effect', rebuild: 'Rebuild PHP App', source: 'PHP extension source', @@ -3158,7 +3135,7 @@ const message = { customScript: 'Custom startup command', customScriptHelper: 'Enter the complete startup command, for example: npm run start. For PM2 startup commands, please replace with pm2-runtime, otherwise it will fail to start.', - portError: `Don't repeat the same port.`, + portError: "Don't repeat the same port.", systemRestartHelper: 'Status description: Interruption - status acquisition failed due to system restart', javaScriptHelper: 'Provide a full startup command. For example, "java -jar halo.jar -Xmx1024M -Xms256M".', javaDirHelper: 'The directory must contain jar files, subdirectories are also acceptable', @@ -3239,7 +3216,7 @@ const message = { list: 'Daemon process', config: 'Supervisor configuration', primaryConfig: 'Main configuration file location', - notSupportCtl: `The supervisorctl is not detected, go to the script library page to install it manually`, + notSupportCtl: 'The supervisorctl is not detected, go to the script library page to install it manually', user: 'User', command: 'Command', dir: 'Directory', @@ -3248,7 +3225,7 @@ const message = { 'This will modify "files" value in "[include"] section in the main configuration file. The directory of other configuration file will be: "{1Panel installation directory}/1panel/tools/supervisord/supervisor.d/".', operatorHelper: 'Operation {1} will be performed on {0}, continue? ', uptime: 'Running time', - notStartWarn: `Supervisor is not started. Start it first.`, + notStartWarn: 'Supervisor is not started. Start it first.', serviceName: 'Service name', initHelper: 'Supervisor service is detected but not initialized. Click the initialization button in the top status bar to configure it.', @@ -3507,7 +3484,6 @@ const message = { 'Global Mode: Triggered when the total number of requests to any URL within a unit of time exceeds the threshold', uriModeHelper: 'URL Mode: Triggered when the number of requests to a single URL within a unit of time exceeds the threshold', - ip: 'IP BlackList', globalSettingHelper: 'Settings with the [Website] tag need to be enabled in [Website Settings], and global settings are only the default settings for newly created websites', @@ -3579,6 +3555,7 @@ const message = { importRuleHelper: 'One rule per line', }, monitor: { + '360': '360 Search', name: 'Website Monitoring', pv: 'Page Views', uv: 'Unique Visitors', @@ -3649,7 +3626,6 @@ const message = { statusErr: 'Invalid status code format', shenma: 'Shenma Search', duckduckgo: 'DuckDuckGo', - '360': '360 Search', excludeUri: 'Exclude URIs', top100Helper: 'Show the top 100 data', logSaveDay: 'Log Retention Period (days)', @@ -3758,7 +3734,6 @@ const message = { wafContent3: 'Create a custom page to display after a request is intercepted', wafTitle4: 'Custom Rules (ACL)', wafContent4: 'Intercept requests according to custom rules', - tamperTitle1: 'File Integrity Monitoring', tamperContent1: 'Monitor the integrity of website files, including core files, script files, and configuration files.', @@ -3770,7 +3745,6 @@ const message = { tamperTitle4: 'Logging and Analysis', tamperContent4: 'Record file access and operation logs for subsequent auditing and analysis by administrators, as well as to identify potential security threats.', - settingTitle1: 'Custom Welcome Message', settingContent1: 'Set a custom welcome message on the 1Panel login page.', settingTitle2: 'Custom Logo', @@ -3778,7 +3752,6 @@ const message = { settingTitle3: 'Custom Website Icon', settingContent3: 'Allow uploading custom icons to replace the default browser icon, improving user experience.', - monitorTitle1: 'Visitor Trend', monitorContent1: 'Statistics and displays website visitor trends', monitorTitle2: 'Visitor Map', @@ -3789,7 +3762,6 @@ const message = { monitorTitle4: 'Real-time monitoring', monitorContent4: 'Real-time monitoring of website request information, including number of requests, traffic, etc.', - alertTitle1: 'SMS Alerts', alertContent1: 'When abnormal server resource usage, website and certificate expiration, new version update, password expiration, etc. occur, users will be notified via SMS alarm to ensure timely processing.', @@ -3799,7 +3771,6 @@ const message = { alertTitle3: 'Alert Settings', alertContent3: 'Provide users with custom phone numbers, daily push frequency, and daily push time configurations, making it easier for users to set up more reasonable push alerts.', - nodeDashTitle1: 'Application Management', nodeDashContent1: 'Unified management of multi-node applications, supports status monitoring, quick start/stop, terminal connection, and backup', @@ -3812,7 +3783,6 @@ const message = { nodeDashTitle4: 'Scheduled Task Management', nodeDashContent4: 'Unified management of multi-node scheduled tasks, supports status monitoring, quick start/stop, and manual trigger execution', - nodeTitle1: 'One-Click Node Addition', nodeContent1: 'Quickly integrate multiple server nodes', nodeTitle2: 'Batch Upgrade', @@ -3821,7 +3791,6 @@ const message = { nodeContent3: "Real-time monitoring of each node's operational status", nodeTitle4: 'Quick Remote Connection', nodeContent4: 'One-click direct connection to node remote terminals', - fileExchangeTitle1: 'Key Authentication Transmission', fileExchangeContent1: 'Authenticate via SSH keys to ensure transmission security.', fileExchangeTitle2: 'Efficient File Synchronization', @@ -3830,10 +3799,8 @@ const message = { fileExchangeTitle3: 'Support Multi-Node Intercommunication', fileExchangeContent3: 'Easily transfer project files between different nodes, flexible management of multiple servers.', - nodeAppTitle1: 'Application Upgrade Management', nodeAppContent1: 'Unified monitoring of multi-node application updates, supports one-click upgrade', - appTitle1: 'Flexible Panel Management', appContent1: 'Easily manage your 1Panel server anytime, anywhere.', appTitle2: 'Comprehensive Service Information', @@ -3842,7 +3809,6 @@ const message = { appTitle3: 'Real-Time Abnormal Monitoring', appContent3: 'View real-time server status, WAF security monitoring, website traffic statistics, and process health status on the mobile app.', - clusterTitle1: 'Master-Slave Deployment', clusterContent1: 'Supports creating MySQL/Postgres/Redis master-slave instances on different nodes, automatically completing master-slave association and initialization', @@ -3910,7 +3876,6 @@ const message = { nodeSyncHelper: 'Node information synchronization will sync the following information:', nodeSyncHelper1: '1. Public backup account information', nodeSyncHelper2: '2. Connection information between the main node and sub-nodes', - nodeCheck: 'Availability check', checkSSH: 'Check node SSH connection', checkUserPermission: 'Check node user permissions', @@ -3931,7 +3896,6 @@ const message = { errLicense: 'The license bound to this node is unavailable. Please check and try again!', errNodePort: 'Node port [ {0} ] is detected as inaccessible. Please check if the firewall or security group has allowed this port.', - reinstallHelper: 'Reinstall node {0}, continue?', unhealthyCheck: 'Abnormal Check', fixOperation: 'Fix Operation', @@ -3956,7 +3920,6 @@ const message = { offline: 'Offline mode', freeCount: 'Free quota [{0}]', offlineHelper: 'Used when the node is in an offline environment', - appUpgrade: 'App Upgrade', appUpgradeHelper: 'There are {0} apps that need to be upgraded', }, @@ -4050,7 +4013,6 @@ const message = { specifiedTime: 'Specified Time', deleteTitle: 'Delete Alert', deleteMsg: 'Are you sure you want to delete the alert task?', - allSslTitle: 'All Website SSL Certificate Expiry Alerts', sslTitle: 'SSL Certificate Expiry Alert for Website {0}', allSiteEndTimeTitle: 'All Website Expiry Alerts', @@ -4062,19 +4024,16 @@ const message = { loadTitle: 'High Load Alert', diskTitle: 'High Disk Usage Alert for Mount Directory {0}', allDiskTitle: 'High Disk Usage Alert', - timeRule: 'Remaining time less than {0} days (if not handled, will resend the next day)', panelUpdateRule: 'Send an alert once when a new panel version is detected (if not handled, will resend the next day)', avgRule: 'Average {1} usage exceeds {2}% within {0} minutes, triggers alert, sends {3} times per day', diskRule: 'Disk usage for mount directory {0} exceeds {1}{2}, triggers alert, sends {3} times per day', allDiskRule: 'Disk usage exceeds {0}{1}, triggers alert, sends {2} times per day', - cpuName: ' CPU ', memoryName: 'Memory', loadName: 'Load', diskName: 'Disk', - syncAlertInfo: 'Manual Push', syncAlertInfoMsg: 'manually push the alert task?', pushError: 'Push Failed', diff --git a/frontend/src/lang/modules/es-es.ts b/frontend/src/lang/modules/es-es.ts index 1536efde5439..f1003862f7bb 100644 --- a/frontend/src/lang/modules/es-es.ts +++ b/frontend/src/lang/modules/es-es.ts @@ -86,6 +86,8 @@ const message = { show: 'Mostrar', hide: 'Ocultar', migrate: 'Migrar', + disConn: 'Desconectar', + visit: 'Visitar', }, operate: { start: 'Iniciar', @@ -189,6 +191,8 @@ const message = { errImportFormat: 'Los datos de importación o el formato son incorrectos, verifica y vuelve a intentarlo', importHelper: 'Si hay conflictos, los datos importados sobrescribirán los existentes.', errImport: 'El contenido del archivo es anormal:', + backupSuccess: 'Copia completada', + restoreSuccess: 'Restauración completada', }, login: { username: 'Usuario', @@ -294,7 +298,7 @@ const message = { commonError: 'La solicitud falló', }, service: { - serviceNotStarted: `El servicio {0} no está iniciado.`, + serviceNotStarted: 'El servicio {0} no está iniciado.', }, status: { running: 'En ejecución', @@ -408,6 +412,7 @@ const message = { app: 'Aplicación', msgCenter: 'Tareas', disk: 'Disco', + filter: 'Filtro', }, home: { recommend: 'Recomendado', @@ -475,6 +480,7 @@ const message = { memoPlaceholder: 'Haz clic en el botón de editar para habilitar la edición.', carouselSetting: 'Configuración del carrusel', tooltipSensitiveInfo: 'Mostrar/Ocultar información sensible', + alias: 'Alias', }, tabs: { more: 'Más', @@ -524,7 +530,6 @@ const message = { changePasswordHelper: 'La base de datos ha sido asociada a una aplicación. Cambiar la contraseña también cambiará la contraseña de la base de datos en la aplicación. El cambio se aplica después de reiniciar la aplicación.', recoverTimeoutHelper: '-1 significa sin límite de tiempo de espera', - confChange: 'Configuración', confNotFound: 'No se pudo encontrar el archivo de configuración. Por favor actualice la aplicación a la última versión en la tienda y vuelva a intentarlo.', @@ -561,7 +566,6 @@ const message = { hasCA: 'Posee certificado CA', skipVerify: 'Omitir la verificación de validez del certificado', initialDB: 'Base de Datos Inicial', - formatHelper: 'El conjunto de caracteres actual de la base de datos es {0}, la inconsistencia de conjuntos puede causar errores al recuperar', dropHelper: 'Puede arrastrar y soltar el archivo aquí o', @@ -658,7 +662,6 @@ const message = { rdbHelper2: 'piezas de datos', rdbHelper3: 'Cumplir cualquiera de las condiciones activará la persistencia RDB.', rdbInfo: 'Asegúrese de que el valor de la regla esté entre 1 y 100000', - containerConn: 'Conexión del contenedor', copyConnURL: 'Copiar URL de conexión', connAddress: 'Dirección', @@ -722,6 +725,7 @@ const message = { pairingCodeRequired: 'Please enter pairing code', pairingApproveSuccess: 'Pairing approved successfully', customProviderHelper: 'En el proveedor de modelo personalizado no se valida si la cuenta está disponible', + feishuSaveSuccess: 'Guardado en Feishu', }, model: { model: 'Modelo', @@ -770,7 +774,6 @@ const message = { memoryUsed: 'Memoria Utilizada', memoryTotal: 'Memoria Total', percent: 'Utilización', - base: 'Información Básica', driverVersion: 'Versión del Controlador', cudaVersion: 'Versión de CUDA', @@ -802,6 +805,7 @@ const message = { current: 'Monitoreo en Tiempo Real', history: 'Registros Históricos', notSupport: 'La versión actual o el controlador no admiten mostrar este parámetro.', + processCount: 'Procesos', }, mcp: { server: 'Servidor MCP', @@ -918,7 +922,6 @@ const message = { 'El motor de contenedores usa un valor base de 1024 para la proporción de CPU. Puede aumentarlo para darle al contenedor más tiempo de CPU.', inputIpv4: 'Ejemplo: 192.168.1.1', inputIpv6: 'Ejemplo: 2001:0db8:85a3:0000:0000:8a2e:0370:7334', - diskUsage: 'Uso del Disco', localVolume: 'Volumen de Almacenamiento Local', buildCache: 'Caché de Construcción', @@ -933,7 +936,6 @@ const message = { sizeRootFs: 'Tamaño Virtual', sizeRootFsHelper: 'Tamaño total de todas las capas de imagen de las que depende el contenedor + capa del contenedor', - containerFromAppHelper: 'Se detectó que este contenedor proviene de la tienda de aplicaciones. Las operaciones sobre la app pueden invalidar los cambios actuales.', containerFromAppHelper1: @@ -1073,7 +1075,6 @@ const message = { 'Si hay varios mirrors, deben estar en líneas separadas. Ejemplo:\nhttp://xxxxxx.m.daocloud.io\nhttps://xxxxxx.mirror.aliyuncs.com', registrieHelper: 'Si existen varios repositorios privados, deben estar en líneas separadas. Ejemplo:\n172.16.10.111:8081\n172.16.10.112:8081', - compose: 'Compose | Composes', composeFile: 'Archivo de Orquestación', fromChangeHelper: 'Cambiar la fuente limpiará el contenido actualmente editado. ¿Desea continuar?', @@ -1100,7 +1101,6 @@ const message = { 'Esto detendrá y eliminará todos los contenedores y redes bajo la composición {0}. ¿Desea continuar?', composeEnvHelper2: 'Esta orquestación fue creada por la Tienda de Aplicaciones 1Panel. Modifique las variables de entorno en las aplicaciones instaladas.', - setting: 'Configuración | Configuraciones', goSetting: 'Ir a editar', operatorStatusHelper: 'Esto "{0}" el servicio Docker. ¿Desea continuar?', @@ -1153,6 +1153,7 @@ const message = { ifPause: '¿Pausar el contenedor durante la creación?', ifMakeImageWithContainer: '¿Crear nueva imagen a partir de este contenedor?', finishTime: 'Hora de la última detención', + exportHelper: 'Exporta las imágenes seleccionadas en un solo archivo tar.', }, cronjob: { importHelper: @@ -1208,7 +1209,8 @@ const message = { directory: 'Directorio de respaldo', sourceDir: 'Directorio de respaldo', snapshot: 'Instantánea del sistema', - allOptionHelper: `El plan actual es respaldar todos los [{0}]. La descarga directa no está soportada por ahora. Puede consultar la lista de respaldos en el menú [{0}].`, + allOptionHelper: + 'El plan actual es respaldar todos los [{0}]. La descarga directa no está soportada por ahora. Puede consultar la lista de respaldos en el menú [{0}].', exclusionRules: 'Reglas de exclusión', exclusionRulesHelper: 'Seleccione o ingrese reglas de exclusión, presione Enter después de cada conjunto para continuar. Las reglas de exclusión se aplicarán a todas las operaciones de compresión en esta copia de seguridad', @@ -1270,7 +1272,6 @@ const message = { cutWebsiteLog: 'Rotación de logs del sitio', cutWebsiteLogHelper: 'Los archivos de log rotados se respaldarán en el directorio de respaldos de 1Panel.', syncIpGroup: 'Sincronizar grupos de IP de WAF', - requestExpirationTime: 'Tiempo de expiración de solicitud de subida (Horas)', unitHours: 'Unidad: Horas', alertTitle: 'Tarea programada - {0} 「{1}」 Alerta de fallo', @@ -1298,6 +1299,9 @@ const message = { syncHelper: 'Se va a sincronizar la librería de scripts del sistema. Solo afecta a los scripts del sistema. ¿Desea continuar?', }, + logHelper1: '1. Registro del sistema de 1Panel', + cleanLog: 'Limpieza automática de logs', + cleanLogscope: 'Retención de logs', }, monitor: { globalFilter: 'Filtro Global', @@ -1310,7 +1314,6 @@ const message = { defaultIOHelper: 'Opción de disco predeterminada mostrada en las interfaces de monitoreo y resumen', cleanMonitor: 'Limpiar Registros de Monitoreo', cleanHelper: 'Esta operación borrará todos los registros de monitoreo, incluidos los de GPU. ¿Continuar?', - avgLoad: 'Carga promedio', loadDetail: 'Detalle de carga', resourceUsage: 'Utilización', @@ -1440,6 +1443,7 @@ const message = { dnsCheck: 'Probar disponibilidad', dnsOK: '¡La configuración DNS es válida!', dnsTestFailed: 'La configuración DNS no es válida.', + syncSiteHelper: '¿Sincronizar la hora del sistema con {0}?', }, fail2ban: { sshPort: 'Puerto SSH', @@ -1784,6 +1788,7 @@ const message = { loginTime: 'Hora de inicio de sesión', loginIP: 'IP de inicio de sesión', stopSSHWarn: 'Indica si se debe desconectar esta conexión SSH', + remote: 'SSH remoto', }, setting: { panel: 'Panel', @@ -2220,7 +2225,6 @@ const message = { 'La versión del nodo no coincide con la del nodo principal. Actualiza en la gestión de nodos antes de reintentar.', versionCompare: 'Se detectó que el nodo {0} ya está en la última versión actualizable. Verifica la versión del nodo principal e inténtalo de nuevo.', - about: 'Acerca de', versionItem: 'Versión Actual', backupCopies: 'Copias de Respaldo', @@ -2252,6 +2256,8 @@ const message = { compressPassword: 'Contraseña de compresión', backupRecoverMessage: 'Introduce la contraseña de compresión o descompresión (déjalo en blanco para no establecerla)', + componentSize: 'Tamaño del componente', + recoverFailed: 'Error al restaurar la instantánea', }, license: { community: 'OSS', @@ -2303,6 +2309,7 @@ const message = { app: 'Pro permite ver información de servicio, monitoreo, etc. vía app móvil.', cluster: 'Actualizar a la Edición Profesional te permite gestionar clústeres maestro-esclavo de MySQL/Postgres/Redis.', + offLine: 'Sin conexión', }, clean: { scan: 'Iniciar escaneo', @@ -2330,7 +2337,6 @@ const message = { upgradeHelper: '(Mantenga el último respaldo para restaurar el sistema)', snapshot: 'Archivos temporales de instantáneas', rollback: 'Archivos de respaldo antes de recuperación', - backup: 'Copia de Seguridad del Sistema', backupHelper: 'Archivos de copia de seguridad no asociados con cuentas de copia de seguridad locales', unknownBackup: 'Copia de Seguridad del Sistema', @@ -2339,13 +2345,11 @@ const message = { unknownDatabase: 'Copia de Seguridad de Base de Datos no Asociada', unknownWebsite: 'Copia de Seguridad de Sitio Web no Asociada', unknownSnapshot: 'Copia de Seguridad de Instantánea no Asociada', - upload: 'Archivos temporales de carga', uploadHelper: 'Archivos temporales subidos en la lista de respaldos', download: 'Archivos temporales de descarga', downloadHelper: 'Archivos temporales descargados desde respaldos externos', directory: 'Directorio', - systemLog: 'Archivo de registro', systemLogHelper: 'Registros del sistema, registros de tareas, archivos de registro del sitio web', dockerLog: 'Archivos de registro de operaciones de contenedores', @@ -2353,12 +2357,10 @@ const message = { shell: 'Tareas programadas de script de shell', containerShell: 'Tareas programadas de script de shell ejecutadas dentro de contenedores', curl: 'Tareas programadas de CURL', - docker: 'Basura de contenedores', dockerHelper: 'Archivos como contenedores, imágenes, volúmenes, caché de construcción, etc.', volumes: 'Volúmenes', buildCache: 'Caché de build de contenedores', - appTmpDownload: 'Archivo de descarga temporal de la aplicación', unknownWebsiteLog: 'Archivo de respaldo de registro de sitio web no vinculado', }, @@ -2583,7 +2585,8 @@ const message = { deleteAppHelper: 'Eliminar también aplicaciones y backups asociados', deleteBackupHelper: 'Eliminar también copias de seguridad del sitio', deleteDatabaseHelper: 'También eliminar la base de datos asociada al sitio web', - deleteConfirmHelper: `Esta acción es irreversible. Escribe "{0}" para confirmar.`, + deleteConfirmHelper: + 'Esta acción es irreversible. Escribe "{0}" para confirmar.', staticPath: 'El directorio principal correspondiente es ', limit: 'Esquema', blog: 'Foro/Blog', @@ -2797,7 +2800,6 @@ const message = { failTimeout: 'Tiempo de espera de fallo', failTimeoutHelper: 'La duración de la ventana de tiempo para las comprobaciones de estado del servidor. Cuando el número acumulado de fallos alcanza el umbral dentro de este período, el servidor se eliminará temporalmente y se reintentará después de la misma duración. Por defecto 10 segundos', - staticChangePHPHelper: 'Actualmente es un sitio estático, puedes cambiarlo a PHP', proxyCache: 'Caché de proxy inverso', cacheLimit: 'Límite de espacio de caché', @@ -2822,7 +2824,6 @@ const message = { preflight: 'Respuesta rápida a solicitud de preflight', preflightHleper: 'Cuando está habilitado, cuando el navegador envía una solicitud de preflight de origen cruzado (solicitud OPTIONS), el sistema devolverá automáticamente un código de estado 204 y establecerá los encabezados de respuesta de origen cruzado necesarios', - changeDatabase: 'Cambiar base de datos', changeDatabaseHelper1: 'La asociación se usa en backups/restauraciones.', changeDatabaseHelper2: 'Cambiar de DB invalida backups previos.', @@ -2853,7 +2854,6 @@ const message = { execUser: 'Usuario de ejecución', execDir: 'Directorio de ejecución', packagist: 'Mirror China completo', - batchOperate: 'Operación en Lote', batchOperateHelper: 'Lote {0} sitios web, ¿continuar operación?', stream: 'Proxy TCP/UDP', @@ -2862,8 +2862,8 @@ const message = { 'Configura el número de puerto de escucha externo, los clientes accederán al servicio a través de este puerto, separado por comas, p. ej., 5222,5223', streamHelper: 'Reenvío de Puertos y Balanceo de Carga TCP/UDP', udp: 'Habilitar UDP', - syncHtmlHelper: 'Sincronizar con PHP y sitios web estáticos', + wafValueHelper: 'Valor', }, php: { short_open_tag: 'Soporte de etiquetas cortas', @@ -2892,6 +2892,7 @@ const message = { containerConfigHelper: 'Las variables de entorno y demás se pueden modificar en Configuración - Configuración del Contenedor después de la creación', dateTimezoneHelper: 'Ejemplo: TZ=America/Mexico_City (ajusta según necesites)', + extensionsHelper: 'Para varias extensiones, sepáralas con comas', }, nginx: { serverNamesHashBucketSizeHelper: 'Tamaño de la tabla hash para nombres de servidor', @@ -3029,7 +3030,7 @@ const message = { unUsed: 'No usado', dockerRestart: 'Las operaciones del firewall requieren reiniciar el servicio de Docker', firewallHelper: 'Firewall del sistema {0}', - firewallNotStart: `El firewall del sistema no está habilitado actualmente. Actívalo primero.`, + firewallNotStart: 'El firewall del sistema no está habilitado actualmente. Actívalo primero.', restartFirewallHelper: 'Esta operación reiniciará el firewall actual. ¿Deseas continuar?', stopFirewallHelper: 'Esto hará que el servidor pierda protección de seguridad. ¿Deseas continuar?', startFirewallHelper: @@ -3038,7 +3039,7 @@ const message = { enableBanPing: 'Bloquear Ping', disableBanPing: 'Desbloquear Ping', noPingTitle: 'Deshabilitar ping', - noPingHelper: `Esto deshabilitará el ping, y el servidor no responderá con eco ICMP. ¿Deseas continuar?`, + noPingHelper: 'Esto deshabilitará el ping, y el servidor no responderá con eco ICMP. ¿Deseas continuar?', onPingHelper: 'Esto habilitará el ping, y los atacantes podrían descubrir tu servidor. ¿Deseas continuar?', changeStrategy: 'Cambiar la estrategia de {0}', changeStrategyIPHelper1: @@ -3055,7 +3056,6 @@ const message = { portHelper2: 'Rango de puertos, ej. 8080-8089', changeStrategyHelper: 'Cambiar estrategia de {0} [{1}] a [{2}]. Después de configurarla, {0} tendrá acceso externo como {2}. ¿Deseas continuar?', - strategy: 'Estrategia', accept: 'Aceptar', drop: 'Rechazar', @@ -3082,7 +3082,6 @@ const message = { exportHelper: 'A punto de exportar {0} reglas de firewall. ¿Continuar?', importSuccess: 'Se importaron correctamente {0} reglas', importPartialSuccess: 'Importación completada: {0} correctas, {1} fallidas', - ipv4Limit: 'La operación actual solo admite direcciones IPv4', basicStatus: 'La cadena actual {0} no está vinculada, ¡vincule primero!', baseIptables: 'Servicio iptables', @@ -3115,17 +3114,22 @@ const message = { portHelper: '0 significa cualquier puerto', allPorts: 'Todos los Puertos', deleteRuleConfirm: 'Se eliminarán {0} reglas. ¿Continuar?', + advancedControl: 'Control avanzado', + advancedControlNotAvailable: 'Actualmente se usa el firewall {0}; las reglas avanzadas solo admiten iptables', + destination: 'Destino', }, runtime: { runtime: 'Runtime', workDir: 'Directorio de trabajo', localHelper: 'Para problemas de instalación en entorno local y uso en entorno sin conexión, consulte ', versionHelper: 'Versión de PHP, ej. v8.0', - buildHelper: `Si se seleccionan más extensiones, el uso de CPU será mayor durante el proceso de creación de la imagen. Evita seleccionar todas las extensiones.`, + buildHelper: + 'Si se seleccionan más extensiones, el uso de CPU será mayor durante el proceso de creación de la imagen. Evita seleccionar todas las extensiones.', openrestyWarn: 'PHP necesita actualizarse a OpenResty versión 1.21.4.1 o superior para poder usarse', toupgrade: 'Actualizar', edit: 'Editar runtime', - extendHelper: `Si las extensiones que necesitas no están en la lista, puedes introducir el nombre manualmente. Ejemplo: "sockets", luego selecciona la primera.`, + extendHelper: + 'Si las extensiones que necesitas no están en la lista, puedes introducir el nombre manualmente. Ejemplo: "sockets", luego selecciona la primera.', rebuildHelper: 'Tras editar la extensión, debes reconstruir la aplicación PHP para que surta efecto', rebuild: 'Reconstruir aplicación PHP', source: 'Origen de extensiones PHP', @@ -3240,7 +3244,8 @@ const message = { list: 'Procesos en segundo plano', config: 'Configuración de Supervisor', primaryConfig: 'Ubicación del archivo de configuración principal', - notSupportCtl: `No se detectó supervisorctl, ve a la página de librería de scripts para instalarlo manualmente`, + notSupportCtl: + 'No se detectó supervisorctl, ve a la página de librería de scripts para instalarlo manualmente', user: 'Usuario', command: 'Comando', dir: 'Directorio', @@ -3249,7 +3254,7 @@ const message = { 'Esto modificará el valor de "files" en la sección "[include]" del archivo de configuración principal. El directorio de otros archivos de configuración será: "{directorio de instalación de 1Panel}/1panel/tools/supervisord/supervisor.d/".', operatorHelper: 'La operación {1} se ejecutará en {0}, ¿quieres continuar?', uptime: 'Tiempo en ejecución', - notStartWarn: `Supervisor no está iniciado. Inícialo primero.`, + notStartWarn: 'Supervisor no está iniciado. Inícialo primero.', serviceName: 'Nombre del servicio', initHelper: 'El servicio Supervisor está detectado pero no inicializado. Haz clic en el botón de inicialización en la barra de estado superior para configurarlo.', @@ -3570,6 +3575,7 @@ const message = { importRuleHelper: 'Una regla por línea', }, monitor: { + '360': '360 Search', name: 'Monitorización Web', pv: 'Page Views (PV)', uv: 'Unique Visitors (UV)', @@ -3637,7 +3643,6 @@ const message = { statusErr: 'Formato de código de estado inválido', shenma: 'Shenma', duckduckgo: 'DuckDuckGo', - '360': '360 Search', excludeUri: 'Excluir URIs', top100Helper: 'Mostrar top 100', logSaveDay: 'Retención de logs (días)', @@ -3785,7 +3790,6 @@ const message = { alertTitle3: 'Configuración de Alertas', alertContent3: 'Permite configurar números de teléfono, frecuencia y horarios de notificación para alertas más personalizadas.', - nodeDashTitle1: 'Gestión de Aplicaciones', nodeDashContent1: 'Gestión unificada de aplicaciones multi-nodo, admite monitoreo de estado, inicio/parada rápida, conexión de terminal y copia de seguridad', @@ -3798,7 +3802,6 @@ const message = { nodeDashTitle4: 'Gestión de Tareas Programadas', nodeDashContent4: 'Gestión unificada de tareas programadas multi-nodo, admite monitoreo de estado, inicio/parada rápida y ejecución manual por activación', - nodeTitle1: 'Adición de Nodo en un Clic', nodeContent1: 'Integra rápidamente múltiples nodos de servidor', nodeTitle2: 'Actualización en Lote', @@ -3815,11 +3818,9 @@ const message = { fileExchangeTitle3: 'Intercomunicación Multi-Nodo', fileExchangeContent3: 'Permite transferir fácilmente archivos entre diferentes nodos y gestionar múltiples servidores de forma flexible.', - nodeAppTitle1: 'Gestión de Actualización de Aplicaciones', nodeAppContent1: 'Monitoreo unificado de actualizaciones de aplicaciones multi-nodo, admite actualización con un clic', - appTitle1: 'Gestión Flexible del Panel', appContent1: 'Gestiona tu servidor 1Panel en cualquier momento y lugar.', appTitle2: 'Información Completa de Servicios', @@ -3936,9 +3937,13 @@ const message = { offline: 'Modo Offline', freeCount: 'Cuota gratuita [{0}]', offlineHelper: 'Usado cuando el nodo está en un entorno sin conexión', - appUpgrade: 'Actualización de la aplicación', appUpgradeHelper: 'Hay {0} aplicaciones que necesitan ser actualizadas', + addPanel: 'Añadir panel', + addPanelHelper: 'Tras añadir el panel, podrás acceder rápidamente en [Resumen - Paneles].', + panel: 'Panel 1Panel', + others: 'Otros paneles', + operatePanelHelper: 'Los siguientes paneles ejecutarán {0}. ¿Continuar?', }, customApp: { name: 'Repositorio de Apps Personalizadas', diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts index 0a3fc33cc257..8f539a4c93d2 100644 --- a/frontend/src/lang/modules/ja.ts +++ b/frontend/src/lang/modules/ja.ts @@ -84,6 +84,10 @@ const message = { hide: '隠す', visit: '訪問', migrate: '移行', + prev: '前へ', + next: '次へ', + setDefault: 'デフォルトに戻す', + bind: 'バインド', }, operate: { start: '開始', @@ -133,6 +137,8 @@ const message = { manageGroup: 'グループ管理', backToList: 'リストに戻る', keepEdit: '編集を続ける', + default: 'デフォルト', + noRefresh: '自動更新なし', }, loadingText: { Upgrading: 'システムのアップグレード、待ってください...', @@ -142,14 +148,14 @@ const message = { }, msg: { noneData: '利用可能なデータはありません', - delete: `この操作削除は元に戻すことはできません。続けたいですか?`, - clean: `この操作は取り消すことはできません。続けたいですか?`, + delete: 'この操作削除は元に戻すことはできません。続けたいですか?', + clean: 'この操作は取り消すことはできません。続けたいですか?', closeDrawerHelper: 'システムは変更を保存しない可能性があります。続行しますか?', deleteSuccess: '正常に削除されました', loginSuccess: '正常にログインしました', operationSuccess: '正常に完了', copySuccess: '正常にコピーされました', - notSupportOperation: `この操作はサポートされていません`, + notSupportOperation: 'この操作はサポートされていません', requestTimeout: 'リクエストがタイムアウトしました。後でもう一度やり直してください', infoTitle: 'ヒント', notRecords: '現在のタスクの実行レコードは生成されません', @@ -160,14 +166,15 @@ const message = { operateConfirm: '操作について確信している場合は、手動で入力してください。', inputOrSelect: '選択または入力してください', copyFailed: 'コピーに失敗しました', - operatorHelper: `操作「{1}」は「{0}」で実行され、元に戻すことはできません。続けたいですか?`, + operatorHelper: '操作「{1}」は「{0}」で実行され、元に戻すことはできません。続けたいですか?', notFound: '申し訳ありませんが、要求したページは存在しません。', - unSupportType: `現在のファイルタイプはサポートされていません。`, + unSupportType: '現在のファイルタイプはサポートされていません。', unSupportSize: 'アップロードされたファイルは{0} mを超えています、確認してください!', - fileExist: `ファイルはすでに現在のフォルダーに存在しています。リピートアップロードはサポートされていません。`, + fileExist: + 'ファイルはすでに現在のフォルダーに存在しています。リピートアップロードはサポートされていません。', fileNameErr: '名前には、英語、中国語、数字、または期間を含む1〜256文字が含まれるファイルのみをアップロードできます(。-_)', - confirmNoNull: `値{0}が空でないことを確認してください。`, + confirmNoNull: '値{0}が空でないことを確認してください。', errPort: 'ポート情報が正しくありません、確認してください!', remove: '取り除く', backupHelper: '現在の操作は{0}をバックアップします。先に進みたいですか?', @@ -181,6 +188,10 @@ const message = { importHelper: '競合または重複するデータをインポートする場合、インポートされた内容を基準として元のデータベースデータを更新します。', errImport: 'ファイル内容が異常です:', + backupSuccess: 'バックアップ成功', + restoreSuccess: '復元成功', + installSuccess: 'インストール成功', + uninstallSuccess: 'アンインストール成功', }, login: { username: 'ユーザー名', @@ -218,13 +229,15 @@ const message = { requiredInput: 'この項目は必須です。', requiredSelect: 'リスト内のアイテムを選択します', illegalChar: '現在、文字 & ; $ \' ` ( ) " > < | の注入はサポートされていません', - illegalInput: `このフィールドには違法なキャラクターが含まれてはなりません。`, + illegalInput: 'このフィールドには違法なキャラクターが含まれてはなりません。', commonName: 'このフィールドは、特別なキャラクターではなく、英語、中国語、数字で構成されている必要があります。「。」、「」、および「_」文字が1〜128の文字で構成されている必要があります。', userName: '特殊文字で始まらない、英字、漢字、数字、および_をサポート、長さ3-30', - simpleName: `このフィールドは、アンダースコアキャラクターから始めてはなりません。長さ3〜30の英語、数字、「_」文字で構成されている必要があります。`, - simplePassword: `このフィールドは、アンダースコアキャラクターから始めてはなりません。長さ1〜30の英語、数字、「_」文字で構成されている必要があります。`, - dbName: `このフィールドは、アンダースコアキャラクターから始めてはなりません。長さ1〜64の英語、数字、「_」文字で構成されている必要があります。`, + simpleName: + 'このフィールドは、アンダースコアキャラクターから始めてはなりません。長さ3〜30の英語、数字、「_」文字で構成されている必要があります。', + simplePassword: + 'このフィールドは、アンダースコアキャラクターから始めてはなりません。長さ1〜30の英語、数字、「_」文字で構成されている必要があります。', + dbName: 'このフィールドは、アンダースコアキャラクターから始めてはなりません。長さ1〜64の英語、数字、「_」文字で構成されている必要があります。', imageName: '特殊文字で始まらない、英字、数字、:@/.-_をサポート、長さ1-256', composeName: '最初の特別な文字、小文字、数字、_、長さ1-256をサポートします', volumeName: @@ -234,7 +247,8 @@ const message = { complexityPassword: 'このフィールドは、英語で構成され、長さは8〜30で、少なくとも2つの特殊文字が含まれている必要があります。', commonPassword: 'このフィールドの長さは6を超える必要があります。', - linuxName: `このフィールドの長さは1〜128でなければなりません。フィールドには、これらの特殊文字を含めてはなりません。「{0}」。`, + linuxName: + 'このフィールドの長さは1〜128でなければなりません。フィールドには、これらの特殊文字を含めてはなりません。「{0}」。', email: 'このフィールドは有効な電子メールアドレスでなければなりません。', number: 'このフィールドは数字でなければなりません。', integer: 'このフィールドは正の整数でなければなりません。', @@ -248,11 +262,13 @@ const message = { ipErr: 'このフィールドは有効なIPアドレスでなければなりません。', numberRange: 'このフィールドは、{0}と{1}の間の数字でなければなりません。', paramName: 'このフィールドは、英語、数字、「。」、「 - 」、および「_」文字で構成されている必要があります。', - paramComplexity: `このフィールドは、特殊文字で開始および終了する必要はなく、英語、数字「{0}」文字で構成されている必要があります。`, + paramComplexity: + 'このフィールドは、特殊文字で開始および終了する必要はなく、英語、数字「{0}」文字で構成されている必要があります。', paramUrlAndPort: 'このフィールドは、「http(s)://(domain name/ip):(ポート)」の形式でなければなりません。', nginxDoc: 'このフィールドは、英語、数字、「」で構成されている必要があります。文字。', - appName: `このフィールドは、「 - 」と「_」文字で開始および終了してはなりません。英語、数字、 "、および「_」文字で2〜30の文字で構成されている必要があります。`, + appName: + 'このフィールドは、「 - 」と「_」文字で開始および終了してはなりません。英語、数字、 "、および「_」文字で2〜30の文字で構成されている必要があります。', containerName: '文字、数字、 - 、_および。;- _または。で始めることはできません。長さ:2-128', mirror: 'ミラーアクセラレーションアドレスは、http(s)://、英語の文字(大文字と小文字の両方)、数字をサポートする必要があります。/および - 、そして空白の行を含めてはなりません。', disableFunction: 'サポートレター、アンダースコア、および', @@ -276,7 +292,7 @@ const message = { commonError: 'リクエストに失敗しました', }, service: { - serviceNotStarted: `{0}サービスは開始されません。`, + serviceNotStarted: '{0}サービスは開始されません。', }, status: { running: 'ランニング', @@ -338,6 +354,7 @@ const message = { conflict: '競合', duplicate: '重複', unexecuted: '未実行', + unused: '未使用', }, units: { second: '2番目|2番目|秒', @@ -391,6 +408,7 @@ const message = { app: 'アプリケーション', msgCenter: 'タスク', disk: 'ディスク', + filter: 'フィルター', }, home: { recommend: 'おすすめ', @@ -424,12 +442,10 @@ const message = { runningTime: '稼働時間', mem: 'システムメモリ', swapMem: 'パーティションを交換します', - runSmoothly: '低負荷', runNormal: '中程度の負荷', runSlowly: '高負荷', runJam: '重い負荷', - core: '物理コア', logicCore: '論理コア', corePercent: 'コア使用率', @@ -455,7 +471,6 @@ const message = { available: '利用可能', percent: '利用', goInstall: 'インストールします', - networkCard: 'ネットワークカード', disk: 'ディスク', memo: 'メモ', @@ -511,17 +526,15 @@ const message = { changePasswordHelper: 'データベースはアプリケーションに関連付けられています。パスワードを変更すると、アプリケーションのデータベースパスワードが同時に変更されます。アプリケーションが再起動した後、変更は有効になります。', recoverTimeoutHelper: '-1 はタイムアウト制限なしを意味します', - confChange: '構成', confNotFound: '設定ファイルが見つかりませんでした。アプリストアでアプリケーションを最新バージョンにアップグレードして、再度お試しください!', - portHelper: 'このポートは、コンテナの露出したポートです。変更を個別に保存して、コンテナを再起動する必要があります!', - loadFromRemote: '同期', userBind: 'バインドユーザー', - pgBindHelper: `この操作は、新しいユーザーを作成し、ターゲットデータベースにバインドするために使用されます。現在、データベースに既存のユーザーを選択することはサポートされていません。`, + pgBindHelper: + 'この操作は、新しいユーザーを作成し、ターゲットデータベースにバインドするために使用されます。現在、データベースに既存のユーザーを選択することはサポートされていません。', pgSuperUser: 'スーパーユーザー', loadFromRemoteHelper: 'これにより、サーバー上のデータベース情報が1パネルに同期します。続けたいですか?', passwordHelper: '取得できません、クリックして修正', @@ -547,13 +560,11 @@ const message = { hasCA: 'CA証明書があります', skipVerify: '証明書の有効性チェックを無視します', initialDB: '初期データベース', - formatHelper: '現在のデータベース文字セットは{0}です。文字セットの矛盾は回復の故障を引き起こす可能性があります', dropHelper: 'ここでアップロードされたファイルをドラッグアンドドロップするか、', clickHelper: 'クリックしてアップロードします', supportUpType: 'sql、sql.gz、tar.gz、.zip ファイル形式のみサポートしています。インポートする圧縮ファイルには、1つの.sqlファイルのみ、またはtest.sqlが含まれている必要があります', - currentStatus: '現在の状態', baseParam: '基本パラメーター', performanceParam: 'パフォーマンスパラメーター', @@ -578,15 +589,14 @@ const message = { openTables: 'テーブルを開きます', openTablesHelper: '「table_open_cache」の構成値は、この値以上に等しくなければなりません。', selectFullJoin: '完全な結合を選択します', - selectFullJoinHelper: `値が0でない場合は、データテーブルのインデックスが正しいかどうかを確認します。`, + selectFullJoinHelper: '値が0でない場合は、データテーブルのインデックスが正しいかどうかを確認します。', selectRangeCheck: 'インデックスなしの結合の数', - selectRangeCheckHelper: `値が0でない場合は、データテーブルのインデックスが正しいかどうかを確認します。`, + selectRangeCheckHelper: '値が0でない場合は、データテーブルのインデックスが正しいかどうかを確認します。', sortMergePasses: 'ソートされたマージの数', sortMergePassesHelper: '値が大きすぎる場合は、「sort_buffer_size」を増やします。', tableLocksWaited: 'テーブル番号をロックします', tableLocksWaitedHelper: '値が大きすぎる場合は、データベースのパフォーマンスを向上させることを検討してください。', - performanceTuning: 'パフォーマンスチューニング', optimizationScheme: '最適化スキーム', keyBufferSizeHelper: 'インデックスのバッファサイズ', @@ -604,14 +614,11 @@ const message = { tableOpenCacheHelper: 'テーブルキャッシュ', maxConnectionsHelper: 'マックス接続', restart: '再起動', - slowLog: '遅いログ', noData: 'まだ遅いログはありません。', - isOn: 'の上', longQueryTime: 'しきい値', thresholdRangeHelper: '正しいしきい値(1-600)を入力してください。', - timeout: 'タイムアウト(s)', timeoutHelper: 'アイドル接続タイムアウト期間。0は、接続が継続的にオンになっていることを示します。', maxclients: 'マックスクライアント', @@ -634,24 +641,21 @@ const message = { keyspaceMisses: 'データベースキーを見つけようとする試みの失敗の数。', hit: 'データベースキーヒット率を見つけます。', latestForkUsec: '最後のfork()操作に費やされたマイクロ秒数。', - redisCliHelper: `「Redis-Cli」サービスは検出されません。最初にサービスを有効にします。`, + redisCliHelper: '「Redis-Cli」サービスは検出されません。最初にサービスを有効にします。', redisQuickCmd: 'Redis Quickコマンド', recoverHelper: 'これにより、[{0}]でデータが上書きされます。続けたいですか?', submitIt: 'データを上書きします', - baseConf: '基本', allConf: '全て', restartNow: '今すぐ再起動します', restartNowHelper1: '構成の変更が有効になった後、システムを再起動する必要があります。データを持続する必要がある場合は、最初に保存操作を実行します。', restartNowHelper: 'これは、システムが再起動した後にのみ有効になります。', - persistence: '持続性', rdbHelper1: '2番目、挿入', rdbHelper2: 'データの部分', rdbHelper3: '条件のいずれかを満たすと、RDBの持続性がトリガーされます。', rdbInfo: 'ルールリストの値が1〜100000の範囲であることを確認してください', - containerConn: 'コンテナ接続', copyConnURL: '接続 URL をコピー', connAddress: '住所', @@ -714,6 +718,7 @@ const message = { pairingCodeRequired: 'Please enter pairing code', pairingApproveSuccess: 'Pairing approved successfully', customProviderHelper: 'カスタムモデルプロバイダーでは、アカウントの有効性を検証しません', + feishuSaveSuccess: 'Feishuに保存済み', }, model: { model: 'モデル', @@ -761,7 +766,6 @@ const message = { memoryUsed: '使用メモリ', memoryTotal: '総メモリ', percent: '使用率', - base: '基本情報', driverVersion: 'ドライバーバージョン', cudaVersion: 'CUDA バージョン', @@ -791,6 +795,7 @@ const message = { current: 'リアルタイム監視', history: '履歴記録', notSupport: '現在のバージョンまたはドライバーはこのパラメータの表示をサポートしていません。', + processCount: 'プロセス数', }, mcp: { server: 'MCP サーバー', @@ -901,7 +906,6 @@ const message = { 'コンテナエンジンは、CPU株に1024の基本値を使用します。それを増やして、コンテナにCPU時間を増やすことができます。', inputIpv4: '例:192.168.1.1', inputIpv6: '例:2001:0DB8:85A3:0000:0000:8A2E:0370:7334', - diskUsage: 'ディスク使用量', localVolume: 'ローカルストレージボリューム', buildCache: 'ビルドキャッシュ', @@ -915,7 +919,6 @@ const message = { sizeRwHelper: 'コンテナ固有の書き込み可能レイヤーのサイズ', sizeRootFs: '仮想サイズ', sizeRootFsHelper: 'コンテナが依存するすべてのイメージレイヤー + コンテナレイヤーの合計サイズ', - containerFromAppHelper: 'このコンテナがアプリストアから取得されたことが検出されました。アプリの操作により、現在の編集が無効になる可能性があります。', containerFromAppHelper1: @@ -931,7 +934,6 @@ const message = { 'コンテナがホストに特定の特権操作を実行できるようにします。これにより、コンテナのリスクが増加する可能性があります。注意して使用してください!', editComposeHelper: '注意:環境変数は1panel.envファイルに保存され、composeでenv_fileを介して参照する必要があります。\n変数はコンテナ内部でのみ有効であり、composeファイルの${VAR}置換には参加しません。', - upgradeHelper: 'リポジトリ名/画像名:画像バージョン', upgradeWarning2: 'アップグレード操作では、コンテナを再構築する必要があります。続けたいですか?', oldImage: '現在の画像', @@ -954,7 +956,7 @@ const message = { autoRemove: '自動削除', cpuQuota: 'CPUコアの数', memoryLimit: 'メモリ', - limitHelper: `0に設定すると、制限がないことを意味します。最大値は{0}です`, + limitHelper: '0に設定すると、制限がないことを意味します。最大値は{0}です', mount: 'マウント', volumeOption: '音量', hostOption: 'ホスト', @@ -984,10 +986,8 @@ const message = { unlessStopped: '止まらない限り', onFailure: 'オンフェイル(デフォルトで5回)', no: '一度もない', - refreshTime: '間隔を更新します', cache: 'キャッシュ', - image: '画像|画像', imagePull: '引く', imagePullHelper: '複数のイメージの選択をサポートし、各イメージ入力後にEnterキーを押して続行します', @@ -1015,9 +1015,9 @@ const message = { tagHelper: '1行に1つ。たとえば、 nkey1 = value1 nkey2 = value2', imageNameHelper: '画像名とタグ、例:nginx:最新', cleanBuildCache: 'クリーンビルドキャッシュ', - delBuildCacheHelper: `これにより、ビルド中に生成され、元に戻すことができないすべてのキャッシュされたアーティファクトが削除されます。続けたいですか?`, + delBuildCacheHelper: + 'これにより、ビルド中に生成され、元に戻すことができないすべてのキャッシュされたアーティファクトが削除されます。続けたいですか?', urlWarning: 'URLプレフィックスには、http://またはhttps://を含める必要はありません。変更してください。', - network: 'ネットワーク|ネットワーク', networkHelper: 'これにより、一部のアプリケーションとランタイム環境が適切に機能しない場合があります。続けたいですか?', @@ -1030,7 +1030,6 @@ const message = { scope: 'IPスコープ', gateway: 'ゲートウェイ', auxAddress: 'IPを除外します', - volume: 'ボリューム|ボリューム', volumeDir: 'ボリュームディレクトリ', nfsEnable: 'NFSストレージを有効にします', @@ -1038,7 +1037,6 @@ const message = { mountpoint: 'マウントポイント', mountpointNFSHelper: '例えば/nfs、 /nfs-sh', options: 'オプション', - repo: 'レジストリ', httpRepoHelper: 'HTTPタイプのリポジトリを操作するにはDockerサービスの再起動が必要です。', httpRepo: @@ -1052,7 +1050,6 @@ const message = { mirrorHelper: '複数のミラーがある場合、たとえばnewlinesを表示する必要があります:Nhttp://xxxxxxMDaocloudIo Nhttps://xxxxxxMirrorAliyuncsCom', registrieHelper: '複数のプライベートリポジトリが存在する場合、たとえばnewlinesを表示する必要があります。', - compose: '構成|作曲', composeFile: 'オーケストレーションファイル', fromChangeHelper: 'ソースを切り替えると、現在の編集されたコンテンツがきれいになります。続けたいですか?', @@ -1078,7 +1075,6 @@ const message = { 'これにより、{0}構成の下のすべてのコンテナとネットワークが停止して削除されます。続けたいですか?', composeEnvHelper2: 'このオーケストレーションは1Panelアプリストアで作成されました。インストール済みアプリケーションで環境変数を変更してください。', - setting: '設定|設定', operatorStatusHelper: 'これは「{0}」Dockerサービスになります。続けたいですか?', dockerStatus: 'Dockerサービス', @@ -1106,7 +1102,7 @@ const message = { iptablesHelper1: 'DockerのiPtablesルールの自動構成。', iptablesHelper2: 'IPTABLEを無効にすると、コンテナが外部ネットワークと通信できなくなります。', daemonJsonPath: 'conf path', - serviceUnavailable: `現在、Dockerサービスは開始されていません。`, + serviceUnavailable: '現在、Dockerサービスは開始されていません。', startIn: '開始する', sockPath: 'UNIXドメインソケット', sockPathHelper: 'Dockerデーモンとクライアントの間のコミュニケーションチャネル。', @@ -1117,12 +1113,10 @@ const message = { related: '関連している', includeAppstore: 'アプリストアから取得したコンテナを表示', excludeAppstore: 'アプリストアコンテナを隠す', - cleanDockerDiskZone: 'Dockerが使用するディスクスペースをクリーンアップします', cleanImagesHelper: '(コンテナで使用されていないすべての画像をクリーンアップ)', cleanContainersHelper: '(停止したすべての容器をクリーンアップ)', cleanVolumesHelper: '(未使用のすべてのローカルボリュームをクリーンアップ)', - makeImage: '画像を作成します', newImageName: '新しい画像名', commitMessage: 'メッセージをコミットします', @@ -1130,6 +1124,12 @@ const message = { ifPause: '作成中にコンテナを一時停止します', ifMakeImageWithContainer: 'このコンテナから新しい画像を作成しますか?', finishTime: '前回の停止時間', + workingDir: '作業ディレクトリ', + resource: 'リソース', + macAddr: 'MACアドレス', + exportHelper: '選択したイメージを1つのtarにエクスポートします。', + goSetting: '編集へ', + mirrorsHelper: '', }, cronjob: { importHelper: @@ -1235,7 +1235,6 @@ const message = { cutWebsiteLog: 'ウェブサイトのログローテーション', cutWebsiteLogHelper: '回転したログファイルは、1パネルのバックアップディレクトリにバックアップされます。', syncIpGroup: 'WAF IP グループを同期', - requestExpirationTime: 'リクエストの有効期限(時間)のアップロード', unitHours: 'ユニット:時間', alertTitle: '計画タスク - {0}「{1}」タスク障害アラート', @@ -1259,7 +1258,23 @@ const message = { '{0} サービスが検出されませんでした。スクリプトライブラリを使って素早くインストールしてください!', syncHelper: 'システムスクリプトライブラリを同期します。この操作はシステムスクリプトのみ影響します。続行しますか?', + remoteLibrary: 'リモートスクリプトライブラリ', }, + nextTime: '次の5回の実行', + logHelper1: '1. 1Panel システムログ', + backupContent: 'バックアップ内容', + cronSpecRule2: '実行周期の形式が不正です。確認して再試行してください。', + perMonthHelper: '毎月 {0} 日 {1}:{2} に実行', + perWeekHelper: '毎週 {0} {1}:{2} に実行', + perDayHelper: '毎日 {0}:{1} に実行', + perHourHelper: '毎時 {0} 分に実行', + perNDayHelper: '毎 {0} 日 {1}:{2} に実行', + perNHourHelper: '毎 {0} 時間 {1} に実行', + perNMinuteHelper: '毎 {0} 分に実行', + perNSecondHelper: '毎 {0} 秒に実行', + executor: '実行者', + cleanLog: 'ログ自動削除', + cleanLogscope: 'ログ保持', }, monitor: { globalFilter: 'グローバルフィルター', @@ -1271,7 +1286,6 @@ const message = { defaultIOHelper: '監視および概要インターフェースに表示されるデフォルトのディスクオプション', cleanMonitor: '監視記録をクリア', cleanHelper: 'この操作により、GPUを含むすべての監視記録がクリアされます。続行しますか?', - avgLoad: 'ロード平均', loadDetail: '詳細を読み込みます', resourceUsage: '利用', @@ -1388,25 +1402,30 @@ const message = { timeZone: 'タイムゾーン', localTime: 'サーバー時間', timeZoneChangeHelper: 'システムタイムゾーンを変更するには、サービスを再起動する必要があります。続く?', - timeZoneHelper: `「TimeDatectl」コマンドをインストールしない場合、タイムゾーンを変更することはできません。システムはそのコマンドを使用してタイムゾーンを変更するためです。`, + timeZoneHelper: + '「TimeDatectl」コマンドをインストールしない場合、タイムゾーンを変更することはできません。システムはそのコマンドを使用してタイムゾーンを変更するためです。', timeZoneCN: '北京', timeZoneAM: 'ロサンゼルス', timeZoneNY: 'ニューヨーク', ntpALi: 'アリババ', ntpGoogle: 'グーグル', syncSite: 'NTPサーバー', - hostnameHelper: `ホスト名の変更は、「hostnamectl」コマンドに依存します。コマンドがインストールされていない場合、変更が失敗する可能性があります。`, - userHelper: `ユーザー名は、取得の「whoami」コマンドに依存します。コマンドがインストールされていない場合、検索が失敗する可能性があります。`, - passwordHelper: `パスワードの変更は、「chpasswd」コマンドに依存します。コマンドがインストールされていない場合、変更が失敗する可能性があります。`, + hostnameHelper: + 'ホスト名の変更は、「hostnamectl」コマンドに依存します。コマンドがインストールされていない場合、変更が失敗する可能性があります。', + userHelper: + 'ユーザー名は、取得の「whoami」コマンドに依存します。コマンドがインストールされていない場合、検索が失敗する可能性があります。', + passwordHelper: + 'パスワードの変更は、「chpasswd」コマンドに依存します。コマンドがインストールされていない場合、変更が失敗する可能性があります。', hostHelper: '提供されたコンテンツには空の値があります。変更後に確認して再試行してください!', dnsCheck: 'テストの可用性', dnsOK: 'DNS構成情報が利用可能です!', - dnsTestFailed: `DNS構成情報は利用できません。`, + dnsTestFailed: 'DNS構成情報は利用できません。', + syncSiteHelper: 'システム時刻を {0} と同期しますか?', }, fail2ban: { sshPort: 'SSHポートを聞いてください', sshPortHelper: '現在のFAL2BANは、ホストのSSH接続ポートに耳を傾けます', - unActive: `現在、Fail2Banサービスは有効になっていません。`, + unActive: '現在、Fail2Banサービスは有効になっていません。', operation: 'fail2banサービスで操作「{0}」を実行します。続けたいですか?', fail2banChange: 'fail2ban構成の変更', ignoreHelper: 'AllowListのIPリストは、ブロックについて無視されます。続けたいですか?', @@ -1520,6 +1539,9 @@ const message = { websiteLog: 'ウェブサイトログ', runLog: 'ログを実行します', errLog: 'エラーログ', + task: 'タスクログ', + taskName: 'タスク名', + taskRunning: '実行中', }, file: { fileDirNum: '{0} 個のディレクトリ、{1} 個のファイル、', @@ -1606,7 +1628,7 @@ const message = { currentSelect: '現在の選択:', unsupportedType: 'サポートされていないファイルタイプ', deleteHelper: '次のファイルを削除したいですか?デフォルトでは、削除後にリサイクルビンに入ります', - fileHelper: `注意:1. 検索結果は並べ替え機能をサポートしていません 2. フォルダはサイズで並べ替えできません。`, + fileHelper: '注意:1. 検索結果は並べ替え機能をサポートしていません 2. フォルダはサイズで並べ替えできません。', forceDeleteHelper: 'ファイルを永久に削除します(リサイクルビンを入力せずに、直接削除します)', recycleBin: 'ビンをリサイクルします', sourcePath: 'オリジナルパス', @@ -1633,7 +1655,7 @@ const message = { '不安定なサーバー接続を可能にすると、データが漏れたり改ざんしたりする可能性があります。ダウンロードソースを信頼する場合にのみ、このオプションを使用します。', uploadOverLimit: 'ファイルの数は1000を超えています!圧縮してアップロードしてください', clashDidNotSupport: 'ファイル名は、.1panel_clashを含むことを禁止されています', - clashDeleteAlert: `「リサイクルビン」フォルダーを削除することはできません`, + clashDeleteAlert: '「リサイクルビン」フォルダーを削除することはできません', clashOpenAlert: '「リサイクルビン」ボタンをクリックして、リサイクルビンディレクトリを開きます', right: 'フォワード', back: '戻る', @@ -1652,7 +1674,7 @@ const message = { previewTruncated: 'ファイルが大きすぎるため、末尾の内容のみ表示しています', previewEmpty: 'ファイルが空であるか、テキストファイルではありません', previewLargeFile: 'プレビュー', - panelInstallDir: `1Panelインストールディレクトリは削除できません`, + panelInstallDir: '1Panelインストールディレクトリは削除できません', wgetTask: 'ダウンロードタスク', existFileTitle: '同名ファイルの警告', existFileHelper: 'アップロードしたファイルに同じ名前のファイルが含まれています。上書きしますか?', @@ -1745,6 +1767,7 @@ const message = { loginTime: 'ログイン時間', loginIP: 'ログインIP', stopSSHWarn: 'このSSH接続を切断するかどうか', + remote: 'リモートSSH', }, setting: { panel: 'パネル', @@ -1819,8 +1842,10 @@ const message = { apiInterface: 'APIを有効にします', apiInterfaceClose: '閉じたら、APIインターフェイスにアクセスできません。続けたいですか?', apiInterfaceHelper: 'サードパーティのアプリケーションにAPIにアクセスできるようにします。', - apiInterfaceAlert1: `サーバーのセキュリティリスクが増加する可能性があるため、生産環境で有効にしないでください。`, - apiInterfaceAlert2: `サードパーティのアプリケーションを使用してAPIを呼び出して、潜在的なセキュリティの脅威を防止しないでください。`, + apiInterfaceAlert1: + 'サーバーのセキュリティリスクが増加する可能性があるため、生産環境で有効にしないでください。', + apiInterfaceAlert2: + 'サードパーティのアプリケーションを使用してAPIを呼び出して、潜在的なセキュリティの脅威を防止しないでください。', apiInterfaceAlert3: 'APIドキュメント', apiInterfaceAlert4: '使用ドキュメント', apiKey: 'APIキー', @@ -1836,7 +1861,7 @@ const message = { restartLater: '後で手動で再起動', systemIPWarning: '現在のノードにはデフォルトアクセスアドレスが設定されていません。パネル設定から設定してください!', - systemIPWarning1: `現在のサーバーアドレスは{0}に設定されており、クイックリダイレクトは不可能です!`, + systemIPWarning1: '現在のサーバーアドレスは{0}に設定されており、クイックリダイレクトは不可能です!', defaultNetwork: 'ネットワークカード', syncTime: 'サーバー時間', timeZone: 'タイムゾーン', @@ -1858,7 +1883,8 @@ const message = { duplicatePassword: '新しいパスワードは元のパスワードと同じになることはできません。再入力してください!', diskClean: 'キャッシュクリーン', developerMode: 'プレビュープログラム', - developerModeHelper: `それらが広くリリースされる前に、新しい機能と修正を体験し、早期のフィードバックを提供できます。`, + developerModeHelper: + 'それらが広くリリースされる前に、新しい機能と修正を体験し、早期のフィードバックを提供できます。', thirdParty: 'サードパーティのアカウント', noTypeForCreate: '現在、バックアップタイプは作成されていません', LOCAL: 'サーバーディスク', @@ -1934,7 +1960,6 @@ const message = { accountKey: 'アカウントキー', address: '住所', path: 'パス', - safe: '安全', passkey: 'パスキー', passkeyManage: '管理', @@ -1991,7 +2016,8 @@ const message = { timeoutHelper: '[{0}日]パネルパスワードの有効期限が切れようとしています。有効期限が切れた後、パスワードをリセットする必要があります', complexity: '複雑さの検証', - complexityHelper: `有効にした後、パスワード検証ルールは次のとおりです。英語、数字、少なくとも2つの特殊文字を含む8〜30文字です。`, + complexityHelper: + '有効にした後、パスワード検証ルールは次のとおりです。英語、数字、少なくとも2つの特殊文字を含む8〜30文字です。', bindDomain: 'バインドドメイン', unBindDomain: 'バインドドメイン', panelSSL: 'パネルSSL', @@ -2009,7 +2035,7 @@ const message = { '承認されたIPアドレスリストを設定した後、リスト内のIPアドレスのみがパネルサービスにアクセスできます。', allowIPsWarning: '承認されたIPアドレスリストを設定した後、リスト内のIPアドレスのみがパネルサービスにアクセスできます。続けたいですか?', - allowIPsHelper1: `IPアドレスの制限を無効にするために空白のままにします。`, + allowIPsHelper1: 'IPアドレスの制限を無効にするために空白のままにします。', allowIPEgs: '1行に1つ。たとえば、 \n172.16.10.111 \n172.16.10.0/24', mfa: '二段階認証', mfaClose: 'MFAを無効にすると、サービスのセキュリティが減少します。続けたいですか?', @@ -2044,14 +2070,14 @@ const message = { error416: '範囲は満足できません', error444: '接続が閉じた', error500: 'サーバーエラー', - https: 'パネルにHTTPSを設定するとアクセスセキュリティが向上します', strictHelper: 'HTTPS以外のトラフィックはパネルに接続できません', muxHelper: 'パネルはHTTPピュロコールとHTTPSピュロコールの両方を監視し、HTTPをHTTPSにリダイレクトしますが、このモードではパネルのセキュリティが低下する可能性があります', certType: '証明書の種類', selfSigned: '自己署名', - selfSignedHelper: `ブラウザは、自己署名の証明書を信頼していない場合があり、セキュリティ警告を表示する場合があります。`, + selfSignedHelper: + 'ブラウザは、自己署名の証明書を信頼していない場合があり、セキュリティ警告を表示する場合があります。', select: '選択します', domainOrIP: 'ドメインまたはIP:', timeOut: 'タイムアウト', @@ -2060,7 +2086,6 @@ const message = { certificate: '証明書', backupJump: 'バックアップファイルは現在のバックアップリストにありません。ファイルディレクトリからダウンロードして、バックアップ用にインポートしてみてください。', - snapshot: 'スナップショット|スナップショット', noAppData: '選択可能なシステムアプリはありません', noBackupData: '選択可能なバックアップデータはありません', @@ -2118,7 +2143,7 @@ const message = { lastRecoverAt: '最後の回復時間', lastRollbackAt: '最後のロールバック時間', reDownload: 'バックアップファイルをもう一度ダウンロードしてください', - recoverErrArch: `さまざまなサーバーアーキテクチャ間のスナップショット回復はサポートされていません!`, + recoverErrArch: 'さまざまなサーバーアーキテクチャ間のスナップショット回復はサポートされていません!', recoverErrSize: '不十分なディスクスペースが検出されました。チェックまたはクリーンアップして、再試行してください!', recoverHelper: 'Snapshot {0}からの回復を開始して、先に進む前に次の情報を確認してください。', @@ -2130,7 +2155,6 @@ const message = { rollback: 'ロールバック', rollbackHelper: 'この回復をロールバックすると、この回復からすべてのファイルを置き換え、Dockerサービスと1パネルサービスを再起動する必要がある場合があります。続けたいですか?', - upgradeHelper: 'アップグレードには、1パネルサービスを再起動する必要があります。続けたいですか?', rollbackLocalHelper: 'マスターノードは直接ロールバックをサポートしていません。手動で「1pctl restore」コマンドを実行してロールバックしてください!', @@ -2142,7 +2166,6 @@ const message = { 'ノードのバージョンがメインノードと一致していません。ノード管理でアップグレードしてから再試行してください。', versionCompare: 'ノード {0} は既にアップグレード可能な最新バージョンです。マスターノードのバージョンを確認後、再試行してください!', - about: 'について', versionItem: '現在のバージョン', backupCopies: 'バックアップ数', @@ -2159,7 +2182,6 @@ const message = { forum: '議論', doc2: 'ドキュメント', currentVersion: 'バージョン', - license: 'ライセンス', bindNode: 'ノードをバインド', menuSetting: 'メニュー設定', @@ -2172,6 +2194,35 @@ const message = { recoverMessage: 'ページが更新され、メニューリストが初期状態に戻ります。続行しますか?', compressPassword: '圧縮パスワード', backupRecoverMessage: '圧縮または減圧パスワードを入力してください(設定しないように空白のままにしてください)', + componentSize: 'コンポーネントサイズ', + apiKeyValidityTime: 'インターフェースキー有効期間', + apiKeyValidityTimeEgs: 'インターフェースキー有効期間(分)', + apiKeyValidityTimeHelper: '現在時刻との差(分)が許容範囲内なら有効です。0 は検証無効。', + scope: '範囲', + public: 'パブリック', + publicHelper: 'パブリック型バックアップアカウントは各子ノードへ同期され共同利用できます', + private: 'プライベート', + privateHelper: 'プライベート型バックアップアカウントは現在ノードのみで使用します', + UPYUN: 'UPYUN', + ALIYUN: 'Aliyun Drive', + ALIYUNHelper: + 'Aliyun Drive の非クライアントダウンロード上限は 100MB です。超える場合はクライアントでダウンロードしてください。', + ALIYUNRecover: + 'Aliyun Drive の非クライアントダウンロード上限は 100MB です。超える場合はクライアントでローカルにダウンロード後、スナップショットを同期して復元してください。', + GoogleDrive: 'Google Drive', + analysis: '解析', + analysisHelper: + 'トークン全体を貼り付けると必要項目を自動解析します。詳細は公式ドキュメントを参照してください。', + serviceName: 'サービス名', + operator: 'オペレーター', + clickToRefresh: 'クリックして更新', + recoverFailed: 'スナップショット復元失敗', + importHelper: 'スナップショットディレクトリ: ', + upgradeRecord: 'アップグレード履歴', + upgrading: 'アップグレード中、しばらくお待ちください...', + versionHelper: '命名規則: [メジャー].[機能].[バグ修正]。例:', + upgradeCheck: '更新を確認', + panelSSLHelper: 'パネルSSL自動更新後、1Panelサービスを手動再起動してください。', }, license: { offLine: 'オフライン版', @@ -2227,6 +2278,8 @@ const message = { fileExchange: 'プロフェッショナル版にアップグレードすると、複数のサーバー間でファイルを迅速に転送できます。', cluster: 'プロフェッショナル版にアップグレードすると、MySQL/Postgres/Redisマスタースレーブクラスタを管理できます。', + exceptionalHelper: 'ライセンス同期検証が異常です。手動で同期して機能を確認してください。詳細: ', + tamperHelper: '操作失敗。ファイル/フォルダの改ざん保護を確認してください。', }, clean: { scan: 'スキャンを開始します', @@ -2245,7 +2298,6 @@ const message = { suggest: '(推奨)', totalScan: 'クリーニングするジャンクファイルの合計:', selectScan: '選択したジャンクファイルの合計:', - system: 'システムジャンクファイル', systemHelper: 'スナップショット、アップグレードなどのプロセスで生成された一時ファイル', panelOriginal: 'システムスナップショット復元前のバックアップファイル', @@ -2253,7 +2305,6 @@ const message = { agentPackages: '履歴バージョンの子ノードアップグレード/インストールパッケージ', upgradeHelper: '(システムロールバックのために最新のアップグレードバックアップを保持することをお勧めします)', rollback: '回復する前にファイルをバックアップします', - backup: 'システムバックアップ', backupHelper: 'ローカルバックアップアカウントに関連付けられていないバックアップファイル', unknownBackup: 'システムバックアップ', @@ -2262,13 +2313,11 @@ const message = { unknownDatabase: '関連付けられていないデータベースバックアップ', unknownWebsite: '関連付けられていないWebサイトバックアップ', unknownSnapshot: '関連付けられていないスナップショットバックアップ', - upload: '一時的なアップロードファイル', uploadHelper: 'システムバックアップリストからアップロードされた一時ファイル', download: '一時的なダウンロードファイル', downloadHelper: 'システムによってサードパーティのバックアップアカウントからダウンロードされた一時ファイル', directory: 'ディレクトリ', - systemLog: 'ログファイル', systemLogHelper: 'システムログ、タスクログ、ウェブサイトログファイル', dockerLog: 'コンテナ操作ログファイル', @@ -2276,14 +2325,13 @@ const message = { shell: 'シェルスクリプトスケジュールタスク', containerShell: 'コンテナ内で実行するシェルスクリプトスケジュールタスク', curl: 'CURLスケジュールタスク', - docker: 'コンテナゴミ', dockerHelper: 'コンテナ、イメージ、ボリューム、ビルドキャッシュなどのファイル', volumes: 'ボリューム', buildCache: 'コンテナビルドキャッシュ', - appTmpDownload: 'Archivo de descarga temporal de la aplicación', unknownWebsiteLog: '未関連ウェブサイトログバックアップファイル', + snapshot: 'システムスナップショット一時ファイル', }, app: { app: 'アプリケーション|アプリケーション', @@ -2309,9 +2357,9 @@ const message = { stopOperatorHelper: 'アプリケーションは停止します。続けたいですか?', restartOperatorHelper: 'アプリケーションが再起動されます。続けたいですか?', reloadOperatorHelper: 'アプリケーションはリロードされます。続けたいですか?', - checkInstalledWarn: `「{0}」が検出されませんでした。「アプリストア」に移動してインストールしてください。`, + checkInstalledWarn: '「{0}」が検出されませんでした。「アプリストア」に移動してインストールしてください。', limitHelper: 'アプリケーションはすでにインストールされています。', - deleteHelper: `「{0}」は、次のリソースに関連付けられています。チェックしてもう一度やり直してください!`, + deleteHelper: '「{0}」は、次のリソースに関連付けられています。チェックしてもう一度やり直してください!', checkTitle: 'ヒント', defaultConfig: 'デフォルトの構成', defaultConfigHelper: 'デフォルトの構成に復元されており、保存後に有効になります', @@ -2343,7 +2391,8 @@ const message = { containerNameHelper: 'コンテナ名は設定されていないときに自動的に生成されます', allowPort: '外部アクセス', allowPortHelper: '外部ポートアクセスを許可すると、ファイアウォールポートがリリースされます', - appInstallWarn: `アプリケーションは、デフォルトで外部アクセスポートを公開しません。[Advanced Settings]をクリックして公開します。`, + appInstallWarn: + 'アプリケーションは、デフォルトで外部アクセスポートを公開しません。[Advanced Settings]をクリックして公開します。', upgradeStart: 'アップグレードを起動します!後でページを更新してください', toFolder: 'インストールディレクトリを開きます', editCompose: '編集ファイルを作成します', @@ -2353,7 +2402,8 @@ const message = { allReadyInstalled: 'インストール', installHelper: '画像プルの問題がある場合は、画像アクセラレーションを構成します。', sortMode: '並べ替え', - installWarn: `外部アクセスは有効になっていないため、アプリケーションが外部ネットワークを介してアクセスできるようになります。続けたいですか?`, + installWarn: + '外部アクセスは有効になっていないため、アプリケーションが外部ネットワークを介してアクセスできるようになります。続けたいですか?', showIgnore: '無視されたアプリケーションを表示します', cancelIgnore: 'キャンセルは無視します', ignoreList: '無視されたアプリケーション', @@ -2379,7 +2429,8 @@ const message = { useNew: 'カスタムバージョンを使用します', useDefault: 'デフォルトバージョンを使用します', useCustom: 'docker-compose.ymlをカスタマイズします', - useCustomHelper: `カスタムdocker-compose.ymlファイルを使用すると、アプリケーションのアップグレードが失敗する場合があります。必要でない場合は、確認しないでください。`, + useCustomHelper: + 'カスタムdocker-compose.ymlファイルを使用すると、アプリケーションのアップグレードが失敗する場合があります。必要でない場合は、確認しないでください。', diffHelper: '左側は古いバージョンで、右側は新しいバージョンです。編集後、クリックしてカスタムバージョンを保存します', pullImage: '画像を引っ張ります', @@ -2739,7 +2790,6 @@ const message = { failTimeout: '障害タイムアウト', failTimeoutHelper: 'サーバーのヘルスチェックの時間ウィンドウの長さ。この期間内に累積障害回数がしきい値に達すると、サーバーは一時的に削除され、同じ時間経過後に再試行されます。デフォルト 10 秒', - staticChangePHPHelper: '現在は静的ウェブサイトですが、PHPウェブサイトに切り替えることができます。', proxyCache: 'リバースプロキシキャッシュ', cacheLimit: 'キャッシュスペース制限', @@ -2767,7 +2817,6 @@ const message = { preflight: 'プリフライトリクエストの高速応答', preflightHleper: '有効にすると、ブラウザがクロスオリジンのプリフライトリクエスト(OPTIONSリクエスト)を送信した場合、システムは自動的に204ステータスコードを返し、必要なクロスオリジン応答ヘッダーを設定します', - changeDatabase: 'データベースを切り替え', changeDatabaseHelper1: 'データベースの関連付けは、ウェブサイトのバックアップと復元に使用されます。', changeDatabaseHelper2: '別のデータベースに切り替えると、以前のバックアップが復元できなくなる可能性があります。', @@ -2801,7 +2850,6 @@ const message = { execUser: '実行ユーザー', execDir: '実行ディレクトリ', packagist: '中国フルミラー', - batchOperate: 'バッチ操作', batchOperateHelper: 'ウェブサイトをバッチ{0}しますか?', stream: 'TCP/UDP プロキシ', @@ -2810,8 +2858,12 @@ const message = { '外部リスニングポート番号を設定します。クライアントはこのポートを通じてサービスにアクセスします。カンマで区切ってください。例:5222,5223', streamHelper: 'TCP/UDP ポート転送とロードバランシング', udp: 'UDPを有効化', - syncHtmlHelper: 'PHP と静的ウェブサイトに同期', + wafValueHelper: '値', + parentWbeiste: '親サイト', + shareCahe: 'キャッシュ数メモリサイズ', + shareCaheHelper: 'メモリ1Mあたり約8000件のキャッシュを保存可能', + cacheExpireJHelper: '有効期限後に未ヒットならキャッシュを削除', }, php: { short_open_tag: '短いタグサポート', @@ -2839,6 +2891,7 @@ const message = { containerConfig: 'コンテナ設定', containerConfigHelper: '環境変数などの情報は、作成完了後に設定 - コンテナ設定で変更できます', dateTimezoneHelper: '例:TZ=Asia/Shanghai(必要に応じて追加してください)', + extensionsHelper: '複数拡張はカンマで区切ってください', }, nginx: { serverNamesHashBucketSizeHelper: 'サーバー名のハッシュテーブルサイズ', @@ -2932,9 +2985,9 @@ const message = { dnsMauanlHelper: '手動解像度モードでは、作成後に適用ボタンをクリックしてDNS解像度値を取得する必要があります', httpHelper: 'HTTPモードを使用するにはOpenRestyをインストールする必要があり、ワイルドカードドメイン証明書の申請はサポートされていません。', - buypassHelper: `中国本土では、ブライパスはアクセスできません`, + buypassHelper: '中国本土では、ブライパスはアクセスできません', googleHelper: 'EAB HMACキーとEABキッドを取得する方法', - googleCloudHelper: `GoogleクラウドAPIは中国本土のほとんどの地域でアクセスできません`, + googleCloudHelper: 'GoogleクラウドAPIは中国本土のほとんどの地域でアクセスできません', skipDNSCheck: 'DNSチェックをスキップします', skipDNSCheckHelper: '認定リクエスト中にタイムアウトの問題が発生した場合にのみ、こちらを確認してください。', cfHelper: 'グローバルAPIキーを使用しないでください', @@ -2972,7 +3025,6 @@ const message = { argsCheck: 'パラメーターチェックを取得します', postCheck: 'パラメーターの検証を投稿します', cookieBlockList: 'クッキーブロックリスト', - dockerHelper: '現在のファイアウォールではコンテナのポートマッピングを無効にできません。インストール済みアプリケーションは【インストール済み】ページでアプリケーションパラメータを編集し、ポート開放ルールを設定できます。', iptablesHelper: @@ -2982,7 +3034,7 @@ const message = { unUsed: '未使用', dockerRestart: 'ファイアウォール操作にはDockerサービスの再起動が必要です', firewallHelper: '{0}システムファイアウォール', - firewallNotStart: `現在、システムファイアウォールは有効になっていません。最初に有効にします。`, + firewallNotStart: '現在、システムファイアウォールは有効になっていません。最初に有効にします。', restartFirewallHelper: 'この操作は、現在のファイアウォールを再起動します。続けたいですか?', stopFirewallHelper: 'これにより、サーバーはセキュリティ保護を失います。続けたいですか?', startFirewallHelper: @@ -2991,7 +3043,7 @@ const message = { enableBanPing: 'Ping禁止', disableBanPing: 'Ping禁止解除', noPingTitle: 'pingを無効にします', - noPingHelper: `これによりPingが無効になり、サーバーはICMP応答をエコーし​​ません。続けたいですか?`, + noPingHelper: 'これによりPingが無効になり、サーバーはICMP応答をエコーし​​ません。続けたいですか?', onPingHelper: 'これによりPingが可能になり、ハッカーはサーバーを発見する場合があります。続けたいですか?', changeStrategy: '{0}戦略を変更します', changeStrategyIPHelper1: @@ -3008,7 +3060,6 @@ const message = { portHelper2: '範囲ポート、例えば8080-8089', changeStrategyHelper: '[{1}] {0}戦略を[{2}]に変更します。設定後、{0}は外部から{2}にアクセスします。続けたいですか?', - strategy: '戦略', accept: '受け入れる', drop: '落とす', @@ -3035,7 +3086,6 @@ const message = { exportHelper: '{0} 件のファイアウォールルールをエクスポートします。続行しますか?', importSuccess: '{0} 件のルールを正常にインポートしました', importPartialSuccess: 'インポート完了: {0} 件成功、{1} 件失敗', - ipv4Limit: '現在の操作は IPv4 アドレスのみをサポートしています', basicStatus: '現在のチェーン {0} は未バインドです。まずバインドしてください!', baseIptables: 'iptables サービス', @@ -3067,6 +3117,9 @@ const message = { portHelper: '0 は任意のポートを意味します', allPorts: 'すべてのポート', deleteRuleConfirm: '{0} 個のルールを削除します。続行しますか?', + advancedControl: '高度制御', + advancedControlNotAvailable: '{0} ファイアウォールを使用中。高度ルールは iptables のみ対応', + destination: '宛先', }, runtime: { runtime: 'ランタイム', @@ -3112,7 +3165,7 @@ const message = { customScript: 'カスタムスタートアップコマンド', customScriptHelper: '完全な起動コマンドを入力してください。例:npm run start。PM2の起動コマンドはpm2-runtimeに置き換えてください。そうしないと起動に失敗します。', - portError: `同じポートを繰り返さないでください。`, + portError: '同じポートを繰り返さないでください。', systemRestartHelper: 'ステータスの説明:中断 - システムの再起動によりステータスの取得が失敗しました', javaScriptHelper: '完全な起動コマンドを提供します。たとえば、「Java -Jar Halo.Jar -XMX1024M -XMS256M」。', javaDirHelper: 'ディレクトリにはjarファイルが含まれている必要があり、サブディレクトリも受け入れられます', @@ -3125,6 +3178,26 @@ const message = { concurrency: '並行処理スキーム', loadStatus: '負荷状態', extraHosts: 'ホストマッピング', + extension: '拡張', + installExtension: '拡張 {0} をインストールしますか', + loadedExtension: 'ロード済み拡張', + popularExtension: '人気の拡張', + uninstallExtension: '拡張 {0} をアンインストールしますか', + phpConfigHelper: '設定変更には環境再起動が必要です。続行しますか', + operateMode: '動作モード', + dynamic: '動的', + static: '静的', + ondemand: 'オンデマンド', + dynamicHelper: '動的にプロセス数を調整。変動トラフィックや低メモリ向け', + staticHelper: '固定プロセス数。高並列で安定トラフィック向け、消費高め', + ondemandHelper: '必要時に起動/終了。効率は高いが初回応答は遅い', + max_children: '作成可能な最大プロセス数', + start_servers: '起動時のプロセス数', + min_spare_servers: '最小アイドルプロセス数', + max_spare_servers: '最大アイドルプロセス数', + envKey: '名前', + envValue: '値', + environment: '環境変数', }, process: { pid: 'プロセスID', @@ -3172,7 +3245,8 @@ const message = { list: 'デーモンプロセス|デーモンプロセス', config: 'スーパーバイザー構成', primaryConfig: 'メイン構成ファイルの場所', - notSupportCtl: `supervisorctlは検出されません。スクリプトライブラリページに移動して手動でインストールしてください。`, + notSupportCtl: + 'supervisorctlは検出されません。スクリプトライブラリページに移動して手動でインストールしてください。', user: 'ユーザー', command: '指示', dir: 'ディレクトリ', @@ -3181,7 +3255,7 @@ const message = { 'これにより、メイン構成ファイルの[[include] [include]セクションの「ファイル」値が変更されます。他の構成ファイルのディレクトリは、「{1Panel Installation Directory} /1Panel/tools/supervisord/supervisor.d/」になります。', operatorHelper: '操作{1}は{0}で実行されます、続行しますか?', uptime: '実行時間', - notStartWarn: `スーパーバイザーは開始されません。最初に開始します。`, + notStartWarn: 'スーパーバイザーは開始されません。最初に開始します。', serviceName: 'サービス名', initHelper: 'Supervisor サービスが検出されましたが、初期化されていません。上部のステータスバーにある初期化ボタンをクリックして設定してください。', @@ -3505,6 +3579,7 @@ const message = { importRuleHelper: '1行に1つのルール', }, monitor: { + '360': '360検索', name: 'ウェブサイトモニタリング', pv: 'ページビュー', uv: 'ユニークビジター', @@ -3573,7 +3648,6 @@ const message = { statusErr: '無効なステータスコード形式', shenma: '神馬検索', duckduckgo: 'DuckDuckGo', - '360': '360検索', excludeUri: 'URIを除外', top100Helper: '上位100データを表示', logSaveDay: 'ログ保持期間(日数)', @@ -3681,7 +3755,6 @@ const message = { wafContent3: 'リクエストがインターセプトされた後に表示するカスタムページを作成', wafTitle4: 'カスタムルール (ACL)', wafContent4: 'カスタムルールに基づいてリクエストをインターセプト', - tamperTitle1: 'ファイル整合性監視', tamperContent1: 'ウェブサイトのファイルの整合性を監視、コアファイル、スクリプトファイル、設定ファイルを含む。', @@ -3694,7 +3767,6 @@ const message = { tamperTitle4: 'ログ記録と分析', tamperContent4: 'ファイルのアクセスおよび操作ログを記録し、後の監査および分析に使用、また潜在的なセキュリティ脅威を特定。', - settingTitle1: 'カスタムウェルカムメッセージ', settingContent1: '1Panelのログインページにカスタムウェルカムメッセージを設定。', settingTitle2: 'カスタムロゴ', @@ -3702,7 +3774,6 @@ const message = { settingTitle3: 'カスタムウェブサイトアイコン', settingContent3: 'カスタムアイコンをアップロードして、デフォルトのブラウザアイコンを置き換え、ユーザー体験を向上。', - monitorTitle1: '訪問者トレンド', monitorContent1: 'ウェブサイト訪問者のトレンドを統計および表示', monitorTitle2: '訪問者マップ', @@ -3713,7 +3784,6 @@ const message = { monitorTitle4: 'リアルタイムモニタリング', monitorContent4: 'ウェブサイトリクエスト情報をリアルタイムでモニタリング、リクエスト数、トラフィックなどを含む。', - alertTitle1: 'SMSアラート', alertContent1: 'サーバーリソース使用量の異常、ウェブサイトおよび証明書の有効期限、新しいバージョンの更新、パスワードの期限切れなどが発生した場合、ユーザーにSMSアラートで通知し、タイムリーな処理を確保。', @@ -3723,7 +3793,6 @@ const message = { alertTitle3: 'アラート設定', alertContent3: 'カスタム電話番号、日々のプッシュ頻度、日々のプッシュ時間設定を提供し、ユーザーがより合理的なプッシュアラートを設定しやすく。', - nodeDashTitle1: 'アプリケーション管理', nodeDashContent1: 'マルチノードアプリケーションの統一管理、ステータス監視、迅速な起動/停止、端末接続、バックアップをサポート', @@ -3736,7 +3805,6 @@ const message = { nodeDashTitle4: 'スケジュールタスク管理', nodeDashContent4: 'マルチノードスケジュールタスクの統一管理、ステータス監視、迅速な起動/停止、手動トリガー実行をサポート', - nodeTitle1: 'ワンクリックノード追加', nodeContent1: '複数のサーバーノードを迅速に統合', nodeTitle2: 'バッチアップグレード', @@ -3745,7 +3813,6 @@ const message = { nodeContent3: '各ノードの運用状況をリアルタイムで把握', nodeTitle4: '迅速なリモート接続', nodeContent4: 'ワンクリックでノードリモート端末に直接接続', - fileExchangeTitle1: 'キー認証伝送', fileExchangeContent1: 'SSHキーを介して認証し、伝送のセキュリティを確保します。', fileExchangeTitle2: '効率的なファイル同期', @@ -3753,10 +3820,8 @@ const message = { fileExchangeTitle3: 'マルチノード相互通信のサポート', fileExchangeContent3: '異なるノード間でプロジェクトファイルを簡単に転送し、複数のサーバーを柔軟に管理します。', - nodeAppTitle1: 'アプリケーションアップグレード管理', nodeAppContent1: 'マルチノードアプリケーションの更新状況を統一監視、ワンクリックアップグレードをサポート', - appTitle1: '柔軟なパネル管理', appContent1: 'いつでもどこでも1Panelサーバーを簡単に管理できます。', appTitle2: '包括的なサービス情報', @@ -3765,7 +3830,6 @@ const message = { appTitle3: 'リアルタイム異常監視', appContent3: 'モバイル端末でサーバーステータス、WAFセキュリティ監視、ウェブサイトの訪問統計、プロセスの健康状態をリアルタイムで確認できます。', - clusterTitle1: 'マスタースレーブ展開', clusterContent1: '異なるノードで MySQL/Postgres/Redis マスタースレーブインスタンスを作成することをサポートし、自動的にマスタースレーブ関連付けと初期化を完了します', @@ -3833,7 +3897,6 @@ const message = { nodeSyncHelper: 'ノード情報の同期は、以下の情報を同期します:', nodeSyncHelper1: '1. 公共のバックアップアカウント情報', nodeSyncHelper2: '2. 主ノードとサブノードの接続情報', - nodeCheck: '可用性チェック', checkSSH: 'ノードSSH接続を確認', checkUserPermission: 'ノードユーザー権限を確認', @@ -3854,7 +3917,6 @@ const message = { errLicense: 'このノードに紐づけられたライセンスが利用できません。確認して再試行してください!', errNodePort: 'ノードポート[ {0} ]にアクセスできないことが検出されました。ファイアウォールまたはセキュリティグループでこのポートが開放されているか確認してください。', - reinstallHelper: 'ノード{0}を再インストールします。続行しますか?', unhealthyCheck: '異常チェック', fixOperation: '修正操作', @@ -3878,7 +3940,6 @@ const message = { offline: 'オフラインモード', freeCount: '無料枠 [{0}]', offlineHelper: 'ノードがオフライン環境にある場合に使用', - appUpgrade: 'アプリのアップグレード', appUpgradeHelper: 'アップグレードが必要なアプリが {0} 個あります', }, diff --git a/frontend/src/lang/modules/ko.ts b/frontend/src/lang/modules/ko.ts index d9129e442861..e6e3567ec124 100644 --- a/frontend/src/lang/modules/ko.ts +++ b/frontend/src/lang/modules/ko.ts @@ -84,6 +84,10 @@ const message = { hide: '숨기기', visit: '방문', migrate: '마이그레이션', + prev: '이전', + next: '다음', + setDefault: '기본값 복원', + bind: '바인딩', }, operate: { start: '시작', @@ -133,6 +137,8 @@ const message = { manageGroup: '그룹 관리', backToList: '목록으로 돌아가기', keepEdit: '계속 편집', + default: '기본값', + noRefresh: '자동 새로고침 안 함', }, loadingText: { Upgrading: '시스템 업그레이드 중입니다. 잠시만 기다려 주십시오...', @@ -142,14 +148,14 @@ const message = { }, msg: { noneData: '데이터가 없습니다', - delete: `이 작업은 되돌릴 수 없습니다. 계속하시겠습니까?`, - clean: `이 작업은 되돌릴 수 없습니다. 계속하시겠습니까?`, + delete: '이 작업은 되돌릴 수 없습니다. 계속하시겠습니까?', + clean: '이 작업은 되돌릴 수 없습니다. 계속하시겠습니까?', closeDrawerHelper: '시스템에서 변경 사항을 저장하지 않을 수 있습니다. 계속하시겠습니까?', deleteSuccess: '삭제 완료', loginSuccess: '로그인 성공', operationSuccess: '작업 완료', copySuccess: '복사 완료', - notSupportOperation: `이 작업은 지원되지 않습니다`, + notSupportOperation: '이 작업은 지원되지 않습니다', requestTimeout: '요청이 시간 초과되었습니다. 나중에 다시 시도해 주십시오', infoTitle: '안내', notRecords: '현재 작업에 대한 실행 기록이 생성되지 않았습니다', @@ -160,13 +166,13 @@ const message = { operateConfirm: '작업을 확인하려면 수동으로 입력하십시오: ', inputOrSelect: '선택하거나 입력해 주십시오', copyFailed: '복사 실패', - operatorHelper: `"{0}"에 대해 "{1}" 작업이 수행되며 이 작업은 되돌릴 수 없습니다. 계속하시겠습니까?`, + operatorHelper: '"{0}"에 대해 "{1}" 작업이 수행되며 이 작업은 되돌릴 수 없습니다. 계속하시겠습니까?', notFound: '죄송합니다. 요청하신 페이지를 찾을 수 없습니다.', - unSupportType: `현재 파일 형식은 지원되지 않습니다.`, + unSupportType: '현재 파일 형식은 지원되지 않습니다.', unSupportSize: '업로드된 파일이 {0}M을 초과했습니다. 확인해 주십시오!', - fileExist: `현재 폴더에 이미 동일한 파일이 존재합니다. 중복 업로드는 지원되지 않습니다.`, + fileExist: '현재 폴더에 이미 동일한 파일이 존재합니다. 중복 업로드는 지원되지 않습니다.', fileNameErr: '파일 이름은 1~256 자 사이의 영어, 중국어, 숫자, 또는 점(.-_)만 포함해야 합니다.', - confirmNoNull: `{0} 값이 비어 있지 않은지 확인하십시오.`, + confirmNoNull: '{0} 값이 비어 있지 않은지 확인하십시오.', errPort: '포트 정보가 올바르지 않습니다. 확인해 주십시오!', remove: '제거', backupHelper: '현재 작업은 {0}을(를) 백업합니다. 계속하시겠습니까?', @@ -180,6 +186,10 @@ const message = { importHelper: '충돌하거나 중복되는 데이터를 가져올 때 가져온 내용을 기준으로 원래 데이터베이스 데이터를 업데이트합니다.', errImport: '파일 내용이 비정상입니다:', + backupSuccess: '백업 성공', + restoreSuccess: '복원 성공', + installSuccess: '설치 성공', + uninstallSuccess: '제거 성공', }, login: { username: '사용자 이름', @@ -278,7 +288,7 @@ const message = { commonError: '요청이 실패했습니다', }, service: { - serviceNotStarted: `{0} 서비스가 시작되지 않았습니다.`, + serviceNotStarted: '{0} 서비스가 시작되지 않았습니다.', }, status: { running: '실행 중', @@ -340,6 +350,7 @@ const message = { conflict: '충돌', duplicate: '중복', unexecuted: '실행되지 않음', + unused: '미사용', }, units: { second: '초 | 초 | 초', @@ -393,6 +404,7 @@ const message = { app: '애플리케이션', msgCenter: '작업', disk: '디스크', + filter: '필터', }, home: { recommend: '추천', @@ -425,12 +437,10 @@ const message = { runningTime: '가동 시간', mem: '시스템 메모리', swapMem: '스왑 파티션', - runSmoothly: '낮은 부하', runNormal: '보통 부하', runSlowly: '높은 부하', runJam: '심한 부하', - core: '물리적 코어', logicCore: '논리 코어', corePercent: '코어 사용률', @@ -456,7 +466,6 @@ const message = { available: '사용 가능', percent: '사용률', goInstall: 'Go 설치', - networkCard: '네트워크 카드', disk: '디스크', memo: '메모', @@ -518,7 +527,8 @@ const message = { portHelper: '이 포트는 컨테이너의 노출된 포트입니다. 수정을 별도로 저장하고 컨테이너를 재시작해야 합니다!', loadFromRemote: '동기화', userBind: '사용자 바인딩', - pgBindHelper: `이 작업은 새 사용자를 생성하여 대상 데이터베이스에 바인딩하는 데 사용됩니다. 현재 데이터베이스에 이미 존재하는 사용자 선택은 지원되지 않습니다.`, + pgBindHelper: + '이 작업은 새 사용자를 생성하여 대상 데이터베이스에 바인딩하는 데 사용됩니다. 현재 데이터베이스에 이미 존재하는 사용자 선택은 지원되지 않습니다.', pgSuperUser: '슈퍼 사용자', loadFromRemoteHelper: '이 작업은 서버의 데이터베이스 정보를 1Panel로 동기화합니다. 계속 진행하시겠습니까?', passwordHelper: '확인 불가, 수정하려면 클릭', @@ -543,13 +553,11 @@ const message = { hasCA: 'CA 인증서 있음', skipVerify: '인증서 유효성 검사 무시', initialDB: '초기 데이터베이스', - formatHelper: '현재 데이터베이스 문자셋은 {0} 입니다. 문자셋 불일치로 인해 복구에 실패할 수 있습니다.', dropHelper: '여기에 업로드한 파일을 드래그 앤 드롭하거나', clickHelper: '클릭하여 업로드', supportUpType: 'sql, sql.gz, tar.gz, .zip 파일 형식만 지원합니다. 가져오는 압축 파일에는 하나의 .sql 파일만 있거나 test.sql이 포함되어 있어야 합니다', - currentStatus: '현재 상태', baseParam: '기본 파라미터', performanceParam: '성능 파라미터', @@ -581,7 +589,6 @@ const message = { sortMergePassesHelper: '값이 너무 크면 "sort_buffer_size" 값을 증가시켜야 합니다.', tableLocksWaited: '테이블 잠금 대기', tableLocksWaitedHelper: '값이 너무 크면 데이터베이스 성능을 증가시키는 것을 고려해야 합니다.', - performanceTuning: '성능 튜닝', optimizationScheme: '최적화 방안', keyBufferSizeHelper: '인덱스용 버퍼 크기', @@ -599,14 +606,11 @@ const message = { tableOpenCacheHelper: '테이블 캐시', maxConnectionsHelper: '최대 연결 수', restart: '재시작', - slowLog: '느린 로그', noData: '아직 느린 로그가 없습니다.', - isOn: '켜짐', longQueryTime: '임계값(s)', thresholdRangeHelper: '올바른 임계값을 입력하십시오 (1 - 600).', - timeout: '타임아웃(s)', timeoutHelper: '유휴 연결의 타임아웃 기간. 0은 연결이 지속적으로 유지됨을 의미합니다.', maxclients: '최대 클라이언트', @@ -629,24 +633,21 @@ const message = { keyspaceMisses: '데이터베이스 키를 찾지 못한 횟수.', hit: '데이터베이스 키 발견 비율.', latestForkUsec: '마지막 fork() 작업에 소요된 마이크로초 수.', - redisCliHelper: `"redis-cli" 서비스가 감지되지 않았습니다. 서비스를 먼저 활성화하십시오.`, + redisCliHelper: '"redis-cli" 서비스가 감지되지 않았습니다. 서비스를 먼저 활성화하십시오.', redisQuickCmd: 'Redis 빠른 명령', recoverHelper: '이 작업은 데이터를 [{0}]으로 덮어씁니다. 계속하시겠습니까?', submitIt: '데이터 덮어쓰기', - baseConf: '기본 설정', allConf: '모든 설정', restartNow: '지금 재시작', restartNowHelper1: '구성 변경 사항이 적용되려면 시스템을 재시작해야 합니다. 데이터가 지속되어야 하는 경우 먼저 저장 작업을 수행하십시오.', restartNowHelper: '이 작업은 시스템이 재시작된 후에만 적용됩니다.', - persistence: '지속성', rdbHelper1: '초 단위, 삽입', rdbHelper2: '데이터 항목 수', rdbHelper3: '조건을 충족하면 RDB 지속성이 트리거됩니다.', rdbInfo: '규칙 목록의 값이 1에서 100000 사이여야 합니다.', - containerConn: '컨테이너 연결', copyConnURL: '연결 URL 복사', connAddress: '주소', @@ -709,6 +710,7 @@ const message = { pairingCodeRequired: 'Please enter pairing code', pairingApproveSuccess: 'Pairing approved successfully', customProviderHelper: '사용자 정의 모델 공급자는 계정 사용 가능 여부를 검증하지 않습니다', + feishuSaveSuccess: 'Feishu에 저장됨', }, model: { model: '모델', @@ -755,7 +757,6 @@ const message = { memoryUsed: '사용된 메모리', memoryTotal: '전체 메모리', percent: '사용률', - base: '기본 정보', driverVersion: '드라이버 버전', cudaVersion: 'CUDA 버전', @@ -785,6 +786,7 @@ const message = { current: '실시간 모니터링', history: '기록', notSupport: '현재 버전 또는 드라이버는 이 매개변수 표시를 지원하지 않습니다.', + processCount: '프로세스 수', }, mcp: { server: 'MCP サーバー', @@ -892,7 +894,6 @@ const message = { '컨테이너 엔진은 기본값으로 1024를 사용합니다. 이를 늘리면 컨테이너에 더 많은 CPU 시간을 할당할 수 있습니다.', inputIpv4: '예시: 192.168.1.1', inputIpv6: '예시: 2001:0db8:85a3:0000:0000:8a2e:0370:7334', - diskUsage: '디스크 사용량', localVolume: '로컬 스토리지 볼륨', buildCache: '빌드 캐시', @@ -906,7 +907,6 @@ const message = { sizeRwHelper: '컨테이너에 고유한 쓰기 가능 레이어 크기', sizeRootFs: '가상 크기', sizeRootFsHelper: '컨테이너가 의존하는 모든 이미지 레이어 + 컨테이너 레이어의 총 크기', - containerFromAppHelper: '이 컨테이너가 앱 스토어에서 왔음을 감지했습니다. 앱 작업으로 현재 편집이 무효화될 수 있습니다.', containerFromAppHelper1: @@ -1001,9 +1001,9 @@ const message = { tagHelper: '한 줄에 하나씩. 예시:\nkey1=value1\nkey2=value2', imageNameHelper: '이미지 이름과 태그, 예시: nginx:latest', cleanBuildCache: '빌드 캐시 정리', - delBuildCacheHelper: `이 작업은 빌드 중 생성된 모든 캐시된 아티팩트를 삭제하며 되돌릴 수 없습니다. 계속 하시겠습니까?`, + delBuildCacheHelper: + '이 작업은 빌드 중 생성된 모든 캐시된 아티팩트를 삭제하며 되돌릴 수 없습니다. 계속 하시겠습니까?', urlWarning: 'URL 접두어에 http:// 또는 https://를 포함할 필요는 없습니다. 수정해 주세요.', - network: '네트워크 | 네트워크들', networkHelper: '이로 인해 일부 애플리케이션과 실행 환경이 제대로 작동하지 않을 수 있습니다. 계속 하시겠습니까?', networkName: '이름', @@ -1015,7 +1015,6 @@ const message = { scope: 'IP 범위', gateway: '게이트웨이', auxAddress: '제외 IP', - volume: '볼륨 | 볼륨들', volumeDir: '볼륨 디렉터리', nfsEnable: 'NFS 스토리지 사용', @@ -1023,7 +1022,6 @@ const message = { mountpoint: '마운트 지점', mountpointNFSHelper: '예: /nfs, /nfs-share', options: '옵션', - repo: '레지스트리', httpRepoHelper: 'HTTP 타입 저장소 작업 시 Docker 서비스 재시작이 필요합니다.', httpRepo: 'HTTP 프로토콜을 선택하면 Docker 서비스를 재시작하여 불안정한 레지스트리에 추가해야 합니다.', @@ -1038,7 +1036,6 @@ const message = { '거울이 여러 개 있을 경우 각 줄에 하나씩 표시해야 합니다. 예시:\nhttp://xxxxxx.m.daocloud.io \nhttps://xxxxxx.mirror.aliyuncs.com', registrieHelper: '개인 레지스트리가 여러 개 있을 경우 각 줄에 하나씩 표시해야 합니다. 예시:\n172.16.10.111:8081 \n172.16.10.112:8081', - compose: '컴포즈 | 컴포즈들', composeFile: '컴포즈 파일', fromChangeHelper: '소스를 변경하면 현재 편집한 내용이 삭제됩니다. 계속 하시겠습니까?', @@ -1063,7 +1060,6 @@ const message = { '이 작업은 {0} 컴포즈 아래의 모든 컨테이너와 네트워크를 중지하고 제거합니다. 계속 하시겠습니까?', composeEnvHelper2: '이 오케스트레이션은 1Panel 앱 스토어에서 생성되었습니다. 설치된 애플리케이션에서 환경 변수를 수정하세요.', - setting: '설정 | 설정들', operatorStatusHelper: '이 작업은 Docker 서비스를 "{0}" 합니다. 계속 하시겠습니까?', dockerStatus: 'Docker 서비스', @@ -1091,7 +1087,7 @@ const message = { iptablesHelper1: 'Docker 에 대한 iptables 규칙을 자동으로 구성합니다.', iptablesHelper2: 'iptables 를 비활성화하면 컨테이너가 외부 네트워크와 통신할 수 없습니다.', daemonJsonPath: '구성 경로', - serviceUnavailable: `현재 Docker 서비스가 시작되지 않았습니다.`, + serviceUnavailable: '현재 Docker 서비스가 시작되지 않았습니다.', startIn: '시작하려면', sockPath: '유닉스 도메인 소켓', sockPathHelper: 'Docker 데몬과 클라이언트 간의 통신 채널입니다.', @@ -1101,12 +1097,10 @@ const message = { related: '관련', includeAppstore: '앱 스토어에서 컨테이너 표시', excludeAppstore: '앱스토어 컨테이너 숨기기', - cleanDockerDiskZone: 'Docker 에서 사용하는 디스크 공간 정리', cleanImagesHelper: '(사용되지 않는 모든 이미지를 정리합니다.)', cleanContainersHelper: '(정지된 모든 컨테이너를 정리합니다.)', cleanVolumesHelper: '(사용되지 않는 모든 로컬 볼륨을 정리합니다.)', - makeImage: '이미지 생성', newImageName: '새 이미지 이름', commitMessage: '커밋 메시지', @@ -1114,6 +1108,11 @@ const message = { ifPause: '생성 중 컨테이너 일시 정지', ifMakeImageWithContainer: '이 컨테이너에서 새 이미지를 생성하시겠습니까?', finishTime: '마지막 중지 시간', + workingDir: '작업 디렉토리', + resource: '리소스', + macAddr: 'MAC 주소', + exportHelper: '선택한 이미지를 하나의 tar 파일로 내보냅니다.', + goSetting: '편집으로 이동', }, cronjob: { importHelper: @@ -1163,7 +1162,8 @@ const message = { directory: '백업 디렉토리', sourceDir: '백업 디렉토리', snapshot: '시스템 스냅샷', - allOptionHelper: `현재 작업 계획은 모든 [{0}]을 백업하는 것입니다. 현재 직접 다운로드는 지원되지 않습니다. [{0}] 메뉴에서 백업 목록을 확인하실 수 있습니다.`, + allOptionHelper: + '현재 작업 계획은 모든 [{0}]을 백업하는 것입니다. 현재 직접 다운로드는 지원되지 않습니다. [{0}] 메뉴에서 백업 목록을 확인하실 수 있습니다.', exclusionRules: '배제 규칙', exclusionRulesHelper: '제외 규칙을 선택하거나 입력하고, 각 세트 입력 후 Enter 키를 눌러 계속합니다. 제외 규칙은 이 백업의 모든 압축 작업에 적용됩니다', @@ -1222,7 +1222,6 @@ const message = { cutWebsiteLog: '웹사이트 로그 회전', cutWebsiteLogHelper: '회전된 로그 파일은 1Panel 의 백업 디렉토리로 백업됩니다.', syncIpGroup: 'WAF IP 그룹 동기화', - requestExpirationTime: '업로드 요청 만료 시간(시간)', unitHours: '단위: 시간', alertTitle: '예정된 작업 - {0} 「{1}」 작업 실패 경고', @@ -1247,6 +1246,13 @@ const message = { syncHelper: '시스템 스크립트 라이브러리를 동기화합니다. 이 작업은 시스템 스크립트에만 적용됩니다. 계속하시겠습니까?', }, + nextTime: '다음 5회 실행', + logHelper1: '1. 1Panel 시스템 로그', + backupContent: '백업 내용', + cronSpecRule2: '실행 주기 형식이 올바르지 않습니다. 확인 후 다시 시도하세요.', + executor: '실행자', + cleanLog: '로그 자동 정리', + cleanLogscope: '로그 보관 기간', }, monitor: { globalFilter: '전역 필터', @@ -1258,7 +1264,6 @@ const message = { defaultIOHelper: '모니터링 및 개요 인터페이스에 표시되는 기본 디스크 옵션', cleanMonitor: '모니터링 기록 지우기', cleanHelper: '이 작업은 GPU를 포함한 모든 모니터링 기록을 지웁니다. 계속하시겠습니까?', - avgLoad: '평균 부하', loadDetail: '부하 세부사항', resourceUsage: '자원 사용률', @@ -1369,20 +1374,25 @@ const message = { timeZone: '시간대', localTime: '서버 시간', timeZoneChangeHelper: '시스템 시간대를 변경하려면 서비스를 재시작해야 합니다. 계속하시겠습니까?', - timeZoneHelper: `"timedatectl" 명령이 설치되지 않은 경우 시간대를 변경할 수 없습니다. 시스템은 시간대 변경에 이 명령을 사용합니다.`, + timeZoneHelper: + '"timedatectl" 명령이 설치되지 않은 경우 시간대를 변경할 수 없습니다. 시스템은 시간대 변경에 이 명령을 사용합니다.', timeZoneCN: '베이징', timeZoneAM: '로스앤젤레스', timeZoneNY: '뉴욕', ntpALi: '알리바바', ntpGoogle: '구글', syncSite: 'NTP 서버', - hostnameHelper: `호스트 이름 수정은 "hostnamectl" 명령에 따라 달라집니다. 명령이 설치되지 않은 경우 수정이 실패할 수 있습니다.`, - userHelper: `사용자 이름은 "whoami" 명령을 사용하여 검색됩니다. 명령이 설치되지 않은 경우 검색이 실패할 수 있습니다.`, - passwordHelper: `비밀번호 수정은 "chpasswd" 명령에 따라 달라집니다. 명령이 설치되지 않은 경우 수정이 실패할 수 있습니다.`, + hostnameHelper: + '호스트 이름 수정은 "hostnamectl" 명령에 따라 달라집니다. 명령이 설치되지 않은 경우 수정이 실패할 수 있습니다.', + userHelper: + '사용자 이름은 "whoami" 명령을 사용하여 검색됩니다. 명령이 설치되지 않은 경우 검색이 실패할 수 있습니다.', + passwordHelper: + '비밀번호 수정은 "chpasswd" 명령에 따라 달라집니다. 명령이 설치되지 않은 경우 수정이 실패할 수 있습니다.', hostHelper: '제공된 내용에 빈 값이 포함되어 있습니다. 확인 후 수정하여 다시 시도해주세요!', dnsCheck: '가용성 테스트', dnsOK: 'DNS 구성 정보가 유효합니다!', dnsTestFailed: 'DNS 구성 정보가 유효하지 않습니다.', + syncSiteHelper: '{0}을(를) 기준으로 시스템 시간을 동기화하시겠습니까?', }, fail2ban: { sshPort: 'SSH 포트 청취', @@ -1498,6 +1508,9 @@ const message = { websiteLog: '웹사이트 로그', runLog: '실행 로그', errLog: '에러 로그', + task: '작업 로그', + taskName: '작업 이름', + taskRunning: '실행 중', }, file: { fileDirNum: '총 {0}개 디렉터리, {1}개 파일,', @@ -1584,7 +1597,7 @@ const message = { currentSelect: '현재 선택: ', unsupportedType: '지원되지 않는 파일 유형', deleteHelper: '다음 파일을 삭제하시겠습니까? 기본적으로 삭제 후 휴지통으로 이동합니다.', - fileHelper: `참고:\n1. 검색 결과는 정렬할 수 없습니다.\n2. 폴더는 크기로 정렬할 수 없습니다.`, + fileHelper: '참고:\n1. 검색 결과는 정렬할 수 없습니다.\n2. 폴더는 크기로 정렬할 수 없습니다.', forceDeleteHelper: '파일을 영구적으로 삭제합니다(휴지통으로 이동하지 않고 바로 삭제).', recycleBin: '휴지통', sourcePath: '원래 경로', @@ -1611,7 +1624,7 @@ const message = { '안전하지 않은 서버 연결을 허용하면 데이터 유출 또는 변조가 발생할 수 있습니다. 이 옵션은 다운로드 소스를 신뢰할 때만 사용하세요.', uploadOverLimit: '파일 수가 1000 개를 초과했습니다! 압축하여 업로드하세요.', clashDidNotSupport: '파일 이름에 .1panel_clash 를 포함할 수 없습니다.', - clashDeleteAlert: `"휴지통" 폴더는 삭제할 수 없습니다.`, + clashDeleteAlert: '"휴지통" 폴더는 삭제할 수 없습니다.', clashOpenAlert: '휴지통 디렉터리를 열려면 "휴지통" 버튼을 클릭하세요.', right: '앞으로', back: '뒤로', @@ -1629,7 +1642,7 @@ const message = { previewTruncated: '파일이 너무 커서 마지막 부분만 표시됩니다', previewEmpty: '파일이 비어 있거나 텍스트 파일이 아닙니다', previewLargeFile: '미리보기', - panelInstallDir: `1Panel 설치 디렉터리는 삭제할 수 없습니다.`, + panelInstallDir: '1Panel 설치 디렉터리는 삭제할 수 없습니다.', wgetTask: '다운로드 작업', existFileTitle: '동일한 이름의 파일 경고', existFileHelper: '업로드한 파일에 동일한 이름의 파일이 포함되어 있습니다. 덮어쓰시겠습니까?', @@ -1721,6 +1734,7 @@ const message = { loginTime: '로그인 시간', loginIP: '로그인 IP', stopSSHWarn: '이 SSH 연결을 끊으시겠습니까?', + remote: '원격 SSH', }, setting: { panel: '패널', @@ -1908,7 +1922,6 @@ const message = { accountKey: '계정 키', address: '주소', path: '경로', - safe: '보안', passkey: '패스키', passkeyManage: '관리', @@ -2011,7 +2024,6 @@ const message = { error416: '범위 불만족', error444: '연결 닫힘', error500: '서버 오류', - https: '패널에 HTTPS를 설정하면 액세스 보안이 향상됩니다', strictHelper: '비 HTTPS 트래픽은 패널에 연결할 수 없습니다', muxHelper: @@ -2026,7 +2038,6 @@ const message = { primaryKey: '개인 키', certificate: '인증서', backupJump: '현재 백업 목록에 없는 파일입니다. 파일 디렉토리에서 다운로드하여 백업에 가져오기를 시도하세요.', - snapshot: '스냅샷 | 스냅샷들', noAppData: '선택할 수 있는 시스템 앱이 없습니다', noBackupData: '선택할 수 있는 백업 데이터가 없습니다', @@ -2094,7 +2105,6 @@ const message = { rollback: '롤백', rollbackHelper: '이 복구를 롤백하면 해당 복구의 모든 파일이 대체되며 Docker 및 1Panel 서비스를 재시작해야 할 수 있습니다. 계속하시겠습니까?', - upgradeHelper: '업그레이드에는 1Panel 서비스를 재시작해야 합니다. 계속하시겠습니까?', rollbackLocalHelper: '마스터 노드는 직접 롤백을 지원하지 않습니다. 수동으로 [1pctl restore] 명령어를 실행하여 롤백하세요!', @@ -2105,7 +2115,6 @@ const message = { versionNotSame: '노드 버전이 메인 노드와 일치하지 않습니다. 노드 관리에서 업그레이드한 후 다시 시도해 주세요.', versionCompare: '노드 {0}이(가) 이미 업그레이드 가능한 최신 버전입니다. 마스터 노드 버전을 확인 후 다시 시도하세요!', - about: '정보', versionItem: '현재 버전', backupCopies: '백업 수', @@ -2123,7 +2132,6 @@ const message = { forum: '토론', doc2: '문서', currentVersion: '버전', - license: '라이선스', bindNode: '노드 바인딩', menuSetting: '메뉴 설정', @@ -2136,6 +2144,31 @@ const message = { recoverMessage: '페이지가 새로고침되어 메뉴 목록이 초기 상태로 복원됩니다. 계속하시겠습니까?', compressPassword: '압축 비밀번호', backupRecoverMessage: '압축 또는 압축 해제 비밀번호를 입력하세요 (설정하지 않으려면 비워 두세요)', + componentSize: '컴포넌트 크기', + scope: '범위', + public: '공개', + publicHelper: '공개 타입 백업 계정은 각 하위 노드로 동기화되어 함께 사용할 수 있습니다', + private: '비공개', + privateHelper: '비공개 타입 백업 계정은 현재 노드에서만 생성되며 현재 노드에서만 사용됩니다', + UPYUN: 'UPYUN', + ALIYUN: 'Aliyun Drive', + ALIYUNHelper: + 'Aliyun Drive의 비클라이언트 다운로드 최대 용량은 100MB입니다. 초과 시 클라이언트로 다운로드하세요.', + ALIYUNRecover: + 'Aliyun Drive의 비클라이언트 다운로드 최대 용량은 100MB입니다. 초과 시 클라이언트로 로컬 다운로드 후 스냅샷을 동기화해 복원하세요.', + GoogleDrive: 'Google Drive', + analysis: '분석', + analysisHelper: + '전체 토큰 내용을 붙여넣으면 필요한 항목을 자동으로 파싱합니다. 자세한 내용은 공식 문서를 참고하세요.', + serviceName: '서비스 이름', + operator: '운영자', + clickToRefresh: '클릭하여 새로고침', + recoverFailed: '스냅샷 복원 실패', + upgradeRecord: '업그레이드 기록', + upgrading: '업그레이드 중, 잠시만 기다려 주세요...', + versionHelper: '명명 규칙: [메이저].[기능].[버그 수정], 예시:', + upgradeCheck: '업데이트 확인', + panelSSLHelper: '패널 SSL 자동 갱신 후 1Panel 서비스를 수동 재시작해야 적용됩니다.', }, license: { offLine: '오프라인 버전', @@ -2189,6 +2222,9 @@ const message = { app: '프로페셔널 버전으로 업그레이드하면 모바일 APP을 통해 서비스 정보, 이상 모니터링 등을 확인할 수 있습니다.', cluster: '프로페셔널 에디션으로 업그레이드하면 MySQL/Postgres/Redis 마스터-슬레이브 클러스터를 관리할 수 있습니다.', + exceptionalHelper: + '라이선스 동기화 검증이 비정상입니다. 수동으로 동기화 버튼을 눌러 프로 버전 기능을 확인하세요. 상세: ', + tamperHelper: '작업 실패, 파일/폴더에 변조 방지가 활성화되어 있습니다. 확인 후 다시 시도하세요!', }, clean: { scan: '스캔 시작', @@ -2207,7 +2243,6 @@ const message = { suggest: '(권장)', totalScan: '정리해야 할 총 불필요 파일: ', selectScan: '선택된 불필요 파일 총합: ', - system: '시스템 불필요 파일', systemHelper: '스냅샷, 업그레이드 및 기타 프로세스 중에 생성된 임시 파일', panelOriginal: '시스템 스냅샷 복원 전 백업 파일', @@ -2215,7 +2250,6 @@ const message = { agentPackages: '이전 버전 자식 노드 업그레이드/설치 패키지', upgradeHelper: '(시스템 롤백을 위해 최신 업그레이드 백업을 유지하는 것이 좋습니다)', rollback: '복구 전 백업 파일', - backup: '시스템 백업', backupHelper: '로컬 백업 계정에 연결되지 않은 백업 파일', unknownBackup: '시스템 백업', @@ -2224,13 +2258,11 @@ const message = { unknownDatabase: '연결되지 않은 데이터베이스 백업', unknownWebsite: '연결되지 않은 웹사이트 백업', unknownSnapshot: '연결되지 않은 스냅샷 백업', - upload: '임시 업로드 파일', uploadHelper: '시스템 백업 리스트에서 업로드된 임시 파일', download: '임시 다운로드 파일', downloadHelper: '시스템에서 제3자 백업 계정으로 다운로드된 임시 파일', directory: '디렉터리', - systemLog: '로그 파일', systemLogHelper: '시스템 로그, 작업 로그, 웹사이트 로그 파일', dockerLog: '컨테이너 작업 로그 파일', @@ -2238,14 +2270,13 @@ const message = { shell: '셸 스크립트 예약 작업', containerShell: '컨테이너 내에서 실행하는 셸 스크립트 예약 작업', curl: 'CURL 예약 작업', - docker: '컨테이너 쓰레기', dockerHelper: '컨테이너, 이미지, 볼륨, 빌드 캐시 등의 파일', volumes: '볼륨', buildCache: '컨테이너 빌드 캐시', - appTmpDownload: '앱 임시 다운로드 파일', unknownWebsiteLog: '연결되지 않은 웹사이트 로그 백업 파일', + snapshot: '시스템 스냅샷 임시 파일', }, app: { app: '애플리케이션 | 애플리케이션들', @@ -2692,7 +2723,6 @@ const message = { failTimeout: '장애 시간 초과', failTimeoutHelper: '서버 상태 점검 시간 창 길이. 이 기간 동안 누적 실패 횟수가 임계값에 도달하면 서버가 일시적으로 제거되고 동일한 시간 후에 재시도됩니다. 기본값 10초', - staticChangePHPHelper: '현재 정적 웹사이트이며 PHP 웹사이트로 전환할 수 있습니다.', proxyCache: '리버스 프록시 캐시', cacheLimit: '캐시 공간 제한', @@ -2720,7 +2750,6 @@ const message = { preflight: '프리플라이트 요청 빠른 응답', preflightHleper: '활성화하면 브라우저가 교차 출처 프리플라이트 요청(OPTIONS 요청)을 보낼 때 시스템이 자동으로 204 상태 코드를 반환하고 필요한 교차 출처 응답 헤더를 설정합니다', - changeDatabase: '데이터베이스 전환', changeDatabaseHelper1: '데이터베이스 연관은 웹사이트 백업 및 복원에 사용됩니다.', changeDatabaseHelper2: '다른 데이터베이스로 전환하면 이전 백업을 복원할 수 없게 될 수 있습니다.', @@ -2754,7 +2783,6 @@ const message = { execUser: '실행 사용자', execDir: '실행 디렉토리', packagist: '중국 전체 미러', - batchOperate: '일괄 작업', batchOperateHelper: '웹사이트를 일괄 {0}, 계속 작업하시겠습니까?', stream: 'TCP/UDP 프록시', @@ -2763,8 +2791,12 @@ const message = { '외부 수신 포트 번호를 설정합니다. 클라이언트는 이 포트를 통해 서비스에 액세스합니다. 쉼표로 구분하세요. 예: 5222,5223', streamHelper: 'TCP/UDP 포트 포워딩 및 로드 밸런싱', udp: 'UDP 활성화', - syncHtmlHelper: 'PHP 및 정적 웹사이트에 동기화', + wafValueHelper: '값', + parentWbeiste: '상위 웹사이트', + shareCahe: '캐시 수 메모리 크기', + shareCaheHelper: '메모리 1M당 약 8000개의 캐시 객체를 저장할 수 있습니다', + cacheExpireJHelper: '만료 후 미적중 시 캐시가 삭제됩니다', }, php: { short_open_tag: '짧은 태그 지원', @@ -2791,6 +2823,7 @@ const message = { containerConfig: '컨테이너 구성', containerConfigHelper: '환경 변수 및 기타 정보는 생성 후 구성 - 컨테이너 구성에서 수정할 수 있습니다', dateTimezoneHelper: '예: TZ=Asia/Shanghai(필요에 따라 추가하세요)', + extensionsHelper: '여러 확장은 쉼표로 구분하세요', }, nginx: { serverNamesHashBucketSizeHelper: '서버 이름의 해시 테이블 크기', @@ -2953,7 +2986,6 @@ const message = { portHelper2: '포트 범위, 예: 8080-8089', changeStrategyHelper: '[{1}] {0} 전략을 [{2}]로 변경합니다. 설정 후 {0}은(는) {2}로 외부 접근을 허용합니다. 계속하시겠습니까?', - strategy: '전략', accept: '허용', drop: '차단', @@ -2980,7 +3012,6 @@ const message = { exportHelper: '{0}개의 방화벽 규칙을 내보내려고 합니다. 계속하시겠습니까?', importSuccess: '{0}개의 규칙을 성공적으로 가져왔습니다', importPartialSuccess: '가져오기 완료: 성공 {0}건, 실패 {1}건', - ipv4Limit: '현재 작업은 IPv4 주소만 지원합니다', basicStatus: '현재 체인 {0}이(가) 바인딩되지 않았습니다. 먼저 바인딩하세요!', baseIptables: 'iptables 서비스', @@ -3011,6 +3042,10 @@ const message = { portHelper: '0은 모든 포트를 의미합니다', allPorts: '모든 포트', deleteRuleConfirm: '{0}개의 규칙을 삭제합니다. 계속하시겠습니까?', + advancedControl: '고급 제어', + advancedControlNotAvailable: '현재 {0} 방화벽 사용 중이며, 고급 규칙은 iptables만 지원합니다', + quickJump: '빠른 이동', + destination: '대상', }, runtime: { runtime: '실행 환경', @@ -3068,6 +3103,26 @@ const message = { concurrency: '동시성 체계', loadStatus: '부하 상태', extraHosts: '호스트 매핑', + extension: '확장', + installExtension: '확장 {0} 설치를 확인하시겠습니까', + loadedExtension: '로드된 확장', + popularExtension: '인기 확장', + uninstallExtension: '확장 {0}을(를) 제거하시겠습니까', + phpConfigHelper: '설정 변경 후 운영 환경 재시작이 필요합니다. 계속하시겠습니까', + operateMode: '운영 모드', + dynamic: '동적', + static: '고정', + ondemand: '온디맨드', + dynamicHelper: '프로세스 수를 동적으로 조정합니다. 트래픽 변동이 크거나 메모리가 적은 사이트에 적합합니다', + staticHelper: '프로세스 수를 고정합니다. 고동시성·안정 트래픽 사이트에 적합하지만 자원 소모가 큽니다', + ondemandHelper: '필요 시 프로세스를 시작/종료합니다. 자원 효율은 좋지만 초기 응답이 느릴 수 있습니다', + max_children: '생성 가능한 최대 프로세스 수', + start_servers: '시작 시 생성되는 프로세스 수', + min_spare_servers: '최소 유휴 프로세스 수', + max_spare_servers: '최대 유휴 프로세스 수', + envKey: '이름', + envValue: '값', + environment: '환경 변수', }, process: { pid: '프로세스 ID', @@ -3114,7 +3169,7 @@ const message = { list: '데몬 프로세스 | 데몬 프로세스들', config: 'Supervisor 설정', primaryConfig: '주 설정 파일 위치', - notSupportCtl: `supervisorctl 이 감지되지 않았습니다. 스크립트 라이브러리 페이지에서 수동으로 설치하세요.`, + notSupportCtl: 'supervisorctl 이 감지되지 않았습니다. 스크립트 라이브러리 페이지에서 수동으로 설치하세요.', user: '사용자', command: '명령어', dir: '디렉토리', @@ -3123,7 +3178,7 @@ const message = { '이 작업은 주 설정 파일의 "[include]" 섹션에 있는 "files" 값을 수정합니다. 다른 설정 파일의 디렉토리는 "{1Panel 설치 디렉토리}/1panel/tools/supervisord/supervisor.d/"입니다.', operatorHelper: '{1} 작업을 {0}에서 수행합니다. 계속하시겠습니까?', uptime: '운영 시간', - notStartWarn: `Supervisor 가 시작되지 않았습니다. 먼저 시작하세요.`, + notStartWarn: 'Supervisor 가 시작되지 않았습니다. 먼저 시작하세요.', serviceName: '서비스 이름', initHelper: 'Supervisor 서비스가 감지되었지만 초기화되지 않았습니다. 상단 상태 표시줄의 초기화 버튼을 클릭하여 구성하세요.', @@ -3441,8 +3496,10 @@ const message = { fileToLarge: '파일이 1MB를 초과하여 업로드할 수 없습니다', uploadOverLimit: '업로드된 파일 수가 제한을 초과했습니다, 최대 1개', importRuleHelper: '한 줄에 하나의 규칙', + name: 'WAF 이름', }, monitor: { + '360': '360 검색', name: '웹사이트 모니터링', pv: '페이지 조회수', uv: '고유 방문자 수', @@ -3512,7 +3569,6 @@ const message = { statusErr: '잘못된 상태 코드 형식', shenma: '션마 검색', duckduckgo: '덕덕고', - '360': '360 검색', excludeUri: 'URI 제외', top100Helper: '상위 100 개의 데이터를 표시합니다', logSaveDay: '로그 보관 기간 (일)', @@ -3617,7 +3673,6 @@ const message = { wafContent3: '요청이 차단된 후 표시할 사용자 지정 페이지를 생성합니다.', wafTitle4: '사용자 지정 규칙 (ACL)', wafContent4: '사용자 지정 규칙에 따라 요청을 차단합니다.', - tamperTitle1: '파일 무결성 모니터링', tamperContent1: '핵심 파일, 스크립트 파일, 구성 파일을 포함한 웹사이트 파일의 무결성을 모니터링합니다.', tamperTitle2: '실시간 스캔 및 감지', @@ -3628,14 +3683,12 @@ const message = { tamperTitle4: '로그 기록 및 분석', tamperContent4: '파일 접근 및 작업 로그를 기록하여 관리자가 감사 및 분석을 수행할 수 있도록 하고, 잠재적 보안 위협을 식별합니다.', - settingTitle1: '사용자 정의 환영 메시지', settingContent1: '1Panel 로그인 페이지에 사용자 정의 환영 메시지를 설정합니다.', settingTitle2: '사용자 정의 로고', settingContent2: '브랜드명이나 텍스트가 포함된 로고 이미지를 업로드할 수 있습니다.', settingTitle3: '사용자 정의 웹사이트 아이콘', settingContent3: '브라우저 기본 아이콘을 대체할 사용자 정의 아이콘을 업로드하여 사용자 경험을 개선합니다.', - monitorTitle1: '방문자 추세', monitorContent1: '웹사이트 방문자 추세를 통계적으로 표시합니다.', monitorTitle2: '방문자 지도', @@ -3644,7 +3697,6 @@ const message = { monitorContent3: '웹사이트 요청 정보(스파이더, 접속 장치, 요청 상태 등)에 대한 통계를 제공합니다.', monitorTitle4: '실시간 모니터링', monitorContent4: '웹사이트 요청 정보(요청 수, 트래픽 등)를 실시간으로 모니터링합니다.', - alertTitle1: 'SMS 알림', alertContent1: '서버 리소스 사용량 이상, 웹사이트 및 인증서 만료, 새로운 버전 업데이트, 비밀번호 만료 등의 문제가 발생하면 SMS 알림을 통해 사용자가 신속히 처리할 수 있도록 합니다.', @@ -3654,7 +3706,6 @@ const message = { alertTitle3: '알림 설정', alertContent3: '사용자에게 전화번호, 일일 푸시 빈도, 일일 푸시 시간 등을 사용자 정의할 수 있는 설정을 제공하여 보다 합리적인 푸시 알림을 설정할 수 있도록 합니다.', - nodeDashTitle1: '애플리케이션 관리', nodeDashContent1: '다중 노드 애플리케이션의 통합 관리, 상태 모니터링, 빠른 시작/중지, 터미널 연결 및 백업 지원', @@ -3664,7 +3715,6 @@ const message = { nodeDashContent3: '다중 노드 데이터베이스의 통합 관리, 주요 상태 한눈에 확인, 원클릭 백업 지원', nodeDashTitle4: '예약 작업 관리', nodeDashContent4: '다중 노드 예약 작업의 통합 관리, 상태 모니터링, 빠른 시작/중지 및 수동 트리거 실행 지원', - nodeTitle1: '원클릭 노드 추가', nodeContent1: '여러 서버 노드를 빠르게 통합', nodeTitle2: '일괄 업그레이드', @@ -3673,17 +3723,14 @@ const message = { nodeContent3: '각 노드의 운영 상태를 실시간으로 파악', nodeTitle4: '빠른 원격 연결', nodeContent4: '원클릭으로 노드 원격 터미널에 직접 연결', - fileExchangeTitle1: '키 인증 전송', fileExchangeContent1: 'SSH 키를 통해 인증하여 전송 보안을 보장합니다.', fileExchangeTitle2: '효율적인 파일 동기화', fileExchangeContent2: '변경된 내용만 동기화하여 전송 속도와 안정성을 크게 향상시킵니다.', fileExchangeTitle3: '다중 노드 상호 통신 지원', fileExchangeContent3: '다른 노드 간에 프로젝트 파일을 쉽게 전송하고, 여러 서버를 유연하게 관리합니다.', - nodeAppTitle1: '애플리케이션 업그레이드 관리', nodeAppContent1: '다중 노드 애플리케이션 업데이트 통합 모니터링, 원클릭 업그레이드 지원', - appTitle1: '유연한 패널 관리', appContent1: '언제 어디서나 1Panel 서버를 쉽게 관리하세요.', appTitle2: '종합적인 서비스 정보', @@ -3692,7 +3739,6 @@ const message = { appTitle3: '실시간 이상 모니터링', appContent3: '모바일 앱에서 서버 상태, WAF 보안 모니터링, 웹사이트 방문 통계 및 프로세스 건강 상태를 실시간으로 확인하세요.', - clusterTitle1: '마스터-슬레이브 배포', clusterContent1: '다른 노드에서 MySQL/Postgres/Redis 마스터-슬레이브 인스턴스를 생성하는 것을 지원하며, 자동으로 마스터-슬레이브 연결 및 초기화를 완료합니다', @@ -3759,7 +3805,6 @@ const message = { nodeSyncHelper: '노드 정보 동기화는 다음 정보를 동기화합니다:', nodeSyncHelper1: '1. 공용 백업 계정 정보', nodeSyncHelper2: '2. 주 노드와 하위 노드 간의 연결 정보', - nodeCheck: '가용성 확인', checkSSH: '노드 SSH 연결 확인', checkUserPermission: '노드 사용자 권한 확인', @@ -3781,7 +3826,6 @@ const message = { errLicense: '이 노드에 바인딩된 라이선스를 사용할 수 없습니다. 확인 후 다시 시도하십시오!', errNodePort: '노드 포트 [ {0} ]에 접근할 수 없는 것으로 감지되었습니다. 방화벽 또는 보안 그룹에서 해당 포트가 허용되었는지 확인하십시오.', - reinstallHelper: '노드 {0}를 재설치합니다. 계속하시겠습니까?', unhealthyCheck: '비정상 체크', fixOperation: '수정 작업', @@ -3805,7 +3849,6 @@ const message = { offline: '오프라인 모드', freeCount: '무료 할당량 [{0}]', offlineHelper: '노드가 오프라인 환경일 때 사용', - appUpgrade: '앱 업그레이드', appUpgradeHelper: '업그레이드가 필요한 앱이 {0}개 있습니다', }, diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts index d90f4ffb9fb5..ae4b93341143 100644 --- a/frontend/src/lang/modules/ms.ts +++ b/frontend/src/lang/modules/ms.ts @@ -84,6 +84,10 @@ const message = { hide: 'Sembunyikan', visit: 'Lawati', migrate: 'Migrasi', + prev: 'Sebelumnya', + next: 'Seterusnya', + setDefault: 'Pulihkan lalai', + bind: 'Ikat', }, operate: { start: 'Mula', @@ -133,6 +137,8 @@ const message = { manageGroup: 'Urus Kumpulan', backToList: 'Kembali ke Senarai', keepEdit: 'Teruskan Mengedit', + default: 'Lalai', + noRefresh: 'Tiada segar semula auto', }, loadingText: { Upgrading: 'Peningkatan sistem, sila tunggu...', @@ -183,6 +189,10 @@ const message = { importHelper: 'Apabila mengimport data yang bercanggah atau pendua, kandungan yang diimport akan digunakan sebagai piawai untuk mengemas kini data pangkalan data asal.', errImport: 'Kandungan fail adalah tidak normal:', + backupSuccess: 'Sandaran berjaya', + restoreSuccess: 'Pemulihan berjaya', + installSuccess: 'Pemasangan berjaya', + uninstallSuccess: 'Nyahpasang berjaya', }, login: { username: 'Pengguna', @@ -225,9 +235,11 @@ const message = { 'Ruangan ini mesti bermula dengan aksara bukan khas dan mesti terdiri daripada aksara rumi, Cina, nombor, ".", "-", dan "_" dengan panjang 1-128 aksara.', userName: 'Menyokong bermula dengan bukan aksara khas, Bahasa Inggeris, Bahasa Cina, nombor, dan _, panjang 3-30', - simpleName: `Ruangan ini tidak boleh bermula dengan aksara garis bawah ("_") dan mesti terdiri daripada aksara rumi, nombor, dan "_" dengan panjang 3-30 aksara.`, - simplePassword: `Ruangan ini tidak boleh bermula dengan aksara garis bawah ("_") dan mesti terdiri daripada aksara rumi, nombor, dan "_" dengan panjang 1-30 aksara.`, - dbName: `Ruangan ini tidak boleh bermula dengan aksara garis bawah ("_") dan mesti terdiri daripada aksara rumi, nombor, dan "_" dengan panjang 1-64 aksara.`, + simpleName: + 'Ruangan ini tidak boleh bermula dengan aksara garis bawah ("_") dan mesti terdiri daripada aksara rumi, nombor, dan "_" dengan panjang 3-30 aksara.', + simplePassword: + 'Ruangan ini tidak boleh bermula dengan aksara garis bawah ("_") dan mesti terdiri daripada aksara rumi, nombor, dan "_" dengan panjang 1-30 aksara.', + dbName: 'Ruangan ini tidak boleh bermula dengan aksara garis bawah ("_") dan mesti terdiri daripada aksara rumi, nombor, dan "_" dengan panjang 1-64 aksara.', imageName: 'Menyokong bermula dengan bukan aksara khas, Bahasa Inggeris, nombor, :@/.-_, panjang 1-256', composeName: 'Menyokong aksara bukan khas pada permulaan, huruf kecil, nombor, "-", dan "_", dengan panjang 1-256 aksara.', @@ -238,7 +250,8 @@ const message = { complexityPassword: 'Ruangan ini mesti terdiri daripada aksara rumi, nombor dengan panjang 8-30 aksara dan mengandungi sekurang-kurangnya dua aksara khas.', commonPassword: 'Panjang ruangan ini mesti melebihi 6 aksara.', - linuxName: `Panjang ruangan ini mesti antara 1 hingga 128 aksara. Ruangan ini tidak boleh mengandungi aksara khas berikut: "{0}".`, + linuxName: + 'Panjang ruangan ini mesti antara 1 hingga 128 aksara. Ruangan ini tidak boleh mengandungi aksara khas berikut: "{0}".', email: 'Ruangan ini mesti mengandungi alamat emel yang sah.', number: 'Ruangan ini mesti mengandungi nombor.', integer: 'Ruangan ini mesti mengandungi integer positif.', @@ -284,7 +297,7 @@ const message = { commonError: 'Permintaan gagal', }, service: { - serviceNotStarted: `Perkhidmatan {0} belum dimulakan.`, + serviceNotStarted: 'Perkhidmatan {0} belum dimulakan.', }, status: { running: 'Sedang Berjalan', @@ -346,6 +359,7 @@ const message = { conflict: 'Konflik', duplicate: 'Pendua', unexecuted: 'Tidak Dilaksanakan', + unused: 'Tidak digunakan', }, units: { second: 'saat | saat | saat', @@ -399,6 +413,7 @@ const message = { app: 'Aplikasi', msgCenter: 'Tugas', disk: 'Disk', + filter: 'Penapis', }, home: { recommend: 'Disyorkan', @@ -432,12 +447,10 @@ const message = { runningTime: 'Uptime', mem: 'Memori Sistem', swapMem: 'Swap partition', - runSmoothly: 'Beban rendah', runNormal: 'Beban sederhana', runSlowly: 'Beban tinggi', runJam: 'Beban berat', - core: 'Teras Fizikal', corePercent: 'Penggunaan Teras', cpuFrequency: 'Frekuensi CPU', @@ -463,7 +476,6 @@ const message = { available: 'Tersedia', percent: 'Penggunaan', goInstall: 'Pergi pasang', - networkCard: 'Kad rangkaian', disk: 'Disk', memo: 'Catatan', @@ -519,14 +531,11 @@ const message = { changePasswordHelper: 'Pangkalan data telah dikaitkan dengan aplikasi. Menukar kata laluan akan menukar kata laluan pangkalan data aplikasi pada masa yang sama. Perubahan ini akan berkuat kuasa selepas aplikasi dimulakan semula.', recoverTimeoutHelper: '-1 bermaksud tiada had masa tamat', - confChange: 'Konfigurasi', confNotFound: 'Fail konfigurasi tidak dapat dijumpai. Sila tingkatkan aplikasi ke versi terkini di gedung aplikasi dan cuba lagi!', - portHelper: 'Port ini adalah port yang didedahkan oleh kontena. Anda perlu menyimpan pengubahsuaian secara berasingan dan memulakan semula kontena!', - loadFromRemote: 'Selaras', userBind: 'Kaitkan pengguna', pgBindHelper: @@ -557,14 +566,12 @@ const message = { hasCA: 'Mempunyai sijil CA', skipVerify: 'Abaikan pemeriksaan kesahihan sijil', initialDB: 'Pangkalan Data Awal', - formatHelper: 'Set aksara pangkalan data semasa adalah {0}, ketidakkonsistenan set aksara mungkin menyebabkan kegagalan pemulihan.', dropHelper: 'Anda boleh seret dan lepaskan fail yang ingin dimuat naik di sini atau', clickHelper: 'klik untuk memuat naik', supportUpType: 'Hanya menyokong format fail sql, sql.gz, tar.gz, .zip. Fail termampat yang diimport mesti mengandungi hanya satu fail .sql atau termasuk test.sql', - currentStatus: 'Keadaan semasa', baseParam: 'Parameter asas', performanceParam: 'Parameter prestasi', @@ -597,7 +604,6 @@ const message = { tableLocksWaited: 'Bilangan kunci jadual', tableLocksWaitedHelper: 'Jika nilai terlalu besar, pertimbangkan untuk meningkatkan prestasi pangkalan data anda.', - performanceTuning: 'Penalaan prestasi', optimizationScheme: 'Skema pengoptimuman', keyBufferSizeHelper: 'Saiz penimbal untuk indeks', @@ -615,14 +621,11 @@ const message = { tableOpenCacheHelper: 'Cache jadual', maxConnectionsHelper: 'Sambungan maksimum', restart: 'Mulakan semula', - slowLog: 'Log lambat', noData: 'Tiada log lambat lagi.', - isOn: 'Hidup', longQueryTime: 'Ambang (saat)', thresholdRangeHelper: 'Sila masukkan ambang yang betul (1 - 600).', - timeout: 'Tamat masa(saat)', timeoutHelper: 'Tempoh tamat masa sambungan tidak aktif. 0 menunjukkan sambungan sentiasa aktif.', maxclients: 'Klien maksimum', @@ -649,20 +652,17 @@ const message = { redisQuickCmd: 'Arahan pantas Redis', recoverHelper: 'Ini akan menimpa data dengan [{0}]. Adakah anda mahu meneruskan?', submitIt: 'Tindih data', - baseConf: 'Asas', allConf: 'Semua', restartNow: 'Mula semula sekarang', restartNowHelper1: 'Anda perlu memulakan semula sistem selepas perubahan konfigurasi berkuat kuasa. Jika data anda perlu dipelihara, lakukan operasi simpan terlebih dahulu.', restartNowHelper: 'Perubahan ini hanya akan berkuat kuasa selepas sistem dimulakan semula.', - persistence: 'Ketekalan', rdbHelper1: 'saat, masukkan', rdbHelper2: 'data', rdbHelper3: 'Memenuhi mana-mana syarat akan mencetuskan ketekalan RDB.', rdbInfo: 'Pastikan nilai dalam senarai peraturan berada dalam julat 1 hingga 100000', - containerConn: 'Sambungan kontena', copyConnURL: 'Salin URL sambungan', connAddress: 'Alamat', @@ -725,6 +725,7 @@ const message = { pairingCodeRequired: 'Please enter pairing code', pairingApproveSuccess: 'Pairing approved successfully', customProviderHelper: 'Penyedia model tersuai tidak mengesahkan sama ada akaun boleh digunakan', + feishuSaveSuccess: 'Disimpan ke Feishu', }, model: { model: 'Model', @@ -773,7 +774,6 @@ const message = { memoryTotal: 'Jumlah Memori', percent: 'Penggunaan', base: 'Maklumat Asas', - driverVersion: 'Versi Pemacu', cudaVersion: 'Versi CUDA', processMemoryUsage: 'Penggunaan Memori', @@ -804,6 +804,7 @@ const message = { current: 'Pemantauan Masa Nyata', history: 'Rekod Sejarah', notSupport: 'Versi atau pemacu semasa tidak menyokong paparan parameter ini.', + processCount: 'Bilangan proses', }, mcp: { server: 'Pelayan MCP', @@ -914,7 +915,6 @@ const message = { 'Enjin kontena menggunakan nilai asas 1024 untuk bahagian CPU. Anda boleh meningkatkannya untuk memberikan lebih masa CPU kepada kontena.', inputIpv4: 'Contoh: 192.168.1.1', inputIpv6: 'Contoh: 2001:0db8:85a3:0000:0000:8a2e:0370:7334', - diskUsage: 'Penggunaan Cakera', localVolume: 'Isipadu Storan Tempatan', buildCache: 'Cache Binaan', @@ -928,7 +928,6 @@ const message = { sizeRwHelper: 'Saiz lapisan boleh tulis yang unik untuk bekas', sizeRootFs: 'Saiz Maya', sizeRootFsHelper: 'Jumlah saiz semua lapisan imej yang disandarkan oleh bekas + lapisan bekas', - containerFromAppHelper: 'Dikesan bahawa kontena ini berasal dari gedung aplikasi. Operasi aplikasi boleh menyebabkan suntingan semasa menjadi tidak sah.', containerFromAppHelper1: @@ -942,7 +941,6 @@ const message = { privileged: 'Privileged', privilegedHelper: 'Benarkan kontena menjalankan operasi teristimewa tertentu pada hos, yang boleh meningkatkan risiko kontena. Gunakan dengan berhati-hati!', - upgradeHelper: 'Nama Repository/Nama Imej: Versi Imej', upgradeWarning2: 'Operasi peningkatan memerlukan pembinaan semula kontena, sebarang data yang tidak disimpan akan hilang. Adakah anda mahu meneruskan?', @@ -995,10 +993,8 @@ const message = { unlessStopped: 'melainkan dihentikan', onFailure: 'gagal (lima kali secara lalai)', no: 'tidak pernah', - refreshTime: 'Selang penyegaran', cache: 'Cache', - image: 'Imej | Imej-imej', imagePull: 'Tarik', imagePullHelper: @@ -1031,7 +1027,6 @@ const message = { delBuildCacheHelper: 'Ini akan memadam semua artefak cache yang dijana semasa binaan dan tidak boleh diundur. Adakah anda mahu meneruskan?', urlWarning: 'Awalan URL tidak perlu termasuk http:// atau https://. Sila ubah.', - network: 'Rangkaian | Rangkaian-rangkaian', networkHelper: 'Ini boleh menyebabkan beberapa aplikasi dan persekitaran runtime tidak berfungsi dengan betul. Adakah anda mahu meneruskan?', @@ -1044,7 +1039,6 @@ const message = { scope: 'Skop IP', gateway: 'Gerbang', auxAddress: 'Kecualikan IP', - volume: 'Volum | Volum-volum', volumeDir: 'Direktori volum', nfsEnable: 'Aktifkan storan NFS', @@ -1052,7 +1046,6 @@ const message = { mountpoint: 'Titik pemasangan', mountpointNFSHelper: 'contoh: /nfs, /nfs-share', options: 'Pilihan', - repo: 'Pendaftaran', httpRepoHelper: 'Mengoperasikan repositori jenis HTTP memerlukan mulakan semula perkhidmatan Docker.', httpRepo: @@ -1068,7 +1061,6 @@ const message = { 'Jika terdapat banyak cermin, baris baru mesti dipaparkan, contohnya:\nhttp://xxxxxx.m.daocloud.io \nhttps://xxxxxx.mirror.aliyuncs.com', registrieHelper: 'Jika terdapat banyak repositori persendirian, baris baru mesti dipaparkan, contohnya:\n172.16.10.111:8081 \n172.16.10.112:8081', - compose: 'Compose | Compose-compose', composeFile: 'Fail Susunan', fromChangeHelper: 'Menukar sumber akan membersihkan kandungan yang sedang diedit. Adakah anda mahu meneruskan?', @@ -1094,7 +1086,6 @@ const message = { 'Ini akan menghentikan dan menghapuskan semua kontena dan rangkaian di bawah komposisi {0}. Adakah anda mahu meneruskan?', composeEnvHelper2: 'Penyelarasan ini dibuat oleh Kedai Apl 1Panel. Sila ubah pembolehubah persekitaran dalam aplikasi yang dipasang.', - setting: 'Tetapan | Tetapan', operatorStatusHelper: 'Ini akan "{0}" perkhidmatan Docker. Adakah anda mahu meneruskan?', dockerStatus: 'Perkhidmatan Docker', @@ -1135,12 +1126,10 @@ const message = { related: 'Berkaitan', includeAppstore: 'Tunjukkan kontena dari gedung aplikasi', excludeAppstore: 'Sembunyikan Kontena Kedai Aplikasi', - cleanDockerDiskZone: 'Bersihkan ruang cakera yang digunakan oleh Docker', cleanImagesHelper: '( Bersihkan semua imej yang tidak digunakan oleh mana-mana kontena )', cleanContainersHelper: '( Bersihkan semua kontena yang dihentikan )', cleanVolumesHelper: '( Bersihkan semua volum tempatan yang tidak digunakan )', - makeImage: 'Cipta imej', newImageName: 'Nama imej baru', commitMessage: 'Mesej komit', @@ -1148,6 +1137,12 @@ const message = { ifPause: 'Jeda Kontena Semasa Penciptaan', ifMakeImageWithContainer: 'Cipta Imej Baru daripada Kontena Ini?', finishTime: 'Masa berhenti terakhir', + workingDir: 'Direktori kerja', + resource: 'Sumber', + macAddr: 'Alamat MAC', + volumeHelper: 'Pastikan kandungan volum storan adalah betul', + exportHelper: 'Eksport imej terpilih ke satu fail tar.', + goSetting: 'Pergi ke edit', }, cronjob: { importHelper: @@ -1260,7 +1255,6 @@ const message = { cutWebsiteLog: 'Putaran log laman web', cutWebsiteLogHelper: 'Fail log yang diputar akan disandarkan ke direktori sandaran 1Panel.', syncIpGroup: 'Segerakkan kumpulan IP WAF', - requestExpirationTime: 'Waktu luput permintaan muat naik (Jam)', unitHours: 'Unit: Jam', alertTitle: 'Tugas Terancang - {0} 「{1}」 Amaran Kegagalan Tugas', @@ -1287,6 +1281,13 @@ const message = { 'Perkhidmatan {0} tidak dikesan. Sila pasang dengan cepat menggunakan pustaka skrip terlebih dahulu!', syncHelper: 'Akan menyelaraskan pustaka skrip sistem. Operasi ini hanya melibatkan skrip sistem. Teruskan?', }, + nextTime: '5 pelaksanaan seterusnya', + logHelper1: '1. Log sistem 1Panel', + backupContent: 'Kandungan sandaran', + cronSpecRule2: 'Format tempoh pelaksanaan tidak betul, semak dan cuba lagi!', + executor: 'Pelaksana', + cleanLog: 'Bersih log automatik', + cleanLogscope: 'Tempoh simpan log', }, monitor: { globalFilter: 'Penapis Global', @@ -1299,7 +1300,6 @@ const message = { defaultIOHelper: 'Pilihan cakera lalai yang dipaparkan dalam antara muka pemantauan dan gambaran keseluruhan', cleanMonitor: 'Kosongkan Rekod Pemantauan', cleanHelper: 'Operasi ini akan membersihkan semua rekod pemantauan termasuk GPU. Teruskan?', - avgLoad: 'Purata beban', loadDetail: 'Butiran beban', resourceUsage: 'Penggunaan sumber', @@ -1437,6 +1437,7 @@ const message = { dnsCheck: 'Uji Ketersediaan', dnsOK: 'Maklumat konfigurasi DNS tersedia!', dnsTestFailed: 'Maklumat konfigurasi DNS tidak tersedia.', + syncSiteHelper: 'Gunakan {0} untuk penyegerakan masa sistem. Teruskan?', }, fail2ban: { sshPort: 'Dengar pada port SSH', @@ -1559,6 +1560,9 @@ const message = { websiteLog: 'Log Laman Web', runLog: 'Log Jalankan', errLog: 'Log Ralat', + task: 'Log tugas', + taskName: 'Nama tugas', + taskRunning: 'Sedang berjalan', }, file: { fileDirNum: '{0} direktori, {1} fail,', @@ -1788,6 +1792,7 @@ const message = { loginTime: 'Waktu log masuk', loginIP: 'IP log masuk', stopSSHWarn: 'Adakah anda mahu memutuskan sambungan SSH ini', + remote: 'SSH jauh', }, setting: { panel: 'Panel', @@ -1988,7 +1993,6 @@ const message = { accountKey: 'Kunci akaun', address: 'Alamat', path: 'Laluan', - safe: 'Keselamatan', passkey: 'Passkey', passkeyManage: 'Urus', @@ -2101,7 +2105,6 @@ const message = { error416: 'Julat Tidak Memuaskan', error444: 'Sambungan ditutup', error500: 'Ralat Pelayan', - https: 'Mengatur HTTPS untuk panel meningkatkan keselamatan akses', strictHelper: 'Trafik bukan HTTPS tidak boleh menyambung ke panel', muxHelper: @@ -2118,7 +2121,6 @@ const message = { certificate: 'Sijil', backupJump: 'Fail sandaran tidak berada dalam senarai sandaran semasa, sila cuba muat turun dari direktori fail dan import untuk sandaran.', - snapshot: 'Snapshot | Snapshots', noAppData: 'Tiada aplikasi sistem yang boleh dipilih', noBackupData: 'Tiada data sandaran yang boleh dipilih', @@ -2188,7 +2190,6 @@ const message = { rollback: 'Pulangkan semula', rollbackHelper: 'Pulangkan semula pemulihan ini akan menggantikan semua fail dari pemulihan ini, dan mungkin memerlukan mulakan semula perkhidmatan Docker dan 1Panel. Adakah anda mahu meneruskan?', - upgradeHelper: 'Kemas kini memerlukan mulakan semula perkhidmatan 1Panel. Adakah anda mahu meneruskan?', rollbackLocalHelper: 'Nod utama tidak menyokong rollback secara langsung. Sila laksanakan arahan [1pctl restore] secara manual untuk rollback!', @@ -2200,7 +2201,6 @@ const message = { 'Versi nod tidak sepadan dengan nod utama. Sila naik taraf di Pengurusan Nod sebelum mencuba semula.', versionCompare: 'Nod {0} telah berada pada versi terkini yang boleh dinaik taraf. Sila periksa versi nod utama dan cuba lagi!', - about: 'Mengenai', versionItem: 'Versi Semasa', backupCopies: 'Salinan Sandaran', @@ -2218,7 +2218,6 @@ const message = { forum: 'Perbincangan', doc2: 'Dokumen', currentVersion: 'Versi', - license: 'Lesen', bindNode: 'Ikatan Nod', menuSetting: 'Tetapan Menu', @@ -2232,6 +2231,32 @@ const message = { compressPassword: 'Kata laluan mampatan', backupRecoverMessage: 'Sila masukkan kata laluan mampatan atau nyahmampatan (biarkan kosong jika tidak menetapkan)', + componentSize: 'Saiz komponen', + scope: 'Skop', + public: 'Awam', + publicHelper: 'Akaun sandaran jenis awam akan disegerakkan ke setiap subnod dan boleh digunakan bersama', + private: 'Peribadi', + privateHelper: 'Akaun sandaran jenis peribadi hanya dicipta pada nod semasa dan hanya untuk nod semasa', + UPYUN: 'UPYUN', + ALIYUN: 'Aliyun Drive', + ALIYUNHelper: 'Had semasa muat turun tanpa klien Aliyun Drive ialah 100 MB. Melebihi had perlu guna klien.', + ALIYUNRecover: + 'Had semasa muat turun tanpa klien Aliyun Drive ialah 100 MB. Jika melebihi, muat turun ke tempatan melalui klien dahulu, kemudian segerakkan syot kilat untuk pemulihan.', + GoogleDrive: 'Google Drive', + analysis: 'Analisis', + analysisHelper: + 'Tampal keseluruhan kandungan token untuk parse automatik bahagian diperlukan. Rujuk dokumentasi rasmi untuk butiran.', + serviceName: 'Nama servis', + operator: 'Operator', + clickToRefresh: 'Klik untuk segar semula', + recoverFailed: 'Pemulihan syot kilat gagal', + importHelper: 'Direktori syot kilat: ', + upgradeRecord: 'Rekod naik taraf', + upgrading: 'Sedang naik taraf, sila tunggu...', + versionHelper: 'Peraturan nama: [versi utama].[versi fungsi].[versi pembaikan], seperti contoh berikut:', + upgradeCheck: 'Semak kemas kini', + panelSSLHelper: + 'Selepas pembaharuan automatik SSL panel, anda perlu mulakan semula servis 1Panel secara manual.', }, license: { offLine: 'Versi Luar Talian', @@ -2286,6 +2311,9 @@ const message = { app: 'Tingkatkan ke versi profesional untuk melihat maklumat perkhidmatan, pemantauan abnormal, dll melalui aplikasi mudah alih.', cluster: 'Versi Profesional menaik taraf membolehkan anda menguruskan kelompok induk-hamba MySQL/Postgres/Redis.', + exceptionalHelper: + 'Pengesahan penyegerakan lesen tidak normal. Klik butang sync secara manual untuk pastikan fungsi Pro berjalan baik. butiran: ', + tamperHelper: 'Operasi gagal, fail atau folder mempunyai perlindungan gangguan. Sila semak dan cuba lagi!', }, clean: { scan: 'Mulakan imbasan', @@ -2304,7 +2332,6 @@ const message = { suggest: '(Disyorkan)', totalScan: 'Jumlah fail sampah untuk dibersihkan: ', selectScan: 'Jumlah fail sampah yang dipilih: ', - system: 'Fail Sampah Sistem', systemHelper: 'Fail sementara dijana semasa snapshot, naik taraf, dan proses lain', panelOriginal: 'Fail sandaran sebelum pemulihan snapshot sistem', @@ -2312,7 +2339,6 @@ const message = { agentPackages: 'Pakej naik taraf/pemasangan nod anak versi sejarah', upgradeHelper: '(Disarankan untuk mengekalkan sandaran peningkatan terbaru untuk pemulihan sistem)', rollback: 'Fail sandaran sebelum pemulihan', - backup: 'Sandaran Sistem', backupHelper: 'Fail sandaran tidak dikaitkan dengan akaun sandaran tempatan', unknownBackup: 'Sandaran Sistem', @@ -2321,13 +2347,11 @@ const message = { unknownDatabase: 'Sandaran Pangkalan Data Tidak Dikaitkan', unknownWebsite: 'Sandaran Laman Web Tidak Dikaitkan', unknownSnapshot: 'Sandaran Snapshot Tidak Dikaitkan', - upload: 'Fail Muat Naik Sementara', uploadHelper: 'Fail sementara dimuat naik dari senarai sandaran sistem', download: 'Fail Muat Turun Sementara', downloadHelper: 'Fail sementara dimuat turun dari akaun sandaran pihak ketiga oleh sistem', directory: 'Direktori', - systemLog: 'Fail log', systemLogHelper: 'Log sistem, log tugas, fail log laman web', dockerLog: 'Fail log operasi bekas', @@ -2335,14 +2359,13 @@ const message = { shell: 'Tugas berjadual skrip Shell', containerShell: 'Tugas berjadual skrip Shell dilaksanakan di dalam bekas', curl: 'Tugas berjadual CURL', - docker: 'Sampah bekas', dockerHelper: 'Fail seperti bekas, imej, isipadu, cache binaan, dsb.', volumes: 'Isipadu', buildCache: 'Cache Pembinaan Kontena', - appTmpDownload: 'Fail muat turun sementara aplikasi', unknownWebsiteLog: 'Fail sandaran log laman web tidak dikaitkan', + snapshot: 'Fail sementara syot kilat sistem', }, app: { app: 'Aplikasi | Aplikasi', @@ -2569,7 +2592,8 @@ const message = { deleteAppHelper: 'Padam aplikasi yang berkaitan dan sandaran aplikasi pada masa yang sama', deleteBackupHelper: 'Juga padamkan sandaran laman web.', deleteDatabaseHelper: 'Juga hapuskan pangkalan data yang berkaitan dengan laman web', - deleteConfirmHelper: `Operasi pemadaman tidak boleh dibatalkan. Masukkan "{0}" untuk mengesahkan pemadaman.`, + deleteConfirmHelper: + 'Operasi pemadaman tidak boleh dibatalkan. Masukkan "{0}" untuk mengesahkan pemadaman.', staticPath: 'Direktori utama yang sepadan ialah ', limit: 'Skim', blog: 'Forum/Blog', @@ -2795,7 +2819,6 @@ const message = { failTimeout: 'Masa tamat kegagalan', failTimeoutHelper: 'Panjang tetingkap masa untuk pemeriksaan kesihatan pelayan. Apabila bilangan kegagalan terkumpul mencapai ambang dalam tempoh ini, pelayan akan dikeluarkan buat sementara waktu dan dicuba semula selepas tempoh yang sama. Lalai 10 saat', - staticChangePHPHelper: 'Kini laman web statik, boleh ditukar ke laman web PHP.', proxyCache: 'Cache Proksi Terbalik', cacheLimit: 'Had Ruang Cache', @@ -2823,7 +2846,6 @@ const message = { preflight: 'Tindak balas pantas permintaan preflight', preflightHleper: 'Apabila didayakan, apabila pelayar menghantar permintaan preflight asal silang (permintaan OPTIONS), sistem akan secara automatik mengembalikan kod status 204 dan menetapkan pengepala respons asal silang yang diperlukan', - changeDatabase: 'Tukar Pangkalan Data', changeDatabaseHelper1: 'Perkaitan pangkalan data digunakan untuk sandaran dan pemulihan laman web.', changeDatabaseHelper2: @@ -2858,7 +2880,6 @@ const message = { execUser: 'Pengguna Melaksanakan', execDir: 'Direktori Pelaksanaan', packagist: 'Cermin Penuh China', - batchOperate: 'Operasi Pukal', batchOperateHelper: 'Pukal {0} laman web, teruskan operasi?', stream: 'Proksi TCP/UDP', @@ -2867,8 +2888,12 @@ const message = { 'Tetapkan nombor port pendengaran luaran, pelanggan akan mengakses perkhidmatan melalui port ini, dipisahkan dengan koma, cth., 5222,5223', streamHelper: 'Penerusan Port dan Pengimbangan Beban TCP/UDP', udp: 'Dayakan UDP', - syncHtmlHelper: 'Segerakkan ke PHP dan laman web statik', + wafValueHelper: 'Nilai', + parentWbeiste: 'Laman induk', + shareCahe: 'Saiz memori kiraan cache', + shareCaheHelper: 'Kira-kira 8000 objek cache boleh disimpan bagi setiap 1M memori', + cacheExpireJHelper: 'Cache akan dipadam jika tiada hit selepas tamat tempoh', }, php: { short_open_tag: 'Sokongan tag pendek', @@ -2898,6 +2923,7 @@ const message = { containerConfigHelper: 'Pembolehubah persekitaran dan maklumat lain boleh diubah suai dalam Konfigurasi - Konfigurasi Bekas selepas penciptaan', dateTimezoneHelper: 'Contoh: TZ=Asia/Shanghai (Sila tambahkan jika perlu)', + extensionsHelper: 'Untuk berbilang sambungan, asingkan dengan koma', }, nginx: { serverNamesHashBucketSizeHelper: 'Saiz jadual hash nama pelayan', @@ -2992,9 +3018,9 @@ const message = { 'Dalam mod resolusi manual, anda perlu klik butang mohon selepas penciptaan untuk mendapatkan nilai resolusi DNS', httpHelper: 'Menggunakan mod HTTP memerlukan pemasangan OpenResty dan tidak menyokong permohonan sijil domain wildcard.', - buypassHelper: `Buypass tidak boleh diakses di tanah besar China`, + buypassHelper: 'Buypass tidak boleh diakses di tanah besar China', googleHelper: 'Cara mendapatkan EAB HmacKey dan EAB kid', - googleCloudHelper: `Google Cloud API tidak boleh diakses di kebanyakan kawasan tanah besar China`, + googleCloudHelper: 'Google Cloud API tidak boleh diakses di kebanyakan kawasan tanah besar China', skipDNSCheck: 'Langkau semakan DNS', skipDNSCheckHelper: 'Semak di sini hanya jika anda menghadapi isu tamat masa semasa permintaan pengesahan.', cfHelper: 'Jangan gunakan Global API Key', @@ -3032,7 +3058,6 @@ const message = { argsCheck: 'Pengesahan parameter GET', postCheck: 'Pengesahan parameter POST', cookieBlockList: 'Senarai blok Cookie', - dockerHelper: 'Firewall semasa tidak boleh melumpuhkan pemetaan port bekas. Aplikasi yang dipasang boleh pergi ke halaman [Dipasang] untuk mengedit parameter aplikasi dan mengkonfigurasi peraturan pelepasan port.', iptablesHelper: @@ -3042,7 +3067,7 @@ const message = { unUsed: 'Tidak Digunakan', dockerRestart: 'Operasi firewall memerlukan memulakan semula perkhidmatan Docker', firewallHelper: '{0} firewall sistem', - firewallNotStart: `Firewall sistem belum diaktifkan. Aktifkannya dahulu.`, + firewallNotStart: 'Firewall sistem belum diaktifkan. Aktifkannya dahulu.', restartFirewallHelper: 'Operasi ini akan memulakan semula firewall semasa. Adakah anda mahu meneruskan?', stopFirewallHelper: 'Ini akan menyebabkan pelayan kehilangan perlindungan keselamatan. Adakah anda mahu meneruskan?', @@ -3052,7 +3077,8 @@ const message = { enableBanPing: 'Sekat Ping', disableBanPing: 'Nyahsekat Ping', noPingTitle: 'Lumpuhkan ping', - noPingHelper: `Ini akan melumpuhkan ping, dan pelayan tidak akan memberikan tindak balas ICMP. Adakah anda mahu meneruskan?`, + noPingHelper: + 'Ini akan melumpuhkan ping, dan pelayan tidak akan memberikan tindak balas ICMP. Adakah anda mahu meneruskan?', onPingHelper: 'Ini akan mengaktifkan ping, dan penggodam mungkin menemui pelayan anda. Adakah anda mahu meneruskan?', changeStrategy: 'Tukar strategi {0}', @@ -3070,7 +3096,6 @@ const message = { portHelper2: 'Port rentang, contohnya 8080-8089', changeStrategyHelper: 'Tukar strategi {0} [{1}] kepada [{2}]. Selepas tetapan, {0} akan mengakses {2} secara luaran. Adakah anda mahu meneruskan?', - strategy: 'Strategi', accept: 'Terima', drop: 'Lumpuhkan', @@ -3097,7 +3122,6 @@ const message = { exportHelper: 'Akan mengeksport {0} peraturan firewall. Teruskan?', importSuccess: '{0} peraturan berjaya diimport', importPartialSuccess: 'Import selesai: {0} berjaya, {1} gagal', - ipv4Limit: 'Operasi semasa hanya menyokong alamat IPv4', basicStatus: 'Rantaian semasa {0} tidak terikat, sila ikat dahulu!', baseIptables: 'Perkhidmatan iptables', @@ -3128,6 +3152,9 @@ const message = { portHelper: '0 bermaksud mana-mana port', allPorts: 'Semua Port', deleteRuleConfirm: 'Akan memadam {0} peraturan. Teruskan?', + advancedControl: 'Kawalan lanjutan', + advancedControlNotAvailable: 'Kini menggunakan firewall {0}, peraturan lanjutan hanya menyokong iptables', + destination: 'Destinasi', }, runtime: { runtime: 'Runtime', @@ -3187,6 +3214,27 @@ const message = { concurrency: 'Skim Serentak', loadStatus: 'Status Beban', extraHosts: 'Pemetaan hos', + extension: 'Sambungan', + installExtension: 'Adakah anda pasti untuk memasang sambungan {0}', + loadedExtension: 'Sambungan dimuatkan', + popularExtension: 'Sambungan popular', + uninstallExtension: 'Adakah anda pasti untuk nyahpasang sambungan {0}', + phpConfigHelper: 'Perubahan konfigurasi memerlukan persekitaran operasi dimulakan semula, teruskan', + operateMode: 'mod operasi', + dynamic: 'dinamik', + static: 'statik', + ondemand: 'atas permintaan', + dynamicHelper: 'Laraskan bilangan proses secara dinamik, sesuai untuk trafik berubah atau memori rendah', + staticHelper: 'Bilangan proses tetap, sesuai untuk trafik stabil dan serentak tinggi, penggunaan sumber tinggi', + ondemandHelper: + 'Proses dimulakan dan ditutup mengikut permintaan, penggunaan sumber optimum tetapi respons awal mungkin perlahan', + max_children: 'bilangan maksimum proses yang dibenarkan', + start_servers: 'bilangan proses semasa permulaan', + min_spare_servers: 'bilangan minimum proses melahu', + max_spare_servers: 'bilangan maksimum proses melahu', + envKey: 'Nama', + envValue: 'Nilai', + environment: 'Pembolehubah persekitaran', }, process: { pid: 'Process ID', @@ -3281,6 +3329,13 @@ const message = { diskType: 'Jenis Cakera', serial: 'Nombor Siri', noFail: 'Kegagalan pemasangan tidak menjejaskan permulaan sistem', + management: 'Pengurusan cakera', + partition: 'Sekatan', + unmount: 'Nyahlekap', + unmountHelper: 'Selepas nyahlekap, data mungkin tidak boleh diakses sementara. Teruskan?', + mount: 'Lekap', + partitionAlert: 'Operasi ini memformat seluruh cakera. Pastikan data telah dibackup!', + mountPoint: 'Titik lekap', }, xpack: { expiresTrialAlert: @@ -3494,7 +3549,6 @@ const message = { globalHelper: 'Mod Global: Digerakkan apabila jumlah permintaan ke mana-mana URL dalam unit masa melebihi had', uriModeHelper: 'Mod URL: Digerakkan apabila jumlah permintaan ke satu URL dalam unit masa melebihi had', - ip: 'Senarai Hitam IP', globalSettingHelper: 'Tetapan dengan tag [Laman Web] perlu diaktifkan dalam [Tetapan Laman Web], dan tetapan global hanya tetapan lalai untuk laman web yang baru dicipta', @@ -3566,6 +3620,7 @@ const message = { importRuleHelper: 'Satu peraturan per baris', }, monitor: { + '360': 'Pencarian 360', name: 'Pemantauan Laman Web', pv: 'Paparan Halaman', uv: 'Pelawat Unik', @@ -3636,7 +3691,6 @@ const message = { statusErr: 'Format kod status tidak sah', shenma: 'Shenma Search', duckduckgo: 'DuckDuckGo', - '360': 'Pencarian 360', excludeUri: 'Kecualikan URI', top100Helper: 'Tunjukkan data 100 teratas', logSaveDay: 'Tempoh Penahanan Log (hari)', @@ -3748,7 +3802,6 @@ const message = { wafContent3: 'Cipta halaman tersuai untuk dipaparkan selepas permintaan disekat', wafTitle4: 'Peraturan Tersuai (ACL)', wafContent4: 'Sekat permintaan mengikut peraturan tersuai', - tamperTitle1: 'Pemantauan Integriti Fail', tamperContent1: 'Pantau integriti fail laman web, termasuk fail teras, skrip, dan fail konfigurasi.', tamperTitle2: 'Pengimbasan dan Pengesanan Masa Nyata', @@ -3760,7 +3813,6 @@ const message = { tamperTitle4: 'Log dan Analisis', tamperContent4: 'Rekod log akses dan operasi fail untuk audit dan analisis selanjutnya oleh pentadbir serta mengenal pasti potensi ancaman keselamatan.', - settingTitle1: 'Mesej Selamat Datang Tersuai', settingContent1: 'Tetapkan mesej selamat datang tersuai pada halaman log masuk 1Panel.', settingTitle2: 'Logo Tersuai', @@ -3768,7 +3820,6 @@ const message = { settingTitle3: 'Ikon Laman Web Tersuai', settingContent3: 'Benarkan memuat naik ikon tersuai untuk menggantikan ikon pelayar lalai, meningkatkan pengalaman pengguna.', - monitorTitle1: 'Trend Pelawat', monitorContent1: 'Statistik dan memaparkan trend pelawat laman web', monitorTitle2: 'Peta Pelawat', @@ -3779,7 +3830,6 @@ const message = { monitorTitle4: 'Pemantauan Masa Nyata', monitorContent4: 'Pemantauan masa nyata maklumat permintaan laman web, termasuk bilangan permintaan, trafik, dan sebagainya.', - alertTitle1: 'Amaran SMS', alertContent1: 'Apabila berlaku penggunaan sumber pelayan yang tidak normal, tamat tempoh laman web dan sijil, kemas kini versi baru, tamat tempoh kata laluan, dan sebagainya, pengguna akan diberitahu melalui amaran SMS untuk memastikan pemprosesan tepat pada masanya.', @@ -3789,7 +3839,6 @@ const message = { alertTitle3: 'Tetapan Amaran', alertContent3: 'Memberikan pengguna konfigurasi nombor telefon tersuai, kekerapan push harian, dan masa push harian, memudahkan pengguna untuk menetapkan amaran push yang lebih munasabah.', - nodeDashTitle1: 'Pengurusan Aplikasi', nodeDashContent1: 'Pengurusan bersatu aplikasi berbilang nod, menyokong pemantauan status, mula/henti pantas, sambungan terminal dan sandaran', @@ -3802,7 +3851,6 @@ const message = { nodeDashTitle4: 'Pengurusan Tugas Berjadual', nodeDashContent4: 'Pengurusan bersatu tugas berjadual berbilang nod, menyokong pemantauan status, mula/henti pantas dan pelaksanaan pencetus manual', - nodeTitle1: 'Satu Klik Tambah Node', nodeContent1: 'Mengintegrasikan pelbagai nod pelayan dengan cepat', nodeTitle2: 'Kelompok Naik Taraf', @@ -3811,7 +3859,6 @@ const message = { nodeContent3: 'Memantau status operasi setiap nod secara real-time', nodeTitle4: 'Sambungan Jauh Pantas', nodeContent4: 'Sambung terus ke terminal jauh nod dengan satu klik', - fileExchangeTitle1: 'Pengangkutan Pengesahan Kunci', fileExchangeContent1: 'Mengesahkan melalui kunci SSH untuk memastikan keselamatan pengangkutan.', fileExchangeTitle2: 'Segerakan Fail Cekap', @@ -3820,10 +3867,8 @@ const message = { fileExchangeTitle3: 'Sokongan Pertukaran Inter-Node', fileExchangeContent3: 'Mudah memindahkan fail projek antara nod yang berbeza, mengurus pelbagai pelayan dengan fleksibiliti.', - nodeAppTitle1: 'Pengurusan Naik Taraf Aplikasi', nodeAppContent1: 'Pemantauan bersatu kemas kini aplikasi berbilang nod, menyokong naik taraf satu klik', - appTitle1: 'Pengurusan Panel yang Fleksibel', appContent1: 'Uruskan pelayan 1Panel anda dengan mudah pada bila-bila masa dan di mana sahaja.', appTitle2: 'Maklumat Perkhidmatan Komprehensif', @@ -3832,7 +3877,6 @@ const message = { appTitle3: 'Pemantauan Anomali Masa Nyata', appContent3: 'Lihat status pelayan, pemantauan keselamatan WAF, statistik pelawat laman web dan status kesihatan proses di aplikasi mudah alih secara masa nyata.', - clusterTitle1: 'Penyebaran Utama-Hamba', clusterContent1: 'Menyokong penciptaan contoh utama-hamba MySQL/Postgres/Redis pada nod yang berbeza, secara automatik melengkapkan perhubungan utama-hamba dan permulaan', @@ -3900,7 +3944,6 @@ const message = { nodeSyncHelper: 'Penyelarasan maklumat nod akan menyelaraskan maklumat berikut:', nodeSyncHelper1: '1. Maklumat akaun sandaran awam', nodeSyncHelper2: '2. Maklumat sambungan antara nod utama dan nod sub', - nodeCheck: 'Semakan ketersediaan', checkSSH: 'Periksa sambungan SSH nod', checkUserPermission: 'Semak kebenaran pengguna nod', @@ -3921,7 +3964,6 @@ const message = { errLicense: 'Lesen yang terikat pada nod ini tidak tersedia. Sila semak dan cuba lagi!', errNodePort: 'Port nod [ {0} ] dikesan tidak boleh diakses. Sila semak sama ada firewall atau kumpulan keselamatan telah membenarkan port ini.', - reinstallHelper: 'Pasang semula nod {0}, adakah anda ingin meneruskan?', unhealthyCheck: 'Pemeriksaan Tidak Normal', fixOperation: 'Operasi Pembetulan', @@ -3947,7 +3989,6 @@ const message = { offline: 'Mod luar talian', freeCount: 'Had percuma [{0}]', offlineHelper: 'Digunakan apabila nod berada dalam persekitaran luar talian', - appUpgrade: 'Naik Taraf Apl', appUpgradeHelper: 'Terdapat {0} apl yang perlu dinaik taraf', }, @@ -4044,7 +4085,6 @@ const message = { specifiedTime: 'Masa Tertentu', deleteTitle: 'Padam Amaran', deleteMsg: 'Adakah anda pasti ingin memadam tugas amaran?', - allSslTitle: 'Semua Amaran Tamat Tempoh Sijil SSL Laman Web', sslTitle: 'Amaran Tamat Tempoh Sijil SSL untuk Laman Web {0}', allSiteEndTimeTitle: 'Semua Amaran Tamat Tempoh Laman Web', @@ -4056,7 +4096,6 @@ const message = { loadTitle: 'Amaran Beban Tinggi', diskTitle: 'Amaran Penggunaan Cakera Tinggi untuk Direktori {0}', allDiskTitle: 'Amaran Penggunaan Cakera Tinggi', - timeRule: 'Masa baki kurang daripada {0} hari (jika tidak diurus, akan dihantar semula keesokan hari)', panelUpdateRule: 'Hantar satu amaran apabila versi panel baharu dikesan (jika tidak diurus, akan dihantar semula keesokan hari)', @@ -4065,12 +4104,10 @@ const message = { diskRule: 'Penggunaan cakera untuk direktori {0} melebihi {1}{2}, mencetuskan amaran, dihantar {3} kali sehari', allDiskRule: 'Penggunaan cakera melebihi {0}{1}, mencetuskan amaran, dihantar {2} kali sehari', - cpuName: ' CPU ', memoryName: 'Memori', loadName: 'Beban', diskName: 'Cakera', - syncAlertInfo: 'Tekan Manual', syncAlertInfoMsg: 'Adakah anda ingin menekan tugas amaran secara manual?', pushError: 'Tekanan Gagal', diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts index 5bf2e6ba76f6..0ae551481cd9 100644 --- a/frontend/src/lang/modules/pt-br.ts +++ b/frontend/src/lang/modules/pt-br.ts @@ -84,6 +84,10 @@ const message = { hide: 'Ocultar', visit: 'Visitar', migrate: 'Migrar', + prev: 'Anterior', + next: 'Próximo', + setDefault: 'Restaurar padrão', + bind: 'Vincular', }, operate: { start: 'Iniciar', @@ -133,6 +137,8 @@ const message = { manageGroup: 'Gerenciar Grupos', backToList: 'Voltar à Lista', keepEdit: 'Continuar Editando', + default: 'Padrão', + noRefresh: 'Sem atualização', }, loadingText: { Upgrading: 'Atualizando o sistema, por favor, aguarde...', @@ -181,6 +187,10 @@ const message = { importHelper: 'Ao importar dados conflitantes ou duplicados, o conteúdo importado será usado como padrão para atualizar os dados originais do banco de dados.', errImport: 'O conteúdo do arquivo está anormal:', + backupSuccess: 'Backup concluído', + restoreSuccess: 'Restauração concluída', + installSuccess: 'Instalado com sucesso', + uninstallSuccess: 'Desinstalado com sucesso', }, login: { username: 'Usuário', @@ -282,7 +292,7 @@ const message = { commonError: 'A solicitação falhou', }, service: { - serviceNotStarted: `O serviço {0} não está iniciado.`, + serviceNotStarted: 'O serviço {0} não está iniciado.', }, status: { running: 'Em execução', @@ -344,6 +354,7 @@ const message = { conflict: 'Conflito', duplicate: 'Duplicado', unexecuted: 'Não Executado', + unused: 'Não usado', }, units: { second: 'segundo | segundos | segundos', @@ -397,6 +408,7 @@ const message = { app: 'Aplicativo', msgCenter: 'Tarefas', disk: 'Disco', + filter: 'Filtro', }, home: { recommend: 'Recomendado', @@ -430,12 +442,10 @@ const message = { runningTime: 'Tempo de execução', mem: 'Memória do Sistema', swapMem: 'Partição Swap', - runSmoothly: 'Baixo carregamento', runNormal: 'Carregamento moderado', runSlowly: 'Carregamento alto', runJam: 'Carregamento pesado', - core: 'Núcleo físico', logicCore: 'Núcleo lógico', corePercent: 'Uso do Núcleo', @@ -461,7 +471,6 @@ const message = { available: 'Disponível', percent: 'Utilização', goInstall: 'Ir para instalação', - networkCard: 'Placa de rede', disk: 'Disco', memo: 'Memo', @@ -517,17 +526,15 @@ const message = { changePasswordHelper: 'O banco de dados está associado a um aplicativo. Alterar a senha alterará a senha do banco de dados do aplicativo ao mesmo tempo. A mudança surtirá efeito após a reinicialização do aplicativo.', recoverTimeoutHelper: '-1 significa sem limite de tempo limite', - confChange: 'Configuração', confNotFound: 'Não foi possível encontrar o arquivo de configuração. Atualize o aplicativo para a versão mais recente na loja de aplicativos e tente novamente!', - portHelper: 'Esta porta é a porta exposta do container. Você precisa salvar a modificação separadamente e reiniciar o container!', - loadFromRemote: 'Sincronizar', userBind: 'Vincular usuário', - pgBindHelper: `Esta operação cria um novo usuário e o vincula ao banco de dados alvo. A seleção de usuários já existentes no banco de dados não é suportada.`, + pgBindHelper: + 'Esta operação cria um novo usuário e o vincula ao banco de dados alvo. A seleção de usuários já existentes no banco de dados não é suportada.', pgSuperUser: 'Superusuário', loadFromRemoteHelper: 'Isso sincronizará as informações do banco de dados no servidor para o 1Panel. Deseja continuar?', @@ -555,14 +562,12 @@ const message = { hasCA: 'Possui certificado CA', skipVerify: 'Ignorar verificação de validade do certificado', initialDB: 'Banco de Dados Inicial', - formatHelper: 'O conjunto de caracteres atual do banco de dados é {0}, a inconsistência no conjunto de caracteres pode causar falha na recuperação', dropHelper: 'Você pode arrastar e soltar o arquivo carregado aqui ou', clickHelper: 'clicar para fazer upload', supportUpType: 'Suporta apenas os formatos de arquivo sql, sql.gz, tar.gz, .zip. O arquivo compactado importado deve conter apenas um arquivo .sql ou incluir test.sql', - currentStatus: 'Estado atual', baseParam: 'Parâmetro básico', performanceParam: 'Parâmetro de desempenho', @@ -587,14 +592,13 @@ const message = { openTables: 'Tabelas abertas', openTablesHelper: 'O valor da configuração de "table_open_cache" deve ser maior ou igual a este valor.', selectFullJoin: 'Join completo de seleção', - selectFullJoinHelper: `Se o valor não for 0, verifique se o índice da tabela de dados está correto.`, + selectFullJoinHelper: 'Se o valor não for 0, verifique se o índice da tabela de dados está correto.', selectRangeCheck: 'Número de joins sem índice', - selectRangeCheckHelper: `Se o valor não for 0, verifique se o índice da tabela de dados está correto.`, + selectRangeCheckHelper: 'Se o valor não for 0, verifique se o índice da tabela de dados está correto.', sortMergePasses: 'Número de mesclagens ordenadas', sortMergePassesHelper: 'Se o valor for muito grande, aumente "sort_buffer_size".', tableLocksWaited: 'Número de bloqueios de tabela', tableLocksWaitedHelper: 'Se o valor for muito grande, considere aumentar o desempenho do banco de dados.', - performanceTuning: 'Ajuste de desempenho', optimizationScheme: 'Plano de otimização', keyBufferSizeHelper: 'Tamanho do buffer para índice', @@ -612,14 +616,11 @@ const message = { tableOpenCacheHelper: 'Cache de tabelas', maxConnectionsHelper: 'Conexões máximas', restart: 'Reiniciar', - slowLog: 'Logs lentos', noData: 'Ainda não há logs lentos.', - isOn: 'Ligado', longQueryTime: 'limite (segundos)', thresholdRangeHelper: 'Por favor, insira o limite correto (1 - 600).', - timeout: 'Tempo limite(segundos)', timeoutHelper: 'Período de timeout de conexão ociosa. 0 indica que a conexão permanece ativa continuamente.', maxclients: 'Máximo de clientes', @@ -642,24 +643,21 @@ const message = { keyspaceMisses: 'Número de tentativas falhas de encontrar a chave do banco de dados.', hit: 'Taxa de acerto de chave de banco de dados.', latestForkUsec: 'Número de microssegundos gastos na última operação fork()', - redisCliHelper: `"redis-cli" não foi detectado. Habilite o serviço primeiro.`, + redisCliHelper: '"redis-cli" não foi detectado. Habilite o serviço primeiro.', redisQuickCmd: 'Comandos rápidos Redis', recoverHelper: 'Isso sobrescreverá os dados com [{0}]. Deseja continuar?', submitIt: 'Sobrescrever os dados', - baseConf: 'Básico', allConf: 'Todos', restartNow: 'Reiniciar agora', restartNowHelper1: 'Você precisa reiniciar o sistema após as mudanças na configuração entrarem em vigor. Se seus dados precisarem ser persistidos, execute primeiro a operação de salvar.', restartNowHelper: 'Isso só terá efeito após o sistema reiniciar.', - persistence: 'Persistência', rdbHelper1: 'segundo(s), inserir', rdbHelper2: 'registros de dados', rdbHelper3: 'Atender a qualquer uma das condições acionará a persistência RDB.', rdbInfo: 'Certifique-se de que o valor na lista de regras esteja entre 1 e 100000', - containerConn: 'Conexão do contêiner', copyConnURL: 'Copiar URL de conexão', connAddress: 'Endereço', @@ -722,6 +720,7 @@ const message = { pairingCodeRequired: 'Please enter pairing code', pairingApproveSuccess: 'Pairing approved successfully', customProviderHelper: 'Provedores de modelo personalizados não validam se a conta está disponível', + feishuSaveSuccess: 'Salvo no Feishu', }, model: { model: 'Modelo', @@ -742,6 +741,8 @@ const message = { proxyHelper4: 'Após a criação, você pode visualizar e gerenciar no lista de sites', proxyHelper6: 'Para desativar a configuração de proxy, você pode excluí-la da lista de sites.', whiteListHelper: 'Restringir o acesso apenas aos IPs na lista branca', + proxyHelper5: + 'Após ativar, você pode desativar o acesso externo à porta em Loja de Apps - Instalado - Ollama - Parâmetros para melhorar a segurança.', }, gpu: { gpu: 'Monitoramento de GPU', @@ -767,7 +768,6 @@ const message = { memoryUsed: 'Memória Usada', memoryTotal: 'Memória Total', percent: 'Utilização', - base: 'Informações Básicas', driverVersion: 'Versão do Driver', cudaVersion: 'Versão do CUDA', @@ -799,6 +799,7 @@ const message = { current: 'Monitoramento em Tempo Real', history: 'Registros Históricos', notSupport: 'A versão atual ou o driver não suportam exibir este parâmetro.', + processCount: 'Qtd. de processos', }, mcp: { server: 'Servidor MCP', @@ -911,7 +912,6 @@ const message = { 'O mecanismo de contêiner usa um valor base de 1024 para a atribuição de CPU. Você pode aumentá-lo para dar mais tempo de CPU ao contêiner.', inputIpv4: 'Exemplo: 192.168.1.1', inputIpv6: 'Exemplo: 2001:0db8:85a3:0000:0000:8a2e:0370:7334', - diskUsage: 'Uso do Disco', localVolume: 'Volume de Armazenamento Local', buildCache: 'Cache de Build', @@ -926,7 +926,6 @@ const message = { sizeRootFs: 'Tamanho Virtual', sizeRootFsHelper: 'Tamanho total de todas as camadas de imagem das quais o contêiner depende + camada do contêiner', - containerFromAppHelper: 'Detectamos que este contêiner vem da loja de aplicativos. As operações no aplicativo podem fazer com que as edições atuais sejam invalidadas.', containerFromAppHelper1: @@ -1027,7 +1026,6 @@ const message = { delBuildCacheHelper: 'Isso excluirá todos os artefatos em cache gerados durante as construções e não poderá ser desfeito. Deseja continuar?', urlWarning: 'O prefixo da URL não precisa incluir http:// ou https://. Por favor, modifique.', - network: 'Rede | Redes', networkHelper: 'Isso pode fazer com que alguns aplicativos e ambientes de execução não funcionem corretamente. Deseja continuar?', @@ -1040,7 +1038,6 @@ const message = { scope: 'Escopo IP', gateway: 'Gateway', auxAddress: 'Excluir IP', - volume: 'Volume | Volumes', volumeDir: 'Diretório do volume', nfsEnable: 'Habilitar armazenamento NFS', @@ -1048,7 +1045,6 @@ const message = { mountpoint: 'Ponto de montagem', mountpointNFSHelper: 'Exemplo: /nfs, /nfs-share', options: 'Opções', - repo: 'Registries', httpRepoHelper: 'Operar um repositório do tipo HTTP requer reinicialização do serviço Docker.', httpRepo: @@ -1064,7 +1060,6 @@ const message = { 'Se houver múltiplos espelhos, devem ser exibidos em novas linhas, por exemplo:\nhttp://xxxxxx.m.daocloud.io \nhttps://xxxxxx.mirror.aliyuncs.com', registrieHelper: 'Se houver múltiplos repositórios privados, eles devem ser exibidos em novas linhas, por exemplo:\n172.16.10.111:8081 \n172.16.10.112:8081', - compose: 'Compose | Composições', composeFile: 'Arquivo de Orquestração', fromChangeHelper: 'Trocar a origem limpará o conteúdo editado atual. Deseja continuar?', @@ -1091,7 +1086,6 @@ const message = { 'Isso irá parar e remover todos os containers e redes sob a composição {0}. Deseja continuar?', composeEnvHelper2: 'Esta orquestração foi criada pela Loja de Aplicativos 1Panel. Modifique as variáveis de ambiente nos aplicativos instalados.', - setting: 'Configuração | Configurações', operatorStatusHelper: 'Isso irá "{0}" o serviço Docker. Deseja continuar?', dockerStatus: 'Serviço Docker', @@ -1133,12 +1127,10 @@ const message = { related: 'Relacionado', includeAppstore: 'Exibir containers da loja de aplicativos', excludeAppstore: 'Ocultar Contêiner da Loja de Aplicativos', - cleanDockerDiskZone: 'Limpar o espaço em disco usado pelo Docker', cleanImagesHelper: '(Limpar todas as imagens que não são usadas por nenhum container)', cleanContainersHelper: '(Limpar todos os containers parados)', cleanVolumesHelper: '(Limpar todos os volumes locais não usados)', - makeImage: 'Criar imagem', newImageName: 'Novo nome da imagem', commitMessage: 'Mensagem de commit', @@ -1146,6 +1138,12 @@ const message = { ifPause: 'Pausar container durante a criação', ifMakeImageWithContainer: 'Criar nova imagem a partir deste container?', finishTime: 'Horário da última parada', + workingDir: 'Diretório de trabalho', + resource: 'Recurso', + macAddr: 'Endereço MAC', + volumeHelper: 'Garanta que o conteúdo do volume esteja correto', + exportHelper: 'Exporte as imagens selecionadas em um único arquivo tar.', + goSetting: 'Ir para editar', }, cronjob: { importHelper: @@ -1252,7 +1250,6 @@ const message = { cutWebsiteLog: 'Rotação de log do site', cutWebsiteLogHelper: 'Os arquivos de log rotacionados serão salvos no diretório de backup do 1Panel.', syncIpGroup: 'Sincronizar grupos de IP do WAF', - requestExpirationTime: 'Tempo de expiração da solicitação de upload (Horas)', unitHours: 'Unidade: Horas', alertTitle: 'Tarefa Planejada - {0} 「{1}」 Alerta de Falha na Tarefa', @@ -1281,6 +1278,23 @@ const message = { syncHelper: 'Preparando para sincronizar a biblioteca de scripts do sistema. Esta operação afeta apenas scripts do sistema. Continuar?', }, + nextTime: 'Próximas 5 execuções', + logHelper1: '1. Log do sistema 1Panel', + cronSpecDoc: + 'Ciclos personalizados suportam apenas o formato [minuto hora dia mês semana], ex.: 0 0 * * *. Veja a documentação oficial.', + backupContent: 'Conteúdo do backup', + cronSpecRule2: 'Formato do período de execução inválido, verifique e tente novamente!', + perMonthHelper: 'Executar no dia {0} de cada mês às {1}:{2}', + perWeekHelper: 'Executar toda semana em {0} às {1}:{2}', + perDayHelper: 'Executar todos os dias às {0}:{1}', + perHourHelper: 'Executar a cada hora no minuto {0}', + perNDayHelper: 'Executar a cada {0} dias às {1}:{2}', + perNHourHelper: 'Executar a cada {0} horas em {1}', + perNMinuteHelper: 'Executar a cada {0} minutos', + perNSecondHelper: 'Executar a cada {0} segundos', + executor: 'Executor', + cleanLog: 'Limpeza automática de logs', + cleanLogscope: 'Retenção de logs', }, monitor: { globalFilter: 'Filtro Global', @@ -1292,7 +1306,6 @@ const message = { defaultIOHelper: 'Opção de disco padrão exibida nas interfaces de monitoramento e visão geral', cleanMonitor: 'Limpar Registros de Monitoramento', cleanHelper: 'Esta operação limpará todos os registros de monitoramento, incluindo GPU. Continuar?', - avgLoad: 'Média de carga', loadDetail: 'Detalhes da carga', resourceUsage: 'Utilização', @@ -1397,6 +1410,115 @@ const message = { swapMax: 'O valor máximo para o tamanho da partição é {0}. Por favor, modifique e tente novamente!', swapOff: 'O tamanho mínimo da partição é 40 KB. Definir como 0 desabilitará a partição Swap.', }, + device: { + dnsHelper: 'Servidor DNS', + dnsAlert: 'Atenção! Alterar /etc/resolv.conf fará o arquivo voltar ao padrão após reiniciar o sistema.', + dnsHelper1: + 'Quando houver múltiplos DNS, coloque cada um em uma nova linha. Ex.:\n114.114.114.114\n8.8.8.8', + hostsHelper: 'Resolução de hostname', + hosts: 'Domínio', + toolbox: 'Configurações rápidas', + hostname: 'Hostname', + passwd: 'Senha do sistema', + passwdHelper: 'Os caracteres de entrada não podem incluir $ e &', + timeZone: 'Fuso horário do sistema', + localTime: 'Hora do servidor', + timeZoneChangeHelper: 'Alterar o fuso horário do sistema exige reiniciar o serviço. Continuar?', + timeZoneHelper: + 'Se o comando "timedatectl" não estiver instalado, talvez não seja possível alterar o fuso horário.', + timeZoneCN: 'Pequim', + timeZoneAM: 'Los Angeles', + timeZoneNY: 'Nova York', + ntpALi: 'Alibaba', + ntpGoogle: 'Google', + syncSite: 'Servidor NTP', + syncSiteHelper: 'Sincronizar hora do sistema com {0}?', + hostnameHelper: + 'A alteração do hostname depende do comando "hostnamectl". Se não estiver instalado, a alteração pode falhar.', + userHelper: + 'O nome de usuário depende do comando "whoami". Se não estiver instalado, a leitura pode falhar.', + passwordHelper: + 'A alteração de senha depende do comando "chpasswd". Se não estiver instalado, a alteração pode falhar.', + hostHelper: 'Há valor vazio no conteúdo fornecido. Verifique e tente novamente após ajustar!', + dnsCheck: 'Testar disponibilidade', + dnsOK: 'Configuração DNS disponível!', + dnsTestFailed: 'Configuração DNS indisponível.', + }, + fail2ban: { + sshPort: 'Monitorar porta SSH', + sshPortHelper: 'O Fail2ban atual monitora a porta SSH de conexão do host', + unActive: 'O serviço Fail2ban não está habilitado no momento.', + operation: 'Você executará a operação "{0}" no serviço Fail2ban. Continuar?', + fail2banChange: 'Modificar configuração do Fail2ban', + ignoreHelper: 'Os IPs da lista de permissão serão ignorados no bloqueio. Continuar?', + bannedHelper: 'Os IPs da lista de bloqueio serão bloqueados pelo servidor. Continuar?', + maxRetry: 'Máximo de tentativas', + banTime: 'Tempo de bloqueio', + banTimeHelper: 'Tempo padrão de bloqueio é 10 minutos; -1 indica bloqueio permanente', + banTimeRule: 'Digite um tempo de bloqueio válido ou -1', + banAllTime: 'Bloqueio permanente', + findTime: 'Período de detecção', + banAction: 'Ação de bloqueio', + banActionOption: 'Bloquear IPs especificados usando {0}', + allPorts: ' (Todas as portas)', + ignoreIP: 'Lista de permissão de IP', + bannedIP: 'Lista de bloqueio de IP', + logPath: 'Caminho do log', + logPathHelper: 'Padrão: /var/log/secure ou /var/log/auth.log', + }, + ftp: { + ftp: 'Conta FTP | Contas FTP', + notStart: 'O serviço FTP não está em execução. Inicie-o primeiro!', + operation: 'Isto executará a operação "{0}" no serviço FTP. Continuar?', + noPasswdMsg: 'Não foi possível obter a senha atual da conta FTP. Defina a senha e tente novamente.', + enableHelper: 'Ativar a conta FTP selecionada restaurará suas permissões de acesso. Continuar?', + disableHelper: 'Desativar a conta FTP selecionada revogará suas permissões de acesso. Continuar?', + syncHelper: 'Sincronizar dados de conta FTP entre servidor e banco de dados. Continuar?', + dirSystem: + 'Este diretório é reservado pelo sistema. Alterar pode causar falha do sistema; ajuste e tente novamente!', + dirHelper: 'Ativar FTP exige alteração de permissões de diretório; escolha com cuidado', + dirMsg: 'Ativar FTP modificará permissões de todo o diretório {0}. Continuar?', + }, + clam: { + clam: 'Varredura de vírus', + cron: 'Varredura agendada', + cronHelper: 'A versão profissional suporta varredura agendada', + specErr: 'Formato do agendamento inválido, verifique e tente novamente!', + disableMsg: 'Parar a execução agendada impedirá a execução automática desta tarefa. Continuar?', + enableMsg: + 'Ativar a execução agendada fará esta tarefa executar automaticamente em intervalos regulares. Continuar?', + showFresh: 'Mostrar serviço de atualização de assinaturas', + hideFresh: 'Ocultar serviço de atualização de assinaturas', + clamHelper: + 'Configuração mínima recomendada para ClamAV: 3 GiB de RAM ou mais, CPU de 1 núcleo com 2.0 GHz+ e ao menos 5 GiB de disco livre.', + notStart: 'O serviço ClamAV não está em execução. Inicie-o primeiro!', + removeRecord: 'Excluir arquivos de relatório', + noRecords: 'Clique no botão "Executar" para iniciar a varredura e ver os registros aqui.', + removeInfected: 'Excluir arquivos de vírus', + removeInfectedHelper: + 'Excluir arquivos infectados detectados na tarefa para garantir segurança e operação normal do servidor.', + clamCreate: 'Criar regra de varredura', + infectedStrategy: 'Estratégia para infectados', + removeHelper: 'Excluir arquivos de vírus, escolha com cuidado!', + move: 'Mover', + moveHelper: 'Mover arquivos de vírus para o diretório especificado', + copyHelper: 'Copiar arquivos de vírus para o diretório especificado', + none: 'Não fazer nada', + noneHelper: 'Não executar ação em arquivos de vírus', + scanDir: 'Diretório da varredura', + infectedDir: 'Diretório infectado', + scanDate: 'Data da varredura', + scanResult: 'Final do log de varredura', + tail: 'Linhas', + infectedFiles: 'Arquivos infectados', + log: 'Detalhes', + clamConf: 'Daemon Clam AV', + clamLog: 'Logs de @:toolbox.clam.clamConf', + freshClam: 'FreshClam', + freshClamLog: 'Logs de @:toolbox.clam.freshClam', + alertHelper: 'A versão profissional suporta varredura agendada e alerta por SMS', + alertTitle: 'Tarefa de varredura de vírus "{0}" detectou arquivo infectado', + }, }, device: { dnsHelper: 'Servidor DNS', @@ -1416,25 +1538,29 @@ const message = { localTime: 'Hora do servidor', timeZoneChangeHelper: 'Modificar o fuso horário do sistema requer a reinicialização do serviço. Deseja continuar?', - timeZoneHelper: `Se você não instalar o comando "timedatectl", poderá não conseguir alterar o fuso horário. O sistema usa esse comando para alterar o fuso horário.`, + timeZoneHelper: + 'Se você não instalar o comando "timedatectl", poderá não conseguir alterar o fuso horário. O sistema usa esse comando para alterar o fuso horário.', timeZoneCN: 'Pequim', timeZoneAM: 'Los Angeles', timeZoneNY: 'Nova York', ntpALi: 'Alibaba', ntpGoogle: 'Google', syncSite: 'Servidor NTP', - hostnameHelper: `A modificação do nome do host depende do comando "hostnamectl". Se o comando não estiver instalado, a modificação pode falhar.`, - userHelper: `O nome de usuário depende do comando "whoami" para recuperação. Se o comando não estiver instalado, a recuperação pode falhar.`, - passwordHelper: `A modificação da senha depende do comando "chpasswd". Se o comando não estiver instalado, a modificação pode falhar.`, + hostnameHelper: + 'A modificação do nome do host depende do comando "hostnamectl". Se o comando não estiver instalado, a modificação pode falhar.', + userHelper: + 'O nome de usuário depende do comando "whoami" para recuperação. Se o comando não estiver instalado, a recuperação pode falhar.', + passwordHelper: + 'A modificação da senha depende do comando "chpasswd". Se o comando não estiver instalado, a modificação pode falhar.', hostHelper: 'Há um valor vazio no conteúdo fornecido. Verifique e tente novamente após a modificação!', dnsCheck: 'Testar disponibilidade', dnsOK: 'As informações de configuração do DNS estão disponíveis!', - dnsTestFailed: `As informações de configuração do DNS não estão disponíveis.`, + dnsTestFailed: 'As informações de configuração do DNS não estão disponíveis.', }, fail2ban: { sshPort: 'Porta de escuta do SSH', sshPortHelper: 'O Fail2ban atual escuta a porta de conexão SSH do host', - unActive: `O serviço Fail2ban não está ativado no momento.`, + unActive: 'O serviço Fail2ban não está ativado no momento.', operation: 'Você realizará a operação "{0}" no serviço Fail2ban. Deseja continuar?', fail2banChange: 'Modificação da configuração do Fail2ban', ignoreHelper: 'A lista de IPs na lista de permissão será ignorada para bloqueio. Deseja continuar?', @@ -1547,6 +1673,9 @@ const message = { websiteLog: 'Logs do website', runLog: 'Logs de execução', errLog: 'Logs de erro', + task: 'Log de tarefas', + taskName: 'Nome da tarefa', + taskRunning: 'Em execução', }, file: { fileDirNum: '{0} diretórios, {1} arquivos,', @@ -1634,7 +1763,8 @@ const message = { unsupportedType: 'Tipo de arquivo não suportado', deleteHelper: 'Tem certeza de que deseja excluir os seguintes arquivos? Por padrão, eles irão para a lixeira após a exclusão', - fileHelper: `Nota:\n1. Os resultados da pesquisa não podem ser ordenados.\n2. Pastas não podem ser ordenadas por tamanho.`, + fileHelper: + 'Nota:\n1. Os resultados da pesquisa não podem ser ordenados.\n2. Pastas não podem ser ordenadas por tamanho.', forceDeleteHelper: 'Excluir permanentemente o arquivo (sem entrar na lixeira, excluí-lo diretamente)', recycleBin: 'Lixeira', sourcePath: 'Caminho original', @@ -1777,6 +1907,7 @@ const message = { loginTime: 'Hora do login', loginIP: 'IP de login', stopSSHWarn: 'Deseja desconectar esta conexão SSH?', + remote: 'SSH remoto', }, setting: { panel: 'Painel', @@ -1975,7 +2106,6 @@ const message = { accountKey: 'Chave da conta', address: 'Endereço', path: 'Caminho', - safe: 'Segurança', passkey: 'Passkey', passkeyManage: 'Gerenciar', @@ -2088,7 +2218,6 @@ const message = { error416: 'Faixa não satisfatória', error444: 'Conexão fechada', error500: 'Erro no servidor', - https: 'Configurar HTTPS para o painel melhora a segurança de acesso', strictHelper: 'Tráfego não HTTPS não pode se conectar ao painel', muxHelper: @@ -2105,7 +2234,6 @@ const message = { certificate: 'Certificado', backupJump: 'Arquivos de backup não estão na lista de backup atual, tente fazer o download do diretório de arquivos e importar para o backup.', - snapshot: 'Snapshot | Snapshots', noAppData: 'Nenhum aplicativo do sistema disponível para seleção', noBackupData: 'Nenhum dado de backup disponível para seleção', @@ -2177,7 +2305,6 @@ const message = { rollback: 'Rollback', rollbackHelper: 'Reverter essa recuperação substituirá todos os arquivos dessa recuperação e pode exigir reiniciar os serviços Docker e 1Panel. Você deseja continuar?', - upgradeHelper: 'A atualização requer reiniciar o serviço 1Panel. Você deseja continuar?', rollbackLocalHelper: 'O nó principal não suporta rollback direto. Por favor, execute manualmente o comando [1pctl restore] para fazer o rollback!', @@ -2189,7 +2316,6 @@ const message = { 'A versão do nó não corresponde à do nó principal. Atualize na Gestão de Nós antes de tentar novamente.', versionCompare: 'Detectado que o nó {0} já está na última versão atualizável. Por favor, verifique a versão do nó principal e tente novamente!', - about: 'Sobre', versionItem: 'Versão Atual', backupCopies: 'Cópias de Backup', @@ -2207,7 +2333,6 @@ const message = { forum: 'Discussões', doc2: 'Docs', currentVersion: 'Versão', - license: 'Licença', bindNode: 'Vincular Nó', menuSetting: 'Configurações do Menu', @@ -2222,6 +2347,36 @@ const message = { compressPassword: 'Senha de compressão', backupRecoverMessage: 'Por favor, insira a senha de compressão ou descompressão (deixe em branco para não definir)', + componentSize: 'Tamanho do componente', + apiKeyValidityTime: 'Período de validade da chave da API', + apiKeyValidityTimeEgs: 'Período de validade da chave da API (em minutos)', + apiKeyValidityTimeHelper: + 'O timestamp da interface é válido se a diferença para o timestamp atual (em minutos) estiver no intervalo permitido. Valor 0 desativa a verificação.', + scope: 'Escopo', + public: 'Público', + publicHelper: 'Contas de backup públicas serão sincronizadas para cada subnó e podem ser usadas em conjunto', + private: 'Privado', + privateHelper: 'Contas de backup privadas são criadas apenas no nó atual e usadas somente por ele', + UPYUN: 'UPYUN', + ALIYUN: 'Aliyun Drive', + ALIYUNHelper: 'O limite atual para download sem cliente no Aliyun Drive é 100 MB. Acima disso, use o cliente.', + ALIYUNRecover: + 'O limite atual para download sem cliente no Aliyun Drive é 100 MB. Acima disso, baixe localmente via cliente e depois sincronize o snapshot para restaurar.', + GoogleDrive: 'Google Drive', + analysis: 'Análise', + analysisHelper: + 'Cole todo o conteúdo do token para analisar automaticamente as partes necessárias. Para detalhes, veja a documentação oficial.', + serviceName: 'Nome do serviço', + operator: 'Operador', + clickToRefresh: 'Clique para atualizar', + recoverFailed: 'Falha na restauração do snapshot', + upgradeRecord: 'Histórico de atualização', + upgrading: 'Atualizando, aguarde...', + versionHelper: + 'Regras de nome: [versão principal].[versão funcional].[versão de correção], como no exemplo abaixo:', + upgradeCheck: 'Verificar atualizações', + panelSSLHelper: + 'Após a renovação automática do SSL do painel, reinicie manualmente o serviço 1Panel para aplicar as mudanças.', }, license: { offLine: 'Versão Offline', @@ -2280,6 +2435,10 @@ const message = { app: 'Upgrade para a versão profissional para visualizar informações do serviço, monitoramento anômalo, etc., através do aplicativo móvel.', cluster: 'A atualização para a Edição Profissional permite gerenciar clusters mestre-escravo MySQL/Postgres/Redis.', + exceptionalHelper: + 'A verificação de sincronização da licença está anormal. Clique em sincronizar manualmente para garantir o funcionamento da versão profissional. detalhe: ', + tamperHelper: + 'Falha na operação, o arquivo ou pasta tem proteção contra alteração habilitada. Verifique e tente novamente!', }, clean: { scan: 'Iniciar escaneamento', @@ -2298,7 +2457,6 @@ const message = { suggest: '(Recomendado)', totalScan: 'Total de arquivos inúteis a serem limpos: ', selectScan: 'Total de arquivos inúteis selecionados: ', - system: 'Arquivos inúteis do sistema', systemHelper: 'Arquivos temporários gerados durante processos como snapshots e atualizações.', panelOriginal: 'Arquivos de backup antes da restauração do snapshot do sistema.', @@ -2306,7 +2464,6 @@ const message = { agentPackages: 'Pacotes de atualização/instalação de nós filhos de versões históricas.', upgradeHelper: '(Recomenda-se manter o backup de atualização mais recente para rollback do sistema)', rollback: 'Arquivos de backup antes da recuperação', - backup: 'Backup do Sistema', backupHelper: 'Arquivos de backup não associados a contas de backup locais', unknownBackup: 'Backup do Sistema', @@ -2315,13 +2472,11 @@ const message = { unknownDatabase: 'Backup de Banco de Dados não Associado', unknownWebsite: 'Backup de Site não Associado', unknownSnapshot: 'Backup de Instantâneo não Associado', - upload: 'Arquivos temporários de upload', uploadHelper: 'Arquivos temporários enviados da lista de backup do sistema', download: 'Arquivos temporários de download', downloadHelper: 'Arquivos temporários baixados de contas de backup de terceiros pelo sistema', directory: 'Diretório', - systemLog: 'Arquivo de log', systemLogHelper: 'Logs do sistema, logs de tarefas, arquivos de log do site', dockerLog: 'Arquivos de log de operação de contêineres', @@ -2329,14 +2484,13 @@ const message = { shell: 'Tarefas agendadas de script de shell', containerShell: 'Tarefas agendadas de script de shell executadas dentro de contêineres', curl: 'Tarefas agendadas de CURL', - docker: 'Lixo de contêineres', dockerHelper: 'Arquivos como contêineres, imagens, volumes, cache de compilação, etc.', volumes: 'Volumes', buildCache: 'Cache de construção do container', - appTmpDownload: 'Arquivo de download temporário do aplicativo', unknownWebsiteLog: 'Fail sandaran log laman web tidak dikaitkan', + snapshot: 'Arquivos temporários de snapshot do sistema', }, app: { app: 'Aplicativo | Aplicativos', @@ -2362,9 +2516,9 @@ const message = { stopOperatorHelper: 'O aplicativo será parado. Deseja continuar?', restartOperatorHelper: 'O aplicativo será reiniciado. Deseja continuar?', reloadOperatorHelper: 'O aplicativo será recarregado. Deseja continuar?', - checkInstalledWarn: `"{0}" não foi detectado. Vá para "Loja de Aplicativos" para instalar.`, + checkInstalledWarn: '"{0}" não foi detectado. Vá para "Loja de Aplicativos" para instalar.', limitHelper: 'O aplicativo já foi instalado.', - deleteHelper: `"{0}" foi associado aos seguintes recursos. Por favor, verifique e tente novamente!`, + deleteHelper: '"{0}" foi associado aos seguintes recursos. Por favor, verifique e tente novamente!', checkTitle: 'Dica', defaultConfig: 'Configuração padrão', defaultConfigHelper: 'Foi restaurado para a configuração padrão, ela entrará em vigor após salvar', @@ -2395,7 +2549,8 @@ const message = { containerNameHelper: 'O nome do container será gerado automaticamente quando não definido', allowPort: 'Acesso externo', allowPortHelper: 'Permitir o acesso externo irá liberar a porta do firewall', - appInstallWarn: `O aplicativo não expõe a porta de acesso externo por padrão. Clique em "Configurações Avançadas" para expô-la.`, + appInstallWarn: + 'O aplicativo não expõe a porta de acesso externo por padrão. Clique em "Configurações Avançadas" para expô-la.', upgradeStart: 'Iniciando a atualização! Por favor, atualize a página mais tarde', toFolder: 'Abrir o diretório de instalação', editCompose: 'Editar arquivo compose', @@ -2407,7 +2562,8 @@ const message = { sortMode: 'Ordenar', upgradeHelper: 'Coloque aplicativos anormais de volta ao estado normal antes de atualizar. Se a atualização falhar, vá para "Logs > Logs do Sistema" para verificar a razão da falha.', - installWarn: `O acesso externo não foi habilitado, o que impede que o aplicativo seja acessado via redes externas. Deseja continuar?`, + installWarn: + 'O acesso externo não foi habilitado, o que impede que o aplicativo seja acessado via redes externas. Deseja continuar?', showIgnore: 'Exibir aplicativos ignorados', cancelIgnore: 'Cancelar ignorar', ignoreList: 'Aplicativos ignorados', @@ -2571,7 +2727,8 @@ const message = { deleteAppHelper: 'Excluir aplicativos associados e backups de aplicativos ao mesmo tempo', deleteBackupHelper: 'Excluir também backups do site.', deleteDatabaseHelper: 'Também excluir o banco de dados associado ao site', - deleteConfirmHelper: `A operação de exclusão não pode ser desfeita. Digite "{0}" para confirmar a exclusão.`, + deleteConfirmHelper: + 'A operação de exclusão não pode ser desfeita. Digite "{0}" para confirmar a exclusão.', staticPath: 'O diretório principal correspondente é ', limit: 'Plano', blog: 'Fórum/Blog', @@ -2800,7 +2957,6 @@ const message = { failTimeout: 'Tempo limite de falha', failTimeoutHelper: 'O comprimento da janela de tempo para verificações de integridade do servidor. Quando o número acumulado de falhas atinge o limite dentro deste período, o servidor será removido temporariamente e repetido após a mesma duração. Padrão 10 segundos', - staticChangePHPHelper: 'Atualmente um site estático, pode ser alterado para um site PHP.', proxyCache: 'Cache de Proxy Reverso', cacheLimit: 'Limite de Espaço de Cache', @@ -2829,7 +2985,6 @@ const message = { preflight: 'Resposta rápida a solicitação de preflight', preflightHleper: 'Quando habilitado, quando o navegador envia uma solicitação de preflight de origem cruzada (solicitação OPTIONS), o sistema retornará automaticamente um código de status 204 e definirá os cabeçalhos de resposta de origem cruzada necessários', - changeDatabase: 'Alterar Banco de Dados', changeDatabaseHelper1: 'A associação do banco de dados é usada para backup e restauração do site.', changeDatabaseHelper2: 'Alternar para outro banco de dados pode tornar backups anteriores irrecuperáveis.', @@ -2863,7 +3018,6 @@ const message = { execUser: 'Usuário Executando', execDir: 'Diretório de Execução', packagist: 'Espelho Completo da China', - batchOperate: 'Operação em Lote', batchOperateHelper: 'Lote {0} sites, continuar operação?', stream: 'Proxy TCP/UDP', @@ -2872,8 +3026,12 @@ const message = { 'Defina o número da porta de escuta externa, os clientes acessarão o serviço através desta porta, separados por vírgulas, por exemplo: 5222,5223', streamHelper: 'Encaminhamento de Portas e Balanceamento de Carga TCP/UDP', udp: 'Habilitar UDP', - syncHtmlHelper: 'Sincronizar com PHP e sites estáticos', + wafValueHelper: 'Valor', + parentWbeiste: 'Site pai', + shareCahe: 'Tamanho de memória da contagem de cache', + shareCaheHelper: 'Aproximadamente 8000 objetos de cache podem ser armazenados por 1M de memória', + cacheExpireJHelper: 'O cache será excluído se não houver acesso após o tempo de expiração', }, php: { short_open_tag: 'Suporte para short tags', @@ -2903,6 +3061,7 @@ const message = { containerConfigHelper: 'Variáveis de ambiente e outras informações podem ser modificadas em Configuração - Configuração do Contêiner após a criação', dateTimezoneHelper: 'Exemplo: TZ=Asia/Shanghai (Adicione conforme necessário)', + extensionsHelper: 'Para várias extensões, separe por vírgulas', }, nginx: { serverNamesHashBucketSizeHelper: 'The hash table size of the server name', @@ -3038,7 +3197,6 @@ const message = { argsCheck: 'Verificação de parâmetros GET', postCheck: 'Verificação de parâmetros POST', cookieBlockList: 'Lista de cookies bloqueados', - dockerHelper: 'O firewall atual não pode desativar o mapeamento de porta de contêiner. Aplicativos instalados podem ir para a página [Instalados] para editar parâmetros do aplicativo e configurar regras de liberação de porta.', iptablesHelper: @@ -3074,7 +3232,6 @@ const message = { portHelper2: 'Faixa de portas, ex.: 8080-8089', changeStrategyHelper: 'Alterar a estratégia [{1}] {0} para [{2}]. Após a definição, {0} acessará {2} externamente. Deseja continuar?', - strategy: 'Estratégia', accept: 'Aceitar', drop: 'Bloquear', @@ -3102,7 +3259,6 @@ const message = { exportHelper: 'Prestes a exportar {0} regras de firewall. Continuar?', importSuccess: '{0} regras importadas com sucesso', importPartialSuccess: 'Importação concluída: {0} sucesso, {1} falha', - ipv4Limit: 'A operação atual suporta apenas endereços IPv4', basicStatus: 'A cadeia atual {0} não está vinculada, vincule primeiro!', baseIptables: 'Serviço iptables', @@ -3135,6 +3291,9 @@ const message = { portHelper: '0 significa qualquer porta', allPorts: 'Todas as Portas', deleteRuleConfirm: 'Excluirá {0} regras. Continuar?', + advancedControl: 'Controle avançado', + advancedControlNotAvailable: 'Atualmente usando firewall {0}; regras avançadas suportam apenas iptables', + destination: 'Destino', }, runtime: { runtime: 'Runtime', @@ -3180,7 +3339,7 @@ const message = { customScript: 'Comando de inicialização personalizado', customScriptHelper: 'Por favor, insira o comando de inicialização completo, por exemplo: npm run start. Para comandos de inicialização do PM2, substitua por pm2-runtime, caso contrário irá falhar ao iniciar.', - portError: `Evite repetir a mesma porta.`, + portError: 'Evite repetir a mesma porta.', systemRestartHelper: 'Descrição do status: Interrupção - falha ao adquirir status devido à reinicialização do sistema.', javaScriptHelper: @@ -3195,6 +3354,29 @@ const message = { concurrency: 'Esquema de Concorrência', loadStatus: 'Status de Carga', extraHosts: 'Mapeamento de host', + extension: 'Extensão', + installExtension: 'Confirma instalar a extensão {0}', + loadedExtension: 'Extensão carregada', + popularExtension: 'Extensão popular', + uninstallExtension: 'Tem certeza de que deseja desinstalar a extensão {0}', + phpConfigHelper: 'Alterar a configuração exige reiniciar o ambiente. Deseja continuar', + operateMode: 'modo de operação', + dynamic: 'dinâmico', + static: 'estático', + ondemand: 'sob demanda', + dynamicHelper: + 'Ajusta dinamicamente o número de processos; alta flexibilidade para tráfego variável ou baixa memória', + staticHelper: + 'Número fixo de processos, adequado para tráfego estável e alta concorrência, com maior consumo de recursos', + ondemandHelper: + 'Processos iniciam e encerram sob demanda; melhor uso de recursos, mas resposta inicial pode ser lenta', + max_children: 'número máximo de processos permitidos', + start_servers: 'número de processos ao iniciar', + min_spare_servers: 'número mínimo de processos ociosos', + max_spare_servers: 'número máximo de processos ociosos', + envKey: 'Nome', + envValue: 'Valor', + environment: 'Variável de ambiente', }, process: { pid: 'ID do Processo', @@ -3241,7 +3423,8 @@ const message = { list: 'Processo daemon | Processos daemon', config: 'Configuração do Supervisor', primaryConfig: 'Localização do arquivo de configuração principal', - notSupportCtl: `O supervisorctl não foi detectado. Vá para a página da biblioteca de scripts para instalar manualmente.`, + notSupportCtl: + 'O supervisorctl não foi detectado. Vá para a página da biblioteca de scripts para instalar manualmente.', user: 'Usuário', command: 'Comando', dir: 'Diretório', @@ -3250,7 +3433,7 @@ const message = { 'Isso irá modificar o valor "files" na seção "[include"] do arquivo de configuração principal. O diretório de outros arquivos de configuração será: "{diretório de instalação do 1Panel}/1panel/tools/supervisord/supervisor.d/".', operatorHelper: 'A operação {1} será realizada em {0}, deseja continuar? ', uptime: 'Tempo de execução', - notStartWarn: `O Supervisor não foi iniciado. Inicie-o primeiro.`, + notStartWarn: 'O Supervisor não foi iniciado. Inicie-o primeiro.', serviceName: 'Nome do serviço', initHelper: 'O serviço Supervisor foi detectado, mas não está inicializado. Clique no botão de inicialização na barra de status superior para configurá-lo.', @@ -3511,7 +3694,6 @@ const message = { 'Modo Global: Ativado quando o número total de solicitações para qualquer URL dentro de uma unidade de tempo excede o limite', uriModeHelper: 'Modo URL: Ativado quando o número de solicitações para uma única URL dentro de uma unidade de tempo excede o limite', - ip: 'Lista negra de IPs', globalSettingHelper: 'Configurações com a tag [Website] precisam ser ativadas em [Configurações do Website], e as configurações globais são apenas as configurações padrão para sites recém-criados', @@ -3583,6 +3765,7 @@ const message = { importRuleHelper: 'Uma regra por linha', }, monitor: { + '360': 'Busca 360', name: 'Monitoramento de Websites', pv: 'Visualizações de Página', uv: 'Visitantes Únicos', @@ -3654,7 +3837,6 @@ const message = { statusErr: 'Formato de código de status inválido', shenma: 'Busca Shenma', duckduckgo: 'DuckDuckGo', - '360': 'Busca 360', excludeUri: 'Excluir URIs', top100Helper: 'Mostrar os 100 principais dados', logSaveDay: 'Período de Retenção de Logs (dias)', @@ -3765,7 +3947,6 @@ const message = { wafContent3: 'Crie uma página personalizada para exibir após uma solicitação ser interceptada', wafTitle4: 'Regras Personalizadas (ACL)', wafContent4: 'Intercepta solicitações com base em regras personalizadas', - tamperTitle1: 'Monitoramento de Integridade de Arquivos', tamperContent1: 'Monitora a integridade dos arquivos do site, incluindo arquivos principais, scripts e arquivos de configuração.', @@ -3778,7 +3959,6 @@ const message = { tamperTitle4: 'Registro e Análise', tamperContent4: 'Registra logs de acesso e operações em arquivos para auditoria e análise posteriores, ajudando administradores a identificar ameaças de segurança potenciais.', - settingTitle1: 'Mensagem de Boas-vindas Personalizada', settingContent1: 'Defina uma mensagem de boas-vindas personalizada na página de login do 1Panel.', settingTitle2: 'Logo Personalizado', @@ -3786,7 +3966,6 @@ const message = { settingTitle3: 'Ícone Personalizado do Site', settingContent3: 'Permite o upload de ícones personalizados para substituir o ícone padrão do navegador, melhorando a experiência do usuário.', - monitorTitle1: 'Tendência de Visitantes', monitorContent1: 'Estatísticas e exibição das tendências de visitantes do site', monitorTitle2: 'Mapa de Visitantes', @@ -3797,7 +3976,6 @@ const message = { monitorTitle4: 'Monitoramento em Tempo Real', monitorContent4: 'Monitoramento em tempo real de informações de solicitações do site, incluindo número de solicitações, tráfego, etc.', - alertTitle1: 'Alertas por SMS', alertContent1: 'Quando houver uso anormal de recursos do servidor, expiração de sites e certificados, nova versão disponível, expiração de senha, entre outros, os usuários serão notificados via SMS para garantir um processamento oportuno.', @@ -3807,7 +3985,6 @@ const message = { alertTitle3: 'Configurações de Alertas', alertContent3: 'Permite que os usuários configurem números de telefone personalizados, frequência de envio diário e horários de envio, facilitando a criação de alertas mais adequados.', - nodeDashTitle1: 'Gerenciamento de Aplicativos', nodeDashContent1: 'Gerenciamento unificado de aplicativos multi-nó, suporta monitoramento de status, início/parada rápida, conexão de terminal e backup', @@ -3820,7 +3997,6 @@ const message = { nodeDashTitle4: 'Gerenciamento de Tarefas Agendadas', nodeDashContent4: 'Gerenciamento unificado de tarefas agendadas multi-nó, suporta monitoramento de status, início/parada rápida e execução manual por acionamento', - nodeTitle1: 'Adição de Nó com Um Clique', nodeContent1: 'Integre rapidamente vários nós de servidor', nodeTitle2: 'Atualização em Lote', @@ -3829,7 +4005,6 @@ const message = { nodeContent3: 'Acompanhe em tempo real o status operacional de cada nó', nodeTitle4: 'Conexão Remota Rápida', nodeContent4: 'Conecte-se diretamente a terminais remotos de nós com um clique', - fileExchangeTitle1: 'Transmissão de Autenticação por Chave', fileExchangeContent1: 'Autentique via chaves SSH para garantir a segurança da transmissão.', fileExchangeTitle2: 'Sincronização de Arquivos Eficiente', @@ -3838,11 +4013,9 @@ const message = { fileExchangeTitle3: 'Suporte a Troca Entre Múltiplos Nós', fileExchangeContent3: 'Transfira facilmente arquivos de projeto entre diferentes nós, gerencie vários servidores de forma flexível.', - nodeAppTitle1: 'Gerenciamento de Atualização de Aplicativos', nodeAppContent1: 'Monitoramento unificado de atualizações de aplicativos multi-nó, suporta atualização com um clique', - appTitle1: 'Gerenciamento Flexível do Painel', appContent1: 'Gerencie facilmente seu servidor 1Panel a qualquer hora e em qualquer lugar.', appTitle2: 'Informações Completas do Serviço', @@ -3851,7 +4024,6 @@ const message = { appTitle3: 'Monitoramento Anômalo em Tempo Real', appContent3: 'Veja o status do servidor, monitoramento de segurança WAF, estatísticas de visitas ao site e saúde dos processos em tempo real no aplicativo móvel.', - clusterTitle1: 'Implantação Mestre-Escravo', clusterContent1: 'Suporta a criação de instâncias mestre-escravo MySQL/Postgres/Redis em diferentes nós, completando automaticamente a associação e inicialização mestre-escravo', @@ -3921,7 +4093,6 @@ const message = { nodeSyncHelper: 'A sincronização das informações do nó irá sincronizar as seguintes informações:', nodeSyncHelper1: '1. Informações da conta de backup pública', nodeSyncHelper2: '2. Informações de conexão entre o nó principal e os sub-nós', - nodeCheck: 'Verificação de disponibilidade', checkSSH: 'Verificar conexão SSH do nó', checkUserPermission: 'Verificar permissões de usuário do nó', @@ -3942,7 +4113,6 @@ const message = { errLicense: 'A licença vinculada a este nó está indisponível. Por favor verifique e tente novamente!', errNodePort: 'A porta do nó [ {0} ] foi detectada como inacessível. Verifique se o firewall ou grupo de segurança liberou esta porta.', - reinstallHelper: 'Reinstalar o nó {0}, deseja continuar?', unhealthyCheck: 'Verificação Anormal', fixOperation: 'Operação de Correção', @@ -3967,7 +4137,6 @@ const message = { offline: 'Modo offline', freeCount: 'Cota gratuita [{0}]', offlineHelper: 'Usado quando o nó está em ambiente offline', - appUpgrade: 'Atualização do Aplicativo', appUpgradeHelper: 'Existem {0} aplicativos que precisam ser atualizados', }, @@ -4064,7 +4233,6 @@ const message = { specifiedTime: 'Hora Especificada', deleteTitle: 'Excluir Alerta', deleteMsg: 'Tem certeza de que deseja excluir a tarefa de alerta?', - allSslTitle: 'Alertas de Expiração de Todos os Certificados SSL do Site', sslTitle: 'Alerta de Expiração do Certificado SSL do Site {0}', allSiteEndTimeTitle: 'Alertas de Expiração de Todos os Sites', @@ -4076,7 +4244,6 @@ const message = { loadTitle: 'Alerta de Alta Carga', diskTitle: 'Alerta de Alto Uso de Disco para o Diretório de Montagem {0}', allDiskTitle: 'Alerta de Alto Uso de Disco', - timeRule: 'Tempo restante menor que {0} dias (se não tratado, será reenviado no próximo dia)', panelUpdateRule: 'Envia um alerta quando uma nova versão do painel é detectada (se não tratado, será reenviado no próximo dia)', @@ -4084,12 +4251,10 @@ const message = { diskRule: 'Uso de disco para o diretório de montagem {0} excede {1}{2}, dispara alerta, envia {3} vezes por dia', allDiskRule: 'Uso de disco excede {0}{1}, dispara alerta, envia {2} vezes por dia', - cpuName: 'CPU', memoryName: 'Memória', loadName: 'Carga', diskName: 'Disco', - syncAlertInfo: 'Envio Manual', syncAlertInfoMsg: 'Deseja enviar a tarefa de alerta manualmente?', pushError: 'Envio Falhou', diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts index 014377fd65bf..91125dbebec0 100644 --- a/frontend/src/lang/modules/ru.ts +++ b/frontend/src/lang/modules/ru.ts @@ -84,6 +84,10 @@ const message = { hide: 'Скрыть', visit: 'Посетить', migrate: 'Мигрировать', + prev: 'Назад', + next: 'Далее', + setDefault: 'Сбросить по умолчанию', + bind: 'Привязать', }, operate: { start: 'Запустить', @@ -133,6 +137,8 @@ const message = { manageGroup: 'Управление группами', backToList: 'Вернуться к списку', keepEdit: 'Продолжить редактирование', + default: 'По умолчанию', + noRefresh: 'Без автообновления', }, loadingText: { Upgrading: 'Обновление системы, пожалуйста, подождите...', @@ -181,6 +187,10 @@ const message = { importHelper: 'При импорте конфликтующих или дублирующихся данных импортированное содержимое будет использоваться в качестве стандарта для обновления исходных данных базы данных.', errImport: 'Содержимое файла ненормально:', + backupSuccess: 'Резервное копирование выполнено', + restoreSuccess: 'Восстановление выполнено', + installSuccess: 'Установка выполнена', + uninstallSuccess: 'Удаление выполнено', }, login: { username: 'пользователя', @@ -341,6 +351,7 @@ const message = { conflict: 'Конфликт', duplicate: 'Дубликат', unexecuted: 'Не Выполнено', + unused: 'Не используется', }, units: { second: ' секунда | секунда | секунд', @@ -394,6 +405,7 @@ const message = { app: 'Приложение', msgCenter: 'Задачи', disk: 'Диск', + filter: 'Фильтр', }, home: { recommend: 'Рекомендуемое', @@ -426,12 +438,10 @@ const message = { runningTime: 'Время работы', mem: 'Системная Память', swapMem: 'Раздел подкачки', - runSmoothly: 'Низкая нагрузка', runNormal: 'Средняя нагрузка', runSlowly: 'Высокая нагрузка', runJam: 'Тяжелая нагрузка', - core: 'Физических ядер', logicCore: 'Логических ядер', corePercent: 'Использование Ядра', @@ -457,7 +467,6 @@ const message = { available: 'Доступно', percent: 'Утилизация', goInstall: 'Установить', - networkCard: 'Интерфейс', disk: 'Диск', memo: 'Заметка', @@ -510,14 +519,11 @@ const message = { changePasswordHelper: 'База данных была связана с приложением. Изменение пароля изменит пароль базы данных приложения одновременно. Изменение вступит в силу после перезапуска приложения.', recoverTimeoutHelper: '-1 означает отсутствие ограничения по времени ожидания', - confChange: 'Конфигурация', confNotFound: 'Файл конфигурации не найден. Пожалуйста, обновите приложение до последней версии в магазине приложений и попробуйте снова!', - portHelper: 'Этот порт является открытым портом контейнера. Вам нужно сохранить изменение отдельно и перезапустить контейнер!', - loadFromRemote: 'Синхронизировать', userBind: 'Привязать пользователя', pgBindHelper: @@ -548,7 +554,6 @@ const message = { hasCA: 'Есть сертификат CA', skipVerify: 'Игнорировать проверку действительности сертификата', initialDB: 'Исходная База Данных', - formatHelper: 'Текущая кодировка базы данных - {0}, несоответствие кодировок может привести к ошибке восстановления', selectFile: 'Выбрать файл', @@ -556,7 +561,6 @@ const message = { clickHelper: 'нажмите для загрузки', supportUpType: 'Поддерживаются только форматы файлов sql, sql.gz, tar.gz, .zip. Импортируемый сжатый файл должен содержать только один файл .sql или включать test.sql', - currentStatus: 'Текущее состояние', baseParam: 'Базовые параметры', performanceParam: 'Параметры производительности', @@ -589,7 +593,6 @@ const message = { tableLocksWaited: 'Количество блокировок таблиц', tableLocksWaitedHelper: 'Если значение слишком большое, рассмотрите возможность увеличения производительности базы данных.', - performanceTuning: 'Настройка производительности', optimizationScheme: 'Схема оптимизации', keyBufferSizeHelper: 'Размер буфера для индексов', @@ -607,14 +610,11 @@ const message = { tableOpenCacheHelper: 'Кэш таблиц', maxConnectionsHelper: 'Максимум подключений', restart: 'Перезапустить', - slowLog: 'Медленные запросы', noData: 'Пока нет медленных запросов.', - isOn: 'Включено', longQueryTime: 'порог (сек)', thresholdRangeHelper: 'Пожалуйста, введите корректный порог (1 - 600).', - timeout: 'Таймаут(сек)', timeoutHelper: 'Период таймаута неактивного подключения. 0 означает, что подключение постоянно активно.', maxclients: 'Макс. клиентов', @@ -641,20 +641,17 @@ const message = { redisQuickCmd: 'Быстрые команды Redis', recoverHelper: 'Это перезапишет данные с [{0}]. Хотите продолжить?', submitIt: 'Перезаписать данные', - baseConf: 'Базовая', allConf: 'Все', restartNow: 'Перезапустить сейчас', restartNowHelper1: 'Необходимо перезапустить систему после вступления изменений конфигурации в силу. Если ваши данные требуют сохранения, сначала выполните операцию сохранения.', restartNowHelper: 'Это вступит в силу только после перезапуска системы.', - persistence: 'Сохранение', rdbHelper1: 'секунд(ы), вставить', rdbHelper2: 'элементов данных', rdbHelper3: 'Выполнение любого из условий запустит сохранение RDB.', rdbInfo: 'Убедитесь, что значение в списке правил находится в диапазоне от 1 до 100000', - containerConn: 'Подключение контейнера', copyConnURL: 'Копировать URL подключения', connAddress: 'Адрес', @@ -665,6 +662,9 @@ const message = { remoteConnHelper3: 'Адрес доступа по умолчанию - это IP хоста. Для изменения перейдите к пункту конфигурации "Адрес доступа по умолчанию" на странице настроек панели.', localIP: 'Локальный IP', + localhostHelper: + 'Если для БД в контейнере указать "localhost", внешний доступ будет недоступен. Выбирайте внимательно!', + changeConnHelper: 'Это изменит базу данных {0}. Продолжить?', }, aiTools: { agents: { @@ -717,6 +717,7 @@ const message = { pairingCodeRequired: 'Please enter pairing code', pairingApproveSuccess: 'Pairing approved successfully', customProviderHelper: 'Для пользовательского провайдера модели доступность учетной записи не проверяется', + feishuSaveSuccess: 'Сохранено в Feishu', }, model: { model: 'Модель', @@ -764,7 +765,6 @@ const message = { memoryUsed: 'Использованная Память', memoryTotal: 'Общая Память', percent: 'Использование', - base: 'Основная Информация', driverVersion: 'Версия Драйвера', cudaVersion: 'Версия CUDA', @@ -796,6 +796,7 @@ const message = { current: 'Мониторинг в Реальном Времени', history: 'Исторические Записи', notSupport: 'Текущая версия или драйвер не поддерживает отображение этого параметра.', + processCount: 'Кол-во процессов', }, mcp: { server: 'Сервер MCP', @@ -908,7 +909,6 @@ const message = { 'Движок контейнера использует базовое значение 1024 для долей CPU. Вы можете увеличить его, чтобы дать контейнеру больше времени CPU.', inputIpv4: 'Пример: 192.168.1.1', inputIpv6: 'Пример: 2001:0db8:85a3:0000:0000:8a2e:0370:7334', - diskUsage: 'Использование Диска', localVolume: 'Локальный Том Хранилища', buildCache: 'Кэш Сборки', @@ -921,7 +921,6 @@ const message = { sizeRwHelper: 'Размер записываемого слоя, уникального для контейнера', sizeRootFs: 'Виртуальный Размер', sizeRootFsHelper: 'Общий размер всех слоев образа, от которых зависит контейнер + слой контейнера', - containerFromAppHelper: 'Обнаружено, что этот контейнер происходит из магазина приложений. Операции с приложением могут привести к недействительности текущих изменений.', containerFromAppHelper1: @@ -935,7 +934,6 @@ const message = { privileged: 'Привилегированный', privilegedHelper: 'Разрешить контейнеру выполнять определенные привилегированные операции на хосте, что может повысить риски контейнера. Используйте с осторожностью!', - upgradeHelper: 'Имя репозитория/Имя образа: Версия образа', upgradeWarning2: 'Операция обновления требует пересборки контейнера, все несохраненные данные будут потеряны. Хотите продолжить?', @@ -945,7 +943,6 @@ const message = { targetImage: 'Целевой образ', imageLoadErr: 'Не обнаружено имя образа для контейнера', appHelper: 'Контейнер происходит из магазина приложений, и обновление может сделать сервис недоступным.', - input: 'Ручной ввод', forcePull: 'Всегда загружать образ', forcePullHelper: @@ -991,10 +988,8 @@ const message = { unlessStopped: 'если не остановлен', onFailure: 'при сбое (по умолчанию пять раз)', no: 'никогда', - refreshTime: 'Интервал обновления', cache: 'Кэш', - image: 'Образ | Образы', imagePull: 'Загрузить', imagePullHelper: @@ -1027,7 +1022,6 @@ const message = { delBuildCacheHelper: 'Это удалит все кэшированные артефакты, созданные во время сборки, и не может быть отменено. Хотите продолжить?', urlWarning: 'Префикс URL не должен включать http:// или https://. Пожалуйста, измените.', - network: 'Сеть | Сети', networkHelper: 'Это может привести к неправильной работе некоторых приложений и сред выполнения. Хотите продолжить?', @@ -1040,7 +1034,6 @@ const message = { scope: 'Диапазон IP', gateway: 'Шлюз', auxAddress: 'Исключить IP', - volume: 'Том | Тома', volumeDir: 'Директория тома', nfsEnable: 'Включить NFS хранилище', @@ -1048,7 +1041,6 @@ const message = { mountpoint: 'Точка монтирования', mountpointNFSHelper: 'например, /nfs, /nfs-share', options: 'Опции', - repo: 'Реестры', httpRepoHelper: 'Работа с репозиторием HTTP-типа требует перезапуска службы Docker.', httpRepo: 'Выбор HTTP протокола требует перезапуска службы Docker для добавления в небезопасные реестры.', @@ -1062,7 +1054,6 @@ const message = { 'Если есть несколько зеркал, они должны быть разделены новой строкой, например:\nhttp://xxxxxx.m.daocloud.io \nhttps://xxxxxx.mirror.aliyuncs.com', registrieHelper: 'Если существует несколько частных репозиториев, они должны быть разделены новой строкой, например:\n172.16.10.111:8081 \n172.16.10.112:8081', - compose: 'Compose | Composes', composeFile: 'Файл Оркестрации', fromChangeHelper: 'Переключение источника очистит текущее отредактированное содержимое. Хотите продолжить?', @@ -1087,7 +1078,6 @@ const message = { composeDownHelper: 'Это остановит и удалит все контейнеры и сети под compose {0}. Хотите продолжить?', composeEnvHelper2: 'Эта оркестрация создана Магазином приложений 1Panel. Измените переменные среды в установленных приложениях.', - setting: 'Настройка | Настройки', operatorStatusHelper: 'Это выполнит "{0}" службы Docker. Хотите продолжить?', dockerStatus: 'Служба Docker', @@ -1128,12 +1118,10 @@ const message = { related: 'Связанные', includeAppstore: 'Показывать контейнеры из магазина приложений', excludeAppstore: 'Скрыть контейнер магазина приложений', - cleanDockerDiskZone: 'Очистить дисковое пространство, используемое Docker', cleanImagesHelper: '(Очистить все образы, не используемые контейнерами)', cleanContainersHelper: '(Очистить все остановленные контейнеры)', cleanVolumesHelper: '(Очистить все неиспользуемые локальные тома)', - makeImage: 'Создать образ', newImageName: 'Новое имя образа', commitMessage: 'Сообщение коммита', @@ -1141,6 +1129,11 @@ const message = { ifPause: 'Приостановить контейнер во время создания', ifMakeImageWithContainer: 'Создать новый образ из этого контейнера?', finishTime: 'Время последней остановки', + workingDir: 'Рабочий каталог', + resource: 'Ресурс', + macAddr: 'MAC-адрес', + exportHelper: 'Экспортировать выбранные образы в один tar-файл.', + goSetting: 'Перейти к редактированию', }, cronjob: { importHelper: @@ -1253,7 +1246,6 @@ const message = { cutWebsiteLog: 'Ротация логов сайта', cutWebsiteLogHelper: 'Ротированные файлы логов будут сохранены в директории резервных копий 1Panel.', syncIpGroup: 'Синхронизировать группы IP WAF', - requestExpirationTime: 'Время истечения запроса на загрузку (часы)', unitHours: 'Единица: часы', alertTitle: 'Плановая задача - {0} «{1}» Оповещение о сбое задачи', @@ -1282,6 +1274,13 @@ const message = { syncHelper: 'Выполнить синхронизацию библиотеки системных скриптов? Это действие затрагивает только системные скрипты. Продолжить?', }, + nextTime: 'Следующие 5 запусков', + logHelper1: '1. Системный лог 1Panel', + backupContent: 'Содержимое бэкапа', + cronSpecRule2: 'Неверный формат периода выполнения, проверьте и попробуйте снова!', + executor: 'Исполнитель', + cleanLog: 'Автоочистка логов', + cleanLogscope: 'Хранение логов', }, monitor: { globalFilter: 'Глобальный Фильтр', @@ -1293,7 +1292,6 @@ const message = { defaultIOHelper: 'Опция диска по умолчанию, отображаемая в интерфейсах мониторинга и обзора', cleanMonitor: 'Очистить Записи Мониторинга', cleanHelper: 'Эта операция очистит все записи мониторинга, включая GPU. Продолжить?', - avgLoad: 'Средняя нагрузка', loadDetail: 'Детали нагрузки', resourceUsage: 'Использование', @@ -1431,6 +1429,7 @@ const message = { dnsCheck: 'Проверить доступность', dnsOK: 'Информация о конфигурации DNS доступна!', dnsTestFailed: 'Информация о конфигурации DNS недоступна.', + syncSiteHelper: 'Синхронизировать системное время с {0}?', }, fail2ban: { sshPort: 'Прослушивание SSH порта', @@ -1550,6 +1549,9 @@ const message = { websiteLog: 'Логи веб-сайта', runLog: 'Логи выполнения', errLog: 'Логи ошибок', + task: 'Лог задач', + taskName: 'Имя задачи', + taskRunning: 'Выполняется', }, file: { fileDirNum: '{0} каталогов, {1} файлов,', @@ -1776,6 +1778,7 @@ const message = { loginTime: 'Время входа', loginIP: 'IP входа', stopSSHWarn: 'Отключить это SSH-соединение', + remote: 'Удаленный SSH', }, setting: { panel: 'Панель', @@ -1975,7 +1978,6 @@ const message = { accountKey: 'Ключ аккаунта', address: 'Адрес', path: 'Путь', - safe: 'Безопасность', passkey: 'Passkey', passkeyManage: 'Управление', @@ -2086,7 +2088,6 @@ const message = { error416: 'Диапазон не удовлетворяется', error444: 'Соединение закрыто', error500: 'Ошибка сервера', - https: 'Настройка HTTPS для панели повышает безопасность доступа', strictHelper: 'Трафик без HTTPS не может подключиться к панели', muxHelper: @@ -2103,7 +2104,6 @@ const message = { certificate: 'Сертификат', backupJump: 'Файлы резервной копии отсутствуют в текущем списке резервных копий, попробуйте скачать из директории файлов и импортировать для резервного копирования.', - snapshot: 'Снапшот | Снапшоты', noAppData: 'Нет доступных системных приложений для выбора', noBackupData: 'Нет доступных данных для резервного копирования', @@ -2186,7 +2186,6 @@ const message = { 'Версия узла не совпадает с основной. Пожалуйста, обновите в Управлении узлами перед повторной попыткой.', versionCompare: 'Обнаружено, что узел {0} уже имеет последнюю обновляемую версию. Пожалуйста, проверьте версию основного узла и повторите попытку!', - about: 'О программе', versionItem: 'Текущая Версия', backupCopies: 'Копии Бэкапа', @@ -2204,7 +2203,6 @@ const message = { forum: 'Обсуждения', doc2: 'Документация', currentVersion: 'Версия', - license: 'Лицензия', bindNode: 'Привязать Узел', menuSetting: 'Настройки меню', @@ -2219,6 +2217,34 @@ const message = { compressPassword: 'Пароль сжатия', backupRecoverMessage: 'Пожалуйста, введите пароль для сжатия или распаковки (оставьте пустым, чтобы не устанавливать)', + componentSize: 'Размер компонента', + scope: 'Область', + public: 'Публичный', + publicHelper: + 'Публичные аккаунты резервного копирования синхронизируются на все подузлы и могут использоваться совместно', + private: 'Приватный', + privateHelper: + 'Приватные аккаунты резервного копирования создаются только на текущем узле и используются только им', + UPYUN: 'UPYUN', + ALIYUN: 'Aliyun Drive', + ALIYUNHelper: + 'Текущий лимит скачивания Aliyun Drive без клиента — 100MB. Больше можно скачать только через клиент.', + ALIYUNRecover: + 'Текущий лимит скачивания Aliyun Drive без клиента — 100MB. При превышении скачайте через клиент локально, затем синхронизируйте снимок для восстановления.', + GoogleDrive: 'Google Drive', + analysis: 'Анализ', + analysisHelper: + 'Вставьте весь токен, нужные поля будут разобраны автоматически. Подробности смотрите в официальной документации.', + serviceName: 'Имя сервиса', + operator: 'Оператор', + clickToRefresh: 'Нажмите для обновления', + recoverFailed: 'Не удалось восстановить снимок', + upgradeRecord: 'История обновлений', + upgrading: 'Идет обновление, пожалуйста, подождите...', + versionHelper: 'Правило именования: [мажор].[функции].[исправления], пример ниже:', + upgradeCheck: 'Проверить обновления', + panelSSLHelper: + 'После автообновления SSL панели нужно вручную перезапустить сервис 1Panel, чтобы изменения вступили в силу.', }, license: { offLine: 'Офлайн версия', @@ -2275,6 +2301,9 @@ const message = { app: 'Обновите до профессиональной версии, чтобы просматривать информацию о сервисах, мониторинг аномалий и т.д. через мобильное приложение.', cluster: 'Обновление до профессиональной версии позволяет управлять кластерами мастер-слейв MySQL/Postgres/Redis.', + exceptionalHelper: + 'Проверка синхронизации лицензии выполнена с ошибкой. Нажмите синхронизацию вручную для корректной работы Pro. Детали: ', + tamperHelper: 'Операция не выполнена: для файла или папки включена защита от изменений. Проверьте и повторите!', }, clean: { scan: 'Начать сканирование', @@ -2293,7 +2322,6 @@ const message = { suggest: '(Рекомендуется)', totalScan: 'Всего мусорных файлов для очистки: ', selectScan: 'Всего выбранных мусорных файлов: ', - system: 'Системные мусорные файлы', systemHelper: 'Временные файлы, созданные во время снимков, обновлений и других процессов', panelOriginal: 'Файлы резервных копий перед восстановлением снимка системы', @@ -2301,7 +2329,6 @@ const message = { agentPackages: 'Пакеты обновления/установки дочерних узлов исторических версий', upgradeHelper: '(Рекомендуется сохранять последнюю резервную копию обновления для отката системы)', rollback: 'Файлы резервных копий перед восстановлением', - backup: 'Резервная Копия Системы', backupHelper: 'Файлы резервных копий, не связанные с локальными учетными записями резервного копирования', unknownBackup: 'Резервная Копия Системы', @@ -2310,13 +2337,11 @@ const message = { unknownDatabase: 'Несвязанная Резервная Копия Базы Данных', unknownWebsite: 'Несвязанная Резервная Копия Веб-сайта', unknownSnapshot: 'Несвязанная Резервная Копия Снимка', - upload: 'Временные файлы загрузки', uploadHelper: 'Временные файлы, загруженные из списка системных резервных копий', download: 'Временные файлы скачивания', downloadHelper: 'Временные файлы, скачанные из сторонних аккаунтов резервного копирования системой', directory: 'Директория', - systemLog: 'Файл журнала', systemLogHelper: 'Системные журналы, журналы задач, файлы журналов веб-сайта', dockerLog: 'Файлы журналов операций с контейнерами', @@ -2324,14 +2349,13 @@ const message = { shell: 'Запланированные задачи скриптов оболочки', containerShell: 'Запланированные задачи скриптов оболочки, выполняемые внутри контейнеров', curl: 'Запланированные задачи CURL', - docker: 'Мусор контейнеров', dockerHelper: 'Файлы, такие как контейнеры, образы, тома, кэш сборки и т.д.', volumes: 'Тома', buildCache: 'Кэш сборки контейнеров', - appTmpDownload: 'Временный файл загрузки приложения', unknownWebsiteLog: 'Arquivo de backup de log de site não vinculado', + snapshot: 'Временные файлы системного снимка', }, app: { app: 'Приложение | Приложения', @@ -2794,7 +2818,6 @@ const message = { failTimeout: 'Таймаут отказа', failTimeoutHelper: 'Длина временного окна для проверки работоспособности сервера. Когда кумулятивное количество отказов достигает порога в течение этого периода, сервер будет временно удален и повторно проверен через тот же промежуток времени. По умолчанию 10 секунд', - staticChangePHPHelper: 'В настоящее время статический сайт, можно переключить на PHP сайт.', proxyCache: 'Кэш Обратного Прокси', cacheLimit: 'Ограничение Пространства Кэша', @@ -2823,7 +2846,6 @@ const message = { preflight: 'Быстрый ответ на предварительный запрос', preflightHleper: 'При включении, когда браузер отправляет межсайтовый предварительный запрос (запрос OPTIONS), система автоматически вернет статус 204 и установит необходимые межсайтовые заголовки ответа', - changeDatabase: 'Сменить Базу Данных', changeDatabaseHelper1: 'Связь базы данных используется для резервного копирования и восстановления сайта.', changeDatabaseHelper2: @@ -2858,7 +2880,6 @@ const message = { execUser: 'Пользователь выполнения', execDir: 'Каталог выполнения', packagist: 'Полное зеркало Китая', - batchOperate: 'Пакетная операция', batchOperateHelper: 'Пакетное {0} веб-сайтов, продолжить операцию?', stream: 'Прокси TCP/UDP', @@ -2867,8 +2888,13 @@ const message = { 'Установите номер внешнего порта прослушивания, клиенты будут получать доступ к службе через этот порт, разделяйте запятыми, например: 5222,5223', streamHelper: 'Перенаправление портов и балансировка нагрузки TCP/UDP', udp: 'Включить UDP', - syncHtmlHelper: 'Синхронизировать с PHP и статическими сайтами', + wafValueHelper: 'Значение', + createDb: 'Создать базу данных', + parentWbeiste: 'Родительский сайт', + shareCahe: 'Размер памяти под кэш', + shareCaheHelper: 'На 1M памяти можно хранить около 8000 кэш-объектов', + cacheExpireJHelper: 'Кэш будет удален, если после истечения срока по нему не было обращений', }, php: { short_open_tag: 'Поддержка коротких тегов', @@ -2897,6 +2923,7 @@ const message = { containerConfigHelper: 'Переменные окружения и другие данные можно изменить в разделе Конфигурация - Конфигурация контейнера после создания', dateTimezoneHelper: 'Пример: TZ=Asia/Shanghai (Пожалуйста, добавьте по мере необходимости)', + extensionsHelper: 'Для нескольких расширений используйте запятую', }, nginx: { serverNamesHashBucketSizeHelper: 'Размер хэш-таблицы для имен серверов', @@ -3031,7 +3058,6 @@ const message = { argsCheck: 'Проверка GET параметров', postCheck: 'Проверка POST параметров', cookieBlockList: 'Черный список Cookie', - dockerHelper: 'Текущий брандмауэр не может отключить сопоставление портов контейнера. Установленные приложения могут перейти на страницу [Установленные], чтобы редактировать параметры приложения и настраивать правила открытия портов.', iptablesHelper: @@ -3067,7 +3093,6 @@ const message = { portHelper2: 'Диапазон портов, например 8080-8089', changeStrategyHelper: 'Изменить стратегию {0} [{1}] на [{2}]. После установки {0} будет иметь внешний доступ {2}. Хотите продолжить?', - strategy: 'Стратегия', accept: 'Принять', drop: 'Отбросить', @@ -3095,7 +3120,6 @@ const message = { exportHelper: 'Собираюсь экспортировать {0} правил брандмауэра. Продолжить?', importSuccess: 'Успешно импортировано {0} правил', importPartialSuccess: 'Импорт завершён: {0} успешно, {1} с ошибкой', - ipv4Limit: 'Текущая операция поддерживает только адреса IPv4', basicStatus: 'Текущая цепочка {0} не привязана, сначала привяжите!', baseIptables: 'Сервис iptables', @@ -3127,6 +3151,10 @@ const message = { portHelper: '0 означает любой порт', allPorts: 'Все Порта', deleteRuleConfirm: 'Удалит {0} правил. Продолжить?', + advancedControl: 'Расширенное управление', + advancedControlNotAvailable: + 'Сейчас используется firewall {0}, расширенные правила поддерживаются только для iptables', + destination: 'Назначение', }, runtime: { runtime: 'Среда выполнения', @@ -3184,6 +3212,29 @@ const message = { concurrency: 'Схема параллелизма', loadStatus: 'Состояние нагрузки', extraHosts: 'Сопоставление хостов', + extension: 'Расширение', + installExtension: 'Подтвердите установку расширения {0}', + loadedExtension: 'Загруженные расширения', + popularExtension: 'Популярные расширения', + uninstallExtension: 'Вы уверены, что хотите удалить расширение {0}', + phpConfigHelper: 'Для изменения конфигурации требуется перезапуск окружения. Продолжить', + operateMode: 'Режим работы', + dynamic: 'динамический', + static: 'статический', + ondemand: 'по требованию', + dynamicHelper: + 'Динамически регулирует число процессов. Подходит для сайтов с плавающей нагрузкой или малой памятью', + staticHelper: + 'Фиксированное число процессов, подходит для стабильного высокого трафика, но потребляет больше ресурсов', + ondemandHelper: + 'Процессы запускаются/завершаются по требованию, ресурсы используются лучше, но первый отклик может быть медленнее', + max_children: 'максимальное число создаваемых процессов', + start_servers: 'число процессов при запуске', + min_spare_servers: 'минимальное число свободных процессов', + max_spare_servers: 'максимальное число свободных процессов', + envKey: 'Имя', + envValue: 'Значение', + environment: 'Переменная окружения', }, process: { pid: 'ID процесса', @@ -3498,7 +3549,6 @@ const message = { 'Глобальный режим: активируется, когда общее количество запросов к любому URL за определенный промежуток времени превышает порог', uriModeHelper: 'Режим URL: активируется, когда количество запросов к одному URL за определенный промежуток времени превышает порог', - ip: 'Черный список IP', globalSettingHelper: 'Настройки с тегом [Website] должны быть включены в [Настройки сайта], а глобальные настройки являются только настройками по умолчанию для новых сайтов', @@ -3570,6 +3620,7 @@ const message = { importRuleHelper: 'Одно правило на строку', }, monitor: { + '360': '360 Search', name: 'Мониторинг веб-сайта', pv: 'Просмотры страниц', uv: 'Уникальные посетители', @@ -3639,7 +3690,6 @@ const message = { statusErr: 'Неверный формат статус-кода', shenma: 'Shenma Search', duckduckgo: 'DuckDuckGo', - '360': '360 Search', excludeUri: 'Исключить URI', top100Helper: 'Показать топ 100 данных', logSaveDay: 'Период хранения логов (дни)', @@ -3750,7 +3800,6 @@ const message = { wafContent3: 'Создайте пользовательскую страницу для отображения после перехвата запроса', wafTitle4: 'Пользовательские Правила (ACL)', wafContent4: 'Перехватывайте запросы в соответствии с пользовательскими правилами', - tamperTitle1: 'Мониторинг Целостности Файлов', tamperContent1: 'Мониторинг целостности файлов веб-сайта, включая основные файлы, скрипты и файлы конфигурации.', @@ -3763,7 +3812,6 @@ const message = { tamperTitle4: 'Ведение Логов и Анализ', tamperContent4: 'Записывайте логи доступа и операций с файлами для последующего аудита и анализа администраторами, а также для выявления потенциальных угроз безопасности.', - settingTitle1: 'Пользовательское Приветственное Сообщение', settingContent1: 'Установите пользовательское приветственное сообщение на странице входа в 1Panel.', settingTitle2: 'Пользовательский Логотип', @@ -3771,7 +3819,6 @@ const message = { settingTitle3: 'Пользовательская Иконка Сайта', settingContent3: 'Разрешите загрузку пользовательских иконок для замены стандартной иконки браузера, улучшая пользовательский опыт.', - monitorTitle1: 'Тренд Посетителей', monitorContent1: 'Статистика и отображение тенденций посещаемости веб-сайта', monitorTitle2: 'Карта Посетителей', @@ -3782,7 +3829,6 @@ const message = { monitorTitle4: 'Мониторинг в Реальном Времени', monitorContent4: 'Мониторинг запросов веб-сайта в реальном времени, включая количество запросов, трафик и т. д.', - alertTitle1: 'SMS Уведомления', alertContent1: 'При аномальном использовании ресурсов сервера, истечении срока действия сайта и сертификата, появлении новой версии или истечении срока действия пароля пользователи будут уведомлены через SMS, чтобы обеспечить своевременную обработку.', @@ -3792,7 +3838,6 @@ const message = { alertTitle3: 'Настройки Уведомлений', alertContent3: 'Предоставляет пользователям возможность настройки номеров телефонов, частоты и времени отправки уведомлений в день, что позволяет настраивать более удобные уведомления.', - nodeDashTitle1: 'Управление Приложениями', nodeDashContent1: 'Единое управление приложениями на нескольких узлах, поддерживает мониторинг состояния, быстрое запуск/остановку, подключение терминала и резервное копирование', @@ -3805,7 +3850,6 @@ const message = { nodeDashTitle4: 'Управление Запланированными Задачами', nodeDashContent4: 'Единое управление запланированными задачами на нескольких узлах, поддерживает мониторинг состояния, быстрый запуск/остановку и выполнение по ручному триггеру', - nodeTitle1: 'Добавление узла одним кликом', nodeContent1: 'Быстро интегрируйте несколько серверных узлов', nodeTitle2: 'Пакетное обновление', @@ -3814,7 +3858,6 @@ const message = { nodeContent3: 'Реальное наблюдение за рабочим статусом каждого узла', nodeTitle4: 'Быстрое удаленное подключение', nodeContent4: 'Одним кликом подключитесь к удаленным терминалам узлов', - fileExchangeTitle1: 'Передача с аутентификацией по ключу', fileExchangeContent1: 'Аутентифицируйтесь через SSH-ключи, чтобы обеспечить безопасность передачи.', fileExchangeTitle2: 'Эффективная синхронизация файлов', @@ -3823,11 +3866,9 @@ const message = { fileExchangeTitle3: 'Поддержка обмена между несколькими узлами', fileExchangeContent3: 'Легко передавайте проектные файлы между разными узлами, гибко управляйте несколькими серверами.', - nodeAppTitle1: 'Управление Обновлениями Приложений', nodeAppContent1: 'Единый мониторинг обновлений приложений на нескольких узлах, поддерживает обновление в один клик', - appTitle1: 'Гибкое управление панелью', appContent1: 'Легко управляйте сервером 1Panel в любое время и в любом месте.', appTitle2: 'Полная информация о сервисе', @@ -3836,7 +3877,6 @@ const message = { appTitle3: 'Мониторинг аномалий в реальном времени', appContent3: 'Просматривайте статус сервера, мониторинг безопасности WAF, статистику посещений сайта и состояние процессов в реальном времени через мобильное приложение.', - clusterTitle1: 'Развертывание мастер-слейв', clusterContent1: 'Поддерживает создание мастер-слейв экземпляров MySQL/Postgres/Redis на разных узлах, автоматически завершая связь мастер-слейв и инициализацию', @@ -3907,7 +3947,6 @@ const message = { nodeSyncHelper: 'Синхронизация информации о узле будет синхронизировать следующую информацию:', nodeSyncHelper1: '1. Информация о публичной резервной учетной записи', nodeSyncHelper2: '2. Информация о соединении между основным узлом и подузлами', - nodeCheck: 'Проверка доступности', checkSSH: 'Проверить SSH-подключение узла', checkUserPermission: 'Проверка прав пользователя узла', @@ -3929,7 +3968,6 @@ const message = { errLicense: 'Лицензия, привязанная к этому узлу, недоступна. Пожалуйста, проверьте и повторите попытку!', errNodePort: 'Обнаружено, что порт узла [ {0} ] недоступен. Проверьте, разрешен ли этот порт в брандмауэре или группе безопасности.', - reinstallHelper: 'Переустановить узел {0}, вы хотите продолжить?', unhealthyCheck: 'Проверка на неисправности', fixOperation: 'Решение проблемы', @@ -3954,7 +3992,6 @@ const message = { offline: 'Автономный режим', freeCount: 'Бесплатная квота [{0}]', offlineHelper: 'Используется, когда узел находится в автономной среде', - appUpgrade: 'Обновление приложения', appUpgradeHelper: 'Есть {0} приложений, которые необходимо обновить', }, @@ -4050,7 +4087,6 @@ const message = { specifiedTime: 'Указанное Время', deleteTitle: 'Удалить Уведомление', deleteMsg: 'Вы уверены, что хотите удалить задачу уведомления?', - allSslTitle: 'Уведомления об истечении срока действия всех SSL сертификатов сайтов', sslTitle: 'Уведомление об истечении срока действия SSL сертификата для сайта {0}', allSiteEndTimeTitle: 'Уведомления об истечении срока действия всех сайтов', @@ -4062,7 +4098,6 @@ const message = { loadTitle: 'Уведомление о высокой нагрузке', diskTitle: 'Уведомление о высокой загрузке диска для точки монтирования {0}', allDiskTitle: 'Уведомление о высокой загрузке диска', - timeRule: 'Оставшееся время менее {0} дней (если не обработано, будет отправлено повторно на следующий день)', panelUpdateRule: @@ -4070,12 +4105,10 @@ const message = { avgRule: 'Среднее использование {1} превышает {2}% в течение {0} минут, отправляется {3} раз в день', diskRule: 'Использование диска для точки монтирования {0} превышает {1}{2}, отправляется {3} раз в день', allDiskRule: 'Использование диска превышает {0}{1}, отправляется {2} раз в день', - cpuName: 'Процессор', memoryName: 'Память', loadName: 'Нагрузка', diskName: 'Диск', - syncAlertInfo: 'Ручная отправка', syncAlertInfoMsg: 'Вы хотите вручную отправить задачу уведомления?', pushError: 'Не удалось отправить', diff --git a/frontend/src/lang/modules/tr.ts b/frontend/src/lang/modules/tr.ts index 9efb3dcf4ed8..6b685458ac63 100644 --- a/frontend/src/lang/modules/tr.ts +++ b/frontend/src/lang/modules/tr.ts @@ -87,6 +87,7 @@ const message = { hide: 'Gizle', visit: 'Visit', migrate: 'Taşı', + disConn: 'Bağlantıyı kes', }, operate: { start: 'Başlat', @@ -192,6 +193,8 @@ const message = { importHelper: 'Çakışan veya yinelenen verileri içe aktarırken, içe aktarılan içerik orijinal veritabanı verilerini güncellemek için standart olarak kullanılacaktır.', errImport: 'Dosya içeriği anormal:', + backupSuccess: 'Yedekleme başarılı', + restoreSuccess: 'Geri yükleme başarılı', }, login: { username: 'Kullanıcı adı', @@ -405,6 +408,8 @@ const message = { tamper: 'Kurcalama Koruması', app: 'Uygulama', msgCenter: 'Görevler', + filter: 'Filtre', + disk: 'Disk', }, home: { recommend: 'Önerilen', @@ -437,12 +442,10 @@ const message = { runningTime: 'Şu tarihten beri açık', mem: 'Sistem Belleği', swapMem: 'Swap Bölümü', - runSmoothly: 'Düşük yük', runNormal: 'Orta yük', runSlowly: 'Yüksek yük', runJam: 'Ağır yük', - core: 'Fiziksel çekirdek', logicCore: 'Mantıksal çekirdek', corePercent: 'Çekirdek Kullanımı', @@ -468,7 +471,6 @@ const message = { available: 'Kullanılabilir', percent: 'Kullanım', goInstall: 'Yüklemeye git', - networkCard: 'Ağ kartı', disk: 'Disk', memo: 'Not', @@ -524,14 +526,11 @@ const message = { changePasswordHelper: 'Veritabanı bir uygulamayla ilişkilendirildi. Şifre değiştirmek aynı zamanda uygulamanın veritabanı şifresini de değiştirecek. Değişiklik uygulama yeniden başlatıldıktan sonra etkili olur.', recoverTimeoutHelper: '-1, zaman aşımı sınırı olmadığı anlamına gelir', - confChange: 'Yapılandırma', confNotFound: 'Yapılandırma dosyası bulunamadı. Lütfen uygulama mağazasından uygulamayı en son sürüme yükseltin ve tekrar deneyin!', - portHelper: 'Bu port konteynerin açığa çıkan portudur. Değişikliği ayrı olarak kaydetmeniz ve konteyneri yeniden başlatmanız gerekir!', - loadFromRemote: 'Sunucudan senkronize et', userBind: 'Kullanıcı bağla', pgBindHelper: @@ -563,14 +562,12 @@ const message = { hasCA: 'CA sertifikası var', skipVerify: 'Sertifika geçerlilik kontrolünü yoksay', initialDB: 'Başlangıç Veritabanı', - formatHelper: 'Mevcut veritabanı karakter seti {0}, karakter seti tutarsızlığı kurtarma işleminin başarısız olmasına neden olabilir', dropHelper: 'Yüklenen dosyayı buraya sürükleyip bırakabilir veya', clickHelper: 'yüklemek için tıklayın', supportUpType: 'Yalnızca sql, sql.gz, tar.gz, .zip dosya formatlarını destekler. İçe aktarılan sıkıştırılmış dosya yalnızca bir .sql dosyası içermeli veya test.sql içermelidir', - currentStatus: 'Mevcut durum', baseParam: 'Temel parametre', performanceParam: 'Performans parametresi', @@ -602,7 +599,6 @@ const message = { sortMergePassesHelper: 'Değer çok büyükse, "sort_buffer_size" değerini artırın.', tableLocksWaited: 'Kilitli tablo sayısı', tableLocksWaitedHelper: 'Değer çok büyükse, veritabanı performansınızı artırmayı düşünün.', - performanceTuning: 'Performans ayarlama', optimizationScheme: 'Optimizasyon şeması', keyBufferSizeHelper: 'İndeks için tampon boyutu', @@ -620,14 +616,11 @@ const message = { tableOpenCacheHelper: 'Tablo önbelleği', maxConnectionsHelper: 'Maksimum bağlantılar', restart: 'Yeniden başlat', - slowLog: 'Yavaş loglar', noData: 'Henüz yavaş log yok.', - isOn: 'Açık', longQueryTime: 'eşik(saniye)', thresholdRangeHelper: 'Lütfen doğru eşik değerini girin (1 - 600).', - timeout: 'Zaman aşımı(saniye)', timeoutHelper: 'Boştaki bağlantı zaman aşımı süresi. 0, bağlantının sürekli açık olduğunu gösterir.', maxclients: 'Maksimum istemci', @@ -654,20 +647,17 @@ const message = { redisQuickCmd: 'Redis hızlı komutları', recoverHelper: 'Bu işlem verileri [{0}] ile üzerine yazacak. Devam etmek istiyor musunuz?', submitIt: 'Verilerin üzerine yaz', - baseConf: 'Temel', allConf: 'Tümü', restartNow: 'Şimdi yeniden başlat', restartNowHelper1: 'Yapılandırma değişikliklerinin etkili olması için sistemi yeniden başlatmanız gerekir. Verilerinizin kalıcı olması gerekiyorsa, önce kaydetme işlemini gerçekleştirin.', restartNowHelper: 'Bu yalnızca sistem yeniden başlatıldıktan sonra etkili olacaktır.', - persistence: 'Kalıcılık', rdbHelper1: 'saniye, ekleme', rdbHelper2: 'veri parçası', rdbHelper3: 'Koşullardan herhangi birinin karşılanması RDB kalıcılığını tetikleyecektir.', rdbInfo: 'Kural listesindeki değerin 1 ile 100000 arasında olduğundan emin olun', - containerConn: 'Konteyner bağlantısı', copyConnURL: "Bağlantı URL'sini kopyala", connAddress: 'Adres', @@ -731,6 +721,7 @@ const message = { pairingCodeRequired: 'Please enter pairing code', pairingApproveSuccess: 'Pairing approved successfully', customProviderHelper: 'Özel model sağlayıcısında hesabın kullanılabilirliği doğrulanmaz', + feishuSaveSuccess: "Feishu'ya kaydedildi", }, model: { model: 'Model', @@ -778,7 +769,6 @@ const message = { memoryUsed: 'Kullanılan Bellek', memoryTotal: 'Toplam Bellek', percent: 'Kullanım', - base: 'Temel Bilgiler', driverVersion: 'Sürücü Sürümü', cudaVersion: 'CUDA Sürümü', @@ -810,6 +800,7 @@ const message = { current: 'Gerçek Zamanlı İzleme', history: 'Geçmiş Kayıtlar', notSupport: 'Mevcut sürüm veya sürücü bu parametrenin görüntülenmesini desteklemiyor.', + processCount: 'Süreç sayısı', }, mcp: { server: 'MCP Sunucusu', @@ -923,7 +914,6 @@ const message = { 'Konteyner motoru CPU paylaşımları için 1024 temel değerini kullanır. Konteynere daha fazla CPU zamanı vermek için bunu artırabilirsiniz.', inputIpv4: 'Örnek: 192.168.1.1', inputIpv6: 'Örnek: 2001:0db8:85a3:0000:0000:8a2e:0370:7334', - diskUsage: 'Disk Kullanımı', localVolume: 'Yerel Depolama Birimi', buildCache: 'Derleme Önbelleği', @@ -937,7 +927,6 @@ const message = { sizeRwHelper: 'Konteynere özel yazılabilir katman boyutu', sizeRootFs: 'Sanal Boyut', sizeRootFsHelper: 'Konteynerin bağımlı olduğu tüm görüntü katmanları + konteyner katmanının toplam boyutu', - containerFromAppHelper: 'Bu konteynerin uygulama mağazasından geldiği tespit edildi. Uygulama işlemleri mevcut düzenlemelerin geçersiz hale gelmesine neden olabilir.', containerFromAppHelper1: @@ -951,7 +940,6 @@ const message = { privileged: 'Ayrıcalıklı', privilegedHelper: 'Konteynerin ana bilgisayarda belirli ayrıcalıklı işlemler gerçekleştirmesine izin verir, bu da konteyner risklerini artırabilir. Dikkatli kullanın!', - upgradeHelper: 'Depo Adı/İmaj Adı: İmaj Sürümü', upgradeWarning2: 'Yükseltme işlemi konteynerin yeniden oluşturulmasını gerektirir, kalıcı olmayan tüm veriler kaybedilecektir. Devam etmek istiyor musunuz?', @@ -961,7 +949,6 @@ const message = { targetImage: 'Hedef imaj', imageLoadErr: 'Konteyner için imaj adı algılanmadı', appHelper: 'Konteyner uygulama mağazasından geliyor ve yükseltme hizmeti kullanılamaz hale getirebilir.', - resource: 'Kaynak', input: 'Manuel giriş', forcePull: 'Her zaman imajı çek ', @@ -1007,10 +994,8 @@ const message = { unlessStopped: 'unless-stopped', onFailure: 'on-failure (varsayılan olarak beş kere)', no: 'never', - refreshTime: 'Yenileme aralığı', cache: 'Önbellek', - image: 'İmaj | İmajlar', imagePull: 'Çek', imagePullHelper: @@ -1043,7 +1028,6 @@ const message = { delBuildCacheHelper: 'Bu, oluşturma sırasında üretilen tüm önbelleğe alınmış yapıları silecek ve geri alınamaz. Devam etmek istiyor musunuz?', urlWarning: 'URL öneki http:// veya https:// içermemelidir. Lütfen değiştirin.', - network: 'Ağ | Ağlar', networkHelper: 'Bu, bazı uygulamaların ve çalışma zamanı ortamlarının düzgün çalışmamasına neden olabilir. Devam etmek istiyor musunuz?', @@ -1056,7 +1040,6 @@ const message = { scope: 'IP kapsamı', gateway: 'Ağ geçidi', auxAddress: 'IP hariç tut', - volume: 'Birim | Birimler', volumeDir: 'Birim dizini', nfsEnable: 'NFS depolamayı etkinleştir', @@ -1064,7 +1047,6 @@ const message = { mountpoint: 'Bağlama noktası', mountpointNFSHelper: 'örn. /nfs, /nfs-share', options: 'Seçenekler', - repo: 'Depo | Depolar', httpRepoHelper: 'HTTP tipinde bir depo işlemi Docker servisinin yeniden başlatılmasını gerektirir.', httpRepo: @@ -1080,7 +1062,6 @@ const message = { 'Birden fazla ayna varsa, yeni satırlar gösterilmelidir, örneğin:\nhttp://xxxxxx.m.daocloud.io \nhttps://xxxxxx.mirror.aliyuncs.com', registrieHelper: 'Birden fazla özel depo varsa, yeni satırlar gösterilmelidir, örneğin:\n172.16.10.111:8081 \n172.16.10.112:8081', - compose: 'Compose | Composelar', composeFile: 'Düzenleme Dosyası', fromChangeHelper: @@ -1107,7 +1088,6 @@ const message = { 'Bu, {0} compose altındaki tüm konteynerleri ve ağları durduracak ve kaldıracaktır. Devam etmek istiyor musunuz?', composeEnvHelper2: 'Bu düzenleme 1Panel Uygulama Mağazası tarafından oluşturuldu. Lütfen ortam değişkenlerini yüklü uygulamalarda değiştirin.', - setting: 'Ayar | Ayarlar', goSetting: 'Düzenlemeye git', operatorStatusHelper: 'Bu, Docker servisini "{0}" yapacaktır. Devam etmek istiyor musunuz?', @@ -1149,12 +1129,10 @@ const message = { related: 'İlgili', includeAppstore: 'Uygulama mağazasından konteynerleri göster', excludeAppstore: 'Uygulama Mağazası Konteynerini Gizle', - cleanDockerDiskZone: 'Docker tarafından kullanılan disk alanını temizle', cleanImagesHelper: '( Herhangi bir konteyner tarafından kullanılmayan tüm imajları temizle )', cleanContainersHelper: '( Durmuş olan tüm konteynerleri temizle )', cleanVolumesHelper: '( Kullanılmayan tüm yerel birimleri temizle )', - makeImage: 'İmaj oluştur', newImageName: 'Yeni imaj adı', commitMessage: 'Commit mesajı', @@ -1162,6 +1140,7 @@ const message = { ifPause: 'Oluşturma Sırasında Konteyneri Duraklat', ifMakeImageWithContainer: 'Bu Konteynerden Yeni İmaj Oluşturulsun mu?', finishTime: 'Son durdurma zamanı', + exportHelper: 'Seçilen imajları tek bir tar dosyasına aktarır.', }, cronjob: { importHelper: @@ -1276,7 +1255,6 @@ const message = { cutWebsiteLog: 'Website log döndürme', cutWebsiteLogHelper: 'Döndürülen log dosyaları 1Panel yedek dizinine yedeklenecektir.', syncIpGroup: 'WAF IP gruplarını senkronize et', - requestExpirationTime: 'Yükleme isteği son kullanma süresi(Saat)', unitHours: 'Birim: Saat', alertTitle: 'Planlanmış Görev - {0} 「{1}」 Görev Başarısızlık Uyarısı', @@ -1303,6 +1281,11 @@ const message = { syncHelper: 'Sistem script kütüphanesini senkronize etmek üzere. Bu işlem sadece sistem scriptlerini etkiler. Devam edilsin mi?', }, + logHelper1: '1. 1Panel sistem günlüğü', + ignoreErr: 'Hataları yok say', + ignoreErrHelper: 'Tüm görevlerin tamamlanması için yedekleme hatalarını yok say', + cleanLog: 'Günlükleri otomatik temizle', + cleanLogscope: 'Günlük saklama', }, monitor: { globalFilter: 'Genel Filtre', @@ -1314,7 +1297,6 @@ const message = { defaultIOHelper: 'İzleme ve genel bakış arayüzlerinde görüntülenen varsayılan disk seçeneği', cleanMonitor: 'İzleme Kayıtlarını Temizle', cleanHelper: 'Bu işlem GPU dahil tüm izleme kayıtlarını temizleyecektir. Devam etmek istiyor musunuz?', - avgLoad: 'Ortalama yük', loadDetail: 'Yük detayı', resourceUsage: 'Kullanım', @@ -1451,6 +1433,7 @@ const message = { dnsCheck: 'Kullanılabilirliği Test Et', dnsOK: 'DNS yapılandırma bilgileri mevcut!', dnsTestFailed: 'DNS yapılandırma bilgileri mevcut değil.', + syncSiteHelper: 'Sistem saati {0} ile eşitlensin mi?', }, fail2ban: { sshPort: 'SSH portunu dinle', @@ -1487,6 +1470,10 @@ const message = { 'Seçilen FTP hesabını devre dışı bırakmak erişim izinlerini iptal edecektir. Devam etmek istiyor musunuz?', syncHelper: 'Sunucu ve veritabanı arasında FTP hesap verilerini senkronize et. Devam etmek istiyor musunuz?', + dirSystem: + 'Bu dizin sistem tarafından ayrılmıştır. Değişiklik sistemin çökmesine neden olabilir, kontrol edip tekrar deneyin!', + dirHelper: "FTP'yi etkinleştirmek dizin izinlerini değiştirir, lütfen dikkatle seçin", + dirMsg: 'FTP etkinleştirildiğinde {0} dizininin tamamının izinleri değiştirilecektir. Devam edilsin mi?', }, clam: { clam: 'Virüs taraması', @@ -1798,6 +1785,7 @@ const message = { loginTime: 'Oturum açma zamanı', loginIP: 'Oturum açma IP’si', stopSSHWarn: 'Bu SSH bağlantısını kesmek ister misiniz?', + remote: 'Uzak SSH', }, setting: { panel: 'Panel', @@ -2225,7 +2213,6 @@ const message = { versionNotSame: 'Düğüm sürümü ana düğümle uyuşmuyor. Lütfen Düğüm Yönetiminde yükseltin ve tekrar deneyin.', versionCompare: '{0} düğümünün zaten en son yükseltilebilir sürümde olduğu tespit edildi. Lütfen birincil düğüm sürümünü kontrol edin ve tekrar deneyin!', - about: 'Hakkında', versionItem: 'Mevcut Sürüm', backupCopies: 'Yedek Kopya', @@ -2256,6 +2243,9 @@ const message = { 'Sayfa yenilenecek ve menü listesi başlangıç durumuna geri yüklenecektir. Devam etmek istiyor musunuz?', compressPassword: 'Sıkıştırma parolası', backupRecoverMessage: 'Lütfen sıkıştırma veya sıkıştırma açma parolasını girin (ayarlamamak için boş bırakın)', + componentSize: 'Bileşen boyutu', + dockerConf: 'Docker yapılandırmasını koru', + recoverFailed: 'Anlık görüntü geri yükleme başarısız', }, license: { offLine: 'Çevrimdışı Sürüm', @@ -2330,7 +2320,6 @@ const message = { suggest: '(Önerilen)', totalScan: 'Temizlenecek toplam gereksiz dosya: ', selectScan: 'Seçilen toplam gereksiz dosya: ', - system: 'Sistem Gereksiz Dosyaları', systemHelper: 'Anlık görüntü, yükseltme ve diğer işlemler sırasında oluşturulan geçici dosyalar', panelOriginal: 'Sistem anlık görüntüsü geri yükleme öncesi yedekleme dosyaları', @@ -2339,7 +2328,6 @@ const message = { upgradeHelper: '(Sistem geri alımı için en son yükseltme yedeğini tutmanız önerilir)', snapshot: 'Sistem anlık görüntü geçici dosyaları', rollback: 'Kurtarma öncesi yedek dosyaları', - backup: 'Sistem Yedekleme', backupHelper: 'Yerel yedekleme hesaplarıyla ilişkili olmayan yedekleme dosyaları', unknownBackup: 'Sistem Yedekleme', @@ -2348,13 +2336,11 @@ const message = { unknownDatabase: 'İlişkili Olmayan Veritabanı Yedeklemesi', unknownWebsite: 'İlişkili Olmayan Web Sitesi Yedeklemesi', unknownSnapshot: 'İlişkili Olmayan Anlık Görüntü Yedeklemesi', - upload: 'Geçici Yükleme Dosyaları', uploadHelper: 'Sistem yedek listesinden yüklenen geçici dosyalar', download: 'Geçici İndirme Dosyaları', downloadHelper: 'Sistem tarafından üçüncü taraf yedek hesaplarından indirilen geçici dosyalar', directory: 'Dizin', - systemLog: 'Günlük dosyası', systemLogHelper: 'Sistem günlükleri, görev günlükleri, web sitesi günlük dosyaları', dockerLog: 'Konteyner işlem günlüğü dosyaları', @@ -2362,14 +2348,13 @@ const message = { shell: 'Shell script zamanlanmış görevler', containerShell: 'Konteynerler içinde yürütülen shell script zamanlanmış görevler', curl: 'CURL zamanlanmış görevler', - docker: 'Konteyner çöpü', dockerHelper: 'Konteynerler, görüntüler, hacimler, derleme önbelleği vb. dosyalar', volumes: 'Birimler', buildCache: 'Konteyner Oluşturma Önbelleği', - appTmpDownload: 'Uygulama geçici indirme dosyası', unknownWebsiteLog: 'Bağlantısız web sitesi günlük yedekleme dosyası', + statusSuggest: 'Disk ekleme/silme/değiştirme sonrası son durumun doğru olması için taramayı tekrar yapın', }, app: { app: 'Uygulama | Uygulamalar', @@ -2832,7 +2817,6 @@ const message = { failTimeout: 'Hata zaman aşımı', failTimeoutHelper: 'Sunucu sağlık kontrolleri için zaman penceresi uzunluğu. Bu süre içinde biriken hata sayısı eşiğe ulaştığında, sunucu geçici olarak kaldırılacak ve aynı süre sonunda yeniden denenir. Varsayılan 10 saniye', - staticChangePHPHelper: 'Şu anda statik bir web sitesi, PHP web sitesine geçiş yapabilirsiniz', proxyCache: 'Ters Vekil Önbelleği', cacheLimit: 'Önbellek Alanı Sınırı', @@ -2860,7 +2844,6 @@ const message = { preflight: 'Ön istek hızlı yanıtı', preflightHleper: 'Etkinleştirildiğinde, tarayıcı çapraz kaynak ön isteği (OPTIONS isteği) gönderdiğinde, sistem otomatik olarak 204 durum kodunu döndürecek ve gerekli çapraz kaynak yanıt başlıklarını ayarlayacaktır', - changeDatabase: 'Veritabanını Değiştir', changeDatabaseHelper1: 'Veritabanı ilişkilendirmesi, web sitesinin yedeklenmesi ve geri yüklenmesi için kullanılır.', @@ -2896,7 +2879,6 @@ const message = { execUser: 'Çalıştıran Kullanıcı', execDir: 'Çalıştırma Dizini', packagist: 'Çin Tam Aynası', - batchOperate: 'Toplu İşlem', batchOperateHelper: 'Toplu {0} web siteleri, işlemi devam ettir?', stream: 'TCP/UDP Proxy', @@ -2905,8 +2887,8 @@ const message = { 'Harici dinleme bağlantı noktası numarasını ayarlayın, istemciler bu bağlantı noktası üzerinden hizmete erişecektir, virgülle ayırın, örn.: 5222,5223', streamHelper: 'TCP/UDP Port Yönlendirme ve Yük Dengeleme', udp: "UDP'yi etkinleştir", - syncHtmlHelper: 'PHP ve statik web siteleriyle senkronize et', + wafValueHelper: 'Değer', }, php: { short_open_tag: 'Kısa etiket desteği', @@ -2936,6 +2918,7 @@ const message = { containerConfigHelper: 'Oluşturulduktan sonra Yapılandırma - Konteyner Yapılandırması’nda ortam değişkenleri ve diğer bilgiler değiştirilebilir', dateTimezoneHelper: 'Örnek: TZ=Asia/Shanghai (Gerektiğinde ekleyin)', + extensionsHelper: 'Birden fazla uzantı için virgül ile ayırın', }, nginx: { serverNamesHashBucketSizeHelper: 'Sunucu adının karma tablosu boyutu', @@ -3071,7 +3054,6 @@ const message = { argsCheck: 'GET parametre kontrolü', postCheck: 'POST parametre doğrulaması', cookieBlockList: 'Çerez engelleme listesi', - dockerHelper: 'Mevcut güvenlik duvarı konteyner port eşlemesini devre dışı bırakamaz. Yüklü uygulamalar, uygulama parametrelerini düzenlemek ve port serbest bırakma kurallarını yapılandırmak için [Yüklü] sayfasına gidebilir.', iptablesHelper: @@ -3134,7 +3116,6 @@ const message = { exportHelper: '{0} güvenlik duvarı kuralını dışa aktarmak üzere. Devam etmek istiyor musunuz?', importSuccess: '{0} kural başarıyla içe aktarıldı', importPartialSuccess: 'İçe aktarma tamamlandı: {0} başarılı, {1} başarısız', - ipv4Limit: 'Mevcut işlem yalnızca IPv4 adreslerini destekler', basicStatus: 'Mevcut zincir {0} bağlı değil, lütfen önce bağlayın!', baseIptables: 'iptables Servisi', @@ -3166,6 +3147,10 @@ const message = { portHelper: '0 herhangi bir port anlamına gelir', allPorts: 'Tüm Portlar', deleteRuleConfirm: '{0} kural silinecek. Devam etmek istiyor musunuz?', + advancedControl: 'Gelişmiş kontrol', + advancedControlNotAvailable: + 'Şu anda {0} güvenlik duvarı kullanılıyor, gelişmiş kurallar yalnızca iptables destekler', + destination: 'Hedef', }, runtime: { runtime: 'Çalışma Zamanı', @@ -3629,6 +3614,7 @@ const message = { importRuleHelper: 'Her satıra bir kural', }, monitor: { + '360': '360 Arama', name: 'Web Sitesi İzleme', pv: 'Sayfa Görüntülemeleri', uv: 'Benzersiz Ziyaretçiler', @@ -3698,7 +3684,6 @@ const message = { statusErr: 'Geçersiz durum kodu formatı', shenma: 'Shenma Arama', duckduckgo: 'DuckDuckGo', - '360': '360 Arama', excludeUri: 'URI’leri Hariç Tut', top100Helper: 'İlk 100 veriyi göster', logSaveDay: 'Günlük Saklama Süresi (gün)', @@ -3809,7 +3794,6 @@ const message = { wafContent3: 'Bir istek engellendiğinde gösterilecek özel bir sayfa oluşturun', wafTitle4: 'Özel Kurallar (ACL)', wafContent4: 'İstekleri özel kurallara göre engelleyin', - tamperTitle1: 'Dosya Bütünlüğü İzleme', tamperContent1: 'Web sitesi dosyalarının bütünlüğünü izler, çekirdek dosyalar, betik dosyaları ve yapılandırma dosyaları dahil.', @@ -3822,7 +3806,6 @@ const message = { tamperTitle4: 'Günlük Kaydı ve Analiz', tamperContent4: 'Yöneticilerin sonraki denetim ve analiz için dosya erişimi ve işlem günlüklerini kaydeder, potansiyel güvenlik tehditlerini belirler.', - settingTitle1: 'Özel Hoş Geldiniz Mesajı', settingContent1: '1Panel giriş sayfasında özel bir hoş geldiniz mesajı ayarlayın.', settingTitle2: 'Özel Logo', @@ -3830,7 +3813,6 @@ const message = { settingTitle3: 'Özel Web Sitesi Simgesi', settingContent3: 'Varsayılan tarayıcı simgesini değiştirmek için özel simgelerin yüklenmesine izin verir, kullanıcı deneyimini iyileştirir.', - monitorTitle1: 'Ziyaretçi Trendi', monitorContent1: 'Web sitesi ziyaretçi trendlerini istatistiksel olarak toplar ve gösterir', monitorTitle2: 'Ziyaretçi Haritası', @@ -3841,7 +3823,6 @@ const message = { 'Web sitesi istek bilgileri hakkında istatistikler, örümcekler, erişim cihazları, istek durumu vb. içerir.', monitorTitle4: 'Gerçek Zamanlı İzleme', monitorContent4: 'Web sitesi istek bilgilerinin gerçek zamanlı izlenmesi, istek sayısı, trafik vb. içerir.', - alertTitle1: 'SMS Uyarıları', alertContent1: 'Anormal sunucu kaynak kullanımı, web sitesi ve sertifika sona ermesi, yeni sürüm güncellemesi, şifre sona ermesi vb. durumlarda kullanıcılar SMS alarmı ile bilgilendirilir, zamanında işlem yapılmasını sağlar.', @@ -3851,7 +3832,6 @@ const message = { alertTitle3: 'Uyarı Ayarları', alertContent3: 'Kullanıcılara özel telefon numaraları, günlük gönderim sıklığı ve günlük gönderim zamanı yapılandırmaları sağlar, kullanıcıların daha makul gönderim uyarıları ayarlamasını kolaylaştırır.', - nodeDashTitle1: 'Uygulama Yönetimi', nodeDashContent1: 'Çoklu düğüm uygulamalarının birleşik yönetimi, durum izleme, hızlı başlatma/durdurma, terminal bağlantısı ve yedekleme desteği', @@ -3864,7 +3844,6 @@ const message = { nodeDashTitle4: 'Zamanlanmış Görev Yönetimi', nodeDashContent4: 'Çoklu düğüm zamanlanmış görevlerinin birleşik yönetimi, durum izleme, hızlı başlatma/durdurma ve manuel tetikleme çalıştırma desteği', - nodeTitle1: 'Tek Tıkla Düğüm Ekleme', nodeContent1: 'Birden fazla sunucu düğümünü hızlıca entegre eder', nodeTitle2: 'Toplu Yükseltme', @@ -3873,7 +3852,6 @@ const message = { nodeContent3: 'Her düğümün çalışma durumunu gerçek zamanlı olarak izler', nodeTitle4: 'Hızlı Uzak Bağlantı', nodeContent4: 'Düğümlere tek tıkla doğrudan uzak terminal bağlantısı', - fileExchangeTitle1: 'Anahtar Kimlik Doğrulama İletimi', fileExchangeContent1: 'İletim güvenliğini sağlamak için SSH anahtarları ile kimlik doğrulaması yapar.', fileExchangeTitle2: 'Verimli Dosya Senkronizasyonu', @@ -3882,11 +3860,9 @@ const message = { fileExchangeTitle3: 'Çoklu Düğüm İletişimini Destekler', fileExchangeContent3: 'Farklı düğümler arasında proje dosyalarını kolayca aktarır, birden fazla sunucuyu esnek bir şekilde yönetir.', - nodeAppTitle1: 'Uygulama Yükseltme Yönetimi', nodeAppContent1: 'Çoklu düğüm uygulama güncellemelerinin birleşik izlenmesi, tek tıklamayla yükseltme desteği', - appTitle1: 'Esnek Panel Yönetimi', appContent1: '1Panel sunucunuzu her zaman, her yerde kolayca yönetin.', appTitle2: 'Kapsamlı Hizmet Bilgisi', @@ -3895,7 +3871,6 @@ const message = { appTitle3: 'Gerçek Zamanlı Anormallik İzleme', appContent3: 'Mobil uygulama üzerinden gerçek zamanlı sunucu durumu, WAF güvenlik izleme, web sitesi trafik istatistikleri ve işlem sağlığı durumunu görüntüleyin.', - clusterTitle1: 'Ana-Çalışan Dağıtımı', clusterContent1: 'Farklı düğümlerde MySQL/Postgres/Redis ana-çalışan örnekleri oluşturmayı destekler, ana-çalışan ilişkisi ve başlatmayı otomatik olarak tamamlar', @@ -3964,7 +3939,6 @@ const message = { nodeSyncHelper: 'Düğüm bilgisi senkronizasyonu aşağıdaki bilgileri senkronize eder:', nodeSyncHelper1: '1. Genel yedekleme hesabı bilgileri', nodeSyncHelper2: '2. Ana düğüm ile alt düğümler arasındaki bağlantı bilgileri', - nodeCheck: 'Kullanılabilirlik kontrolü', checkSSH: 'Düğüm SSH bağlantısını kontrol et', checkUserPermission: 'Düğüm kullanıcı izinlerini kontrol et', @@ -3985,7 +3959,6 @@ const message = { errLicense: 'Bu düğüme bağlı lisans kullanılamıyor. Lütfen kontrol edin ve tekrar deneyin!', errNodePort: 'Düğüm portu [ {0} ] erişilemez olarak algılandı. Lütfen güvenlik duvarı veya güvenlik grubunun bu portu izin verdiğinden emin olun.', - reinstallHelper: '{0} düğümünü yeniden kurmak istiyor musunuz?', unhealthyCheck: 'Anormal Kontrol', fixOperation: 'Düzeltme İşlemi', @@ -4010,7 +3983,6 @@ const message = { offline: 'Çevrimdışı mod', freeCount: 'Ücretsiz kota [{0}]', offlineHelper: 'Düğüm çevrimdışı bir ortamda olduğunda kullanılır', - appUpgrade: 'Uygulama Yükseltme', appUpgradeHelper: 'Yükseltilmesi gereken {0} uygulama var', }, @@ -4107,7 +4079,6 @@ const message = { specifiedTime: 'Belirtilen Süre', deleteTitle: 'Uyarıyı Sil', deleteMsg: 'Uyarı görevini silmek istediğinizden emin misiniz?', - allSslTitle: 'Tüm Web Sitesi SSL Sertifikası Sona Erme Uyarıları', sslTitle: 'Web Sitesi {0} için SSL Sertifikası Sona Erme Uyarısı', allSiteEndTimeTitle: 'Tüm Web Sitesi Sona Erme Uyarıları', @@ -4119,7 +4090,6 @@ const message = { loadTitle: 'Yüksek Yük Uyarısı', diskTitle: 'Bağlama Dizini {0} için Yüksek Disk Kullanımı Uyarısı', allDiskTitle: 'Yüksek Disk Kullanımı Uyarısı', - timeRule: 'Kalan süre {0} günden az olduğunda (işlenmezse ertesi gün tekrar gönderilir)', panelUpdateRule: 'Yeni bir panel sürümü algılandığında bir kez uyarı gönder (işlenmezse ertesi gün tekrar gönderilir)', @@ -4128,12 +4098,10 @@ const message = { diskRule: '{0} bağlama dizini için disk kullanımı {1}{2}’yi aşarsa, uyarı tetiklenir, günde {3} kez gönderilir', allDiskRule: 'Disk kullanımı {0}{1}’yi aşarsa, uyarı tetiklenir, günde {2} kez gönderilir', - cpuName: ' CPU ', memoryName: 'Bellek', loadName: 'Yük', diskName: 'Disk', - syncAlertInfo: 'Manuel Gönderim', syncAlertInfoMsg: 'Uyarı görevini manuel olarak göndermek istiyor musunuz?', pushError: 'Gönderim Başarısız', diff --git a/frontend/src/lang/modules/zh-Hant.ts b/frontend/src/lang/modules/zh-Hant.ts index 8785ed287fc2..0a5219685fd9 100644 --- a/frontend/src/lang/modules/zh-Hant.ts +++ b/frontend/src/lang/modules/zh-Hant.ts @@ -389,6 +389,7 @@ const message = { app: '應用', msgCenter: '任務中心', disk: '磁碟管理', + filter: '篩選器', }, home: { recommend: '推薦', @@ -421,12 +422,10 @@ const message = { runningTime: '執行時間', mem: '系統記憶體', swapMem: 'Swap 分區', - runSmoothly: '執行流暢', runNormal: '執行正常', runSlowly: '執行緩慢', runJam: '執行堵塞', - core: '物理核心', logicCore: '邏輯核心', corePercent: '核心使用率', @@ -452,7 +451,6 @@ const message = { available: '可用', percent: '使用率', goInstall: '去安裝', - networkCard: '網卡', disk: '磁碟', memo: '備忘錄', @@ -505,12 +503,9 @@ const message = { changeConnHelper: '此操作將修改目前資料庫 {0},是否繼續?', changePasswordHelper: '目前資料庫已經關聯應用,修改密碼將同步修改應用中資料庫密碼,修改後重新啟動生效。', recoverTimeoutHelper: '-1 表示不限制逾時時間', - portHelper: '該埠為容器對外暴露埠,修改需要單獨儲存並且重新啟動容器', - confChange: '設定修改', confNotFound: '未能找到該應用設定檔,請在應用商店升級該應用至最新版本後重試', - loadFromRemote: '從伺服器同步', userBind: '綁定使用者', pgBindHelper: '此操作用於建立新使用者並將其綁定到目標資料庫,暫不支援選擇已存在於資料庫中的使用者。', @@ -537,13 +532,11 @@ const message = { caCert: 'CA 憑證', skipVerify: '忽略校驗憑證可用性偵測', initialDB: '初始資料庫', - formatHelper: '目前資料庫字元集為 {0},字元集不一致可能導致復原失敗', dropHelper: '將上傳檔案拖曳到此處,或', clickHelper: '點選上傳', supportUpType: '僅支援 sql、sql.gz、tar.gz、.zip 檔案格式,匯入的壓縮檔案必須保證只有一個 .sql 檔案或包含 test.sql', - currentStatus: '當前狀態', baseParam: '基礎參數', performanceParam: '效能參數', @@ -575,7 +568,6 @@ const message = { sortMergePassesHelper: '若值過大,增加sort_buffer_size', tableLocksWaited: '鎖表次數', tableLocksWaitedHelper: '若值過大,請考慮增加您的資料庫效能', - performanceTuning: '效能調整', optimizationScheme: '最佳化方案', keyBufferSizeHelper: '用於索引的緩衝區大小', @@ -593,14 +585,11 @@ const message = { tableOpenCacheHelper: '表快取', maxConnectionsHelper: '最大連接數', restart: '重新啟動資料庫', - slowLog: '慢日誌', noData: '暫無慢日誌...', - isOn: '開啟', longQueryTime: '閾值(秒)', thresholdRangeHelper: '請輸入正確的閾值(1 - 600)', - timeout: '逾時時間(秒)', timeoutHelper: '空閒連接逾時時間,0表示不斷開', maxclients: '最大連接數', @@ -624,22 +613,18 @@ const message = { latestForkUsec: '最近一次 fork() 操作耗費的微秒數', redisCliHelper: '未偵測到 redis-cli 服務,請先啟用服務', redisQuickCmd: 'Redis 快速指令', - recoverHelper: '即將使用 [{0}] 對資料進行覆蓋,是否繼續?', submitIt: '覆蓋資料', - baseConf: '基本設定', allConf: '全部設定', restartNow: '立即重新啟動', restartNowHelper1: '修改設定後需要重新啟動生效,若您的資料需要持久化請先執行 save 操作。', restartNowHelper: '修改設定後需要重新啟動生效。', - persistence: '持久化', rdbHelper1: '秒內,插入', rdbHelper2: '條資料', rdbHelper3: '符合任意一個條件將會觸發RDB持久化', rdbInfo: '請確認規則列表中值在 1-100000 之間', - containerConn: '容器連接', copyConnURL: '複製連接 URL', connAddress: '地址', @@ -700,6 +685,7 @@ const message = { pairingCodeRequired: '請輸入配對碼', pairingApproveSuccess: '配對成功', customProviderHelper: '自訂模型供應商不驗證帳號是否可用', + feishuSaveSuccess: '儲存成功', }, model: { model: '模型', @@ -745,7 +731,6 @@ const message = { memoryUsed: '顯存使用', memoryTotal: '顯存總計', percent: '使用率', - base: '基礎資訊', driverVersion: '驅動程式版本', cudaVersion: 'CUDA 版本', @@ -774,6 +759,7 @@ const message = { current: '即時監控', history: '歷史記錄', notSupport: '當前版本或驅動不支援顯示該參數。', + processCount: '行程數', }, mcp: { server: 'MCP Server', @@ -879,7 +865,6 @@ const message = { cpuShareHelper: '容器預設份額為 1024 個 CPU,增大可使目前容器獲得更多的 CPU 時間', inputIpv4: '請輸入 IPv4 位址', inputIpv6: '請輸入 IPv6 位址', - diskUsage: '磁碟佔用', localVolume: '本機儲存卷', buildCache: '建置快取', @@ -891,7 +876,6 @@ const message = { sizeRwHelper: '容器獨有的可寫層大小', sizeRootFs: '虛擬大小', sizeRootFsHelper: '容器依賴的所有映像層 + 容器層的總大小', - containerFromAppHelper: '偵測到該容器來源於應用商店,應用操作可能會導致目前編輯失效', containerFromAppHelper1: '在已安裝應用程式列表點選 [參數] 按鈕,進入編輯頁面即可修改容器名稱。', command: '指令', @@ -902,7 +886,6 @@ const message = { emptyUser: '為空時,將使用容器預設的使用者登入', privileged: '特權模式', privilegedHelper: '允許容器在主機上執行某些特權操作,可能會增加容器風險,請謹慎開啟', - upgradeHelper: '倉庫名稱/映像名稱:映像版本', upgradeWarning2: '升級操作需要重建容器,任何未持久化的資料將會遺失,是否繼續?', oldImage: '目前映像', @@ -911,7 +894,6 @@ const message = { targetImage: '目標映像', imageLoadErr: '未偵測到容器的映像名稱', appHelper: '該容器來源於應用商店,升級可能導致該服務不可用', - resource: '資源', input: '手動輸入', forcePull: '強制拉取映像', @@ -957,10 +939,8 @@ const message = { unlessStopped: '未手動停止則重新啟動', onFailure: '失敗後重新啟動(預設重新啟動 5 次)', no: '不重新啟動', - refreshTime: '重新整理間隔', cache: '快取', - image: '映像', imagePull: '拉取映像', imagePullHelper: '支援選擇拉取多個映像,輸入一組映像後Enter繼續', @@ -992,7 +972,6 @@ const message = { cleanBuildCache: '清理建置快取', delBuildCacheHelper: '清理建置快取將刪除所有建置所產生的快取,此操作無法回復。是否繼續?', urlWarning: '路徑前綴不需要新增 http:// 或 https://,請修改', - network: '網路', networkHelper: '刪除 1panel-network 容器網路將影響部分應用和執行環境的正常使用,是否繼續?', networkName: '網路名', @@ -1004,7 +983,6 @@ const message = { scope: 'IP 範圍', gateway: '閘道器', auxAddress: '排除 IP', - volume: '磁碟區', volumeDir: '磁碟區目錄', nfsEnable: '啟用 NFS 儲存', @@ -1012,7 +990,6 @@ const message = { mountpoint: '掛載點', mountpointNFSHelper: '例:/nfs, /nfs-share', options: '可選參數', - repo: '倉庫', httpRepoHelper: '操作 HTTP 類型倉庫需要重新啟動 Docker 服務。', downloadUrl: '下載網址', @@ -1022,7 +999,6 @@ const message = { mirrorHelper: '當存在多個加速器時,需要換行顯示,例: \nhttp://xxxxxx.m.daocloud.io \nhttps://xxxxxx.mirror.aliyuncs.com', registrieHelper: '當存在多個私有倉庫時,需要換行顯示,例:\n172.16.10.111:8081 \n172.16.10.112:8081', - compose: '編排', composeFile: '編排檔案', fromChangeHelper: '切換來源將清空當前已編輯內容,是否繼續?', @@ -1044,7 +1020,6 @@ const message = { composeOperatorHelper: '將對 {0} 進行 {1} 操作,是否繼續?', composeDownHelper: '將停止並刪除 {0} 編排下所有容器及網路,是否繼續?', composeEnvHelper2: '該編排為 1Panel 應用商店建立,請在已安裝應用中修改環境變數。', - setting: '設定', goSetting: '去修改', operatorStatusHelper: '此操作將{0}Docker 服務,是否繼續?', @@ -1081,12 +1056,10 @@ const message = { related: '相關資源', includeAppstore: '顯示應用商店容器', excludeAppstore: '隱藏應用商店容器', - cleanDockerDiskZone: '清理 Docker 使用的磁碟空間', cleanImagesHelper: '( 清理所有未被任何容器使用的映像 )', cleanContainersHelper: '( 清理所有處於停止狀態的容器 )', cleanVolumesHelper: '( 清理所有未被使用的本機磁碟區 )', - makeImage: '製作映像', newImageName: '新映像名稱', commitMessage: '提交資訊', @@ -1094,6 +1067,7 @@ const message = { ifPause: '製作過程中是否暫停容器', ifMakeImageWithContainer: '是否根據此容器製作新映像?', finishTime: '上一次停止時間', + exportHelper: '即將匯出 {0} 條編排範本,是否繼續?', }, cronjob: { importHelper: @@ -1198,7 +1172,6 @@ const message = { cutWebsiteLog: '切割網站日誌', cutWebsiteLogHelper: '切割的日誌檔案會備份到 1Panel 的 backup 目錄下', syncIpGroup: '同步 WAF IP 組', - requestExpirationTime: '上傳請求過期時間(小時)', unitHours: '單位:小時', alertTitle: '計劃任務-{0}「{1}」任務失敗告警', @@ -1221,6 +1194,9 @@ const message = { noSuchApp: '未偵測到 {0} 服務,請前往腳本庫頁面手動安裝', syncHelper: '即將同步系統腳本庫,該操作僅針對系統腳本,是否繼續?', }, + withImageHelper: '備份應用商店映像,但會增加快照檔案體積。', + cleanLog: '清理日誌', + cleanLogscope: '清理類型', }, monitor: { globalFilter: '全域過濾', @@ -1232,7 +1208,6 @@ const message = { defaultIOHelper: '預設監控和概覽介面顯示的磁碟選項', cleanMonitor: '清空監控記錄', cleanHelper: '該操作將清空包括 GPU 在內的所有監控記錄,是否繼續?', - avgLoad: '平均負載', loadDetail: '負載詳情', resourceUsage: '資源使用率', @@ -1785,7 +1760,6 @@ const message = { diskClean: '快取清理', developerMode: '預覽體驗計劃', developerModeHelper: '取得 1Panel 的預覽版本,以分享有關新功能和更新的回饋', - thirdParty: '第三方帳號', scope: '使用範圍', public: '公有', @@ -1872,7 +1846,6 @@ const message = { address: '地址', path: '路徑', backupJump: '未在目前備份列表中的備份檔案,請嘗試從檔案目錄中下載後匯入備份。', - snapshot: '快照', noAppData: '暫無可選擇系統應用', noBackupData: '暫無可選擇備份資料', @@ -1939,7 +1912,6 @@ const message = { rollback: '回滾', rollbackHelper: '即將回滾本次復原,回滾將取代所有本次復原的檔案,過程中可能需要重新啟動 Docker 以及 1Panel 服務,是否繼續?', - upgradeRecord: '升級記錄', upgrading: '正在升級中,請稍候', upgradeHelper: '升級操作需要重新啟動 1Panel 服務,是否繼續?', @@ -1952,7 +1924,6 @@ const message = { source: '下載源', versionNotSame: '節點版本與主節點不一致,請在節點管理中升級後重試。', versionCompare: '偵測到節點 {0} 版本已是目前可升級最新版本,請檢查主節點版本後重試', - safe: '安全', passkey: '通行金鑰', passkeyManage: '管理', @@ -2046,7 +2017,6 @@ const message = { error416: '無效請求', error444: '連線已關閉', error500: '內部伺服器錯誤', - https: '為面板設置 HTTPS 可提升存取安全性', strictHelper: '非 HTTPS 流量無法連接面板', muxHelper: '面板將同時監聽 HTTP 和 HTTPS 協議,並將 HTTP 重定向到 HTTPS,此模式下可能會降低面板安全性', @@ -2059,7 +2029,6 @@ const message = { rootCrtDownload: '根憑證下載', primaryKey: '金鑰', certificate: '憑證', - about: '關於', versionItem: '當前版本', backupCopies: '備份份數', @@ -2075,7 +2044,6 @@ const message = { forum: '論壇求助', doc2: '使用手冊', currentVersion: '當前執行版本:', - license: '許可證', bindNode: '綁定節點', menuSetting: '選單設定', @@ -2150,7 +2118,6 @@ const message = { suggest: '( 建議清理 )', totalScan: '待清理垃圾檔案共計: ', selectScan: '已選中垃圾檔案共計: ', - system: '系統垃圾', systemHelper: '快照、升級等過程中產生的臨時檔案', panelOriginal: '系統快照恢復前備份檔案', @@ -2159,7 +2126,6 @@ const message = { upgradeHelper: '( 建議保留最新的升級備份用於系統回滾 )', snapshot: '系統快照暫存檔', rollback: '復原前備份目錄', - backup: '系統備份', backupHelper: '本地備份帳號中未關聯的備份檔案', unknownBackup: '系統備份', @@ -2168,13 +2134,11 @@ const message = { unknownDatabase: '未關聯資料庫備份', unknownWebsite: '未關聯網站備份', unknownSnapshot: '未關聯快照備份', - upload: '臨時上傳檔案', uploadHelper: '系統上傳備份列表中上傳的暫存檔', download: '臨時下載檔案', downloadHelper: '系統從第三方備份帳號下載的暫存檔', directory: '資料夾', - systemLog: '日誌檔案', systemLogHelper: '系統日誌、任務日誌、網站日誌檔案', dockerLog: '容器操作日誌檔案', @@ -2182,12 +2146,10 @@ const message = { shell: 'Shell 腳本計劃任務', containerShell: '容器內執行 Shell 腳本計劃任務', curl: 'CURL 計劃任務', - docker: '容器垃圾', dockerHelper: '容器、映像、儲存卷、建置快取等檔案', volumes: '磁碟區', buildCache: '容器建置快取', - appTmpDownload: '應用程式暫存下載檔案', unknownWebsiteLog: '未關聯網站日誌備份檔案', }, @@ -2607,7 +2569,6 @@ const message = { failTimeout: '故障逾時', failTimeoutHelper: '伺服器健康檢查的時間視窗長度。在該時間段內累計失敗次數達到閾值時,伺服器將被暫時移除,並在經過相同時長後重新嘗試。預設 10 秒', - staticChangePHPHelper: '目前為靜態網站,可切換為 PHP 網站', proxyCache: '反向代理快取', cacheLimit: '快取空間限制', @@ -2634,7 +2595,6 @@ const message = { preflight: '預檢請求快速回應', preflightHleper: '開啟後,當瀏覽器發送跨域預檢請求(OPTIONS 請求)時,系統會自動返回 204 狀態碼並設定必要的跨域回應標頭', - changeDatabase: '切換資料庫', changeDatabaseHelper1: '資料庫關聯用於備份復原網站。', changeDatabaseHelper2: '切換其他資料庫會導致以前的備份無法復原。', @@ -2665,7 +2625,6 @@ const message = { execUser: '執行使用者', execDir: '執行目錄', packagist: '中國全量映像', - batchOperate: '批次操作', batchOperateHelper: '批次{0}網站,是否繼續?', stream: 'TCP/UDP 代理', @@ -2673,7 +2632,6 @@ const message = { streamPortsHelper: '設定對外監聽的埠號,客戶端將透過此埠存取服務,按逗號分割,例:5222,5223', streamHelper: 'TCP/UDP 埠轉發與負載均衡', udp: '啟用 UDP', - syncHtmlHelper: '同步到 PHP 和靜態網站', }, php: { @@ -2701,6 +2659,7 @@ const message = { containerConfig: '容器設定', containerConfigHelper: '環境變數等資訊可以在建立完成之後在設定-容器設定中修改', dateTimezoneHelper: '範例:TZ=Asia/Shanghai(請根據需要自行新增)', + extensionsHelper: '多個擴展請用 , 分隔', }, nginx: { serverNamesHashBucketSizeHelper: '伺服器名字的hash表大小', @@ -2826,7 +2785,6 @@ const message = { argsCheck: 'GET 參數校驗', postCheck: 'POST 參數校驗', cookieBlockList: 'Cookie 黑名單', - dockerHelper: '目前防火牆無法停用容器埠映射,已安裝應用可前往【已安裝】頁面編輯應用參數,設定埠放行規則。', iptablesHelper: '偵測到系統正在使用 {0} 防火牆,如需切換至 iptables,請先手動解除安裝', quickJump: '快速跳轉', @@ -2879,7 +2837,6 @@ const message = { exportHelper: '即將匯出 {0} 條防火牆規則,是否繼續?', importSuccess: '成功匯入 {0} 條規則', importPartialSuccess: '匯入完成:成功 {0} 條,失敗 {1} 條', - ipv4Limit: '目前操作暫僅支援 IPv4 地址', basicStatus: '目前未綁定鏈 {0} ,請先綁定', baseIptables: 'iptables 服務', @@ -2907,6 +2864,9 @@ const message = { portHelper: '0 表示任意埠', allPorts: '所有埠', deleteRuleConfirm: '將刪除 {0} 條規則,是否繼續?', + advancedControl: '進階控制', + advancedControlNotAvailable: '目前使用 {0} 防火牆,進階規則僅支援 iptables', + destination: '目的地', }, runtime: { runtime: '執行環境', @@ -3329,6 +3289,7 @@ const message = { importRuleHelper: '一行一個規則', }, monitor: { + '360': '360 搜尋', name: '網站監控', pv: '瀏覽量', uv: '訪客數', @@ -3397,7 +3358,6 @@ const message = { statusErr: '狀態碼格式錯誤', shenma: '神馬搜尋', duckduckgo: 'DuckDuckGo', - '360': '360 搜尋', exceptUri: '排除 Uri', top100Helper: '顯示 Top 100 的資料', logSaveDay: '日誌儲存天數', @@ -3419,6 +3379,7 @@ const message = { trend: '趨勢統計', reqCount: '請求數', uriHelper: '可以使用 /test/* 或 /*/index.php 來排除 Uri', + excludeUri: '排除 Uri', }, tamper: { tamper: '網站防篡改', @@ -3497,7 +3458,6 @@ const message = { wafContent3: '自訂請求被攔截之後的顯示頁面', wafTitle4: '自訂規則(ACL)', wafContent4: '根據自訂的規則攔截請求', - tamperTitle1: '檔案完整性監控', tamperContent1: '監控網站檔案的完整性,包括核心檔案、腳本檔案和設定檔案等。', tamperTitle2: '即時掃描和偵測', @@ -3507,14 +3467,12 @@ const message = { '透過合理的權限設定和瀏覽控制策略,網站防篡改功能可以限制對網站檔案的瀏覽權限,減少潛在的攻擊面。', tamperTitle4: '日誌紀錄與分析', tamperContent4: '紀錄檔案瀏覽和操作日誌,以便管理員進行後續的審計和分析,以及發現潛在的安全威脅。', - settingTitle1: '自訂歡迎語', settingContent1: '在 1Panel 登入頁上設定自訂的歡迎語。', settingTitle2: '自訂 Logo', settingContent2: '允許上傳包含品牌名稱或其他文字的 Logo 圖像。', settingTitle3: '自訂網站圖示', settingContent3: '允許上傳自訂的圖示,以替代預設的瀏覽器圖示,提升使用者體驗。', - monitorTitle1: '訪客趨勢', monitorContent1: '統計並顯示網站的訪客趨勢', monitorTitle2: '訪客地圖', @@ -3523,7 +3481,6 @@ const message = { monitorContent3: '統計網站的請求資訊,包括蜘蛛,瀏覽裝置,請求狀態等', monitorTitle4: '即時監控', monitorContent4: '即時監控網站的請求訊息,包括請求數,流量等', - alertTitle1: '簡訊告警', alertContent1: '當伺服器資源使用異常、網站及憑證過期、新版本更新、密碼過期等情況發生時,透過簡訊告警通知使用者,確保及時處理。', @@ -3532,7 +3489,6 @@ const message = { alertTitle3: '告警設定', alertContent3: '為使用者提供自訂手機號碼、每日推送次數、每日推送時間的設定,方便使用者的設定來更加合理的進行推送告警。', - nodeDashTitle1: '應用管理', nodeDashContent1: '統一管理多節點應用,支援狀態監控、快速起停、終端連線及備份', nodeDashTitle2: '網站管理', @@ -3541,7 +3497,6 @@ const message = { nodeDashContent3: '統一管理多節點資料庫,關鍵狀態一目了然,支援一鍵備份', nodeDashTitle4: '計劃任務管理', nodeDashContent4: '統一管理多節點計劃任務,支援狀態監控、快速啟停與手動觸發執行', - nodeTitle1: '一鍵新增節點', nodeContent1: '快速接入多台伺服器節點', nodeTitle2: '批次升級', @@ -3550,24 +3505,20 @@ const message = { nodeContent3: '即時掌握各節點執行狀態', nodeTitle4: '快速遠端連接', nodeContent4: '一鍵直連節點遠端終端', - fileExchangeTitle1: '金鑰認證傳輸', fileExchangeContent1: '通過 SSH 金鑰進行身份驗證,確保傳輸的安全性。', fileExchangeTitle2: '高效檔案同步', fileExchangeContent2: '僅同步變化內容,大幅提高傳輸速度與穩定性。', fileExchangeTitle3: '支援多節點互傳', fileExchangeContent3: '可在不同節點間便捷傳送項目檔案,靈活管理多台伺服器。', - nodeAppTitle1: '應用升級管理', nodeAppContent1: '統一監控多節點應用更新情況,支援一鍵升級', - appTitle1: '靈活管理面板', appContent1: '隨時隨地輕鬆管理你的 1Panel 伺服器。', appTitle2: '全面服務資訊', appContent2: '在行動端進行應用、網站、Docker、資料庫等基礎管理,支援快速建立應用與網站。', appTitle3: '即時異常監控', appContent3: '行動端即時檢視伺服器狀態、WAF 安全監控、網站存取統計與行程健康狀況。', - clusterTitle1: '主從部署', clusterContent1: '支援在不同節點建立 MySQL/Postgres/Redis 主從實例,自動完成主從關聯與初始化', clusterTitle2: '主從管理', @@ -3624,7 +3575,6 @@ const message = { nodeSyncHelper: '節點資訊同步將同步以下資訊:', nodeSyncHelper1: '1. 公用的備份帳號資訊', nodeSyncHelper2: '2. 主節點與子節點的連接資訊', - nodeCheck: '可用性檢查', checkSSH: '檢查節點 SSH 連接', checkUserPermission: '檢查節點使用者權限', @@ -3640,7 +3590,6 @@ const message = { oldDataExist: '檢查到該節點存在 1Panel V2 歷史資料,將使用以下資訊覆蓋目前設定', errLicense: '檢查到該節點綁定的許可證不可用,請檢查後重試', errNodePort: '檢查到節點埠 [ {0} ] 無法存取,請檢查防火牆或安全組是否已放行該埠。', - reinstallHelper: '重新安裝節點 {0},是否繼續?', unhealthyCheck: '異常檢查', fixOperation: '修復方案', @@ -3664,7 +3613,6 @@ const message = { offline: '離線模式', freeCount: '免費額度 [{0}]', offlineHelper: '當節點處於離線環境時使用', - appUpgrade: '應用程式升級', appUpgradeHelper: '有 {0} 個應用程式需要升級', }, @@ -3754,7 +3702,6 @@ const message = { specifiedTime: '指定時間', deleteTitle: '刪除告警', deleteMsg: '是否確認刪除告警任務?', - allSslTitle: '所有網站憑證到期告警', sslTitle: '網站「{0}」憑證到期告警', allSiteEndTimeTitle: '所有網站到期告警', @@ -3766,18 +3713,15 @@ const message = { loadTitle: '負載佔用過高告警', diskTitle: '掛載目錄「{0}」的磁碟佔用過高告警', allDiskTitle: '磁碟佔用過高告警', - timeRule: '剩餘時間小於{0}天(如未處理,次日會重新發送)', panelUpdateRule: '偵測到面板有新版本時發送一次(如未處理,次日會重新發送)', avgRule: '{0}分鐘內平均{1}佔用超過{2}%觸發,每天發送{3}次', diskRule: '掛載目錄「{0}」的磁碟佔用超過{1}{2}觸發,每天發送{3}次', allDiskRule: '磁碟佔用超過{0}{1}觸發,每天發送{2}次', - cpuName: ' CPU ', memoryName: '記憶體', loadName: '負載', diskName: '磁碟', - syncAlertInfo: '同步告警資訊', syncAlertInfoMsg: '是否同步告警資訊內容狀態?', pushError: '推送失敗',