diff --git a/frontend/package.json b/frontend/package.json index f1b04bdc..542a6745 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { "name": "nginx-ui-frontend-next", "private": true, - "version": "1.7.5", + "version": "1.7.6", "type": "commonjs", "scripts": { "dev": "vite", diff --git a/frontend/src/language/en/app.po b/frontend/src/language/en/app.po index 1eff1d90..c34f7315 100644 --- a/frontend/src/language/en/app.po +++ b/frontend/src/language/en/app.po @@ -17,8 +17,8 @@ msgstr "About" msgid "Access Logs" msgstr "" -#: src/views/cert/Cert.vue:78 src/views/config/config.ts:36 -#: src/views/domain/DomainList.vue:47 src/views/user/User.vue:43 +#: src/views/cert/Cert.vue:74 src/views/config/config.ts:36 +#: src/views/domain/DomainList.vue:48 src/views/user/User.vue:43 msgid "Action" msgstr "Action" @@ -85,11 +85,11 @@ msgstr "" msgid "Auto" msgstr "" -#: src/views/cert/Cert.vue:41 src/views/domain/cert/ChangeCert.vue:35 +#: src/views/cert/Cert.vue:37 src/views/domain/cert/ChangeCert.vue:35 msgid "Auto Cert" msgstr "" -#: src/views/cert/Cert.vue:8 +#: src/views/cert/Cert.vue:9 msgid "Auto cert is enabled, please do not modify this certification." msgstr "" @@ -97,6 +97,10 @@ msgstr "" msgid "Auto Refresh" msgstr "" +#: src/views/cert/Cert.vue:27 +msgid "Auto-Cert Log" +msgstr "" + #: src/views/domain/cert/IssueCert.vue:71 msgid "Auto-renewal disabled for %{name}" msgstr "Auto-renewal disabled for %{name}" @@ -152,7 +156,7 @@ msgstr "Certificate has expired" msgid "Certificate is valid" msgstr "Certificate is valid" -#: src/views/cert/Cert.vue:12 src/views/domain/cert/Cert.vue:35 +#: src/views/cert/Cert.vue:34 src/views/domain/cert/Cert.vue:35 msgid "Certificate Status" msgstr "Certificate Status" @@ -176,10 +180,15 @@ msgstr "" #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:34 #: src/views/domain/ngx_conf/LocationEditor.vue:35 #: src/views/domain/ngx_conf/LocationEditor.vue:52 -#: src/views/domain/ngx_conf/NgxConfigEditor.vue:180 +#: src/views/domain/ngx_conf/NgxConfigEditor.vue:181 msgid "Comments" msgstr "Comments" +#: src/views/cert/Cert.vue:32 +#, fuzzy +msgid "Config Name" +msgstr "Configuration Name" + #: src/views/domain/ngx_conf/ConfigTemplate.vue:61 #, fuzzy msgid "Config Templates" @@ -258,7 +267,13 @@ msgstr "Dashboard" msgid "Database (Optional, default: database)" msgstr "Database (Optional, default: database)" -#: src/components/StdDataDisplay/StdTable.vue:528 +#: src/components/StdDataDisplay/StdTable.vue:31 +#: src/components/StdDataDisplay/StdTable.vue:32 +#: src/components/StdDataDisplay/StdTable.vue:37 +#: src/components/StdDataDisplay/StdTable.vue:50 +#: src/components/StdDataDisplay/StdTable.vue:52 +#: src/components/StdDataDisplay/StdTable.vue:53 +#: src/components/StdDataDisplay/StdTable.vue:57 #: src/views/domain/DomainList.vue:19 src/views/domain/DomainList.vue:20 #: src/views/domain/DomainList.vue:21 src/views/domain/DomainList.vue:28 #: src/views/domain/DomainList.vue:32 @@ -269,7 +284,7 @@ msgstr "" msgid "Delete ID: %{id}" msgstr "" -#: src/views/domain/DomainList.vue:81 +#: src/views/domain/DomainList.vue:82 msgid "Delete site: %{site_name}" msgstr "" @@ -304,15 +319,15 @@ msgstr "Directives" msgid "Disable auto-renewal failed for %{name}" msgstr "Disable auto-renewal failed for %{name}" -#: src/views/cert/Cert.vue:51 src/views/domain/cert/ChangeCert.vue:45 +#: src/views/cert/Cert.vue:47 src/views/domain/cert/ChangeCert.vue:45 #: src/views/domain/DomainEdit.vue:10 src/views/domain/DomainEdit.vue:9 -#: src/views/domain/DomainList.vue:16 src/views/domain/DomainList.vue:34 +#: src/views/domain/DomainList.vue:16 src/views/domain/DomainList.vue:35 #: src/views/domain/DomainList.vue:7 src/views/domain/DomainList.vue:8 #: src/views/domain/DomainList.vue:9 msgid "Disabled" msgstr "Disabled" -#: src/views/domain/DomainEdit.vue:146 src/views/domain/DomainList.vue:69 +#: src/views/domain/DomainEdit.vue:146 src/views/domain/DomainList.vue:70 msgid "Disabled successfully" msgstr "Disabled successfully" @@ -320,14 +335,14 @@ msgstr "Disabled successfully" msgid "Disk IO" msgstr "Disk IO" -#: src/views/cert/Cert.vue:32 -msgid "Domain" -msgstr "" - #: src/views/domain/DomainAdd.vue:58 msgid "Domain Config Created Successfully" msgstr "Domain Config Created Successfully" +#: src/views/cert/Cert.vue:21 +msgid "Domains list is empty, try to reopen auto-cert for %{config}" +msgstr "" + #: src/language/constants.ts:26 msgid "Download latest release error" msgstr "" @@ -338,9 +353,15 @@ msgstr "" #: src/views/domain/DomainList.vue:14 src/views/domain/DomainList.vue:15 #: src/views/domain/DomainList.vue:16 src/views/domain/DomainList.vue:23 +#: src/views/domain/SiteDuplicate.vue:2 msgid "Duplicate" msgstr "" +#: src/views/domain/SiteDuplicate.vue:43 +#, fuzzy +msgid "Duplicated successfully" +msgstr "Saved successfully" + #: src/views/domain/DomainEdit.vue:4 src/views/domain/DomainEdit.vue:5 msgid "Edit %{n}" msgstr "Edit %{n}" @@ -369,16 +390,16 @@ msgstr "Enable failed" msgid "Enable TLS" msgstr "Enable TLS" -#: src/views/cert/Cert.vue:48 src/views/domain/cert/ChangeCert.vue:42 +#: src/views/cert/Cert.vue:44 src/views/domain/cert/ChangeCert.vue:42 #: src/views/domain/DomainEdit.vue:43 src/views/domain/DomainEdit.vue:6 #: src/views/domain/DomainEdit.vue:7 src/views/domain/DomainList.vue:10 #: src/views/domain/DomainList.vue:11 src/views/domain/DomainList.vue:12 -#: src/views/domain/DomainList.vue:19 src/views/domain/DomainList.vue:31 +#: src/views/domain/DomainList.vue:19 src/views/domain/DomainList.vue:32 msgid "Enabled" msgstr "Enabled" #: src/views/domain/DomainAdd.vue:47 src/views/domain/DomainEdit.vue:137 -#: src/views/domain/DomainList.vue:59 +#: src/views/domain/DomainList.vue:60 msgid "Enabled successfully" msgstr "Enabled successfully" @@ -410,11 +431,11 @@ msgstr "Expiration Date: %{date}" msgid "Export" msgstr "" -#: src/views/domain/DomainEdit.vue:149 src/views/domain/DomainList.vue:73 +#: src/views/domain/DomainEdit.vue:149 src/views/domain/DomainList.vue:74 msgid "Failed to disable %{msg}" msgstr "Failed to disable %{msg}" -#: src/views/domain/DomainEdit.vue:140 src/views/domain/DomainList.vue:63 +#: src/views/domain/DomainEdit.vue:140 src/views/domain/DomainList.vue:64 msgid "Failed to enable %{msg}" msgstr "Failed to enable %{msg}" @@ -609,7 +630,7 @@ msgstr "Single Directive" #: src/views/cert/Cert.vue:16 src/views/config/config.ts:9 #: src/views/domain/cert/ChangeCert.vue:19 src/views/domain/DomainEdit.vue:46 -#: src/views/domain/DomainList.vue:15 +#: src/views/domain/DomainList.vue:16 src/views/domain/SiteDuplicate.vue:5 msgid "Name" msgstr "Name" @@ -736,6 +757,12 @@ msgstr "" msgid "Performing core upgrade" msgstr "" +#: src/views/domain/SiteDuplicate.vue:28 +msgid "" +"Please input name, this will be used as the filename of the new " +"configuration!" +msgstr "" + #: src/views/other/Install.vue:36 msgid "Please input your E-mail!" msgstr "Please input your E-mail!" @@ -885,9 +912,8 @@ msgstr "Send" #: src/components/StdDataDisplay/StdTable.vue:168 #: src/components/StdDataDisplay/StdTable.vue:343 #: src/components/StdDataDisplay/StdTable.vue:463 -#: src/views/config/ConfigEdit.vue:32 src/views/domain/DomainEdit.vue:87 -#: src/views/domain/DomainList.vue:83 src/views/other/Install.vue:71 -#: src/views/preference/Preference.vue:41 +#: src/views/config/ConfigEdit.vue:32 src/views/domain/DomainList.vue:84 +#: src/views/other/Install.vue:71 src/views/preference/Preference.vue:41 msgid "Server error" msgstr "Server error" @@ -917,27 +943,27 @@ msgstr "Sites List" msgid "Sites List" msgstr "Sites List" -#: src/views/cert/Cert.vue:65 +#: src/views/cert/Cert.vue:61 #, fuzzy msgid "SSL Certificate Key Path" msgstr "Certificate Status" -#: src/views/cert/Cert.vue:58 +#: src/views/cert/Cert.vue:54 #, fuzzy msgid "SSL Certificate Path" msgstr "Certificate Status" -#: src/views/cert/Cert.vue:19 +#: src/views/cert/Cert.vue:41 #, fuzzy msgid "SSL Certification Content" msgstr "Certificate Status" -#: src/views/cert/Cert.vue:22 +#: src/views/cert/Cert.vue:44 #, fuzzy msgid "SSL Certification Key Content" msgstr "Certificate Status" -#: src/views/domain/DomainList.vue:24 +#: src/views/domain/DomainList.vue:25 msgid "Status" msgstr "Status" @@ -1003,12 +1029,16 @@ msgstr "" msgid "Theme" msgstr "" +#: src/views/cert/Cert.vue:15 +msgid "This auto-cert item is invalid, please remove it." +msgstr "" + #: src/views/config/config.ts:14 msgid "Type" msgstr "" -#: src/views/cert/Cert.vue:72 src/views/config/config.ts:29 -#: src/views/domain/DomainList.vue:41 src/views/user/User.vue:37 +#: src/views/cert/Cert.vue:68 src/views/config/config.ts:29 +#: src/views/domain/DomainList.vue:42 src/views/user/User.vue:37 msgid "Updated at" msgstr "Updated at" diff --git a/frontend/src/language/messages.pot b/frontend/src/language/messages.pot index 63fecf1b..7d25bcac 100644 --- a/frontend/src/language/messages.pot +++ b/frontend/src/language/messages.pot @@ -11,9 +11,9 @@ msgstr "" msgid "Access Logs" msgstr "" -#: src/views/cert/Cert.vue:78 +#: src/views/cert/Cert.vue:74 #: src/views/config/config.ts:36 -#: src/views/domain/DomainList.vue:47 +#: src/views/domain/DomainList.vue:48 #: src/views/user/User.vue:43 msgid "Action" msgstr "" @@ -83,12 +83,12 @@ msgstr "" msgid "Auto" msgstr "" -#: src/views/cert/Cert.vue:41 +#: src/views/cert/Cert.vue:37 #: src/views/domain/cert/ChangeCert.vue:35 msgid "Auto Cert" msgstr "" -#: src/views/cert/Cert.vue:8 +#: src/views/cert/Cert.vue:9 msgid "Auto cert is enabled, please do not modify this certification." msgstr "" @@ -96,6 +96,10 @@ msgstr "" msgid "Auto Refresh" msgstr "" +#: src/views/cert/Cert.vue:27 +msgid "Auto-Cert Log" +msgstr "" + #: src/views/domain/cert/IssueCert.vue:71 msgid "Auto-renewal disabled for %{name}" msgstr "" @@ -153,7 +157,7 @@ msgstr "" msgid "Certificate is valid" msgstr "" -#: src/views/cert/Cert.vue:12 +#: src/views/cert/Cert.vue:34 #: src/views/domain/cert/Cert.vue:35 msgid "Certificate Status" msgstr "" @@ -179,10 +183,14 @@ msgstr "" #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:34 #: src/views/domain/ngx_conf/LocationEditor.vue:35 #: src/views/domain/ngx_conf/LocationEditor.vue:52 -#: src/views/domain/ngx_conf/NgxConfigEditor.vue:180 +#: src/views/domain/ngx_conf/NgxConfigEditor.vue:181 msgid "Comments" msgstr "" +#: src/views/cert/Cert.vue:32 +msgid "Config Name" +msgstr "" + #: src/views/domain/ngx_conf/ConfigTemplate.vue:61 msgid "Config Templates" msgstr "" @@ -263,7 +271,13 @@ msgstr "" msgid "Database (Optional, default: database)" msgstr "" -#: src/components/StdDataDisplay/StdTable.vue:528 +#: src/components/StdDataDisplay/StdTable.vue:31 +#: src/components/StdDataDisplay/StdTable.vue:32 +#: src/components/StdDataDisplay/StdTable.vue:37 +#: src/components/StdDataDisplay/StdTable.vue:50 +#: src/components/StdDataDisplay/StdTable.vue:52 +#: src/components/StdDataDisplay/StdTable.vue:53 +#: src/components/StdDataDisplay/StdTable.vue:57 #: src/views/domain/DomainList.vue:19 #: src/views/domain/DomainList.vue:20 #: src/views/domain/DomainList.vue:21 @@ -276,7 +290,7 @@ msgstr "" msgid "Delete ID: %{id}" msgstr "" -#: src/views/domain/DomainList.vue:81 +#: src/views/domain/DomainList.vue:82 msgid "Delete site: %{site_name}" msgstr "" @@ -312,12 +326,12 @@ msgstr "" msgid "Disable auto-renewal failed for %{name}" msgstr "" -#: src/views/cert/Cert.vue:51 +#: src/views/cert/Cert.vue:47 #: src/views/domain/cert/ChangeCert.vue:45 #: src/views/domain/DomainEdit.vue:10 #: src/views/domain/DomainEdit.vue:9 #: src/views/domain/DomainList.vue:16 -#: src/views/domain/DomainList.vue:34 +#: src/views/domain/DomainList.vue:35 #: src/views/domain/DomainList.vue:7 #: src/views/domain/DomainList.vue:8 #: src/views/domain/DomainList.vue:9 @@ -325,7 +339,7 @@ msgid "Disabled" msgstr "" #: src/views/domain/DomainEdit.vue:146 -#: src/views/domain/DomainList.vue:69 +#: src/views/domain/DomainList.vue:70 msgid "Disabled successfully" msgstr "" @@ -333,14 +347,14 @@ msgstr "" msgid "Disk IO" msgstr "" -#: src/views/cert/Cert.vue:32 -msgid "Domain" -msgstr "" - #: src/views/domain/DomainAdd.vue:58 msgid "Domain Config Created Successfully" msgstr "" +#: src/views/cert/Cert.vue:21 +msgid "Domains list is empty, try to reopen auto-cert for %{config}" +msgstr "" + #: src/language/constants.ts:26 msgid "Download latest release error" msgstr "" @@ -353,9 +367,14 @@ msgstr "" #: src/views/domain/DomainList.vue:15 #: src/views/domain/DomainList.vue:16 #: src/views/domain/DomainList.vue:23 +#: src/views/domain/SiteDuplicate.vue:2 msgid "Duplicate" msgstr "" +#: src/views/domain/SiteDuplicate.vue:43 +msgid "Duplicated successfully" +msgstr "" + #: src/views/domain/DomainEdit.vue:4 #: src/views/domain/DomainEdit.vue:5 msgid "Edit %{n}" @@ -386,7 +405,7 @@ msgstr "" msgid "Enable TLS" msgstr "" -#: src/views/cert/Cert.vue:48 +#: src/views/cert/Cert.vue:44 #: src/views/domain/cert/ChangeCert.vue:42 #: src/views/domain/DomainEdit.vue:43 #: src/views/domain/DomainEdit.vue:6 @@ -395,13 +414,13 @@ msgstr "" #: src/views/domain/DomainList.vue:11 #: src/views/domain/DomainList.vue:12 #: src/views/domain/DomainList.vue:19 -#: src/views/domain/DomainList.vue:31 +#: src/views/domain/DomainList.vue:32 msgid "Enabled" msgstr "" #: src/views/domain/DomainAdd.vue:47 #: src/views/domain/DomainEdit.vue:137 -#: src/views/domain/DomainList.vue:59 +#: src/views/domain/DomainList.vue:60 msgid "Enabled successfully" msgstr "" @@ -437,12 +456,12 @@ msgid "Export" msgstr "" #: src/views/domain/DomainEdit.vue:149 -#: src/views/domain/DomainList.vue:73 +#: src/views/domain/DomainList.vue:74 msgid "Failed to disable %{msg}" msgstr "" #: src/views/domain/DomainEdit.vue:140 -#: src/views/domain/DomainList.vue:63 +#: src/views/domain/DomainList.vue:64 msgid "Failed to enable %{msg}" msgstr "" @@ -636,7 +655,8 @@ msgstr "" #: src/views/config/config.ts:9 #: src/views/domain/cert/ChangeCert.vue:19 #: src/views/domain/DomainEdit.vue:46 -#: src/views/domain/DomainList.vue:15 +#: src/views/domain/DomainList.vue:16 +#: src/views/domain/SiteDuplicate.vue:5 msgid "Name" msgstr "" @@ -765,6 +785,10 @@ msgstr "" msgid "Performing core upgrade" msgstr "" +#: src/views/domain/SiteDuplicate.vue:28 +msgid "Please input name, this will be used as the filename of the new configuration!" +msgstr "" + #: src/views/other/Install.vue:36 msgid "Please input your E-mail!" msgstr "" @@ -924,8 +948,7 @@ msgstr "" #: src/components/StdDataDisplay/StdTable.vue:343 #: src/components/StdDataDisplay/StdTable.vue:463 #: src/views/config/ConfigEdit.vue:32 -#: src/views/domain/DomainEdit.vue:87 -#: src/views/domain/DomainList.vue:83 +#: src/views/domain/DomainList.vue:84 #: src/views/other/Install.vue:71 #: src/views/preference/Preference.vue:41 msgid "Server error" @@ -957,23 +980,23 @@ msgstr "" msgid "Sites List" msgstr "" -#: src/views/cert/Cert.vue:65 +#: src/views/cert/Cert.vue:61 msgid "SSL Certificate Key Path" msgstr "" -#: src/views/cert/Cert.vue:58 +#: src/views/cert/Cert.vue:54 msgid "SSL Certificate Path" msgstr "" -#: src/views/cert/Cert.vue:19 +#: src/views/cert/Cert.vue:41 msgid "SSL Certification Content" msgstr "" -#: src/views/cert/Cert.vue:22 +#: src/views/cert/Cert.vue:44 msgid "SSL Certification Key Content" msgstr "" -#: src/views/domain/DomainList.vue:24 +#: src/views/domain/DomainList.vue:25 msgid "Status" msgstr "" @@ -1030,13 +1053,17 @@ msgstr "" msgid "Theme" msgstr "" +#: src/views/cert/Cert.vue:15 +msgid "This auto-cert item is invalid, please remove it." +msgstr "" + #: src/views/config/config.ts:14 msgid "Type" msgstr "" -#: src/views/cert/Cert.vue:72 +#: src/views/cert/Cert.vue:68 #: src/views/config/config.ts:29 -#: src/views/domain/DomainList.vue:41 +#: src/views/domain/DomainList.vue:42 #: src/views/user/User.vue:37 msgid "Updated at" msgstr "" diff --git a/frontend/src/language/translations.json b/frontend/src/language/translations.json index 4bcc3df6..afca2865 100644 --- a/frontend/src/language/translations.json +++ b/frontend/src/language/translations.json @@ -1 +1 @@ -{"en":{"About":"About","Action":"Action","Add Directive Below":"Add Directive Below","Add Location":"Add Location","Add Site":"Add Site","Advance Mode":"Advance Mode","Are you sure you want to remove this directive?":"Are you sure you want to remove this directive?","Auto-renewal disabled for %{name}":"Auto-renewal disabled for %{name}","Auto-renewal enabled for %{name}":"Auto-renewal enabled for %{name}","Back":"Back","Base information":"Base information","Basic Mode":"Basic Mode","Build with":"Build with","Cancel":"Cancel","Certificate has expired":"Certificate has expired","Certificate is valid":"Certificate is valid","Certificate Status":"Certificate Status","Comments":"Comments","Configuration Name":"Configuration Name","Configurations":"Configurations","Configure SSL":"Configure SSL","Content":"Content","CPU Status":"CPU Status","CPU:":"CPU:","Create Another":"Create Another","Created at":"Created at","Dashboard":"Dashboard","Database (Optional, default: database)":"Database (Optional, default: database)","Development Mode":"Development Mode","Directive":"Directive","Directives":"Directives","Disable auto-renewal failed for %{name}":"Disable auto-renewal failed for %{name}","Disabled":"Disabled","Disabled successfully":"Disabled successfully","Disk IO":"Disk IO","Domain Config Created Successfully":"Domain Config Created Successfully","Edit %{n}":"Edit %{n}","Edit Configuration":"Edit Configuration","Edit Site":"Edit Site","Email (*)":"Email (*)","Enable auto-renewal failed for %{name}":"Enable auto-renewal failed for %{name}","Enable failed":"Enable failed","Enable TLS":"Enable TLS","Enabled":"Enabled","Enabled successfully":"Enabled successfully","Encrypt website with Let's Encrypt":"Encrypt website with Let's Encrypt","Expiration Date: %{date}":"Expiration Date: %{date}","Failed to disable %{msg}":"Failed to disable %{msg}","Failed to enable %{msg}":"Failed to enable %{msg}","File Not Found":"File Not Found","Finished":"Finished","Getting the certificate, please wait...":"Getting the certificate, please wait...","Home":"Home","Install":"Install","Intermediate Certification Authorities: %{issuer}":"Intermediate Certification Authorities: %{issuer}","Leave blank for no change":"Leave blank for no change","Load Averages:":"Load Averages:","Location":"Location","Locations":"Locations","Login":"Login","Login successful":"Login successful","Logout successful":"Logout successful","Make sure you have configured a reverse proxy for .well-known directory to HTTPChallengePort (default: 9180) before getting the certificate.":"Make sure you have configured a reverse proxy for .well-known directory to HTTPChallengePort (default: 9180) before getting the certificate.","Manage Configs":"Manage Configs","Manage Sites":"Manage Sites","Manage Users":"Manage Users","Memory":"Memory","Memory and Storage":"Memory and Storage","Modify Config":"Modify Config","Name":"Name","Network":"Network","Network Statistics":"Network Statistics","Network Total Receive":"Network Total Receive","Network Total Send":"Network Total Send","Next":"Next","No":"No","Not Found":"Not Found","Not Valid Before: %{date}":"Not Valid Before: %{date}","OS:":"OS:","Params":"Params","Password":"Password","Password (*)":"Password (*)","Path":"Path","Please input your E-mail!":"Please input your E-mail!","Please input your password!":"Please input your password!","Please input your username!":"Please input your username!","Project Team":"Project Team","Reads":"Reads","Receive":"Receive","Save":"Save","Save Directive":"Save Directive","Save error %{msg}":"Save error %{msg}","Saved successfully":"Saved successfully","Send":"Send","Server error":"Server error","Server Info":"Server Info","server_name not found in directives":"server_name not found in directives","server_name parameter is required":"server_name parameter is required","Single Directive":"Single Directive","Sites List":"Sites List","Status":"Status","Storage":"Storage","Subject Name: %{name}":"Subject Name: %{name}","Swap":"Swap","Terminal":"Terminal","The certificate for the domain will be checked every hour, and will be renewed if it has been more than 1 month since it was last issued.":"The certificate for the domain will be checked every hour, and will be renewed if it has been more than 1 month since it was last issued.","The filename cannot contain the following characters: %{c}":"The filename cannot contain the following characters: %{c}","Updated at":"Updated at","Uptime:":"Uptime:","Username":"Username","Username (*)":"Username (*)","Warning":"Warning","Writes":"Writes","Yes":"Yes","License":{"Project":"License"}},"zh_TW":{"About":"關於","Access Logs":"訪問日誌","Action":"操作","Add":"新增","Add Directive Below":"在下面新增指令","Add Location":"新增 Location","Add Site":"新增站點","Advance Mode":"高階模式","Arch":"架搆","Are you sure you want to delete?":"你確定你要刪除?","Are you sure you want to remove this directive?":"您確定要刪除這條指令?","Are you sure you want to remove this location?":"您確定要刪除此 Location 嗎?","Author":"作者","Auto":"自動","Auto Cert":"自動更新","Auto cert is enabled, please do not modify this certification.":"自動證書已啟用,請不要修改此證書。","Auto Refresh":"自動刷新","Auto-renewal disabled for %{name}":"已關閉 %{name} 自動續簽","Auto-renewal enabled for %{name}":"已啟用 %{name} 自動續簽","Back":"返回","Back Home":"回到首頁","Base information":"基本訊息","Basic Mode":"基本模式","Batch Modify":"批量修改","Build with":"構建基於","Cancel":"取消","Certificate has expired":"此憑證已過期","Certificate is valid":"此憑證有效","Certificate Status":"憑證狀態","Certification":"證照","Change Certificate":"更改證書","Check again":"再次檢查","Comments":"註釋","Config Templates":"配置模板","Configuration file is test successful":"配置文件測試成功","Configuration Name":"配置名稱","Configurations":"配置","Configure SSL":"配置 SSL","Content":"內容","Core Upgrade":"核心升級","CPU Status":"中央處理器狀態","CPU:":"中央處理器:","Create Another":"再創建一個","Created at":"建立時間","Creating client facilitates communication with the CA server":"創建客戶端方便與CA服務器通信","Current Version":"當前版本","Custom":"自訂","Dark":"深色","Dashboard":"儀表盤","Database (Optional, default: database)":"資料庫 (可選,預設: database)","Delete":"刪除","Delete ID: %{id}":"刪除 ID: %{id}","Delete site: %{site_name}":"刪除站點:%{site_name}","Description":"敘述","Development Mode":"開發模式","Dir":"目錄","Directive":"指令","Directives":"指令","Disable auto-renewal failed for %{name}":"關閉 %{name} 自動續簽失敗","Disabled":"禁用","Disabled successfully":"禁用成功","Disk IO":"磁碟 IO","Domain":"網域","Domain Config Created Successfully":"域名配置文件創建成功","Download latest release error":"下載最新版本錯誤","Downloading latest release":"正在下載最新版本","Duplicate":"複製","Edit %{n}":"編輯 %{n}","Edit Configuration":"編輯配置","Edit Site":"編輯站點","Email (*)":"郵箱 (*)","Enable auto-renewal failed for %{name}":"啟用 %{name} 自動續簽失敗","Enable failed":"啟用失敗","Enable TLS":"啟用 TLS","Enabled":"啟用","Enabled successfully":"啟用成功","Encrypt website with Let's Encrypt":"用 Let's Encrypt 對網站進行加密","Error":"錯誤","Error Logs":"錯誤日志","Executable Path":"可執行檔路徑","Expiration Date: %{date}":"過期時間: %{date}","Export":"導出","Failed to disable %{msg}":"禁用失敗 %{msg}","Failed to enable %{msg}":"啟用失敗 %{msg}","Failed to get certificate information":"獲取證書信息失敗","Failed to save, syntax error(s) was detected in the configuration.":"保存失敗,在配置中檢測到語法錯誤。","File":"文件","File exists":"文件已存在","File Not Found":"未找到檔案","Filter":"篩選","Finished":"完成","Format Code":"格式化代碼","Format error %{msg}":"格式錯誤 %{msg}","Format successfully":"格式化成功","Generate":"生成","Generating private key for registering account":"生成註冊賬號私鑰","Getting the certificate, please wait...":"正在獲取憑證,請稍等...","Home":"首頁","HTTP Challenge Port":"HTTP 挑戰端口","HTTP Port":"HTTP 監聽埠","Initial core upgrader error":"初始核心升級程序錯誤","Initialing core upgrader":"正在初始化核心升級程序","Inspect Configurations":"檢查配置","Install":"安裝","Install successfully":"安裝成功","Intermediate Certification Authorities: %{issuer}":"中級憑證頒發機構: %{issuer}","Issued certificate successfully":"頒發證書成功","Jwt Secret":"Jwt Secret","Last checked at":"上次檢查時間","Leave blank for no change":"留空表示不修改","Light":"淺色","Load Averages:":"系統負載:","Location":"Location","Locations":"Locations","Login":"登入","Login successful":"登入成功","Logout successful":"登出成功","Make sure you have configured a reverse proxy for .well-known directory to HTTPChallengePort (default: 9180) before getting the certificate.":"在獲取證書前,請確保配置檔案中已將 .well-known 目錄反向代理到 HTTPChallengePort (預設: 9180)","Manage Configs":"配置管理","Manage Sites":"網站管理","Manage Users":"使用者管理","Memory":"記憶體","Memory and Storage":"記憶體和存儲","Modify":"修改","Modify Config":"修改配置","Multi-line Directive":"多行指令","Name":"名稱","Network":"網路","Network Statistics":"網路統計","Network Total Receive":"下載流量","Network Total Send":"上傳流量","New version released":"新版本發布","Next":"下一步","Nginx Access Log Path":"Nginx 訪問日誌路徑","Nginx Configuration Parse Error":"Nginx 配置解析錯誤","Nginx Control":"Nginx 控件","Nginx Error Log Path":"Nginx 錯誤日誌路徑","Nginx Log":"Nginx 日誌","Nginx reloaded successfully":"Nginx 重載成功","Nginx restarted successfully":"Nginx 重啟成功","No":"取消","Not Found":"找不到頁面","Not Valid Before: %{date}":"此前無效: %{date}","Note":"備註","Obtaining certificate":"正在獲取證書","OK":"確定","OS":"作業系統","OS:":"作業系統:","Params":"參數","Password":"密碼","Password (*)":"密碼 (*)","Path":"路徑","Perform core upgrade error":"執行核心升級錯誤","Performing core upgrade":"正在執行核心升級","Please input your E-mail!":"請輸入您的郵箱!","Please input your password!":"請輸入您的密碼!","Please input your username!":"請輸入您的使用者名稱!","Preference":"設定","Preparing lego configurations":"準備 Lego 配置","Prohibit changing root password in demo":"禁止在demo中修改root密碼","Prohibit deleting the default user":"禁止刪除默認用戶","Project Team":"專案團隊","Reads":"讀","Receive":"下載","Registering user":"註冊用戶","Reinstall":"安裝","Release Note":"發行公告","Reload":"重新載入","Reloading":"换弹中","Reloading nginx":"重载 Nginx","Reset":"重設","Restart":"重新啟動","Restarting":"重啟","Run Mode":"高階模式","Running":"運行中","Save":"儲存","Save Directive":"儲存指令","Save error %{msg}":"儲存錯誤 %{msg}","Save successfully":"保存成功","Save Successfully":"保存成功","Saved successfully":"儲存成功","Selector":"選擇器","Send":"上傳","Server error":"伺服器錯誤","Server Info":"伺服器資訊","server_name not found in directives":"未在指令集合中找到 server_name","server_name parameter is required":"必須為 server_name 指令指明參數","Single Directive":"單行指令","Site Logs":"網站日誌","Sites List":"站點列表","SSL Certificate Key Path":"SSL 證書密鑰路徑","SSL Certificate Path":"SSL證書路徑","SSL Certification Content":"SSL認證內容","SSL Certification Key Content":"SSL 證書密鑰內容","Status":"狀態","Stopped":"已停止","Storage":"儲存","Subject Name: %{name}":"主體名稱: %{name}","Swap":"交換空間","System":"系統","Table":"表格","Terminal":"終端","Terminal Start Command":"終端啟動命令","The certificate for the domain will be checked every hour, and will be renewed if it has been more than 1 month since it was last issued.":"系統將會每小時檢測一次該域名證書,若距離上次簽發已超過1個月,則將自動續簽。
如果您之前沒有證書,請先點選「從 Let's Encrypt 獲取證書」。","The filename cannot contain the following characters: %{c}":"檔名不能包含以下字元: %{c}","The server_name in the current configuration must be the domain name you need to get the certificate.":"注意:當前配置中的 server_name 必須為需要申請證書的域名。","The username or password is incorrect":"用戶名或密碼不正確","Theme":"外觀樣式","Type":"類型","Updated at":"修改時間","Updated successfully":"已成功更新","Upgrade":"升級","Upgraded successfully":"升級成功","Upgrading Nginx UI, please wait...":"正在升級 Nginx UI,請稍候...","Uptime:":"執行時間:","Username":"使用者名稱","Username (*)":"使用者名稱 (*)","Using HTTP01 challenge provider":"使用 HTTP01 挑戰提供者","View":"查看","Warning":"警告","Writes":"寫","Writing certificate private key to disk":"將證書私鑰寫入磁盤","Writing certificate to disk":"將證書寫入磁盤","Yes":"是的","You are using the latest version":"您使用的是最新版本","You can check Nginx UI upgrade at this page.":"您可以在此頁面查看 Nginx UI 升級。","License":{"Project":"開源軟體授權條款"}},"zh_CN":{"About":"关于","Access Logs":"访问日志","Action":"操作","Add":"添加","Add Directive Below":"在下面添加指令","Add Location":"添加 Location","Add Site":"添加站点","Advance Mode":"高级模式","Arch":"架构","Are you sure you want to delete?":"您确定要删除吗?","Are you sure you want to remove this directive?":"您确定要删除这条指令?","Are you sure you want to remove this location?":"您确定要删除这个 Location?","Author":"作者","Auto":"自动","Auto Cert":"自动更新","Auto cert is enabled, please do not modify this certification.":"自动更新已启用,请勿修改此证书配置。","Auto Refresh":"自动刷新","Auto-renewal disabled for %{name}":"成功关闭 %{name} 自动续签","Auto-renewal enabled for %{name}":"成功启用 %{name} 自动续签","Back":"返回","Back Home":"返回首页","Base information":"基本信息","Basic Mode":"基本模式","Batch Modify":"批量修改","Build with":"构建基于","Cancel":"取消","Certificate has expired":"此证书已过期","Certificate is valid":"此证书有效","Certificate Status":"证书状态","Certification":"证书","Change Certificate":"更改证书","Check again":"重新检查","Comments":"注释","Config Templates":"配置","Configuration file is test successful":"配置文件测试成功","Configuration Name":"配置名称","Configurations":"配置","Configure SSL":"配置 SSL","Content":"内容","Core Upgrade":"核心升级","CPU Status":"CPU 状态","CPU:":"CPU:","Create Another":"再创建一个","Created at":"创建时间","Creating client facilitates communication with the CA server":"正在创建客户端用于与 CA 服务器通信","Current Version":"当前版本","Custom":"自定义","Dark":"深色","Dashboard":"仪表盘","Database (Optional, default: database)":"数据库 (可选,默认: database)","Delete":"删除","Delete ID: %{id}":"删除 ID: %{id}","Delete site: %{site_name}":"删除站点: %{site_name}","Description":"描述","Development Mode":"开发模式","Dir":"目录","Directive":"指令","Directives":"指令","Disable auto-renewal failed for %{name}":"关闭 %{name} 自动续签失败","Disabled":"禁用","Disabled successfully":"禁用成功","Disk IO":"磁盘 IO","Domain":"域名","Domain Config Created Successfully":"域名配置文件创建成功","Download latest release error":"下载最新版本错误","Downloading latest release":"下载最新版本","Duplicate":"复制","Edit %{n}":"编辑 %{n}","Edit Configuration":"编辑配置","Edit Site":"编辑站点","Email (*)":"邮箱 (*)","Enable auto-renewal failed for %{name}":"启用 %{name} 自动续签失败","Enable failed":"启用失败","Enable TLS":"启用 TLS","Enabled":"启用","Enabled successfully":"启用成功","Encrypt website with Let's Encrypt":"用 Let's Encrypt 对网站进行加密","Error":"错误","Error Logs":"错误日志","Executable Path":"可执行文件路径","Expiration Date: %{date}":"过期时间: %{date}","Export":"导出","Failed to disable %{msg}":"禁用失败 %{msg}","Failed to enable %{msg}":"启用失败 %{msg}","Failed to get certificate information":"获取证书信息失败","Failed to save, syntax error(s) was detected in the configuration.":"保存失败,在配置中检测到语法错误。","File":"文件","File exists":"文件已存在","File Not Found":"未找到文件","Filter":"过滤","Finished":"完成","Format Code":"代码格式化","Format error %{msg}":"保存错误 %{msg}","Format successfully":"格式化成功","Generate":"生成","Generating private key for registering account":"正在生成私钥用于注册账户","Getting the certificate, please wait...":"正在获取证书,请稍等...","Home":"首页","HTTP Challenge Port":"HTTP Challenge 监听端口","HTTP Port":"HTTP 监听端口","Initial core upgrader error":"初始化核心升级程序错误","Initialing core upgrader":"初始化核心升级器","Inspect Configurations":"检查配置","Install":"安装","Install successfully":"安装成功","Intermediate Certification Authorities: %{issuer}":"中级证书颁发机构: %{issuer}","Issued certificate successfully":"证书申请成功","Jwt Secret":"Jwt 密钥","Last checked at":"最后检查时间","Leave blank for no change":"留空表示不修改","Light":"浅色","Load Averages:":"系统负载:","Location":"Location","Locations":"Locations","Login":"登录","Login successful":"登录成功","Logout successful":"登出成功","Make sure you have configured a reverse proxy for .well-known directory to HTTPChallengePort (default: 9180) before getting the certificate.":"在获取签发证书前,请确保配置文件中已将 .well-known 目录反向代理到 HTTPChallengePort (默认: 9180)","Manage Configs":"配置管理","Manage Sites":"网站管理","Manage Users":"用户管理","Memory":"内存","Memory and Storage":"内存与存储","Modify":"修改","Modify Config":"修改配置文件","Multi-line Directive":"单行指令","Name":"名称","Network":"网络","Network Statistics":"流量统计","Network Total Receive":"下载流量","Network Total Send":"上传流量","New version released":"新版本发布","Next":"下一步","Nginx Access Log Path":"Nginx 访问日志路径","Nginx Configuration Parse Error":"Nginx 配置解析错误","Nginx Control":"控制 Nginx","Nginx Error Log Path":"Nginx 错误日志路径","Nginx Log":"Nginx 日志","Nginx reloaded successfully":"Nginx 重载成功","Nginx restarted successfully":"Nginx 重启成功","No":"取消","Not Found":"找不到页面","Not Valid Before: %{date}":"此前无效: %{date}","Note":"注意","Obtaining certificate":"正在获取证书","OK":"确定","OS":"OS","OS:":"OS:","Params":"参数","Password":"密码","Password (*)":"密码 (*)","Path":"路径","Perform core upgrade error":"执行核心升级错误","Performing core upgrade":"正在进行核心升级","Please input your E-mail!":"请输入您的邮箱!","Please input your password!":"请输入您的密码!","Please input your username!":"请输入您的用户名!","Preference":"偏好设置","Preparing lego configurations":"正在准备 Lego 的配置","Prohibit changing root password in demo":"禁止在演示模式下修改 root 账户的密码","Prohibit deleting the default user":"禁止删除默认用户","Project Team":"项目团队","Reads":"读","Receive":"下载","Registering user":"正在注册用户","Reinstall":"重新安装","Release Note":"发行日志","Reload":"重载","Reloading":"重载中","Reloading nginx":"正在重载 Nginx","Reset":"重置","Restart":"重启","Restarting":"重启中","Run Mode":"运行模式","Running":"运行中","Save":"保存","Save Directive":"保存指令","Save error %{msg}":"保存错误 %{msg}","Save successfully":"保存成功","Save Successfully":"保存成功","Saved successfully":"保存成功","Selector":"选择器","Send":"上传","Server error":"服务器错误","Server Info":"服务器信息","server_name not found in directives":"未在指令集合中找到 server_name","server_name parameter is required":"必须为 server_name 指令指明参数","Single Directive":"单行指令","Site Logs":"站点列表","Sites List":"站点列表","SSL Certificate Key Path":"SSL证书密钥路径","SSL Certificate Path":"SSL证书路径","SSL Certification Content":"SSL证书内容","SSL Certification Key Content":"SSL证书密钥内容","Status":"状态","Stopped":"已停止","Storage":"存储","Subject Name: %{name}":"主体名称: %{name}","Swap":"Swap","System":"系统","Table":"列表","Terminal":"终端","Terminal Start Command":"终端启动命令","The certificate for the domain will be checked every hour, and will be renewed if it has been more than 1 month since it was last issued.":"系统将会每小时检测一次该域名证书,若距离上次签发已超过1个月,则将自动续签。","The filename cannot contain the following characters: %{c}":"文件名不能包含以下字符: %{c}","The server_name in the current configuration must be the domain name you need to get the certificate.":"当前配置中的 server_name 必须为需要申请证书的域名。","The username or password is incorrect":"用户名或密码错误","Theme":"主题","Type":"类型","Updated at":"修改时间","Updated successfully":"更新成功","Upgrade":"升级","Upgraded successfully":"升级成功","Upgrading Nginx UI, please wait...":"正在升级Nginx UI,请等待...","Uptime:":"运行时间:","Username":"用户名","Username (*)":"用户名 (*)","Using HTTP01 challenge provider":"使用 HTTP01 challenge provider","View":"查看","Warning":"警告","Writes":"写","Writing certificate private key to disk":"正在将证书私钥写入磁盘","Writing certificate to disk":"正在将证书写入磁盘","Yes":"是的","You are using the latest version":"您使用的是最新版本","You can check Nginx UI upgrade at this page.":"你可以在这个页面检查Nginx UI的升级。","License":{"Project":"开源许可"}}} \ No newline at end of file +{"en":{"About":"About","Action":"Action","Add Directive Below":"Add Directive Below","Add Location":"Add Location","Add Site":"Add Site","Advance Mode":"Advance Mode","Are you sure you want to remove this directive?":"Are you sure you want to remove this directive?","Auto-renewal disabled for %{name}":"Auto-renewal disabled for %{name}","Auto-renewal enabled for %{name}":"Auto-renewal enabled for %{name}","Back":"Back","Base information":"Base information","Basic Mode":"Basic Mode","Build with":"Build with","Cancel":"Cancel","Certificate has expired":"Certificate has expired","Certificate is valid":"Certificate is valid","Certificate Status":"Certificate Status","Comments":"Comments","Configuration Name":"Configuration Name","Configurations":"Configurations","Configure SSL":"Configure SSL","Content":"Content","CPU Status":"CPU Status","CPU:":"CPU:","Create Another":"Create Another","Created at":"Created at","Dashboard":"Dashboard","Database (Optional, default: database)":"Database (Optional, default: database)","Development Mode":"Development Mode","Directive":"Directive","Directives":"Directives","Disable auto-renewal failed for %{name}":"Disable auto-renewal failed for %{name}","Disabled":"Disabled","Disabled successfully":"Disabled successfully","Disk IO":"Disk IO","Domain Config Created Successfully":"Domain Config Created Successfully","Edit %{n}":"Edit %{n}","Edit Configuration":"Edit Configuration","Edit Site":"Edit Site","Email (*)":"Email (*)","Enable auto-renewal failed for %{name}":"Enable auto-renewal failed for %{name}","Enable failed":"Enable failed","Enable TLS":"Enable TLS","Enabled":"Enabled","Enabled successfully":"Enabled successfully","Encrypt website with Let's Encrypt":"Encrypt website with Let's Encrypt","Expiration Date: %{date}":"Expiration Date: %{date}","Failed to disable %{msg}":"Failed to disable %{msg}","Failed to enable %{msg}":"Failed to enable %{msg}","File Not Found":"File Not Found","Finished":"Finished","Getting the certificate, please wait...":"Getting the certificate, please wait...","Home":"Home","Install":"Install","Intermediate Certification Authorities: %{issuer}":"Intermediate Certification Authorities: %{issuer}","Leave blank for no change":"Leave blank for no change","Load Averages:":"Load Averages:","Location":"Location","Locations":"Locations","Login":"Login","Login successful":"Login successful","Logout successful":"Logout successful","Make sure you have configured a reverse proxy for .well-known directory to HTTPChallengePort (default: 9180) before getting the certificate.":"Make sure you have configured a reverse proxy for .well-known directory to HTTPChallengePort (default: 9180) before getting the certificate.","Manage Configs":"Manage Configs","Manage Sites":"Manage Sites","Manage Users":"Manage Users","Memory":"Memory","Memory and Storage":"Memory and Storage","Modify Config":"Modify Config","Name":"Name","Network":"Network","Network Statistics":"Network Statistics","Network Total Receive":"Network Total Receive","Network Total Send":"Network Total Send","Next":"Next","No":"No","Not Found":"Not Found","Not Valid Before: %{date}":"Not Valid Before: %{date}","OS:":"OS:","Params":"Params","Password":"Password","Password (*)":"Password (*)","Path":"Path","Please input your E-mail!":"Please input your E-mail!","Please input your password!":"Please input your password!","Please input your username!":"Please input your username!","Project Team":"Project Team","Reads":"Reads","Receive":"Receive","Save":"Save","Save Directive":"Save Directive","Save error %{msg}":"Save error %{msg}","Saved successfully":"Saved successfully","Send":"Send","Server error":"Server error","Server Info":"Server Info","server_name not found in directives":"server_name not found in directives","server_name parameter is required":"server_name parameter is required","Single Directive":"Single Directive","Sites List":"Sites List","Status":"Status","Storage":"Storage","Subject Name: %{name}":"Subject Name: %{name}","Swap":"Swap","Terminal":"Terminal","The certificate for the domain will be checked every hour, and will be renewed if it has been more than 1 month since it was last issued.":"The certificate for the domain will be checked every hour, and will be renewed if it has been more than 1 month since it was last issued.","The filename cannot contain the following characters: %{c}":"The filename cannot contain the following characters: %{c}","Updated at":"Updated at","Uptime:":"Uptime:","Username":"Username","Username (*)":"Username (*)","Warning":"Warning","Writes":"Writes","Yes":"Yes","License":{"Project":"License"}},"zh_TW":{"About":"關於","Access Logs":"訪問日誌","Action":"操作","Add":"新增","Add Directive Below":"在下面新增指令","Add Location":"新增 Location","Add Site":"新增站點","Advance Mode":"高階模式","Arch":"架搆","Are you sure you want to delete?":"你確定你要刪除?","Are you sure you want to remove this directive?":"您確定要刪除這條指令?","Are you sure you want to remove this location?":"您確定要刪除此 Location 嗎?","Author":"作者","Auto":"自動","Auto Cert":"自動更新","Auto cert is enabled, please do not modify this certification.":"自動證書已啟用,請不要修改此證書。","Auto Refresh":"自動刷新","Auto-Cert Log":"自動證書日誌","Auto-renewal disabled for %{name}":"已關閉 %{name} 自動續簽","Auto-renewal enabled for %{name}":"已啟用 %{name} 自動續簽","Back":"返回","Back Home":"回到首頁","Base information":"基本訊息","Basic Mode":"基本模式","Batch Modify":"批量修改","Build with":"構建基於","Cancel":"取消","Certificate has expired":"此憑證已過期","Certificate is valid":"此憑證有效","Certificate Status":"憑證狀態","Certification":"證照","Change Certificate":"更改證書","Check again":"再次檢查","Comments":"註釋","Config Name":"配置名稱","Config Templates":"配置模板","Configuration file is test successful":"配置文件測試成功","Configuration Name":"配置名稱","Configurations":"配置","Configure SSL":"配置 SSL","Content":"內容","Core Upgrade":"核心升級","CPU Status":"中央處理器狀態","CPU:":"中央處理器:","Create Another":"再創建一個","Created at":"建立時間","Creating client facilitates communication with the CA server":"創建客戶端方便與CA服務器通信","Current Version":"當前版本","Custom":"自訂","Dark":"深色","Dashboard":"儀表盤","Database (Optional, default: database)":"資料庫 (可選,預設: database)","Delete":"刪除","Delete ID: %{id}":"刪除 ID: %{id}","Delete site: %{site_name}":"刪除站點:%{site_name}","Description":"敘述","Development Mode":"開發模式","Dir":"目錄","Directive":"指令","Directives":"指令","Disable auto-renewal failed for %{name}":"關閉 %{name} 自動續簽失敗","Disabled":"禁用","Disabled successfully":"禁用成功","Disk IO":"磁碟 IO","Domain Config Created Successfully":"域名配置文件創建成功","Domains list is empty, try to reopen auto-cert for %{config}":"域列表為空,請嘗試重新打開 %{config} 的自動證書","Download latest release error":"下載最新版本錯誤","Downloading latest release":"正在下載最新版本","Duplicate":"複製","Duplicated successfully":"複製成功","Edit %{n}":"編輯 %{n}","Edit Configuration":"編輯配置","Edit Site":"編輯站點","Email (*)":"郵箱 (*)","Enable auto-renewal failed for %{name}":"啟用 %{name} 自動續簽失敗","Enable failed":"啟用失敗","Enable TLS":"啟用 TLS","Enabled":"啟用","Enabled successfully":"啟用成功","Encrypt website with Let's Encrypt":"用 Let's Encrypt 對網站進行加密","Error":"錯誤","Error Logs":"錯誤日志","Executable Path":"可執行檔路徑","Expiration Date: %{date}":"過期時間: %{date}","Export":"導出","Failed to disable %{msg}":"禁用失敗 %{msg}","Failed to enable %{msg}":"啟用失敗 %{msg}","Failed to get certificate information":"獲取證書信息失敗","Failed to save, syntax error(s) was detected in the configuration.":"保存失敗,在配置中檢測到語法錯誤。","File":"文件","File exists":"文件已存在","File Not Found":"未找到檔案","Filter":"篩選","Finished":"完成","Format Code":"格式化代碼","Format error %{msg}":"格式錯誤 %{msg}","Format successfully":"格式化成功","Generate":"生成","Generating private key for registering account":"生成註冊賬號私鑰","Getting the certificate, please wait...":"正在獲取憑證,請稍等...","Home":"首頁","HTTP Challenge Port":"HTTP 挑戰端口","HTTP Port":"HTTP 監聽埠","Initial core upgrader error":"初始核心升級程序錯誤","Initialing core upgrader":"正在初始化核心升級程序","Inspect Configurations":"檢查配置","Install":"安裝","Install successfully":"安裝成功","Intermediate Certification Authorities: %{issuer}":"中級憑證頒發機構: %{issuer}","Issued certificate successfully":"頒發證書成功","Jwt Secret":"Jwt Secret","Last checked at":"上次檢查時間","Leave blank for no change":"留空表示不修改","Light":"淺色","Load Averages:":"系統負載:","Location":"Location","Locations":"Locations","Login":"登入","Login successful":"登入成功","Logout successful":"登出成功","Make sure you have configured a reverse proxy for .well-known directory to HTTPChallengePort (default: 9180) before getting the certificate.":"在獲取證書前,請確保配置檔案中已將 .well-known 目錄反向代理到 HTTPChallengePort (預設: 9180)","Manage Configs":"配置管理","Manage Sites":"網站管理","Manage Users":"使用者管理","Memory":"記憶體","Memory and Storage":"記憶體和存儲","Modify":"修改","Modify Config":"修改配置","Multi-line Directive":"多行指令","Name":"名稱","Network":"網路","Network Statistics":"網路統計","Network Total Receive":"下載流量","Network Total Send":"上傳流量","New version released":"新版本發布","Next":"下一步","Nginx Access Log Path":"Nginx 訪問日誌路徑","Nginx Configuration Parse Error":"Nginx 配置解析錯誤","Nginx Control":"Nginx 控件","Nginx Error Log Path":"Nginx 錯誤日誌路徑","Nginx Log":"Nginx 日誌","Nginx reloaded successfully":"Nginx 重載成功","Nginx restarted successfully":"Nginx 重啟成功","No":"取消","Not Found":"找不到頁面","Not Valid Before: %{date}":"此前無效: %{date}","Note":"備註","Obtaining certificate":"正在獲取證書","OK":"確定","OS":"作業系統","OS:":"作業系統:","Params":"參數","Password":"密碼","Password (*)":"密碼 (*)","Path":"路徑","Perform core upgrade error":"執行核心升級錯誤","Performing core upgrade":"正在執行核心升級","Please input name, this will be used as the filename of the new configuration!":"請輸入名稱,這將作為新配置的文件名!","Please input your E-mail!":"請輸入您的郵箱!","Please input your password!":"請輸入您的密碼!","Please input your username!":"請輸入您的使用者名稱!","Preference":"設定","Preparing lego configurations":"準備 Lego 配置","Prohibit changing root password in demo":"禁止在demo中修改root密碼","Prohibit deleting the default user":"禁止刪除默認用戶","Project Team":"專案團隊","Reads":"讀","Receive":"下載","Registering user":"註冊用戶","Reinstall":"安裝","Release Note":"發行公告","Reload":"重新載入","Reloading":"换弹中","Reloading nginx":"重载 Nginx","Reset":"重設","Restart":"重新啟動","Restarting":"重啟","Run Mode":"高階模式","Running":"運行中","Save":"儲存","Save Directive":"儲存指令","Save error %{msg}":"儲存錯誤 %{msg}","Save successfully":"保存成功","Save Successfully":"保存成功","Saved successfully":"儲存成功","Selector":"選擇器","Send":"上傳","Server error":"伺服器錯誤","Server Info":"伺服器資訊","server_name not found in directives":"未在指令集合中找到 server_name","server_name parameter is required":"必須為 server_name 指令指明參數","Single Directive":"單行指令","Site Logs":"網站日誌","Sites List":"站點列表","SSL Certificate Key Path":"SSL 證書密鑰路徑","SSL Certificate Path":"SSL證書路徑","SSL Certification Content":"SSL認證內容","SSL Certification Key Content":"SSL 證書密鑰內容","Status":"狀態","Stopped":"已停止","Storage":"儲存","Subject Name: %{name}":"主體名稱: %{name}","Swap":"交換空間","System":"系統","Table":"表格","Terminal":"終端","Terminal Start Command":"終端啟動命令","The certificate for the domain will be checked every hour, and will be renewed if it has been more than 1 month since it was last issued.":"系統將會每小時檢測一次該域名證書,若距離上次簽發已超過1個月,則將自動續簽。
如果您之前沒有證書,請先點選「從 Let's Encrypt 獲取證書」。","The filename cannot contain the following characters: %{c}":"檔名不能包含以下字元: %{c}","The server_name in the current configuration must be the domain name you need to get the certificate.":"注意:當前配置中的 server_name 必須為需要申請證書的域名。","The username or password is incorrect":"用戶名或密碼不正確","Theme":"外觀樣式","This auto-cert item is invalid, please remove it.":"此自動證書項無效,請將其刪除。","Type":"類型","Updated at":"修改時間","Updated successfully":"已成功更新","Upgrade":"升級","Upgraded successfully":"升級成功","Upgrading Nginx UI, please wait...":"正在升級 Nginx UI,請稍候...","Uptime:":"執行時間:","Username":"使用者名稱","Username (*)":"使用者名稱 (*)","Using HTTP01 challenge provider":"使用 HTTP01 挑戰提供者","View":"查看","Warning":"警告","Writes":"寫","Writing certificate private key to disk":"將證書私鑰寫入磁盤","Writing certificate to disk":"將證書寫入磁盤","Yes":"是的","You are using the latest version":"您使用的是最新版本","You can check Nginx UI upgrade at this page.":"您可以在此頁面查看 Nginx UI 升級。","License":{"Project":"開源軟體授權條款"}},"zh_CN":{"About":"关于","Access Logs":"访问日志","Action":"操作","Add":"添加","Add Directive Below":"在下面添加指令","Add Location":"添加 Location","Add Site":"添加站点","Advance Mode":"高级模式","Arch":"架构","Are you sure you want to delete?":"您确定要删除吗?","Are you sure you want to remove this directive?":"您确定要删除这条指令?","Are you sure you want to remove this location?":"您确定要删除这个 Location?","Author":"作者","Auto":"自动","Auto Cert":"自动更新","Auto cert is enabled, please do not modify this certification.":"自动更新已启用,请勿修改此证书配置。","Auto Refresh":"自动刷新","Auto-Cert Log":"证书自动续期日志","Auto-renewal disabled for %{name}":"成功关闭 %{name} 自动续签","Auto-renewal enabled for %{name}":"成功启用 %{name} 自动续签","Back":"返回","Back Home":"返回首页","Base information":"基本信息","Basic Mode":"基本模式","Batch Modify":"批量修改","Build with":"构建基于","Cancel":"取消","Certificate has expired":"此证书已过期","Certificate is valid":"此证书有效","Certificate Status":"证书状态","Certification":"证书","Change Certificate":"更改证书","Check again":"重新检查","Comments":"注释","Config Name":"配置文件名称","Config Templates":"配置","Configuration file is test successful":"配置文件测试成功","Configuration Name":"配置名称","Configurations":"配置","Configure SSL":"配置 SSL","Content":"内容","Core Upgrade":"核心升级","CPU Status":"CPU 状态","CPU:":"CPU:","Create Another":"再创建一个","Created at":"创建时间","Creating client facilitates communication with the CA server":"正在创建客户端用于与 CA 服务器通信","Current Version":"当前版本","Custom":"自定义","Dark":"深色","Dashboard":"仪表盘","Database (Optional, default: database)":"数据库 (可选,默认: database)","Delete":"删除","Delete ID: %{id}":"删除 ID: %{id}","Delete site: %{site_name}":"删除站点: %{site_name}","Description":"描述","Development Mode":"开发模式","Dir":"目录","Directive":"指令","Directives":"指令","Disable auto-renewal failed for %{name}":"关闭 %{name} 自动续签失败","Disabled":"禁用","Disabled successfully":"禁用成功","Disk IO":"磁盘 IO","Domain Config Created Successfully":"域名配置文件创建成功","Domains list is empty, try to reopen auto-cert for %{config}":"域名列表为空,请尝试为%{config}重新打开证书自动续期。","Download latest release error":"下载最新版本错误","Downloading latest release":"下载最新版本","Duplicate":"复制","Duplicated successfully":"复制成功","Edit %{n}":"编辑 %{n}","Edit Configuration":"编辑配置","Edit Site":"编辑站点","Email (*)":"邮箱 (*)","Enable auto-renewal failed for %{name}":"启用 %{name} 自动续签失败","Enable failed":"启用失败","Enable TLS":"启用 TLS","Enabled":"启用","Enabled successfully":"启用成功","Encrypt website with Let's Encrypt":"用 Let's Encrypt 对网站进行加密","Error":"错误","Error Logs":"错误日志","Executable Path":"可执行文件路径","Expiration Date: %{date}":"过期时间: %{date}","Export":"导出","Failed to disable %{msg}":"禁用失败 %{msg}","Failed to enable %{msg}":"启用失败 %{msg}","Failed to get certificate information":"获取证书信息失败","Failed to save, syntax error(s) was detected in the configuration.":"保存失败,在配置中检测到语法错误。","File":"文件","File exists":"文件已存在","File Not Found":"未找到文件","Filter":"过滤","Finished":"完成","Format Code":"代码格式化","Format error %{msg}":"保存错误 %{msg}","Format successfully":"格式化成功","Generate":"生成","Generating private key for registering account":"正在生成私钥用于注册账户","Getting the certificate, please wait...":"正在获取证书,请稍等...","Home":"首页","HTTP Challenge Port":"HTTP Challenge 监听端口","HTTP Port":"HTTP 监听端口","Initial core upgrader error":"初始化核心升级程序错误","Initialing core upgrader":"初始化核心升级器","Inspect Configurations":"检查配置","Install":"安装","Install successfully":"安装成功","Intermediate Certification Authorities: %{issuer}":"中级证书颁发机构: %{issuer}","Issued certificate successfully":"证书申请成功","Jwt Secret":"Jwt 密钥","Last checked at":"最后检查时间","Leave blank for no change":"留空表示不修改","Light":"浅色","Load Averages:":"系统负载:","Location":"Location","Locations":"Locations","Login":"登录","Login successful":"登录成功","Logout successful":"登出成功","Make sure you have configured a reverse proxy for .well-known directory to HTTPChallengePort (default: 9180) before getting the certificate.":"在获取签发证书前,请确保配置文件中已将 .well-known 目录反向代理到 HTTPChallengePort (默认: 9180)","Manage Configs":"配置管理","Manage Sites":"网站管理","Manage Users":"用户管理","Memory":"内存","Memory and Storage":"内存与存储","Modify":"修改","Modify Config":"修改配置文件","Multi-line Directive":"单行指令","Name":"名称","Network":"网络","Network Statistics":"流量统计","Network Total Receive":"下载流量","Network Total Send":"上传流量","New version released":"新版本发布","Next":"下一步","Nginx Access Log Path":"Nginx 访问日志路径","Nginx Configuration Parse Error":"Nginx 配置解析错误","Nginx Control":"控制 Nginx","Nginx Error Log Path":"Nginx 错误日志路径","Nginx Log":"Nginx 日志","Nginx reloaded successfully":"Nginx 重载成功","Nginx restarted successfully":"Nginx 重启成功","No":"取消","Not Found":"找不到页面","Not Valid Before: %{date}":"此前无效: %{date}","Note":"注意","Obtaining certificate":"正在获取证书","OK":"确定","OS":"OS","OS:":"OS:","Params":"参数","Password":"密码","Password (*)":"密码 (*)","Path":"路径","Perform core upgrade error":"执行核心升级错误","Performing core upgrade":"正在进行核心升级","Please input name, this will be used as the filename of the new configuration!":"请输入名称,这将被用作新配置的文件名。","Please input your E-mail!":"请输入您的邮箱!","Please input your password!":"请输入您的密码!","Please input your username!":"请输入您的用户名!","Preference":"偏好设置","Preparing lego configurations":"正在准备 Lego 的配置","Prohibit changing root password in demo":"禁止在演示模式下修改 root 账户的密码","Prohibit deleting the default user":"禁止删除默认用户","Project Team":"项目团队","Reads":"读","Receive":"下载","Registering user":"正在注册用户","Reinstall":"重新安装","Release Note":"发行日志","Reload":"重载","Reloading":"重载中","Reloading nginx":"正在重载 Nginx","Reset":"重置","Restart":"重启","Restarting":"重启中","Run Mode":"运行模式","Running":"运行中","Save":"保存","Save Directive":"保存指令","Save error %{msg}":"保存错误 %{msg}","Save successfully":"保存成功","Save Successfully":"保存成功","Saved successfully":"保存成功","Selector":"选择器","Send":"上传","Server error":"服务器错误","Server Info":"服务器信息","server_name not found in directives":"未在指令集合中找到 server_name","server_name parameter is required":"必须为 server_name 指令指明参数","Single Directive":"单行指令","Site Logs":"站点列表","Sites List":"站点列表","SSL Certificate Key Path":"SSL证书密钥路径","SSL Certificate Path":"SSL证书路径","SSL Certification Content":"SSL证书内容","SSL Certification Key Content":"SSL证书密钥内容","Status":"状态","Stopped":"已停止","Storage":"存储","Subject Name: %{name}":"主体名称: %{name}","Swap":"Swap","System":"系统","Table":"列表","Terminal":"终端","Terminal Start Command":"终端启动命令","The certificate for the domain will be checked every hour, and will be renewed if it has been more than 1 month since it was last issued.":"系统将会每小时检测一次该域名证书,若距离上次签发已超过1个月,则将自动续签。","The filename cannot contain the following characters: %{c}":"文件名不能包含以下字符: %{c}","The server_name in the current configuration must be the domain name you need to get the certificate.":"当前配置中的 server_name 必须为需要申请证书的域名。","The username or password is incorrect":"用户名或密码错误","Theme":"主题","This auto-cert item is invalid, please remove it.":"这个证书自动续期项目是无效的,请删除。","Type":"类型","Updated at":"修改时间","Updated successfully":"更新成功","Upgrade":"升级","Upgraded successfully":"升级成功","Upgrading Nginx UI, please wait...":"正在升级Nginx UI,请等待...","Uptime:":"运行时间:","Username":"用户名","Username (*)":"用户名 (*)","Using HTTP01 challenge provider":"使用 HTTP01 challenge provider","View":"查看","Warning":"警告","Writes":"写","Writing certificate private key to disk":"正在将证书私钥写入磁盘","Writing certificate to disk":"正在将证书写入磁盘","Yes":"是的","You are using the latest version":"您使用的是最新版本","You can check Nginx UI upgrade at this page.":"你可以在这个页面检查Nginx UI的升级。","License":{"Project":"开源许可"}}} \ No newline at end of file diff --git a/frontend/src/language/zh_CN/app.mo b/frontend/src/language/zh_CN/app.mo index 1bb3ce40..a51bbe2c 100644 Binary files a/frontend/src/language/zh_CN/app.mo and b/frontend/src/language/zh_CN/app.mo differ diff --git a/frontend/src/language/zh_CN/app.po b/frontend/src/language/zh_CN/app.po index 7f96c545..ad7a1646 100644 --- a/frontend/src/language/zh_CN/app.po +++ b/frontend/src/language/zh_CN/app.po @@ -20,8 +20,8 @@ msgstr "关于" msgid "Access Logs" msgstr "访问日志" -#: src/views/cert/Cert.vue:78 src/views/config/config.ts:36 -#: src/views/domain/DomainList.vue:47 src/views/user/User.vue:43 +#: src/views/cert/Cert.vue:74 src/views/config/config.ts:36 +#: src/views/domain/DomainList.vue:48 src/views/user/User.vue:43 msgid "Action" msgstr "操作" @@ -86,11 +86,11 @@ msgstr "作者" msgid "Auto" msgstr "自动" -#: src/views/cert/Cert.vue:41 src/views/domain/cert/ChangeCert.vue:35 +#: src/views/cert/Cert.vue:37 src/views/domain/cert/ChangeCert.vue:35 msgid "Auto Cert" msgstr "自动更新" -#: src/views/cert/Cert.vue:8 +#: src/views/cert/Cert.vue:9 msgid "Auto cert is enabled, please do not modify this certification." msgstr "自动更新已启用,请勿修改此证书配置。" @@ -98,6 +98,10 @@ msgstr "自动更新已启用,请勿修改此证书配置。" msgid "Auto Refresh" msgstr "自动刷新" +#: src/views/cert/Cert.vue:27 +msgid "Auto-Cert Log" +msgstr "证书自动续期日志" + #: src/views/domain/cert/IssueCert.vue:71 msgid "Auto-renewal disabled for %{name}" msgstr "成功关闭 %{name} 自动续签" @@ -151,7 +155,7 @@ msgstr "此证书已过期" msgid "Certificate is valid" msgstr "此证书有效" -#: src/views/cert/Cert.vue:12 src/views/domain/cert/Cert.vue:35 +#: src/views/cert/Cert.vue:34 src/views/domain/cert/Cert.vue:35 msgid "Certificate Status" msgstr "证书状态" @@ -173,10 +177,14 @@ msgstr "重新检查" #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:34 #: src/views/domain/ngx_conf/LocationEditor.vue:35 #: src/views/domain/ngx_conf/LocationEditor.vue:52 -#: src/views/domain/ngx_conf/NgxConfigEditor.vue:180 +#: src/views/domain/ngx_conf/NgxConfigEditor.vue:181 msgid "Comments" msgstr "注释" +#: src/views/cert/Cert.vue:32 +msgid "Config Name" +msgstr "配置文件名称" + #: src/views/domain/ngx_conf/ConfigTemplate.vue:61 msgid "Config Templates" msgstr "配置" @@ -254,7 +262,13 @@ msgstr "仪表盘" msgid "Database (Optional, default: database)" msgstr "数据库 (可选,默认: database)" -#: src/components/StdDataDisplay/StdTable.vue:528 +#: src/components/StdDataDisplay/StdTable.vue:31 +#: src/components/StdDataDisplay/StdTable.vue:32 +#: src/components/StdDataDisplay/StdTable.vue:37 +#: src/components/StdDataDisplay/StdTable.vue:50 +#: src/components/StdDataDisplay/StdTable.vue:52 +#: src/components/StdDataDisplay/StdTable.vue:53 +#: src/components/StdDataDisplay/StdTable.vue:57 #: src/views/domain/DomainList.vue:19 src/views/domain/DomainList.vue:20 #: src/views/domain/DomainList.vue:21 src/views/domain/DomainList.vue:28 #: src/views/domain/DomainList.vue:32 @@ -265,7 +279,7 @@ msgstr "删除" msgid "Delete ID: %{id}" msgstr "删除 ID: %{id}" -#: src/views/domain/DomainList.vue:81 +#: src/views/domain/DomainList.vue:82 msgid "Delete site: %{site_name}" msgstr "删除站点: %{site_name}" @@ -300,15 +314,15 @@ msgstr "指令" msgid "Disable auto-renewal failed for %{name}" msgstr "关闭 %{name} 自动续签失败" -#: src/views/cert/Cert.vue:51 src/views/domain/cert/ChangeCert.vue:45 +#: src/views/cert/Cert.vue:47 src/views/domain/cert/ChangeCert.vue:45 #: src/views/domain/DomainEdit.vue:10 src/views/domain/DomainEdit.vue:9 -#: src/views/domain/DomainList.vue:16 src/views/domain/DomainList.vue:34 +#: src/views/domain/DomainList.vue:16 src/views/domain/DomainList.vue:35 #: src/views/domain/DomainList.vue:7 src/views/domain/DomainList.vue:8 #: src/views/domain/DomainList.vue:9 msgid "Disabled" msgstr "禁用" -#: src/views/domain/DomainEdit.vue:146 src/views/domain/DomainList.vue:69 +#: src/views/domain/DomainEdit.vue:146 src/views/domain/DomainList.vue:70 msgid "Disabled successfully" msgstr "禁用成功" @@ -316,14 +330,14 @@ msgstr "禁用成功" msgid "Disk IO" msgstr "磁盘 IO" -#: src/views/cert/Cert.vue:32 -msgid "Domain" -msgstr "域名" - #: src/views/domain/DomainAdd.vue:58 msgid "Domain Config Created Successfully" msgstr "域名配置文件创建成功" +#: src/views/cert/Cert.vue:21 +msgid "Domains list is empty, try to reopen auto-cert for %{config}" +msgstr "域名列表为空,请尝试为%{config}重新打开证书自动续期。" + #: src/language/constants.ts:26 msgid "Download latest release error" msgstr "下载最新版本错误" @@ -334,9 +348,14 @@ msgstr "下载最新版本" #: src/views/domain/DomainList.vue:14 src/views/domain/DomainList.vue:15 #: src/views/domain/DomainList.vue:16 src/views/domain/DomainList.vue:23 +#: src/views/domain/SiteDuplicate.vue:2 msgid "Duplicate" msgstr "复制" +#: src/views/domain/SiteDuplicate.vue:43 +msgid "Duplicated successfully" +msgstr "复制成功" + #: src/views/domain/DomainEdit.vue:4 src/views/domain/DomainEdit.vue:5 msgid "Edit %{n}" msgstr "编辑 %{n}" @@ -365,16 +384,16 @@ msgstr "启用失败" msgid "Enable TLS" msgstr "启用 TLS" -#: src/views/cert/Cert.vue:48 src/views/domain/cert/ChangeCert.vue:42 +#: src/views/cert/Cert.vue:44 src/views/domain/cert/ChangeCert.vue:42 #: src/views/domain/DomainEdit.vue:43 src/views/domain/DomainEdit.vue:6 #: src/views/domain/DomainEdit.vue:7 src/views/domain/DomainList.vue:10 #: src/views/domain/DomainList.vue:11 src/views/domain/DomainList.vue:12 -#: src/views/domain/DomainList.vue:19 src/views/domain/DomainList.vue:31 +#: src/views/domain/DomainList.vue:19 src/views/domain/DomainList.vue:32 msgid "Enabled" msgstr "启用" #: src/views/domain/DomainAdd.vue:47 src/views/domain/DomainEdit.vue:137 -#: src/views/domain/DomainList.vue:59 +#: src/views/domain/DomainList.vue:60 msgid "Enabled successfully" msgstr "启用成功" @@ -406,11 +425,11 @@ msgstr "过期时间: %{date}" msgid "Export" msgstr "导出" -#: src/views/domain/DomainEdit.vue:149 src/views/domain/DomainList.vue:73 +#: src/views/domain/DomainEdit.vue:149 src/views/domain/DomainList.vue:74 msgid "Failed to disable %{msg}" msgstr "禁用失败 %{msg}" -#: src/views/domain/DomainEdit.vue:140 src/views/domain/DomainList.vue:63 +#: src/views/domain/DomainEdit.vue:140 src/views/domain/DomainList.vue:64 msgid "Failed to enable %{msg}" msgstr "启用失败 %{msg}" @@ -598,7 +617,7 @@ msgstr "单行指令" #: src/views/cert/Cert.vue:16 src/views/config/config.ts:9 #: src/views/domain/cert/ChangeCert.vue:19 src/views/domain/DomainEdit.vue:46 -#: src/views/domain/DomainList.vue:15 +#: src/views/domain/DomainList.vue:16 src/views/domain/SiteDuplicate.vue:5 msgid "Name" msgstr "名称" @@ -721,6 +740,12 @@ msgstr "执行核心升级错误" msgid "Performing core upgrade" msgstr "正在进行核心升级" +#: src/views/domain/SiteDuplicate.vue:28 +msgid "" +"Please input name, this will be used as the filename of the new " +"configuration!" +msgstr "请输入名称,这将被用作新配置的文件名。" + #: src/views/other/Install.vue:36 msgid "Please input your E-mail!" msgstr "请输入您的邮箱!" @@ -865,9 +890,8 @@ msgstr "上传" #: src/components/StdDataDisplay/StdTable.vue:168 #: src/components/StdDataDisplay/StdTable.vue:343 #: src/components/StdDataDisplay/StdTable.vue:463 -#: src/views/config/ConfigEdit.vue:32 src/views/domain/DomainEdit.vue:87 -#: src/views/domain/DomainList.vue:83 src/views/other/Install.vue:71 -#: src/views/preference/Preference.vue:41 +#: src/views/config/ConfigEdit.vue:32 src/views/domain/DomainList.vue:84 +#: src/views/other/Install.vue:71 src/views/preference/Preference.vue:41 msgid "Server error" msgstr "服务器错误" @@ -896,23 +920,23 @@ msgstr "站点列表" msgid "Sites List" msgstr "站点列表" -#: src/views/cert/Cert.vue:65 +#: src/views/cert/Cert.vue:61 msgid "SSL Certificate Key Path" msgstr "SSL证书密钥路径" -#: src/views/cert/Cert.vue:58 +#: src/views/cert/Cert.vue:54 msgid "SSL Certificate Path" msgstr "SSL证书路径" -#: src/views/cert/Cert.vue:19 +#: src/views/cert/Cert.vue:41 msgid "SSL Certification Content" msgstr "SSL证书内容" -#: src/views/cert/Cert.vue:22 +#: src/views/cert/Cert.vue:44 msgid "SSL Certification Key Content" msgstr "SSL证书密钥内容" -#: src/views/domain/DomainList.vue:24 +#: src/views/domain/DomainList.vue:25 msgid "Status" msgstr "状态" @@ -973,12 +997,16 @@ msgstr "用户名或密码错误" msgid "Theme" msgstr "主题" +#: src/views/cert/Cert.vue:15 +msgid "This auto-cert item is invalid, please remove it." +msgstr "这个证书自动续期项目是无效的,请删除。" + #: src/views/config/config.ts:14 msgid "Type" msgstr "类型" -#: src/views/cert/Cert.vue:72 src/views/config/config.ts:29 -#: src/views/domain/DomainList.vue:41 src/views/user/User.vue:37 +#: src/views/cert/Cert.vue:68 src/views/config/config.ts:29 +#: src/views/domain/DomainList.vue:42 src/views/user/User.vue:37 msgid "Updated at" msgstr "修改时间" @@ -1061,6 +1089,9 @@ msgctxt "Project" msgid "License" msgstr "开源许可" +#~ msgid "Domain" +#~ msgstr "域名" + #~ msgid "Do you want to reload Nginx?" #~ msgstr "你需要重载 Nginx 吗?" diff --git a/frontend/src/language/zh_TW/app.mo b/frontend/src/language/zh_TW/app.mo index 9349a997..df1952ed 100644 Binary files a/frontend/src/language/zh_TW/app.mo and b/frontend/src/language/zh_TW/app.mo differ diff --git a/frontend/src/language/zh_TW/app.po b/frontend/src/language/zh_TW/app.po index c8fcdf52..c19b8caa 100644 --- a/frontend/src/language/zh_TW/app.po +++ b/frontend/src/language/zh_TW/app.po @@ -21,8 +21,8 @@ msgstr "關於" msgid "Access Logs" msgstr "訪問日誌" -#: src/views/cert/Cert.vue:78 src/views/config/config.ts:36 -#: src/views/domain/DomainList.vue:47 src/views/user/User.vue:43 +#: src/views/cert/Cert.vue:74 src/views/config/config.ts:36 +#: src/views/domain/DomainList.vue:48 src/views/user/User.vue:43 msgid "Action" msgstr "操作" @@ -87,11 +87,11 @@ msgstr "作者" msgid "Auto" msgstr "自動" -#: src/views/cert/Cert.vue:41 src/views/domain/cert/ChangeCert.vue:35 +#: src/views/cert/Cert.vue:37 src/views/domain/cert/ChangeCert.vue:35 msgid "Auto Cert" msgstr "自動更新" -#: src/views/cert/Cert.vue:8 +#: src/views/cert/Cert.vue:9 msgid "Auto cert is enabled, please do not modify this certification." msgstr "自動證書已啟用,請不要修改此證書。" @@ -99,6 +99,10 @@ msgstr "自動證書已啟用,請不要修改此證書。" msgid "Auto Refresh" msgstr "自動刷新" +#: src/views/cert/Cert.vue:27 +msgid "Auto-Cert Log" +msgstr "自動證書日誌" + #: src/views/domain/cert/IssueCert.vue:71 msgid "Auto-renewal disabled for %{name}" msgstr "已關閉 %{name} 自動續簽" @@ -152,7 +156,7 @@ msgstr "此憑證已過期" msgid "Certificate is valid" msgstr "此憑證有效" -#: src/views/cert/Cert.vue:12 src/views/domain/cert/Cert.vue:35 +#: src/views/cert/Cert.vue:34 src/views/domain/cert/Cert.vue:35 msgid "Certificate Status" msgstr "憑證狀態" @@ -174,10 +178,14 @@ msgstr "再次檢查" #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:34 #: src/views/domain/ngx_conf/LocationEditor.vue:35 #: src/views/domain/ngx_conf/LocationEditor.vue:52 -#: src/views/domain/ngx_conf/NgxConfigEditor.vue:180 +#: src/views/domain/ngx_conf/NgxConfigEditor.vue:181 msgid "Comments" msgstr "註釋" +#: src/views/cert/Cert.vue:32 +msgid "Config Name" +msgstr "配置名稱" + #: src/views/domain/ngx_conf/ConfigTemplate.vue:61 msgid "Config Templates" msgstr "配置模板" @@ -255,7 +263,13 @@ msgstr "儀表盤" msgid "Database (Optional, default: database)" msgstr "資料庫 (可選,預設: database)" -#: src/components/StdDataDisplay/StdTable.vue:528 +#: src/components/StdDataDisplay/StdTable.vue:31 +#: src/components/StdDataDisplay/StdTable.vue:32 +#: src/components/StdDataDisplay/StdTable.vue:37 +#: src/components/StdDataDisplay/StdTable.vue:50 +#: src/components/StdDataDisplay/StdTable.vue:52 +#: src/components/StdDataDisplay/StdTable.vue:53 +#: src/components/StdDataDisplay/StdTable.vue:57 #: src/views/domain/DomainList.vue:19 src/views/domain/DomainList.vue:20 #: src/views/domain/DomainList.vue:21 src/views/domain/DomainList.vue:28 #: src/views/domain/DomainList.vue:32 @@ -266,7 +280,7 @@ msgstr "刪除" msgid "Delete ID: %{id}" msgstr "刪除 ID: %{id}" -#: src/views/domain/DomainList.vue:81 +#: src/views/domain/DomainList.vue:82 msgid "Delete site: %{site_name}" msgstr "刪除站點:%{site_name}" @@ -301,15 +315,15 @@ msgstr "指令" msgid "Disable auto-renewal failed for %{name}" msgstr "關閉 %{name} 自動續簽失敗" -#: src/views/cert/Cert.vue:51 src/views/domain/cert/ChangeCert.vue:45 +#: src/views/cert/Cert.vue:47 src/views/domain/cert/ChangeCert.vue:45 #: src/views/domain/DomainEdit.vue:10 src/views/domain/DomainEdit.vue:9 -#: src/views/domain/DomainList.vue:16 src/views/domain/DomainList.vue:34 +#: src/views/domain/DomainList.vue:16 src/views/domain/DomainList.vue:35 #: src/views/domain/DomainList.vue:7 src/views/domain/DomainList.vue:8 #: src/views/domain/DomainList.vue:9 msgid "Disabled" msgstr "禁用" -#: src/views/domain/DomainEdit.vue:146 src/views/domain/DomainList.vue:69 +#: src/views/domain/DomainEdit.vue:146 src/views/domain/DomainList.vue:70 msgid "Disabled successfully" msgstr "禁用成功" @@ -317,14 +331,14 @@ msgstr "禁用成功" msgid "Disk IO" msgstr "磁碟 IO" -#: src/views/cert/Cert.vue:32 -msgid "Domain" -msgstr "網域" - #: src/views/domain/DomainAdd.vue:58 msgid "Domain Config Created Successfully" msgstr "域名配置文件創建成功" +#: src/views/cert/Cert.vue:21 +msgid "Domains list is empty, try to reopen auto-cert for %{config}" +msgstr "域列表為空,請嘗試重新打開 %{config} 的自動證書" + #: src/language/constants.ts:26 msgid "Download latest release error" msgstr "下載最新版本錯誤" @@ -335,9 +349,14 @@ msgstr "正在下載最新版本" #: src/views/domain/DomainList.vue:14 src/views/domain/DomainList.vue:15 #: src/views/domain/DomainList.vue:16 src/views/domain/DomainList.vue:23 +#: src/views/domain/SiteDuplicate.vue:2 msgid "Duplicate" msgstr "複製" +#: src/views/domain/SiteDuplicate.vue:43 +msgid "Duplicated successfully" +msgstr "複製成功" + #: src/views/domain/DomainEdit.vue:4 src/views/domain/DomainEdit.vue:5 msgid "Edit %{n}" msgstr "編輯 %{n}" @@ -366,16 +385,16 @@ msgstr "啟用失敗" msgid "Enable TLS" msgstr "啟用 TLS" -#: src/views/cert/Cert.vue:48 src/views/domain/cert/ChangeCert.vue:42 +#: src/views/cert/Cert.vue:44 src/views/domain/cert/ChangeCert.vue:42 #: src/views/domain/DomainEdit.vue:43 src/views/domain/DomainEdit.vue:6 #: src/views/domain/DomainEdit.vue:7 src/views/domain/DomainList.vue:10 #: src/views/domain/DomainList.vue:11 src/views/domain/DomainList.vue:12 -#: src/views/domain/DomainList.vue:19 src/views/domain/DomainList.vue:31 +#: src/views/domain/DomainList.vue:19 src/views/domain/DomainList.vue:32 msgid "Enabled" msgstr "啟用" #: src/views/domain/DomainAdd.vue:47 src/views/domain/DomainEdit.vue:137 -#: src/views/domain/DomainList.vue:59 +#: src/views/domain/DomainList.vue:60 msgid "Enabled successfully" msgstr "啟用成功" @@ -407,11 +426,11 @@ msgstr "過期時間: %{date}" msgid "Export" msgstr "導出" -#: src/views/domain/DomainEdit.vue:149 src/views/domain/DomainList.vue:73 +#: src/views/domain/DomainEdit.vue:149 src/views/domain/DomainList.vue:74 msgid "Failed to disable %{msg}" msgstr "禁用失敗 %{msg}" -#: src/views/domain/DomainEdit.vue:140 src/views/domain/DomainList.vue:63 +#: src/views/domain/DomainEdit.vue:140 src/views/domain/DomainList.vue:64 msgid "Failed to enable %{msg}" msgstr "啟用失敗 %{msg}" @@ -599,7 +618,7 @@ msgstr "多行指令" #: src/views/cert/Cert.vue:16 src/views/config/config.ts:9 #: src/views/domain/cert/ChangeCert.vue:19 src/views/domain/DomainEdit.vue:46 -#: src/views/domain/DomainList.vue:15 +#: src/views/domain/DomainList.vue:16 src/views/domain/SiteDuplicate.vue:5 msgid "Name" msgstr "名稱" @@ -722,6 +741,12 @@ msgstr "執行核心升級錯誤" msgid "Performing core upgrade" msgstr "正在執行核心升級" +#: src/views/domain/SiteDuplicate.vue:28 +msgid "" +"Please input name, this will be used as the filename of the new " +"configuration!" +msgstr "請輸入名稱,這將作為新配置的文件名!" + #: src/views/other/Install.vue:36 msgid "Please input your E-mail!" msgstr "請輸入您的郵箱!" @@ -866,9 +891,8 @@ msgstr "上傳" #: src/components/StdDataDisplay/StdTable.vue:168 #: src/components/StdDataDisplay/StdTable.vue:343 #: src/components/StdDataDisplay/StdTable.vue:463 -#: src/views/config/ConfigEdit.vue:32 src/views/domain/DomainEdit.vue:87 -#: src/views/domain/DomainList.vue:83 src/views/other/Install.vue:71 -#: src/views/preference/Preference.vue:41 +#: src/views/config/ConfigEdit.vue:32 src/views/domain/DomainList.vue:84 +#: src/views/other/Install.vue:71 src/views/preference/Preference.vue:41 msgid "Server error" msgstr "伺服器錯誤" @@ -897,23 +921,23 @@ msgstr "網站日誌" msgid "Sites List" msgstr "站點列表" -#: src/views/cert/Cert.vue:65 +#: src/views/cert/Cert.vue:61 msgid "SSL Certificate Key Path" msgstr "SSL 證書密鑰路徑" -#: src/views/cert/Cert.vue:58 +#: src/views/cert/Cert.vue:54 msgid "SSL Certificate Path" msgstr "SSL證書路徑" -#: src/views/cert/Cert.vue:19 +#: src/views/cert/Cert.vue:41 msgid "SSL Certification Content" msgstr "SSL認證內容" -#: src/views/cert/Cert.vue:22 +#: src/views/cert/Cert.vue:44 msgid "SSL Certification Key Content" msgstr "SSL 證書密鑰內容" -#: src/views/domain/DomainList.vue:24 +#: src/views/domain/DomainList.vue:25 msgid "Status" msgstr "狀態" @@ -975,12 +999,16 @@ msgstr "用戶名或密碼不正確" msgid "Theme" msgstr "外觀樣式" +#: src/views/cert/Cert.vue:15 +msgid "This auto-cert item is invalid, please remove it." +msgstr "此自動證書項無效,請將其刪除。" + #: src/views/config/config.ts:14 msgid "Type" msgstr "類型" -#: src/views/cert/Cert.vue:72 src/views/config/config.ts:29 -#: src/views/domain/DomainList.vue:41 src/views/user/User.vue:37 +#: src/views/cert/Cert.vue:68 src/views/config/config.ts:29 +#: src/views/domain/DomainList.vue:42 src/views/user/User.vue:37 msgid "Updated at" msgstr "修改時間" @@ -1063,6 +1091,9 @@ msgctxt "Project" msgid "License" msgstr "開源軟體授權條款" +#~ msgid "Domain" +#~ msgstr "網域" + #~ msgid "Do you want to reload Nginx?" #~ msgstr "你想重載 Nginx 嗎?" diff --git a/frontend/src/version.json b/frontend/src/version.json index fc8c8d79..a3c1a511 100644 --- a/frontend/src/version.json +++ b/frontend/src/version.json @@ -1 +1 @@ -{"version":"1.7.5","build_id":81,"total_build":151} \ No newline at end of file +{"version":"1.7.6","build_id":82,"total_build":152} \ No newline at end of file diff --git a/frontend/version.json b/frontend/version.json index fc8c8d79..a3c1a511 100644 --- a/frontend/version.json +++ b/frontend/version.json @@ -1 +1 @@ -{"version":"1.7.5","build_id":81,"total_build":151} \ No newline at end of file +{"version":"1.7.6","build_id":82,"total_build":152} \ No newline at end of file diff --git a/server/pkg/cert/cert.go b/server/pkg/cert/cert.go index 3da22056..6e7fecfa 100644 --- a/server/pkg/cert/cert.go +++ b/server/pkg/cert/cert.go @@ -1,157 +1,157 @@ package cert import ( - "crypto" - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rand" - "crypto/tls" - "github.com/0xJacky/Nginx-UI/server/pkg/nginx" - "github.com/0xJacky/Nginx-UI/server/settings" - "github.com/go-acme/lego/v4/certcrypto" - "github.com/go-acme/lego/v4/certificate" - "github.com/go-acme/lego/v4/challenge/http01" - "github.com/go-acme/lego/v4/lego" - "github.com/go-acme/lego/v4/registration" - "github.com/pkg/errors" - "log" - "net/http" - "os" - "path/filepath" - "strings" + "crypto" + "crypto/ecdsa" + "crypto/elliptic" + "crypto/rand" + "crypto/tls" + "github.com/0xJacky/Nginx-UI/server/pkg/nginx" + "github.com/0xJacky/Nginx-UI/server/settings" + "github.com/go-acme/lego/v4/certcrypto" + "github.com/go-acme/lego/v4/certificate" + "github.com/go-acme/lego/v4/challenge/http01" + "github.com/go-acme/lego/v4/lego" + "github.com/go-acme/lego/v4/registration" + "github.com/pkg/errors" + "log" + "net/http" + "os" + "path/filepath" + "strings" ) // MyUser You'll need a user or account type that implements acme.User type MyUser struct { - Email string - Registration *registration.Resource - key crypto.PrivateKey + Email string + Registration *registration.Resource + key crypto.PrivateKey } func (u *MyUser) GetEmail() string { - return u.Email + return u.Email } func (u *MyUser) GetRegistration() *registration.Resource { - return u.Registration + return u.Registration } func (u *MyUser) GetPrivateKey() crypto.PrivateKey { - return u.key + return u.key } func IssueCert(domain []string, logChan chan string, errChan chan error) { - defer func() { - if err := recover(); err != nil { - log.Println("Issue Cert recover", err) - } - }() + defer func() { + if err := recover(); err != nil { + log.Println("Issue Cert recover", err) + } + }() - // Create a user. New accounts need an email and private key to start. - logChan <- "Generating private key for registering account" - privateKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - if err != nil { - errChan <- errors.Wrap(err, "issue cert generate key error") - return - } + // Create a user. New accounts need an email and private key to start. + logChan <- "Generating private key for registering account" + privateKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) + if err != nil { + errChan <- errors.Wrap(err, "issue cert generate key error") + return + } - logChan <- "Preparing lego configurations" - myUser := MyUser{ - Email: settings.ServerSettings.Email, - key: privateKey, - } + logChan <- "Preparing lego configurations" + myUser := MyUser{ + Email: settings.ServerSettings.Email, + key: privateKey, + } - config := lego.NewConfig(&myUser) + config := lego.NewConfig(&myUser) - if settings.ServerSettings.Demo { - config.CADirURL = "https://acme-staging-v02.api.letsencrypt.org/directory" - } + if settings.ServerSettings.Demo { + config.CADirURL = "https://acme-staging-v02.api.letsencrypt.org/directory" + } - if settings.ServerSettings.CADir != "" { - config.CADirURL = settings.ServerSettings.CADir - if config.HTTPClient != nil { - config.HTTPClient.Transport = &http.Transport{ - TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, - } - } - } + if settings.ServerSettings.CADir != "" { + config.CADirURL = settings.ServerSettings.CADir + if config.HTTPClient != nil { + config.HTTPClient.Transport = &http.Transport{ + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + } + } + } - config.Certificate.KeyType = certcrypto.RSA2048 + config.Certificate.KeyType = certcrypto.RSA2048 - logChan <- "Creating client facilitates communication with the CA server" - // A client facilitates communication with the CA server. - client, err := lego.NewClient(config) - if err != nil { - errChan <- errors.Wrap(err, "issue cert new client error") - return - } + logChan <- "Creating client facilitates communication with the CA server" + // A client facilitates communication with the CA server. + client, err := lego.NewClient(config) + if err != nil { + errChan <- errors.Wrap(err, "issue cert new client error") + return + } - logChan <- "Using HTTP01 challenge provider" - err = client.Challenge.SetHTTP01Provider( - http01.NewProviderServer("", - settings.ServerSettings.HTTPChallengePort, - ), - ) + logChan <- "Using HTTP01 challenge provider" + err = client.Challenge.SetHTTP01Provider( + http01.NewProviderServer("", + settings.ServerSettings.HTTPChallengePort, + ), + ) - if err != nil { - errChan <- errors.Wrap(err, "fail to challenge") - return - } + if err != nil { + errChan <- errors.Wrap(err, "fail to challenge") + return + } - // New users will need to register - logChan <- "Registering user" - reg, err := client.Registration.Register(registration.RegisterOptions{TermsOfServiceAgreed: true}) - if err != nil { - errChan <- errors.Wrap(err, "fail to register") - return - } - myUser.Registration = reg + // New users will need to register + logChan <- "Registering user" + reg, err := client.Registration.Register(registration.RegisterOptions{TermsOfServiceAgreed: true}) + if err != nil { + errChan <- errors.Wrap(err, "fail to register") + return + } + myUser.Registration = reg - request := certificate.ObtainRequest{ - Domains: domain, - Bundle: true, - } + request := certificate.ObtainRequest{ + Domains: domain, + Bundle: true, + } - logChan <- "Obtaining certificate" - certificates, err := client.Certificate.Obtain(request) - if err != nil { - errChan <- errors.Wrap(err, "fail to obtain") - return - } - name := strings.Join(domain, "_") - saveDir := nginx.GetConfPath("ssl/" + name) - if _, err = os.Stat(saveDir); os.IsNotExist(err) { - err = os.MkdirAll(saveDir, 0755) - if err != nil { - errChan <- errors.Wrap(err, "fail to mkdir") - return - } - } + logChan <- "Obtaining certificate" + certificates, err := client.Certificate.Obtain(request) + if err != nil { + errChan <- errors.Wrap(err, "fail to obtain") + return + } + name := strings.Join(domain, "_") + saveDir := nginx.GetConfPath("ssl/" + name) + if _, err = os.Stat(saveDir); os.IsNotExist(err) { + err = os.MkdirAll(saveDir, 0755) + if err != nil { + errChan <- errors.Wrap(err, "fail to mkdir") + return + } + } - // Each certificate comes back with the cert bytes, the bytes of the client's - // private key, and a certificate URL. SAVE THESE TO DISK. - logChan <- "Writing certificate to disk" - err = os.WriteFile(filepath.Join(saveDir, "fullchain.cer"), - certificates.Certificate, 0644) + // Each certificate comes back with the cert bytes, the bytes of the client's + // private key, and a certificate URL. SAVE THESE TO DISK. + logChan <- "Writing certificate to disk" + err = os.WriteFile(filepath.Join(saveDir, "fullchain.cer"), + certificates.Certificate, 0644) - if err != nil { - errChan <- errors.Wrap(err, "error issue cert write fullchain.cer") - return - } + if err != nil { + errChan <- errors.Wrap(err, "error issue cert write fullchain.cer") + return + } - logChan <- "Writing certificate private key to disk" - err = os.WriteFile(filepath.Join(saveDir, "private.key"), - certificates.PrivateKey, 0644) + logChan <- "Writing certificate private key to disk" + err = os.WriteFile(filepath.Join(saveDir, "private.key"), + certificates.PrivateKey, 0644) - if err != nil { - errChan <- errors.Wrap(err, "fail to write key") - return - } + if err != nil { + errChan <- errors.Wrap(err, "fail to write key") + return + } - close(errChan) - logChan <- "Reloading nginx" + close(errChan) + logChan <- "Reloading nginx" - nginx.Reload() + nginx.Reload() - logChan <- "Finished" + logChan <- "Finished" - close(logChan) + close(logChan) }