diff --git a/frontend/src/assets/iconfont/iconfont.css b/frontend/src/assets/iconfont/iconfont.css
index 43fa56b794bf..470086e148e4 100644
--- a/frontend/src/assets/iconfont/iconfont.css
+++ b/frontend/src/assets/iconfont/iconfont.css
@@ -1,9 +1,9 @@
@font-face {
font-family: "iconfont"; /* Project id 4776196 */
- src: url('iconfont.woff2?t=1740392092454') format('woff2'),
- url('iconfont.woff?t=1740392092454') format('woff'),
- url('iconfont.ttf?t=1740392092454') format('truetype'),
- url('iconfont.svg?t=1740392092454#iconfont') format('svg');
+ src: url('iconfont.woff2?t=1740474796282') format('woff2'),
+ url('iconfont.woff?t=1740474796282') format('woff'),
+ url('iconfont.ttf?t=1740474796282') format('truetype'),
+ url('iconfont.svg?t=1740474796282#iconfont') format('svg');
}
.iconfont {
@@ -258,14 +258,6 @@
content: "\e666";
}
-.p-gpu-1:before {
- content: "\e623";
-}
-
-.p-gpu-2:before {
- content: "\e6d8";
-}
-
.p-xpack:before {
content: "\e60b";
}
diff --git a/frontend/src/assets/iconfont/iconfont.js b/frontend/src/assets/iconfont/iconfont.js
index 6fdd959b6dc9..227af320bb6f 100644
--- a/frontend/src/assets/iconfont/iconfont.js
+++ b/frontend/src/assets/iconfont/iconfont.js
@@ -1 +1 @@
-window._iconfont_svg_string_4776196='',(h=>{var l=(a=(a=document.getElementsByTagName("script"))[a.length-1]).getAttribute("data-injectcss"),a=a.getAttribute("data-disable-injectsvg");if(!a){var c,t,p,z,v,i=function(l,a){a.parentNode.insertBefore(l,a)};if(l&&!h.__iconfont__svg__cssinject__){h.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(l){console&&console.log(l)}}c=function(){var l,a=document.createElement("div");a.innerHTML=h._iconfont_svg_string_4776196,(a=a.getElementsByTagName("svg")[0])&&(a.setAttribute("aria-hidden","true"),a.style.position="absolute",a.style.width=0,a.style.height=0,a.style.overflow="hidden",a=a,(l=document.body).firstChild?i(a,l.firstChild):l.appendChild(a))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(c,0):(t=function(){document.removeEventListener("DOMContentLoaded",t,!1),c()},document.addEventListener("DOMContentLoaded",t,!1)):document.attachEvent&&(p=c,z=h.document,v=!1,m(),z.onreadystatechange=function(){"complete"==z.readyState&&(z.onreadystatechange=null,d())})}function d(){v||(v=!0,p())}function m(){try{z.documentElement.doScroll("left")}catch(l){return void setTimeout(m,50)}d()}})(window);
\ No newline at end of file
+window._iconfont_svg_string_4776196='',(h=>{var l=(a=(a=document.getElementsByTagName("script"))[a.length-1]).getAttribute("data-injectcss"),a=a.getAttribute("data-disable-injectsvg");if(!a){var c,t,p,z,v,i=function(l,a){a.parentNode.insertBefore(l,a)};if(l&&!h.__iconfont__svg__cssinject__){h.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(l){console&&console.log(l)}}c=function(){var l,a=document.createElement("div");a.innerHTML=h._iconfont_svg_string_4776196,(a=a.getElementsByTagName("svg")[0])&&(a.setAttribute("aria-hidden","true"),a.style.position="absolute",a.style.width=0,a.style.height=0,a.style.overflow="hidden",a=a,(l=document.body).firstChild?i(a,l.firstChild):l.appendChild(a))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(c,0):(t=function(){document.removeEventListener("DOMContentLoaded",t,!1),c()},document.addEventListener("DOMContentLoaded",t,!1)):document.attachEvent&&(p=c,z=h.document,v=!1,d(),z.onreadystatechange=function(){"complete"==z.readyState&&(z.onreadystatechange=null,m())})}function m(){v||(v=!0,p())}function d(){try{z.documentElement.doScroll("left")}catch(l){return void setTimeout(d,50)}m()}})(window);
\ No newline at end of file
diff --git a/frontend/src/assets/iconfont/iconfont.json b/frontend/src/assets/iconfont/iconfont.json
index 3d8a75f37946..9647b05e6923 100644
--- a/frontend/src/assets/iconfont/iconfont.json
+++ b/frontend/src/assets/iconfont/iconfont.json
@@ -432,20 +432,6 @@
"unicode": "e666",
"unicode_decimal": 58982
},
- {
- "icon_id": "6176565",
- "name": "监控",
- "font_class": "gpu-1",
- "unicode": "e623",
- "unicode_decimal": 58915
- },
- {
- "icon_id": "640495",
- "name": "详细信息",
- "font_class": "gpu-2",
- "unicode": "e6d8",
- "unicode_decimal": 59096
- },
{
"icon_id": "3722144",
"name": "钻石",
diff --git a/frontend/src/assets/iconfont/iconfont.svg b/frontend/src/assets/iconfont/iconfont.svg
index fb9331c2d1de..bac8c9c87b34 100644
--- a/frontend/src/assets/iconfont/iconfont.svg
+++ b/frontend/src/assets/iconfont/iconfont.svg
@@ -136,10 +136,6 @@
-
-
-
-
diff --git a/frontend/src/assets/iconfont/iconfont.ttf b/frontend/src/assets/iconfont/iconfont.ttf
index 3d2d8059806c..ca189c0c4a67 100644
Binary files a/frontend/src/assets/iconfont/iconfont.ttf and b/frontend/src/assets/iconfont/iconfont.ttf differ
diff --git a/frontend/src/assets/iconfont/iconfont.woff b/frontend/src/assets/iconfont/iconfont.woff
index 139f90339072..46b6c1b5b868 100644
Binary files a/frontend/src/assets/iconfont/iconfont.woff and b/frontend/src/assets/iconfont/iconfont.woff differ
diff --git a/frontend/src/assets/iconfont/iconfont.woff2 b/frontend/src/assets/iconfont/iconfont.woff2
index 85aafba97956..a67b3a4db340 100644
Binary files a/frontend/src/assets/iconfont/iconfont.woff2 and b/frontend/src/assets/iconfont/iconfont.woff2 differ
diff --git a/frontend/src/components/task-log/index.vue b/frontend/src/components/task-log/index.vue
index 7f017473517c..8ef5a3ac99ea 100644
--- a/frontend/src/components/task-log/index.vue
+++ b/frontend/src/components/task-log/index.vue
@@ -64,6 +64,7 @@ const openWithResourceID = (taskType: string, taskOperate: string, resourceID: n
const handleClose = () => {
open.value = false;
+ bus.emit('close', true);
bus.emit('refreshTask', true);
};
diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts
index 17255a35c6dd..66c520bcfa7d 100644
--- a/frontend/src/lang/modules/en.ts
+++ b/frontend/src/lang/modules/en.ts
@@ -2717,29 +2717,6 @@ const message = {
manage: 'Management',
},
},
- customApp: {
- name: 'Custom App Repository',
- appStoreType: 'App Store Package Source',
- appStoreUrl: 'Repository URL',
- local: 'Local Path',
- remote: 'Remote Link',
- imagePrefix: 'Image Prefix',
- imagePrefixHelper:
- 'Function: Customize the image prefix and modify the image field in the compose file. For example, when the image prefix is set to 1panel/custom, the image field for MaxKB will change to 1panel/custom/maxkb:v1.10.0',
- closeHelper: 'Cancel using custom app repository',
- appStoreUrlHelper: 'Only .tar.gz format is supported',
- postNode: 'Sync to sub-node',
- postNodeHelper: 'Sub-nodes will inherit and use the above configuration by default',
- nodes: 'Nodes',
- },
- alert: {
- isAlert: 'Alert',
- alertCount: 'Alert Count',
- clamHelper: 'Trigger SMS alert when scanning infected files',
- cronJobHelper: 'Trigger SMS alert when scheduled task execution fails',
- licenseHelper: 'Professional version supports SMS alert',
- alertCountHelper: 'Maximum daily alarm frequency',
- },
xpack: {
expiresTrialAlert:
'Friendly reminder: Your Pro trial will expire in {0} days, and all Pro features will no longer be accessible. Please renew or upgrade to the full version in a timely manner.',
@@ -3030,32 +3007,36 @@ const message = {
excludeUa: 'Exclude User-Agent',
},
tamper: {
- tamper: 'Site Integrity',
+ tamper: 'Website Tamper Protection',
+ ignoreTemplate: 'Exclude Directory Template',
+ protectTemplate: 'Protect File Template',
+ templateContent: 'Template Content',
+ template: 'Template',
tamperHelper1:
- 'For one-click deployment type websites, it is recommended to enable the application directory anti-tampering feature. If the website malfunctions or backup/restore fails, please disable the anti-tampering feature first.',
+ 'For one-click deployment type websites, it is recommended to enable the application directory tamper protection feature; if the website is not functioning properly or there are backup and recovery failures, please first disable the tamper protection feature;',
tamperHelper2:
- 'It will restrict the read, write, delete, permission, and owner modification operations of protected files under non-excluded directories',
- op: 'Operation',
- create: 'Create',
- file: 'File',
+ 'Operations for reading, writing, deleting, changing permissions, and modifying owners of protected files outside the excluded directories will be restricted',
tamperPath: 'Protected Directory',
- tamperPathEdit: 'Modify Path',
- log: 'Intercept Logs',
- totalProtect: 'Total Protections',
- todayProtect: 'Today’s Protections',
+ tamperPathEdit: 'Edit Path',
+ log: 'Intercept Log',
+ totalProtect: 'Total Protection',
+ todayProtect: 'Today’s Protection',
addRule: 'Add Rule',
ignore: 'Exclude Directory',
- ignoreHelper: 'One entry per line, e.g., \ntmp\n./tmp',
- ignoreHelper1: 'Add folder names or specific paths to exclude from protection.',
- ignoreHelper2: 'Use relative paths starting with ./ to exclude specific folders.',
- protect: 'Protected file',
- protectHelper: 'One entry per line, e.g., \npng\n./test.css',
- protectHelper1: 'Specify file names, extensions, or specific files to protect.',
- protectHelper2: 'Use relative paths starting with ./ to protect specific files.',
+ ignoreHelper: 'One per line, e.g.: \ntmp\n./tmp',
+ ignoreTemplateHelper: 'Add folder names to ignore, separated by commas, e.g.: tmp,cache',
+ templateRule: 'Length 1-512, name cannot contain symbols like {0}',
+ ignoreHelper1: 'Add folder names or specific paths to ignore',
+ ignoreHelper2: 'To ignore a specific folder, use a relative path starting with ./',
+ protect: 'Protect File',
+ protectHelper: 'One per line, e.g.: \npng\n./test.css',
+ protectTemplateHelper: 'Add file names or extensions to ignore, separated by commas, e.g.: conf,.css',
+ protectHelper1: 'You can specify file names, extensions, or specific files to protect',
+ protectHelper2: 'To protect a specific file, use a relative path starting with ./',
enableHelper:
- 'The anti-tampering function of website {0} is about to be enabled to enhance website security. Do you want to continue?',
+ 'The tamper protection feature for the following websites will be enabled to enhance website security. Do you want to continue?',
disableHelper:
- 'The anti-tampering function of website {0} is about to be disabled. Do you want to continue?',
+ 'The tamper protection feature for the following websites will be disabled. Do you want to continue?',
},
setting: {
setting: 'Panel Settings',
@@ -3129,7 +3110,62 @@ const message = {
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.',
},
+ node: {
+ node: 'Node',
+ addr: 'Address',
+ memTotal: 'Total Memory',
+ nodeManagement: 'Node Management',
+ addNode: 'Add Node',
+ connInfo: 'Connection Information',
+ nodeInfo: 'Node Information',
+ panelExist:
+ 'Detected that there is already 1panel service on this node. Adding this node will use the original service port and installation directory of 1panel. Do you want to continue?',
+ coreExist:
+ 'Detected that there is already 1panel-core service on this node. Unable to add this node, please check and try again!',
+ agentExist: 'Detected that there is already 1panel-agent service on this node',
+ forceAdd: 'Force Add',
+ forceAddHelper: 'Force add will forcibly replace the 1panel-agent service on this node',
+ reinstallHelper: 'Reinstall node {0}, do you want to continue?',
+ unhealthyCheck: 'Abnormal Check',
+ fixOperation: 'Fix Operation',
+ checkName: 'Check Item',
+ checkSSHConn: 'Check SSH Connection Availability',
+ fixSSHConn: 'Manually edit the node to confirm connection information',
+ checkConnInfo: 'Check Agent Connection Information',
+ checkStatus: 'Check Node Service Availability',
+ fixStatus: 'Investigate Node Logs',
+ checkAPI: 'Check Node API Availability',
+ fixAPI: 'Check if the request address in the information is correct; if incorrect, modify the main node information',
+ forceDelete: 'Force Delete',
+ operateHelper: 'The following nodes will undergo {0} operation, do you want to continue?',
+ forceDeleteHelper: 'Force delete will ignore node deletion errors and delete database metadata',
+ baseDir: 'Installation Directory',
+ baseDirHelper:
+ 'When the installation directory is empty, it will be installed in the /opt directory by default',
+ nodePort: 'Node Port',
+ },
+ customApp: {
+ name: 'Custom App Repository',
+ appStoreType: 'App Store Package Source',
+ appStoreUrl: 'Repository URL',
+ local: 'Local Path',
+ remote: 'Remote Link',
+ imagePrefix: 'Image Prefix',
+ imagePrefixHelper:
+ 'Function: Customize the image prefix and modify the image field in the compose file. For example, when the image prefix is set to 1panel/custom, the image field for MaxKB will change to 1panel/custom/maxkb:v1.10.0',
+ closeHelper: 'Cancel using custom app repository',
+ appStoreUrlHelper: 'Only .tar.gz format is supported',
+ postNode: 'Sync to sub-node',
+ postNodeHelper: 'Sub-nodes will inherit and use the above configuration by default',
+ nodes: 'Nodes',
+ },
alert: {
+ isAlert: 'Alert',
+ alertCount: 'Alert Count',
+ clamHelper: 'Trigger SMS alert when scanning infected files',
+ cronJobHelper: 'Trigger SMS alert when scheduled task execution fails',
+ licenseHelper: 'Professional version supports SMS alert',
+ alertCountHelper: 'Maximum daily alarm frequency',
alert: 'SMS Alert',
logs: 'Alert Logs',
list: 'Alert List',
diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts
index 0b06ccfdefb8..222ec17371b8 100644
--- a/frontend/src/lang/modules/ja.ts
+++ b/frontend/src/lang/modules/ja.ts
@@ -2538,29 +2538,6 @@ const message = {
manage: '管理',
},
},
- customApp: {
- name: 'カスタムアプリリポジトリ',
- appStoreType: 'アプリストアパッケージソース',
- appStoreUrl: 'リポジトリURL',
- local: 'ローカルパス',
- remote: 'リモートリンク',
- imagePrefix: 'イメージプレフィックス',
- imagePrefixHelper:
- '機能: イメージプレフィックスをカスタマイズし、composeファイル内のイメージフィールドを変更します。例えば、イメージプレフィックスを1panel/customに設定した場合、MaxKBのイメージフィールドは1panel/custom/maxkb:v1.10.0に変更されます',
- closeHelper: 'カスタムアプリリポジトリの使用をキャンセルしますか',
- appStoreUrlHelper: '.tar.gz形式のみサポートされます',
- postNode: 'サブノードへ同期',
- postNodeHelper: 'サブノードはデフォルトで上記の設定を継承して使用します',
- nodes: 'ノードを選択',
- },
- alert: {
- isAlert: 'アラート',
- alertCount: 'アラート数',
- clamHelper: '感染したファイルをスキャンするときにSMSアラートをトリガーします',
- cronJobHelper: 'タスクの実行が失敗したときにSMSアラートをトリガーします',
- licenseHelper: 'プロのバージョンはSMSアラートをサポートします',
- alertCountHelper: '最大毎日のアラーム周波数',
- },
xpack: {
expiresTrialAlert:
'ご注意: あなたのProトライアルは{0}日後に終了し、すべてのPro機能が使用できなくなります。適時に更新またはフルバージョンにアップグレードしてください。',
@@ -2842,31 +2819,35 @@ const message = {
excludeUa: 'ユーザーエージェントを除外',
},
tamper: {
- tamper: 'サイトの整合性',
+ tamper: 'ウェブサイトの改ざん防止',
+ ignoreTemplate: 'ディレクトリテンプレートを除外',
+ protectTemplate: 'ファイルテンプレートを保護',
+ templateContent: 'テンプレート内容',
+ template: 'テンプレート',
tamperHelper1:
- 'ワンクリック展開型のウェブサイトでは、アプリケーションディレクトリの改ざん防止機能を有効にすることをお勧めします。ウェブサイトが正常に動作しない場合やバックアップ/復元が失敗した場合は、まず改ざん防止機能を無効にしてください。',
+ 'ワンクリック展開タイプのウェブサイトには、アプリケーションディレクトリの改ざん防止機能を有効にすることをお勧めします。ウェブサイトが正常に動作しない場合やバックアップ、復元に失敗した場合は、まず改ざん防止機能を無効にしてください;',
tamperHelper2:
- 'これにより、除外されていないディレクトリ内の保護されたファイルに対して、読み取り、書き込み、削除、権限、および所有者の変更操作が制限されます。',
- op: '操作',
- create: '作成',
- file: 'ファイル',
- tamperPath: '保護されたディレクトリ',
- tamperPathEdit: 'パスの変更',
+ '除外されたディレクトリの外にある保護されたファイルの読み取り、書き込み、削除、権限および所有者の変更操作が制限されます',
+ tamperPath: '保護ディレクトリ',
+ tamperPathEdit: 'パスを変更',
log: 'インターセプトログ',
- totalProtect: '総保護数',
- todayProtect: '今日の保護数',
+ totalProtect: '総保護',
+ todayProtect: '今日の保護',
addRule: 'ルールを追加',
- ignore: '除外ディレクトリ',
- ignoreHelper: '1行ごとに入力してください。例:\ntmp\n./tmp',
- ignoreHelper1: '保護から除外するフォルダ名や特定のパスを追加してください。',
- ignoreHelper2: '特定のフォルダを除外するには、./で始まる相対パスを使用してください。',
- protect: '保護ファイル',
- protectHelper: '1行ごとに入力してください。例:\npng\n./test.css',
- protectHelper1: '保護するファイル名、拡張子、または特定のファイルを指定してください。',
- protectHelper2: '特定のファイルを保護するには、./で始まる相対パスを使用してください。',
+ ignore: 'ディレクトリを除外',
+ ignoreHelper: '1行に1つ、例: \ntmp\n./tmp',
+ ignoreTemplateHelper: '無視するフォルダ名を追加し、カンマで区切ってください。例: tmp,cache',
+ templateRule: '長さ1-512、名前には{0}などの記号を含めることはできません',
+ ignoreHelper1: '無視するフォルダ名または特定のパスを追加してください',
+ ignoreHelper2: '特定のフォルダを無視するには、./で始まる相対パスを使用してください',
+ protect: 'ファイルを保護',
+ protectHelper: '1行に1つ、例: \npng\n./test.css',
+ protectTemplateHelper: '無視するファイル名または拡張子を追加し、カンマで区切ってください。例: conf,.css',
+ protectHelper1: 'ファイル名、拡張子、または特定のファイルを保護することができます',
+ protectHelper2: '特定のファイルを保護するには、./で始まる相対パスを使用してください',
enableHelper:
- 'ウェブサイト {0} の改ざん防止機能が有効になろうとしています。セキュリティを強化するために続行しますか?',
- disableHelper: 'ウェブサイト {0} の改ざん防止機能が無効になろうとしています。続行しますか?',
+ '次のウェブサイトの改ざん防止機能が有効になります。ウェブサイトのセキュリティを向上させるために続行しますか?',
+ disableHelper: '次のウェブサイトの改ざん防止機能が無効になります。続行しますか?',
},
setting: {
setting: 'パネル設定',
@@ -2941,7 +2922,61 @@ const message = {
alertContent3:
'カスタム電話番号、日々のプッシュ頻度、日々のプッシュ時間設定を提供し、ユーザーがより合理的なプッシュアラートを設定しやすく。',
},
+ node: {
+ node: 'ノード',
+ addr: 'アドレス',
+ memTotal: '総メモリ',
+ nodeManagement: 'ノード管理',
+ addNode: 'ノードを追加',
+ connInfo: '接続情報',
+ nodeInfo: 'ノード情報',
+ panelExist:
+ 'このノードに既に1panelサービスが存在します。このノードを追加すると、1panelの元のサービスポートとインストールディレクトリが使用されます。続行しますか?',
+ coreExist:
+ 'このノードに既に1panel-coreサービスが存在します。このノードを追加できません。確認して再試行してください!',
+ agentExist: 'このノードに既に1panel-agentサービスが存在します',
+ forceAdd: '強制追加',
+ forceAddHelper: '強制追加は、このノードの1panel-agentサービスを強制的に置き換えます',
+ reinstallHelper: 'ノード{0}を再インストールします。続行しますか?',
+ unhealthyCheck: '異常チェック',
+ fixOperation: '修正操作',
+ checkName: 'チェック項目',
+ checkSSHConn: 'SSH接続の可用性を確認',
+ fixSSHConn: 'ノードを手動で編集し、接続情報を確認',
+ checkConnInfo: 'エージェント接続情報を確認',
+ checkStatus: 'ノードサービスの可用性を確認',
+ fixStatus: 'ノードログを調査',
+ checkAPI: 'ノードAPIの可用性を確認',
+ fixAPI: '情報内のリクエストアドレスが正しいか確認し、誤っている場合は主ノード情報を修正',
+ forceDelete: '強制削除',
+ operateHelper: '以下のノードに{0}操作を行います。続行しますか?',
+ forceDeleteHelper: '強制削除はノード削除エラーを無視し、データベースメタデータを削除します',
+ baseDir: 'インストールディレクトリ',
+ baseDirHelper: 'インストールディレクトリが空の場合、デフォルトで/optディレクトリにインストールされます',
+ nodePort: 'ノードポート',
+ },
+ customApp: {
+ name: 'カスタムアプリリポジトリ',
+ appStoreType: 'アプリストアパッケージソース',
+ appStoreUrl: 'リポジトリURL',
+ local: 'ローカルパス',
+ remote: 'リモートリンク',
+ imagePrefix: 'イメージプレフィックス',
+ imagePrefixHelper:
+ '機能: イメージプレフィックスをカスタマイズし、composeファイル内のイメージフィールドを変更します。例えば、イメージプレフィックスを1panel/customに設定した場合、MaxKBのイメージフィールドは1panel/custom/maxkb:v1.10.0に変更されます',
+ closeHelper: 'カスタムアプリリポジトリの使用をキャンセルしますか',
+ appStoreUrlHelper: '.tar.gz形式のみサポートされます',
+ postNode: 'サブノードへ同期',
+ postNodeHelper: 'サブノードはデフォルトで上記の設定を継承して使用します',
+ nodes: 'ノードを選択',
+ },
alert: {
+ isAlert: 'アラート',
+ alertCount: 'アラート数',
+ clamHelper: '感染したファイルをスキャンするときにSMSアラートをトリガーします',
+ cronJobHelper: 'タスクの実行が失敗したときにSMSアラートをトリガーします',
+ licenseHelper: 'プロのバージョンはSMSアラートをサポートします',
+ alertCountHelper: '最大毎日のアラーム周波数',
alert: 'SMSアラート',
logs: 'アラートログ',
list: 'アラートリスト',
diff --git a/frontend/src/lang/modules/ko.ts b/frontend/src/lang/modules/ko.ts
index 8996281ae350..c4e7066e0377 100644
--- a/frontend/src/lang/modules/ko.ts
+++ b/frontend/src/lang/modules/ko.ts
@@ -2496,29 +2496,6 @@ const message = {
manage: '관리',
},
},
- customApp: {
- name: '사용자 정의 앱 저장소',
- appStoreType: '앱 스토어 패키지 소스',
- appStoreUrl: '저장소 URL',
- local: '로컬 경로',
- remote: '원격 링크',
- imagePrefix: '이미지 접두사',
- imagePrefixHelper:
- '기능: 이미지 접두사를 사용자 정의하고 compose 파일의 이미지 필드를 수정합니다. 예를 들어 이미지 접두사를 1panel/custom으로 설정하면 MaxKB의 이미지 필드는 1panel/custom/maxkb:v1.10.0으로 변경됩니다',
- closeHelper: '사용자 정의 앱 저장소 사용 취소',
- appStoreUrlHelper: '.tar.gz 형식만 지원합니다',
- postNode: '서브 노드로 동기화',
- postNodeHelper: '서브 노드는 기본적으로 위 설정을 상속하고 사용합니다',
- nodes: '노드 선택',
- },
- alert: {
- isAlert: '알림',
- alertCount: '알림 횟수',
- clamHelper: '감염된 파일을 스캔할 때 SMS 알림 트리거',
- cronJobHelper: '작업 실행 실패 시 SMS 알림 트리거',
- licenseHelper: '전문 버전에서는 SMS 알림을 지원합니다.',
- alertCountHelper: '최대 일일 알림 빈도',
- },
xpack: {
expiresTrialAlert:
'친절한 알림: 귀하의 Pro 체험판이 {0}일 후 만료되며, 모든 Pro 기능에 더 이상 접근할 수 없습니다. 제때 갱신하거나 전체 버전으로 업그레이드하시기 바랍니다.',
@@ -2798,31 +2775,35 @@ const message = {
excludeUa: '사용자 에이전트 제외',
},
tamper: {
- tamper: '사이트 무결성',
+ tamper: '웹사이트 변조 방지',
+ ignoreTemplate: '디렉토리 템플릿 제외',
+ protectTemplate: '파일 템플릿 보호',
+ templateContent: '템플릿 내용',
+ template: '템플릿',
tamperHelper1:
- '원클릭 배포 유형의 웹사이트에서는 애플리케이션 디렉터리 방지 조작 기능을 활성화하는 것이 좋습니다. 웹사이트에 문제가 발생하거나 백업/복원이 실패한 경우 먼저 방지 조작 기능을 비활성화하세요.',
+ '원클릭 배포 유형의 웹사이트는 애플리케이션 디렉토리 변조 방지 기능을 활성화하는 것이 좋습니다; 웹사이트가 정상적으로 작동하지 않거나 백업 및 복구에 실패하는 경우, 먼저 변조 방지 기능을 비활성화하십시오;',
tamperHelper2:
- '보호된 파일이 포함된 디렉터리에서 제외되지 않은 파일의 읽기, 쓰기, 삭제, 권한 및 소유자 수정 작업을 제한합니다.',
- op: '작업',
- create: '생성',
- file: '파일',
- tamperPath: '보호 디렉터리',
+ '제외된 디렉토리 외부의 보호된 파일에 대한 읽기, 쓰기, 삭제, 권한 및 소유자 변경 작업이 제한됩니다',
+ tamperPath: '보호 디렉토리',
tamperPathEdit: '경로 수정',
log: '차단 로그',
- totalProtect: '총 보호 수',
- todayProtect: '오늘의 보호 수',
+ totalProtect: '총 보호',
+ todayProtect: '오늘의 보호',
addRule: '규칙 추가',
- ignore: '제외 디렉터리',
- ignoreHelper: '한 줄에 하나씩 입력하세요. 예: \ntmp\n./tmp',
- ignoreHelper1: '보호에서 제외할 폴더 이름이나 특정 경로를 추가하세요.',
- ignoreHelper2: './로 시작하는 상대 경로를 사용하여 특정 폴더를 제외하세요.',
- protect: '보호된 파일',
- protectHelper: '한 줄에 하나씩 입력하세요. 예: \npng\n./test.css',
- protectHelper1: '보호할 파일 이름, 확장자 또는 특정 파일을 지정하세요.',
- protectHelper2: './로 시작하는 상대 경로를 사용하여 특정 파일을 보호하세요.',
+ ignore: '디렉토리 제외',
+ ignoreHelper: '한 줄에 하나씩, 예: \ntmp\n./tmp',
+ ignoreTemplateHelper: '무시할 폴더 이름을 추가하고, 쉼표로 구분하십시오. 예: tmp,cache',
+ templateRule: '길이 1-512, 이름에 {0}와 같은 기호를 포함할 수 없습니다',
+ ignoreHelper1: '무시할 폴더 이름이나 특정 경로를 추가하십시오',
+ ignoreHelper2: '특정 폴더를 무시하려면 ./로 시작하는 상대 경로를 사용하십시오',
+ protect: '파일 보호',
+ protectHelper: '한 줄에 하나씩, 예: \npng\n./test.css',
+ protectTemplateHelper: '무시할 파일 이름이나 확장자를 추가하고, 쉼표로 구분하십시오. 예: conf,.css',
+ protectHelper1: '파일 이름, 확장자 또는 특정 파일을 보호할 수 있습니다',
+ protectHelper2: '특정 파일을 보호하려면 ./로 시작하는 상대 경로를 사용하십시오',
enableHelper:
- '웹사이트 {0}의 방지 조작 기능을 활성화하여 웹사이트 보안을 강화하려고 합니다. 계속하시겠습니까?',
- disableHelper: '웹사이트 {0}의 방지 조작 기능을 비활성화하려고 합니다. 계속하시겠습니까?',
+ '다음 웹사이트의 변조 방지 기능이 활성화됩니다. 웹사이트 보안을 강화하기 위해 계속하시겠습니까?',
+ disableHelper: '다음 웹사이트의 변조 방지 기능이 비활성화됩니다. 계속하시겠습니까?',
},
setting: {
setting: '패널 설정',
@@ -2890,7 +2871,61 @@ const message = {
alertContent3:
'사용자에게 전화번호, 일일 푸시 빈도, 일일 푸시 시간 등을 사용자 정의할 수 있는 설정을 제공하여 보다 합리적인 푸시 알림을 설정할 수 있도록 합니다.',
},
+ node: {
+ node: '노드',
+ addr: '주소',
+ memTotal: '총 메모리',
+ nodeManagement: '노드 관리',
+ addNode: '노드 추가',
+ connInfo: '연결 정보',
+ nodeInfo: '노드 정보',
+ panelExist:
+ '이 노드에 이미 1panel 서비스가 존재합니다. 이 노드를 추가하면 1panel의 원래 서비스 포트와 설치 디렉토리를 사용합니다. 계속하시겠습니까?',
+ coreExist:
+ '이 노드에 이미 1panel-core 서비스가 존재합니다. 이 노드를 추가할 수 없습니다. 확인 후 다시 시도하십시오!',
+ agentExist: '이 노드에 이미 1panel-agent 서비스가 존재합니다',
+ forceAdd: '강제 추가',
+ forceAddHelper: '강제 추가는 이 노드의 1panel-agent 서비스를 강제로 교체합니다',
+ reinstallHelper: '노드 {0}를 재설치합니다. 계속하시겠습니까?',
+ unhealthyCheck: '비정상 체크',
+ fixOperation: '수정 작업',
+ checkName: '체크 항목',
+ checkSSHConn: 'SSH 연결 가능성 확인',
+ fixSSHConn: '노드를 수동으로 편집하여 연결 정보를 확인합니다',
+ checkConnInfo: '에이전트 연결 정보 확인',
+ checkStatus: '노드 서비스 가용성 확인',
+ fixStatus: '노드 로그 조사',
+ checkAPI: '노드 API 가용성 확인',
+ fixAPI: '정보 내 요청 주소가 올바른지 확인하고, 잘못된 경우 주 노드 정보를 수정해야 합니다',
+ forceDelete: '강제 삭제',
+ operateHelper: '다음 노드에 대해 {0} 작업을 수행합니다. 계속하시겠습니까?',
+ forceDeleteHelper: '강제 삭제는 노드 삭제 오류를 무시하고 데이터베이스 메타데이터를 삭제합니다',
+ baseDir: '설치 디렉토리',
+ baseDirHelper: '설치 디렉토리가 비어 있으면 기본적으로 /opt 디렉토리에 설치됩니다',
+ nodePort: '노드 포트',
+ },
+ customApp: {
+ name: '사용자 정의 앱 저장소',
+ appStoreType: '앱 스토어 패키지 소스',
+ appStoreUrl: '저장소 URL',
+ local: '로컬 경로',
+ remote: '원격 링크',
+ imagePrefix: '이미지 접두사',
+ imagePrefixHelper:
+ '기능: 이미지 접두사를 사용자 정의하고 compose 파일의 이미지 필드를 수정합니다. 예를 들어 이미지 접두사를 1panel/custom으로 설정하면 MaxKB의 이미지 필드는 1panel/custom/maxkb:v1.10.0으로 변경됩니다',
+ closeHelper: '사용자 정의 앱 저장소 사용 취소',
+ appStoreUrlHelper: '.tar.gz 형식만 지원합니다',
+ postNode: '서브 노드로 동기화',
+ postNodeHelper: '서브 노드는 기본적으로 위 설정을 상속하고 사용합니다',
+ nodes: '노드 선택',
+ },
alert: {
+ isAlert: '알림',
+ alertCount: '알림 횟수',
+ clamHelper: '감염된 파일을 스캔할 때 SMS 알림 트리거',
+ cronJobHelper: '작업 실행 실패 시 SMS 알림 트리거',
+ licenseHelper: '전문 버전에서는 SMS 알림을 지원합니다.',
+ alertCountHelper: '최대 일일 알림 빈도',
alert: 'SMS 알림',
logs: '알림 로그',
list: '알림 목록',
diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts
index bc748eab3e1e..ae06a43d41b7 100644
--- a/frontend/src/lang/modules/ms.ts
+++ b/frontend/src/lang/modules/ms.ts
@@ -2597,29 +2597,6 @@ const message = {
manage: 'Pengurusan',
},
},
- customApp: {
- name: 'Repositori Aplikasi Khusus',
- appStoreType: 'Sumber Pakej App Store',
- appStoreUrl: 'URL Repositori',
- local: 'Laluan Tempatan',
- remote: 'Pautan Jauh',
- imagePrefix: 'Awalan Imej',
- imagePrefixHelper:
- 'Fungsi: Sesuaikan awalan imej dan ubah medan imej dalam fail compose. Contohnya, apabila awalan imej ditetapkan kepada 1panel/custom, medan imej untuk MaxKB akan bertukar kepada 1panel/custom/maxkb:v1.10.0',
- closeHelper: 'Batalkan penggunaan repositori aplikasi khusus',
- appStoreUrlHelper: 'Hanya format .tar.gz disokong',
- postNode: 'Segerakkan ke sub-node',
- postNodeHelper: 'Sub-node akan mewarisi dan menggunakan konfigurasi di atas secara lalai',
- nodes: 'Pilih Node',
- },
- alert: {
- isAlert: 'Amaran',
- alertCount: 'Bilangan Amaran',
- clamHelper: 'Hantar amaran SMS apabila terdapat fail yang dijangkiti semasa imbasan',
- cronJobHelper: 'Hantar amaran SMS apabila pelaksanaan tugas gagal',
- licenseHelper: 'Versi profesional menyokong amaran SMS',
- alertCountHelper: 'Kekerapan maksimum amaran harian',
- },
xpack: {
expiresTrialAlert:
'Peringatan mesra: Percubaan Pro anda akan tamat dalam {0} hari, dan semua ciri Pro tidak lagi dapat diakses. Sila perbaharui atau naik taraf ke versi penuh tepat pada masanya.',
@@ -2908,31 +2885,38 @@ const message = {
excludeUa: 'Kecualikan User-Agent',
},
tamper: {
- tamper: 'Integriti Laman Web',
+ tamper: 'Perlindungan daripada peng篡改 laman web',
+ ignoreTemplate: 'Pengecualian templat direktori',
+ protectTemplate: 'Lindungi templat fail',
+ templateContent: 'Kandungan templat',
+ template: 'Templat',
tamperHelper1:
- 'Untuk laman web jenis penyebaran satu klik, disyorkan untuk mengaktifkan ciri anti-pemalsuan direktori aplikasi. Jika laman web mengalami masalah atau pemulihan/gantian gagal, sila matikan ciri anti-pemalsuan terlebih dahulu.',
+ 'Untuk laman web dengan penyebaran satu klik, disyorkan untuk mengaktifkan fungsi perlindungan daripada peng篡改 direktori aplikasi; jika laman web tidak berfungsi dengan baik atau terdapat masalah dengan sandaran dan pemulihan, sila matikan terlebih dahulu fungsi perlindungan daripada peng篡改;',
tamperHelper2:
- 'Ia akan menghadkan operasi pembacaan, penulisan, penghapusan, dan pengubahsuaian kebenaran serta pemilik bagi fail yang dilindungi di bawah direktori yang tidak dikecualikan.',
- op: 'Operasi',
- create: 'Cipta',
- file: 'Fail',
- tamperPath: 'Direktori Terlindung',
- tamperPathEdit: 'Ubah Laluan',
- log: 'Log Halangan',
- totalProtect: 'Jumlah Perlindungan',
- todayProtect: 'Perlindungan Hari Ini',
- addRule: 'Tambah Peraturan',
- ignore: 'Kecualikan Direktori',
- ignoreHelper: 'Satu entri setiap baris, contohnya \ntmp\n./tmp',
- ignoreHelper1: 'Tambah nama folder atau laluan khusus untuk dikecualikan daripada perlindungan.',
- ignoreHelper2: 'Gunakan laluan relatif yang bermula dengan ./ untuk mengecualikan folder tertentu.',
- protect: 'Fail Dilindungi',
- protectHelper: 'Satu entri setiap baris, contohnya \npng\n./test.css',
- protectHelper1: 'Tentukan nama fail, sambungan fail, atau fail tertentu untuk dilindungi.',
- protectHelper2: 'Gunakan laluan relatif yang bermula dengan ./ untuk melindungi fail tertentu.',
+ 'Akan ada had pada operasi bacaan, penulisan, penghapusan, pengubahsuaian hak dan pemilik bagi fail yang dilindungi di luar direktori yang dikecualikan',
+ tamperPath: 'Direktori yang dilindungi',
+ tamperPathEdit: 'Ubah laluan',
+ log: 'Log penangkapan',
+ totalProtect: 'Perlindungan keseluruhan',
+ todayProtect: 'Perlindungan hari ini',
+ addRule: 'Tambah peraturan',
+ ignore: 'Pengecualian direktori',
+ ignoreHelper: 'Satu baris satu, contohnya: \ntmp\n./tmp',
+ ignoreTemplateHelper:
+ 'Tambah nama folder yang ingin diabaikan, dipisahkan dengan koma, contohnya: tmp,cache',
+ templateRule: 'Panjang 1-512, nama tidak boleh mengandungi simbol seperti {0}',
+ ignoreHelper1: 'Tambah nama folder atau laluan tertentu yang ingin diabaikan',
+ ignoreHelper2: 'Untuk mengabaikan folder tertentu, gunakan laluan relatif yang bermula dengan ./',
+ protect: 'Lindungi fail',
+ protectHelper: 'Satu baris satu, contohnya: \npng\n./test.css',
+ protectTemplateHelper:
+ 'Tambah nama fail atau sambungan yang ingin diabaikan, dipisahkan dengan koma, contohnya: conf,.css',
+ protectHelper1: 'Boleh menentukan nama fail, sambungan atau fail tertentu untuk dilindungi',
+ protectHelper2: 'Untuk melindungi fail tertentu, gunakan laluan relatif yang bermula dengan ./',
enableHelper:
- 'Ciri anti-pemalsuan laman web {0} akan diaktifkan untuk meningkatkan keselamatan laman web. Adakah anda mahu meneruskan?',
- disableHelper: 'Ciri anti-pemalsuan laman web {0} akan dilumpuhkan. Adakah anda mahu meneruskan?',
+ 'Fungsi perlindungan daripada peng篡改 akan diaktifkan untuk laman web berikut untuk meningkatkan keselamatan laman web, adakah anda ingin meneruskan?',
+ disableHelper:
+ 'Fungsi perlindungan daripada peng篡改 akan dimatikan untuk laman web berikut, adakah anda ingin meneruskan?',
},
setting: {
setting: 'Tetapan Panel',
@@ -3006,7 +2990,62 @@ const message = {
alertContent3:
'Memberikan pengguna konfigurasi nombor telefon tersuai, kekerapan push harian, dan masa push harian, memudahkan pengguna untuk menetapkan amaran push yang lebih munasabah.',
},
+ node: {
+ node: 'Nod',
+ addr: 'Alamat',
+ memTotal: 'Jumlah Memori',
+ nodeManagement: 'Pengurusan Nod',
+ addNode: 'Tambah Nod',
+ connInfo: 'Maklumat Sambungan',
+ nodeInfo: 'Maklumat Nod',
+ panelExist:
+ 'Dikesan bahawa terdapat perkhidmatan 1panel yang sudah ada pada nod ini. Menambah nod ini akan menggunakan port dan direktori pemasangan perkhidmatan asal 1panel. Adakah anda ingin meneruskan?',
+ coreExist:
+ 'Dikesan bahawa terdapat perkhidmatan 1panel-core yang sudah ada pada nod ini. Tidak dapat menambah nod ini, sila semak dan cuba lagi!',
+ agentExist: 'Dikesan bahawa terdapat perkhidmatan 1panel-agent yang sudah ada pada nod ini',
+ forceAdd: 'Tambah Secara Paksa',
+ forceAddHelper: 'Tambah secara paksa akan menggantikan perkhidmatan 1panel-agent pada nod ini',
+ reinstallHelper: 'Pasang semula nod {0}, adakah anda ingin meneruskan?',
+ unhealthyCheck: 'Pemeriksaan Tidak Normal',
+ fixOperation: 'Operasi Pembetulan',
+ checkName: 'Item Pemeriksaan',
+ checkSSHConn: 'Periksa Ketersediaan Sambungan SSH',
+ fixSSHConn: 'Edit nod secara manual untuk mengesahkan maklumat sambungan',
+ checkConnInfo: 'Periksa Maklumat Sambungan Ejen',
+ checkStatus: 'Periksa Ketersediaan Perkhidmatan Nod',
+ fixStatus: 'Siasat Log Nod',
+ checkAPI: 'Periksa Ketersediaan API Nod',
+ fixAPI: 'Periksa jika alamat permintaan dalam maklumat adalah betul; jika tidak betul, perlu mengubah maklumat nod utama',
+ forceDelete: 'Hapus Secara Paksa',
+ operateHelper: 'Operasi {0} akan dilakukan pada nod berikut, adakah anda ingin meneruskan?',
+ forceDeleteHelper:
+ 'Hapus secara paksa akan mengabaikan ralat penghapusan nod dan menghapus metadata pangkalan data',
+ baseDir: 'Direktori Pemasangan',
+ baseDirHelper: 'Apabila direktori pemasangan kosong, secara lalai akan dipasang di direktori /opt',
+ nodePort: 'Port Nod',
+ },
+ customApp: {
+ name: 'Repositori Aplikasi Khusus',
+ appStoreType: 'Sumber Pakej App Store',
+ appStoreUrl: 'URL Repositori',
+ local: 'Laluan Tempatan',
+ remote: 'Pautan Jauh',
+ imagePrefix: 'Awalan Imej',
+ imagePrefixHelper:
+ 'Fungsi: Sesuaikan awalan imej dan ubah medan imej dalam fail compose. Contohnya, apabila awalan imej ditetapkan kepada 1panel/custom, medan imej untuk MaxKB akan bertukar kepada 1panel/custom/maxkb:v1.10.0',
+ closeHelper: 'Batalkan penggunaan repositori aplikasi khusus',
+ appStoreUrlHelper: 'Hanya format .tar.gz disokong',
+ postNode: 'Segerakkan ke sub-node',
+ postNodeHelper: 'Sub-node akan mewarisi dan menggunakan konfigurasi di atas secara lalai',
+ nodes: 'Pilih Node',
+ },
alert: {
+ isAlert: 'Amaran',
+ alertCount: 'Bilangan Amaran',
+ clamHelper: 'Hantar amaran SMS apabila terdapat fail yang dijangkiti semasa imbasan',
+ cronJobHelper: 'Hantar amaran SMS apabila pelaksanaan tugas gagal',
+ licenseHelper: 'Versi profesional menyokong amaran SMS',
+ alertCountHelper: 'Kekerapan maksimum amaran harian',
alert: 'Amaran SMS',
logs: 'Log Amaran',
list: 'Senarai Amaran',
diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts
index 91822ca8204d..96f729469c6b 100644
--- a/frontend/src/lang/modules/pt-br.ts
+++ b/frontend/src/lang/modules/pt-br.ts
@@ -2596,29 +2596,6 @@ const message = {
manage: 'Gerenciamento',
},
},
- customApp: {
- name: 'Repositório de Aplicativos Personalizados',
- appStoreType: 'Fonte do Pacote da App Store',
- appStoreUrl: 'URL do Repositório',
- local: 'Caminho Local',
- remote: 'Link Remoto',
- imagePrefix: 'Prefixo de Imagem',
- imagePrefixHelper:
- 'Função: Personalize o prefixo da imagem e modifique o campo de imagem no arquivo compose. Por exemplo, quando o prefixo da imagem é configurado como 1panel/custom, o campo de imagem do MaxKB mudará para 1panel/custom/maxkb:v1.10.0',
- closeHelper: 'Cancelar o uso do repositório de aplicativos personalizados',
- appStoreUrlHelper: 'Apenas formato .tar.gz é suportado',
- postNode: 'Sincronizar para subnó',
- postNodeHelper: 'Subnós herdarão e usarão a configuração acima por padrão',
- nodes: 'Selecionar Nós',
- },
- alert: {
- isAlert: 'Alerta',
- alertCount: 'Contagem de Alertas',
- clamHelper: 'Dispara alerta via SMS ao detectar arquivos infectados durante a varredura',
- cronJobHelper: 'Dispara alerta via SMS ao falhar na execução de tarefas',
- licenseHelper: 'A versão profissional suporta alertas via SMS',
- alertCountHelper: 'Frequência máxima diária de alertas',
- },
xpack: {
expiresTrialAlert:
'Lembrete: Sua versão de avaliação profissional expirará em {0} dias. Após isso, todas as funcionalidades da versão profissional não estarão mais disponíveis. Por favor, renove ou faça upgrade para a versão oficial a tempo.',
@@ -2911,31 +2888,39 @@ const message = {
excludeUa: 'Excluir User-Agent',
},
tamper: {
- tamper: 'Integridade do Site',
+ tamper: 'Proteção contra adulteração do site',
+ ignoreTemplate: 'Excluir modelo de diretório',
+ protectTemplate: 'Proteger modelo de arquivo',
+ templateContent: 'Conteúdo do modelo',
+ template: 'Modelo',
tamperHelper1:
- 'Para sites de implantação com um clique, é recomendado habilitar o recurso de anti-alteração do diretório de aplicativos. Se o site apresentar mau funcionamento ou falha no backup/restauração, desative primeiro o recurso de anti-alteração.',
+ 'Para sites com implantação de um clique, recomenda-se ativar a função de proteção contra adulteração do diretório de aplicativos; se o site não funcionar corretamente ou houver falhas no backup e na recuperação, desative primeiro a função de proteção contra adulteração;',
tamperHelper2:
- 'Isso irá restringir as operações de leitura, gravação, exclusão, modificação de permissões e alteração de proprietário de arquivos protegidos em diretórios não excluídos.',
- op: 'Operação',
- create: 'Criar',
- file: 'Arquivo',
- tamperPath: 'Diretório Protegido',
- tamperPathEdit: 'Modificar Caminho',
- log: 'Logs de Interceptação',
- totalProtect: 'Proteções Totais',
- todayProtect: 'Proteções de Hoje',
- addRule: 'Adicionar Regra',
- ignore: 'Excluir Diretório',
- ignoreHelper: 'Uma entrada por linha, por exemplo: \ntmp\n./tmp',
- ignoreHelper1: 'Adicione nomes de pastas ou caminhos específicos para excluir da proteção.',
- ignoreHelper2: 'Use caminhos relativos começando com ./ para excluir pastas específicas.',
- protect: 'Arquivo Protegido',
- protectHelper: 'Uma entrada por linha, por exemplo: \npng\n./test.css',
- protectHelper1: 'Especifique nomes de arquivos, extensões ou arquivos específicos para proteger.',
- protectHelper2: 'Use caminhos relativos começando com ./ para proteger arquivos específicos.',
+ 'Serão limitadas as operações de leitura, gravação, exclusão, alteração de permissões e proprietário de arquivos protegidos fora dos diretórios excluídos',
+ tamperPath: 'Diretório protegido',
+ tamperPathEdit: 'Modificar caminho',
+ log: 'Registro de interceptação',
+ totalProtect: 'Proteção total',
+ todayProtect: 'Proteção de hoje',
+ addRule: 'Adicionar regra',
+ ignore: 'Excluir diretório',
+ ignoreHelper: 'Um por linha, por exemplo: \ntmp\n./tmp',
+ ignoreTemplateHelper:
+ 'Adicione os nomes das pastas a serem ignoradas, separando por vírgulas, por exemplo: tmp,cache',
+ templateRule: 'Comprimento de 1-512, o nome não pode conter símbolos como {0}',
+ ignoreHelper1: 'Adicione os nomes das pastas ou caminhos específicos a serem ignorados',
+ ignoreHelper2: 'Para ignorar uma pasta específica, use um caminho relativo que comece com ./',
+ protect: 'Proteger arquivo',
+ protectHelper: 'Um por linha, por exemplo: \npng\n./test.css',
+ protectTemplateHelper:
+ 'Adicione os nomes dos arquivos ou extensões a serem ignorados, separando por vírgulas, por exemplo: conf,.css',
+ protectHelper1:
+ 'É possível especificar o nome do arquivo, a extensão ou um arquivo específico para proteção',
+ protectHelper2: 'Para proteger um arquivo específico, use um caminho relativo que comece com ./',
enableHelper:
- 'A função de anti-alteração do site {0} está prestes a ser ativada para aumentar a segurança do site. Deseja continuar?',
- disableHelper: 'A função de anti-alteração do site {0} está prestes a ser desativada. Deseja continuar?',
+ 'A função de proteção contra adulteração será ativada para os seguintes sites para aumentar a segurança do site, deseja continuar?',
+ disableHelper:
+ 'A função de proteção contra adulteração será desativada para os seguintes sites, deseja continuar?',
},
setting: {
setting: 'Configurações do Painel',
@@ -3010,7 +2995,62 @@ const message = {
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.',
},
+ node: {
+ node: 'Nó',
+ addr: 'Endereço',
+ memTotal: 'Memória Total',
+ nodeManagement: 'Gerenciamento de Nó',
+ addNode: 'Adicionar Nó',
+ connInfo: 'Informações de Conexão',
+ nodeInfo: 'Informações do Nó',
+ panelExist:
+ 'Detectado que já existe um serviço 1panel neste nó. Adicionar este nó usará a porta e o diretório de instalação do serviço original do 1panel. Deseja continuar?',
+ coreExist:
+ 'Detectado que já existe um serviço 1panel-core neste nó. Não é possível adicionar este nó, por favor verifique e tente novamente!',
+ agentExist: 'Detectado que já existe um serviço 1panel-agent neste nó',
+ forceAdd: 'Adicionar Forçadamente',
+ forceAddHelper: 'Adicionar forçadamente substituirá o serviço 1panel-agent neste nó',
+ reinstallHelper: 'Reinstalar o nó {0}, deseja continuar?',
+ unhealthyCheck: 'Verificação Anormal',
+ fixOperation: 'Operação de Correção',
+ checkName: 'Item de Verificação',
+ checkSSHConn: 'Verificar Disponibilidade da Conexão SSH',
+ fixSSHConn: 'Edite o nó manualmente para confirmar as informações de conexão',
+ checkConnInfo: 'Verificar Informações de Conexão do Agente',
+ checkStatus: 'Verificar Disponibilidade do Serviço do Nó',
+ fixStatus: 'Investigar Logs do Nó',
+ checkAPI: 'Verificar Disponibilidade da API do Nó',
+ fixAPI: 'Verifique se o endereço de solicitação nas informações está correto; se estiver incorreto, será necessário modificar as informações do nó principal',
+ forceDelete: 'Excluir Forçadamente',
+ operateHelper: 'A operação {0} será realizada nos seguintes nós, deseja continuar?',
+ forceDeleteHelper:
+ 'Excluir forçadamente ignorará erros de exclusão do nó e removerá os metadados do banco de dados',
+ baseDir: 'Diretório de Instalação',
+ baseDirHelper: 'Quando o diretório de instalação está vazio, será instalado por padrão no diretório /opt',
+ nodePort: 'Porta do Nó',
+ },
+ customApp: {
+ name: 'Repositório de Aplicativos Personalizados',
+ appStoreType: 'Fonte do Pacote da App Store',
+ appStoreUrl: 'URL do Repositório',
+ local: 'Caminho Local',
+ remote: 'Link Remoto',
+ imagePrefix: 'Prefixo de Imagem',
+ imagePrefixHelper:
+ 'Função: Personalize o prefixo da imagem e modifique o campo de imagem no arquivo compose. Por exemplo, quando o prefixo da imagem é configurado como 1panel/custom, o campo de imagem do MaxKB mudará para 1panel/custom/maxkb:v1.10.0',
+ closeHelper: 'Cancelar o uso do repositório de aplicativos personalizados',
+ appStoreUrlHelper: 'Apenas formato .tar.gz é suportado',
+ postNode: 'Sincronizar para subnó',
+ postNodeHelper: 'Subnós herdarão e usarão a configuração acima por padrão',
+ nodes: 'Selecionar Nós',
+ },
alert: {
+ isAlert: 'Alerta',
+ alertCount: 'Contagem de Alertas',
+ clamHelper: 'Dispara alerta via SMS ao detectar arquivos infectados durante a varredura',
+ cronJobHelper: 'Dispara alerta via SMS ao falhar na execução de tarefas',
+ licenseHelper: 'A versão profissional suporta alertas via SMS',
+ alertCountHelper: 'Frequência máxima diária de alertas',
alert: 'Alerta por SMS',
logs: 'Registros de Alerta',
list: 'Lista de Alertas',
diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts
index df1c68951966..c9c18ea2afc0 100644
--- a/frontend/src/lang/modules/ru.ts
+++ b/frontend/src/lang/modules/ru.ts
@@ -2591,29 +2591,6 @@ const message = {
manage: 'Управление',
},
},
- customApp: {
- name: 'Пользовательское хранилище приложений',
- appStoreType: 'Источник пакета App Store',
- appStoreUrl: 'URL хранилища',
- local: 'Локальный путь',
- remote: 'Удаленная ссылка',
- imagePrefix: 'Префикс образа',
- imagePrefixHelper:
- 'Функция: Настройка префикса образа и изменение поля образа в файле compose. Например, если префикс образа установлен как 1panel/custom, поле образа для MaxKB изменится на 1panel/custom/maxkb:v1.10.0',
- closeHelper: 'Отменить использование пользовательского хранилища приложений',
- appStoreUrlHelper: 'Поддерживается только формат .tar.gz',
- postNode: 'Синхронизировать с подузлом',
- postNodeHelper: 'Подузлы будут наследовать и использовать указанную конфигурацию по умолчанию',
- nodes: 'Выбрать узлы',
- },
- alert: {
- isAlert: 'Оповещение',
- alertCount: 'Количество оповещений',
- clamHelper: 'Отправлять SMS-оповещение при обнаружении зараженных файлов',
- cronJobHelper: 'Отправлять SMS-оповещение при сбое выполнения задачи',
- licenseHelper: 'Профессиональная версия поддерживает SMS-оповещения',
- alertCountHelper: 'Максимальная дневная частота оповещений',
- },
xpack: {
expiresTrialAlert:
'Дружеское напоминание: ваша пробная версия Pro истечет через {0} дней, и все функции Pro станут недоступны. Пожалуйста, своевременно продлите или обновите до полной версии.',
@@ -2902,31 +2879,37 @@ const message = {
excludeUa: 'Исключить User-Agent',
},
tamper: {
- tamper: 'Целостность сайта',
+ tamper: 'Защита от подделки сайта',
+ ignoreTemplate: 'Исключить шаблон каталога',
+ protectTemplate: 'Защитить шаблон файла',
+ templateContent: 'Содержимое шаблона',
+ template: 'Шаблон',
tamperHelper1:
- 'Для веб-сайтов с типом развертывания в один клик рекомендуется включить функцию защиты от модификации для каталогов приложения. Если сайт работает с ошибками или резервное копирование/восстановление не удается, сначала отключите функцию защиты от модификации.',
+ 'Для сайтов с развертыванием в один клик рекомендуется включить функцию защиты от подделки каталога приложений; если сайт не работает должным образом или возникают проблемы с резервным копированием и восстановлением, сначала отключите функцию защиты от подделки;',
tamperHelper2:
- 'Будут ограничены операции чтения, записи, удаления, изменения прав доступа и владельца для защищённых файлов в каталогах, не включенных в исключения.',
- op: 'Операция',
- create: 'Создать',
- file: 'Файл',
- tamperPath: 'Защищённый каталог',
+ 'Будут ограничены операции чтения, записи, удаления, изменения прав и владельца защищенных файлов вне исключенных каталогов',
+ tamperPath: 'Защищаемый каталог',
tamperPathEdit: 'Изменить путь',
- log: 'Логи перехвата',
- totalProtect: 'Всего защит',
- todayProtect: 'Сегодняшние защиты',
+ log: 'Журнал перехвата',
+ totalProtect: 'Общая защита',
+ todayProtect: 'Защита сегодня',
addRule: 'Добавить правило',
ignore: 'Исключить каталог',
- ignoreHelper: 'Одна запись на строку, например: \ntmp\n./tmp',
- ignoreHelper1: 'Добавьте имена папок или конкретные пути для исключения из защиты.',
- ignoreHelper2: 'Используйте относительные пути, начинающиеся с ./, чтобы исключить конкретные папки.',
- protect: 'Защищённый файл',
- protectHelper: 'Одна запись на строку, например: \npng\n./test.css',
- protectHelper1: 'Укажите имена файлов, расширения или конкретные файлы для защиты.',
- protectHelper2: 'Используйте относительные пути, начинающиеся с ./, чтобы защитить конкретные файлы.',
+ ignoreHelper: 'По одному на строку, например: \ntmp\n./tmp',
+ ignoreTemplateHelper:
+ 'Добавьте имена папок, которые нужно игнорировать, разделяя их запятыми, например: tmp,cache',
+ templateRule: 'Длина 1-512, имя не должно содержать символы, такие как {0}',
+ ignoreHelper1: 'Добавьте имена папок или конкретные пути, которые нужно игнорировать',
+ ignoreHelper2: 'Чтобы игнорировать конкретную папку, используйте относительный путь, начинающийся с ./',
+ protect: 'Защитить файл',
+ protectHelper: 'По одному на строку, например: \npng\n./test.css',
+ protectTemplateHelper:
+ 'Добавьте имена файлов или расширения, которые нужно игнорировать, разделяя их запятыми, например: conf,.css',
+ protectHelper1: 'Можно указать имя файла, расширение или конкретный файл для защиты',
+ protectHelper2: 'Чтобы защитить конкретный файл, используйте относительный путь, начинающийся с ./',
enableHelper:
- 'Функция защиты от модификации для сайта {0} будет включена для повышения безопасности сайта. Вы хотите продолжить?',
- disableHelper: 'Функция защиты от модификации для сайта {0} будет отключена. Вы хотите продолжить?',
+ 'Скоро будет включена функция защиты от подделки для следующих сайтов для повышения безопасности сайта, продолжить?',
+ disableHelper: 'Скоро будет отключена функция защиты от подделки для следующих сайтов, продолжить?',
},
setting: {
setting: 'Настройки Панели',
@@ -3001,7 +2984,62 @@ const message = {
alertContent3:
'Предоставляет пользователям возможность настройки номеров телефонов, частоты и времени отправки уведомлений в день, что позволяет настраивать более удобные уведомления.',
},
+ node: {
+ node: 'Узел',
+ addr: 'Адрес',
+ memTotal: 'Общая память',
+ nodeManagement: 'Управление узлом',
+ addNode: 'Добавить узел',
+ connInfo: 'Информация о подключении',
+ nodeInfo: 'Информация об узле',
+ panelExist:
+ 'Обнаружено, что на этом узле уже существует служба 1panel. Добавление этого узла будет использовать оригинальный порт и каталог установки службы 1panel. Вы хотите продолжить?',
+ coreExist:
+ 'Обнаружено, что на этом узле уже существует служба 1panel-core. Невозможно добавить этот узел, пожалуйста, проверьте и попробуйте снова!',
+ agentExist: 'Обнаружено, что на этом узле уже существует служба 1panel-agent',
+ forceAdd: 'Принудительное добавление',
+ forceAddHelper: 'Принудительное добавление заменит службу 1panel-agent на этом узле',
+ reinstallHelper: 'Переустановить узел {0}, вы хотите продолжить?',
+ unhealthyCheck: 'Проверка на неисправности',
+ fixOperation: 'Решение проблемы',
+ checkName: 'Элемент проверки',
+ checkSSHConn: 'Проверка доступности SSH-соединения',
+ fixSSHConn: 'Вручную отредактируйте узел, чтобы подтвердить информацию о подключении',
+ checkConnInfo: 'Проверка информации о подключении агента',
+ checkStatus: 'Проверка доступности службы узла',
+ fixStatus: 'Проверка журналов узла',
+ checkAPI: 'Проверка доступности API узла',
+ fixAPI: 'Проверьте, правильный ли адрес запроса в информации; если он неправильный, необходимо изменить информацию о главном узле',
+ forceDelete: 'Принудительное удаление',
+ operateHelper: 'Будет выполнена операция {0} для следующих узлов, вы хотите продолжить?',
+ forceDeleteHelper:
+ 'Принудительное удаление проигнорирует ошибки удаления узла и удалит метаданные базы данных',
+ baseDir: 'Каталог установки',
+ baseDirHelper: 'Если каталог установки пуст, по умолчанию он будет установлен в каталоге /opt',
+ nodePort: 'Порт узла',
+ },
+ customApp: {
+ name: 'Пользовательское хранилище приложений',
+ appStoreType: 'Источник пакета App Store',
+ appStoreUrl: 'URL хранилища',
+ local: 'Локальный путь',
+ remote: 'Удаленная ссылка',
+ imagePrefix: 'Префикс образа',
+ imagePrefixHelper:
+ 'Функция: Настройка префикса образа и изменение поля образа в файле compose. Например, если префикс образа установлен как 1panel/custom, поле образа для MaxKB изменится на 1panel/custom/maxkb:v1.10.0',
+ closeHelper: 'Отменить использование пользовательского хранилища приложений',
+ appStoreUrlHelper: 'Поддерживается только формат .tar.gz',
+ postNode: 'Синхронизировать с подузлом',
+ postNodeHelper: 'Подузлы будут наследовать и использовать указанную конфигурацию по умолчанию',
+ nodes: 'Выбрать узлы',
+ },
alert: {
+ isAlert: 'Оповещение',
+ alertCount: 'Количество оповещений',
+ clamHelper: 'Отправлять SMS-оповещение при обнаружении зараженных файлов',
+ cronJobHelper: 'Отправлять SMS-оповещение при сбое выполнения задачи',
+ licenseHelper: 'Профессиональная версия поддерживает SMS-оповещения',
+ alertCountHelper: 'Максимальная дневная частота оповещений',
alert: 'SMS Уведомление',
logs: 'Журнал Уведомлений',
list: 'Список Уведомлений',
diff --git a/frontend/src/lang/modules/tw.ts b/frontend/src/lang/modules/tw.ts
index 5b1967861bbb..9fe51c55bae1 100644
--- a/frontend/src/lang/modules/tw.ts
+++ b/frontend/src/lang/modules/tw.ts
@@ -1208,29 +1208,6 @@ const message = {
taskName: '任務名稱',
taskRunning: '運行中',
},
- customApp: {
- name: '自訂應用倉庫',
- appStoreType: '應用商店包來源',
- appStoreUrl: '倉庫地址',
- local: '本機路徑',
- remote: '遠端連結',
- imagePrefix: '映像前綴',
- imagePrefixHelper:
- '作用:自訂映像前綴,修改 compose 檔案中的映像欄位,例如:當映像前綴設定為 1panel/custom 時,MaxKB 的映像欄位將變更為 1panel/custom/maxkb:v1.10.0',
- closeHelper: '是否取消使用自訂應用倉庫',
- appStoreUrlHelper: '僅支援 .tar.gz 格式',
- postNode: '同步至子節點',
- postNodeHelper: '子節點預設繼承並使用上述配置',
- nodes: '節點',
- },
- alert: {
- isAlert: '是否告警',
- alertCount: '告警次數',
- clamHelper: '掃描到感染檔案時觸發簡訊告警',
- cronJobHelper: '定時任務執行失敗時將觸發簡訊告警',
- licenseHelper: '專業版支持簡訊告警功能',
- alertCountHelper: '每日最大告警次數',
- },
file: {
dir: '文件夾',
upload: '上傳',
@@ -2810,28 +2787,32 @@ const message = {
},
tamper: {
tamper: '網站防篡改',
+ ignoreTemplate: '排除目錄模板',
+ protectTemplate: '保護文件模板',
+ templateContent: '模板內容',
+ template: '模板',
tamperHelper1:
- '一鍵部署類型的網站,建議啟用應用目錄防篡改功能;如出現網站無法正常使用或備份、復原失敗的情況,請先關閉防篡改功能;',
+ '一鍵部署類型的網站,建議啟用應用目錄防篡改功能;如出現網站無法正常使用或備份、恢復失敗的情況,請先關閉防篡改功能;',
tamperHelper2: '將限制非排除目錄下受保護文件的讀寫、刪除、權限和所有者修改操作',
- op: '操作',
- create: '建立',
- file: '文件',
tamperPath: '防護目錄',
tamperPathEdit: '修改路徑',
log: '攔截日誌',
totalProtect: '總防護',
todayProtect: '今日防護',
- addRule: '新增規則',
+ addRule: '添加規則',
ignore: '排除目錄',
ignoreHelper: '一行一個,例: \ntmp\n./tmp',
- ignoreHelper1: '新增要忽略的資料夾名或特定路徑',
- ignoreHelper2: '要忽略特定資料夾,請使用以 ./ 開頭的相對路徑',
+ ignoreTemplateHelper: '添加要忽略的文件夾名,以 , 分隔,例:tmp,cache',
+ templateRule: '長度1-512,名稱不能含有{0}等符號',
+ ignoreHelper1: '添加要忽略的文件夾名或特定路徑',
+ ignoreHelper2: '要忽略特定文件夾,請使用以 ./ 開頭的相對路徑',
protect: '保護文件',
protectHelper: '一行一個,例: \npng\n./test.css',
+ protectTemplateHelper: '添加要忽略的文件名或後綴名,以 , 分隔,例:conf,.css',
protectHelper1: '可指定文件名、後綴名或特定文件進行保護',
protectHelper2: '要保護特定文件,請使用以 ./ 開頭的相對路徑',
- enableHelper: '即將啟用 {0} 網站的防篡改功能,以提升網站安全性,是否繼續?',
- disableHelper: '即將關閉 {0} 網站的防篡改功能,是否繼續?',
+ enableHelper: '即將啟用下列網站的防篡改功能,以提升網站安全性,是否繼續?',
+ disableHelper: '即將關閉下列網站的防篡改功能,是否繼續?',
},
setting: {
setting: '界面設定',
@@ -2895,7 +2876,60 @@ const message = {
alertContent3:
'為用戶提供自訂手機號、每日推送次數、每日推送時間的配寘,方便用戶的設定來更加合理的進行推送告警。',
},
+ node: {
+ node: '節點',
+ addr: '地址',
+ memTotal: '記憶體總計',
+ nodeManagement: '節點管理',
+ addNode: '新增節點',
+ connInfo: '連接資訊',
+ nodeInfo: '節點資訊',
+ panelExist:
+ '已檢測到該節點上已存在 1panel 服務,新增該節點將沿用 1panel 原服務的埠號及安裝目錄,是否繼續?',
+ coreExist: '已檢測到該節點上已存在 1panel-core 服務,無法新增該節點,請檢查後再試!',
+ agentExist: '已檢測到該節點上已存在 1panel-agent 服務',
+ forceAdd: '強制新增',
+ forceAddHelper: '強制新增將強制替換該節點上的 1panel-agent 服務',
+ reinstallHelper: '重新安裝節點 {0},是否繼續?',
+ unhealthyCheck: '異常檢查',
+ fixOperation: '修復方案',
+ checkName: '檢查項目',
+ checkSSHConn: '檢查 SSH 連接可用性',
+ fixSSHConn: '手動編輯節點,確認連接資訊',
+ checkConnInfo: '檢查 Agent 連接資訊',
+ checkStatus: '檢查節點服務可用性',
+ fixStatus: '排查節點日誌',
+ checkAPI: '檢查節點 API 可用性',
+ fixAPI: '檢查資訊中請求地址是否正確,如不正確則需要修改主節點資訊',
+ forceDelete: '強制刪除',
+ operateHelper: '將對以下節點執行 {0} 操作,是否繼續?',
+ forceDeleteHelper: '強制刪除將忽略節點刪除錯誤並刪除資料庫元資料',
+ baseDir: '安裝目錄',
+ baseDirHelper: '安裝目錄為空時,預設安裝於 /opt 目錄下',
+ nodePort: '節點端口',
+ },
+ customApp: {
+ name: '自訂應用倉庫',
+ appStoreType: '應用商店包來源',
+ appStoreUrl: '倉庫地址',
+ local: '本機路徑',
+ remote: '遠端連結',
+ imagePrefix: '映像前綴',
+ imagePrefixHelper:
+ '作用:自訂映像前綴,修改 compose 檔案中的映像欄位,例如:當映像前綴設定為 1panel/custom 時,MaxKB 的映像欄位將變更為 1panel/custom/maxkb:v1.10.0',
+ closeHelper: '是否取消使用自訂應用倉庫',
+ appStoreUrlHelper: '僅支援 .tar.gz 格式',
+ postNode: '同步至子節點',
+ postNodeHelper: '子節點預設繼承並使用上述配置',
+ nodes: '節點',
+ },
alert: {
+ isAlert: '是否告警',
+ alertCount: '告警次數',
+ clamHelper: '掃描到感染檔案時觸發簡訊告警',
+ cronJobHelper: '定時任務執行失敗時將觸發簡訊告警',
+ licenseHelper: '專業版支持簡訊告警功能',
+ alertCountHelper: '每日最大告警次數',
alert: '簡訊告警',
logs: '告警日誌',
list: '告警清單',
diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts
index 29ba22db9b4e..2f9b240d4718 100644
--- a/frontend/src/lang/modules/zh.ts
+++ b/frontend/src/lang/modules/zh.ts
@@ -2504,14 +2504,6 @@ const message = {
manage: '管理',
},
},
- alert: {
- isAlert: '是否告警',
- alertCount: '告警次数',
- clamHelper: '扫描到感染文件时触发短信告警',
- cronJobHelper: '定时任务执行失败时将触发短信告警',
- licenseHelper: '专业版支持短信告警功能',
- alertCountHelper: '每日最大告警次数',
- },
xpack: {
expiresAlert: '温馨提醒:专业版试用将于 [{0}] 天后到期,届时将停止使用所有专业版功能。',
name: '专业版',
@@ -2914,6 +2906,15 @@ const message = {
monitorTitle4: '实时监控',
monitorContent4: '实时监控网站的请求信息,包括请求数,流量等',
+ alertTitle1: '短信告警',
+ alertContent1:
+ '当服务器资源使用异常、网站及证书过期、新版本更新、密码过期等情况发生时,通过短信告警通知用户,确保及时处理。',
+ alertTitle2: '告警日志',
+ alertContent2: '为用户提供查看告警日志的功能,方便追踪和分析历史告警事件。',
+ alertTitle3: '告警设置',
+ alertContent3:
+ '为用户提供自定义手机号、每日推送次数、每日推送时间的配置,方便用户的设置来更加合理的进行推送告警。',
+
nodeTitle1: '多节点管理',
nodeContent1: '管理不同的节点',
nodeTitle2: '批量升级',
@@ -2921,7 +2922,6 @@ const message = {
},
node: {
node: '节点',
- masterInfo: '主节点信息',
addr: '地址',
memTotal: '内存总计',
nodeManagement: '节点管理',
@@ -2968,6 +2968,12 @@ const message = {
nodes: '节点',
},
alert: {
+ isAlert: '是否告警',
+ alertCount: '告警次数',
+ clamHelper: '扫描到感染文件时触发短信告警',
+ cronJobHelper: '定时任务执行失败时将触发短信告警',
+ licenseHelper: '专业版支持短信告警功能',
+ alertCountHelper: '每日最大告警次数',
alert: '短信告警',
logs: '告警日志',
list: '告警列表',
diff --git a/frontend/src/layout/components/Sidebar/index.scss b/frontend/src/layout/components/Sidebar/index.scss
index b6f3a1beb42c..fd9a533c2c1b 100644
--- a/frontend/src/layout/components/Sidebar/index.scss
+++ b/frontend/src/layout/components/Sidebar/index.scss
@@ -51,6 +51,7 @@
.el-sub-menu__title {
background-color: var(--el-menu-item-bg-color);
box-shadow: 0 0 4px rgba(0, 94, 235, 0.1);
+ margin: 6px 0;
height: 46px;
border-radius: 4px;
&:hover {
diff --git a/frontend/src/views/cronjob/operate/index.vue b/frontend/src/views/cronjob/operate/index.vue
index ba69d1b52c4c..a9ad4402834d 100644
--- a/frontend/src/views/cronjob/operate/index.vue
+++ b/frontend/src/views/cronjob/operate/index.vue
@@ -461,13 +461,13 @@