diff --git a/web/gettext.config.mjs b/web/gettext.config.mjs index 4c47e63d..e422b02f 100644 --- a/web/gettext.config.mjs +++ b/web/gettext.config.mjs @@ -1,57 +1,7 @@ export default { input: { include: ['**/*.js', '**/*.ts', '**/*.vue'], - exclude: ['utils/gettext/**'], - jsExtractorOpts: [ - { - keyword: '__', // $gettext - options: { - content: { - replaceNewLines: '\n' - }, - arguments: { - text: 0 - } - } - }, - { - keyword: '_n', // $ngettext - options: { - content: { - replaceNewLines: '\n' - }, - arguments: { - text: 0, - textPlural: 1 - } - } - }, - { - keyword: '_x', // $pgettext - options: { - content: { - replaceNewLines: '\n' - }, - arguments: { - context: 0, - text: 1 - } - } - }, - { - keyword: '_nx', // $npgettext - options: { - content: { - replaceNewLines: '\n' - }, - arguments: { - context: 0, - text: 1, - textPlural: 2 - } - } - } - ] + exclude: ['utils/gettext/**'] }, output: { path: './src/locales', diff --git a/web/src/locales/en.po b/web/src/locales/en.po index 189f6e89..08bc343f 100644 --- a/web/src/locales/en.po +++ b/web/src/locales/en.po @@ -9,22 +9,913 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/views/setting/SettingHttps.vue:25 -msgid "Saved successfully" +#: src/views/app/IndexView.vue:19 src/views/app/IndexView.vue:159 +#: src/views/app/IndexView.vue:164 +msgid "Install" +msgstr "" + +#: src/views/app/IndexView.vue:37 +msgid "App Name" +msgstr "" + +#: src/views/app/IndexView.vue:44 +msgid "Description" +msgstr "" + +#: src/views/app/IndexView.vue:51 +msgid "Installed Version" +msgstr "" + +#: src/views/app/IndexView.vue:57 +msgid "Show in Home" +msgstr "" + +#: src/views/app/IndexView.vue:71 src/views/backup/ListView.vue:58 +#: src/views/database/DatabaseList.vue:74 src/views/database/ServerList.vue:135 +msgid "Actions" +msgstr "" + +#: src/views/app/IndexView.vue:91 +msgid "" +"Updating app %{ app } may reset related configurations to default state, are " +"you sure to continue?" +msgstr "" + +#: src/views/app/IndexView.vue:101 +msgid "Update" +msgstr "" + +#: src/views/app/IndexView.vue:120 +msgid "Manage" +msgstr "" + +#: src/views/app/IndexView.vue:133 +msgid "Are you sure to uninstall app %{ app }?" +msgstr "" + +#: src/views/app/IndexView.vue:143 +msgid "Uninstall" +msgstr "" + +#: src/views/app/IndexView.vue:189 +#, fuzzy +msgid "Setup successfully" msgstr "Saved successfully" -#: src/views/setting/SettingHttps.vue:34 -msgid "Panel HTTPS" -msgstr "Panel HTTPS" +#: src/views/app/IndexView.vue:195 src/views/app/IndexView.vue:201 +#: src/views/app/VersionModal.vue:31 +msgid "Task submitted, please check the progress in background tasks" +msgstr "" -#: src/views/setting/SettingHttps.vue:37 +#: src/views/app/IndexView.vue:212 +#, fuzzy +msgid "Cache updated successfully" +msgstr "Saved successfully" + +#: src/views/app/IndexView.vue:226 +msgid "Update Cache" +msgstr "" + +#: src/views/app/IndexView.vue:230 +msgid "" +"Before updating apps, it is strongly recommended to backup/snapshot first, " +"so you can roll back immediately if there are any issues!" +msgstr "" + +#: src/views/app/VersionModal.vue:71 +msgid "Channel" +msgstr "" + +#: src/views/app/VersionModal.vue:78 +msgid "Version" +msgstr "" + +#: src/views/app/VersionModal.vue:79 +msgid "Please select a channel" +msgstr "" + +#: src/views/app/VersionModal.vue:89 src/views/backup/ListView.vue:237 +#: src/views/backup/ListView.vue:257 src/views/cert/CreateAccountModal.vue:114 +#: src/views/cert/CreateCertModal.vue:111 src/views/cert/CreateDnsModal.vue:173 +#: src/views/cert/ObtainModal.vue:126 src/views/cert/UploadCertModal.vue:55 +#: src/views/database/CreateDatabaseModal.vue:127 +#: src/views/file/ToolBar.vue:261 src/views/file/ToolBar.vue:282 +msgid "Submit" +msgstr "" + +#: src/views/backup/IndexView.vue:37 src/views/backup/ListView.vue:217 +#: src/views/backup/ListView.vue:250 src/views/cert/CreateCertModal.vue:86 +msgid "Website" +msgstr "" + +#: src/views/backup/ListView.vue:36 +msgid "Filename" +msgstr "" + +#: src/views/backup/ListView.vue:43 +msgid "Size" +msgstr "" + +#: src/views/backup/ListView.vue:49 src/views/database/ServerList.vue:126 +msgid "Update Date" +msgstr "" + +#: src/views/backup/ListView.vue:77 +msgid "Restore" +msgstr "" + +#: src/views/backup/ListView.vue:88 +msgid "Are you sure you want to delete this backup?" +msgstr "" + +#: src/views/backup/ListView.vue:99 src/views/database/DatabaseList.vue:99 +#: src/views/database/ServerList.vue:212 src/views/file/ToolBar.vue:238 +msgid "Delete" +msgstr "" + +#: src/views/backup/ListView.vue:126 src/views/cert/CreateAccountModal.vue:49 +#: src/views/cert/CreateCertModal.vue:50 src/views/cert/CreateDnsModal.vue:35 +#: src/views/cert/UploadCertModal.vue:21 +#: src/views/database/CreateDatabaseModal.vue:28 src/views/file/ToolBar.vue:45 +#, fuzzy +msgid "Created successfully" +msgstr "Saved successfully" + +#: src/views/backup/ListView.vue:132 +msgid "Restoring..." +msgstr "" + +#: src/views/backup/ListView.vue:139 +#, fuzzy +msgid "Restored successfully" +msgstr "Saved successfully" + +#: src/views/backup/ListView.vue:149 src/views/database/DatabaseList.vue:124 +#: src/views/database/ServerList.vue:237 src/views/file/ToolBar.vue:189 +#, fuzzy +msgid "Deleted successfully" +msgstr "Saved successfully" + +#: src/views/backup/ListView.vue:182 src/views/backup/ListView.vue:209 +msgid "Create Backup" +msgstr "" + +#: src/views/backup/ListView.vue:183 src/views/backup/UploadModal.vue:39 +msgid "Upload Backup" +msgstr "" + +#: src/views/backup/ListView.vue:218 src/views/backup/ListView.vue:251 +msgid "Select website" +msgstr "" + +#: src/views/backup/ListView.vue:220 +#: src/views/database/CreateDatabaseModal.vue:70 +#: src/views/database/DatabaseList.vue:35 +msgid "Database Name" +msgstr "" + +#: src/views/backup/ListView.vue:225 +#: src/views/database/CreateDatabaseModal.vue:75 +msgid "Enter database name" +msgstr "" + +#: src/views/backup/ListView.vue:228 +msgid "Save Directory" +msgstr "" + +#: src/views/backup/ListView.vue:233 +msgid "Leave empty to use default path" +msgstr "" + +#: src/views/backup/ListView.vue:242 +msgid "Restore Backup" +msgstr "" + +#: src/views/backup/ListView.vue:253 src/views/database/IndexView.vue:45 +msgid "Database" +msgstr "" + +#: src/views/backup/route.ts:19 +msgid "Backup" +msgstr "" + +#: src/views/backup/UploadModal.vue:20 +msgid "Upload %{ filename } successfully" +msgstr "" + +#: src/views/backup/UploadModal.vue:51 +msgid "Click or drag files to this area to upload" +msgstr "" + +#: src/views/backup/UploadModal.vue:53 +msgid "" +"For large files, it is recommended to use SFTP or other methods to upload" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:38 +msgid "Registering account with CA, please wait patiently" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:61 src/views/cert/IndexView.vue:106 +msgid "Create Account" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:68 +msgid "" +"Google and SSL.com require obtaining KID and HMAC from their official " +"websites first" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:70 +msgid "" +"Google is not accessible in mainland China, and other CAs depend on network " +"conditions. GoogleCN or Let's Encrypt are recommended" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:73 +msgid "CA" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:76 +msgid "Select CA" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:81 +#: src/views/cert/CreateCertModal.vue:78 +msgid "Key Type" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:84 +#: src/views/cert/CreateCertModal.vue:81 +msgid "Select key type" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:89 +msgid "Email" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:94 +msgid "Enter email address" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:102 +msgid "Enter KID" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:110 +msgid "Enter HMAC" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:59 src/views/cert/IndexView.vue:102 +#, fuzzy +msgid "Create Certificate" +msgstr "Certificate" + +#: src/views/cert/CreateCertModal.vue:67 +msgid "" +"You can automatically issue and deploy certificates by selecting either " +"Website or DNS, or you can manually enter domain names and set up DNS " +"resolution to issue certificates" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:70 src/views/cert/ObtainModal.vue:53 +msgid "Domain" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:89 +msgid "Select website for certificate deployment" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:94 +msgid "Account" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:97 +msgid "Select account for certificate issuance" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:102 src/views/cert/CreateDnsModal.vue:55 +msgid "DNS" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:105 +msgid "Select DNS for certificate issuance" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:44 src/views/cert/IndexView.vue:110 +msgid "Create DNS" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:52 +msgid "Comment Name" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:53 +msgid "Enter comment name" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:58 +msgid "Select DNS" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:64 +msgid "Enter Aliyun Access Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:67 +msgid "Enter Aliyun Secret Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:70 +msgid "Enter Tencent Cloud SecretId" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:73 +msgid "Enter Tencent Cloud SecretKey" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:76 +msgid "Enter Huawei Cloud AccessKeyId" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:82 +msgid "Enter Huawei Cloud SecretAccessKey" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:86 +msgid "Enter Western Digital Username" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:92 +msgid "Enter Western Digital API Password" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:99 +msgid "Enter Cloudflare API Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:103 +msgid "Enter GoDaddy Token" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:106 +msgid "Enter G-Core API Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:109 +msgid "Enter Porkbun API Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:115 +msgid "Enter Porkbun Secret Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:122 +msgid "Enter Namecheap API Username" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:126 +msgid "Enter Namecheap API Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:132 +msgid "Enter NameSilo API Token" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:136 +msgid "Enter Name.com Username" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:139 +msgid "Enter Name.com Token" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:146 +msgid "Enter ClouDNS Auth ID (use Sub Auth ID by adding sub-prefix)" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:153 +msgid "Enter ClouDNS Auth Password" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:157 +msgid "Enter Duck DNS Token" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:163 +msgid "Enter Hetzner Auth API Token" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:167 +msgid "Enter Linode Token" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:170 +msgid "Enter Vercel Token" +msgstr "" + +#: src/views/cert/IndexView.vue:98 src/views/cert/UploadCertModal.vue:30 +#, fuzzy +msgid "Upload Certificate" +msgstr "Certificate" + +#: src/views/cert/IndexView.vue:115 +#, fuzzy +msgid "Certificate List" +msgstr "Certificate" + +#: src/views/cert/IndexView.vue:118 +msgid "Account List" +msgstr "" + +#: src/views/cert/IndexView.vue:121 +msgid "DNS List" +msgstr "" + +#: src/views/cert/ObtainModal.vue:18 +msgid "Automatic" +msgstr "" + +#: src/views/cert/ObtainModal.vue:19 +msgid "Manual" +msgstr "" + +#: src/views/cert/ObtainModal.vue:20 +msgid "Self-signed" +msgstr "" + +#: src/views/cert/ObtainModal.vue:24 src/views/cert/ObtainModal.vue:77 +msgid "Please wait..." +msgstr "" + +#: src/views/cert/ObtainModal.vue:33 src/views/cert/ObtainModal.vue:85 +#: src/views/cert/ObtainModal.vue:103 +#, fuzzy +msgid "Issuance successful" +msgstr "Saved successfully" + +#: src/views/cert/ObtainModal.vue:41 +msgid "" +"Please set up DNS resolution for the domain first, then continue with the " +"issuance" +msgstr "" + +#: src/views/cert/ObtainModal.vue:44 +msgid "DNS Records to Set" +msgstr "" + +#: src/views/cert/ObtainModal.vue:54 src/views/database/DatabaseList.vue:12 +#: src/views/database/ServerList.vue:17 +msgid "Type" +msgstr "" + +#: src/views/cert/ObtainModal.vue:55 +msgid "Host Record" +msgstr "" + +#: src/views/cert/ObtainModal.vue:56 +msgid "Record Value" +msgstr "" + +#: src/views/cert/ObtainModal.vue:74 +msgid "Issue" +msgstr "" + +#: src/views/cert/ObtainModal.vue:116 +#, fuzzy +msgid "Issue Certificate" +msgstr "Certificate" + +#: src/views/cert/ObtainModal.vue:123 +msgid "Issuance Mode" +msgstr "" + +#: src/views/cert/route.ts:19 src/views/cert/UploadCertModal.vue:38 +#: src/views/setting/SettingHttps.vue:39 msgid "Certificate" msgstr "Certificate" -#: src/views/setting/SettingHttps.vue:44 +#: src/views/cert/UploadCertModal.vue:42 +msgid "Enter the content of the PEM certificate file" +msgstr "" + +#: src/views/cert/UploadCertModal.vue:46 src/views/setting/SettingHttps.vue:46 msgid "Private Key" msgstr "Private Key" -#: src/views/setting/SettingHttps.vue:54 +#: src/views/cert/UploadCertModal.vue:50 +msgid "Enter the content of the KEY private key file" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:24 +msgid "Update Panel" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:25 +msgid "Are you sure you want to update the panel?" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:26 +msgid "Confirm" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:27 src/views/file/ToolBar.vue:139 +#: src/views/file/ToolBar.vue:226 +msgid "Cancel" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:29 +msgid "Panel updating..." +msgstr "" + +#: src/views/dashboard/UpdateView.vue:40 +#, fuzzy +msgid "Panel updated successfully" +msgstr "Saved successfully" + +#: src/views/dashboard/UpdateView.vue:47 +msgid "Update canceled" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:59 +msgid "Update Now" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:82 +msgid "Loading update information, please wait a moment" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:20 +msgid "Local (localhost)" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:21 +msgid "All (%)" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:22 +msgid "Specific" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:54 +#: src/views/database/IndexView.vue:32 +msgid "Create Database" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:62 +#: src/views/database/DatabaseList.vue:42 src/views/database/IndexView.vue:51 +msgid "Server" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:66 +msgid "Select server" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:78 +#: src/views/database/IndexView.vue:36 +msgid "Create User" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:81 +msgid "Authorized User" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:86 +msgid "Enter authorized username (leave empty for no authorization)" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:89 +#: src/views/database/ServerList.vue:47 src/views/login/IndexView.vue:113 +#: src/views/setting/SettingBase.vue:63 +msgid "Username" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:94 +msgid "Enter username" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:97 +#: src/views/database/ServerList.vue:56 src/views/login/IndexView.vue:121 +#: src/views/setting/SettingBase.vue:69 +msgid "Password" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:103 +msgid "Enter password" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:106 +#: src/views/database/ServerList.vue:87 +msgid "Host" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:110 +msgid "Select host" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:117 +msgid "Specific Host" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:123 +msgid "Enter supported host address" +msgstr "" + +#: src/views/database/DatabaseList.vue:47 +msgid "Encoding" +msgstr "" + +#: src/views/database/DatabaseList.vue:57 src/views/database/ServerList.vue:97 +msgid "Comment" +msgstr "" + +#: src/views/database/DatabaseList.vue:88 +msgid "Are you sure you want to delete this database?" +msgstr "" + +#: src/views/database/DatabaseList.vue:130 +#: src/views/database/ServerList.vue:243 +#, fuzzy +msgid "Modified successfully" +msgstr "Saved successfully" + +#: src/views/database/IndexView.vue:40 +msgid "Add Server" +msgstr "" + +#: src/views/database/IndexView.vue:48 +msgid "User" +msgstr "" + +#: src/views/database/ServerList.vue:40 src/views/file/ToolBar.vue:257 +msgid "Name" +msgstr "" + +#: src/views/database/ServerList.vue:52 src/views/database/ServerList.vue:67 +msgid "None" +msgstr "" + +#: src/views/database/ServerList.vue:76 src/views/file/ToolBar.vue:145 +#: src/views/file/ToolBar.vue:165 +#, fuzzy +msgid "Copied successfully" +msgstr "Saved successfully" + +#: src/views/database/ServerList.vue:80 src/views/file/ToolBar.vue:232 +msgid "Copy" +msgstr "" + +#: src/views/database/ServerList.vue:114 +msgid "Status" +msgstr "" + +#: src/views/database/ServerList.vue:121 +msgid "Valid" +msgstr "" + +#: src/views/database/ServerList.vue:121 +msgid "Invalid" +msgstr "" + +#: src/views/database/ServerList.vue:148 +#, fuzzy +msgid "Synchronized successfully" +msgstr "Saved successfully" + +#: src/views/database/ServerList.vue:154 +msgid "" +"Are you sure you want to synchronize database users (excluding password) to " +"the panel?" +msgstr "" + +#: src/views/database/ServerList.vue:164 +msgid "Sync" +msgstr "" + +#: src/views/database/ServerList.vue:183 +msgid "Modify" +msgstr "" + +#: src/views/database/ServerList.vue:193 +msgid "" +"Built-in servers cannot be deleted. If you need to delete them, please " +"uninstall the corresponding application" +msgstr "" + +#: src/views/database/ServerList.vue:201 +msgid "Are you sure you want to delete the server?" +msgstr "" + +#: src/views/error-page/NotFound.vue:10 +msgid "Sorry, the page you visited does not exist." +msgstr "" + +#: src/views/error-page/NotFound.vue:15 +msgid "Back to Home" +msgstr "" + +#: src/views/file/ToolBar.vue:37 src/views/file/ToolBar.vue:51 +msgid "Invalid name" +msgstr "" + +#: src/views/file/ToolBar.vue:60 +#, fuzzy +msgid "Download task created successfully" +msgstr "Saved successfully" + +#: src/views/file/ToolBar.vue:66 +msgid "Please select files/folders to copy" +msgstr "" + +#: src/views/file/ToolBar.vue:77 src/views/file/ToolBar.vue:94 +msgid "Marked successfully, please navigate to the destination path to paste" +msgstr "" + +#: src/views/file/ToolBar.vue:83 +msgid "Please select files/folders to move" +msgstr "" + +#: src/views/file/ToolBar.vue:104 +msgid "Please mark the files/folders to copy or move first" +msgstr "" + +#: src/views/file/ToolBar.vue:128 +msgid "Warning" +msgstr "" + +#: src/views/file/ToolBar.vue:129 +msgid "" +"There are items with the same name. %{ items } Do you want to overwrite?" +msgstr "" + +#: src/views/file/ToolBar.vue:138 +msgid "Overwrite" +msgstr "" + +#: src/views/file/ToolBar.vue:151 src/views/file/ToolBar.vue:171 +#, fuzzy +msgid "Moved successfully" +msgstr "Saved successfully" + +#: src/views/file/ToolBar.vue:157 +msgid "Canceled" +msgstr "" + +#: src/views/file/ToolBar.vue:180 +msgid "Please select files/folders to delete" +msgstr "" + +#: src/views/file/ToolBar.vue:214 +msgid "File" +msgstr "" + +#: src/views/file/ToolBar.vue:215 +msgid "Folder" +msgstr "" + +#: src/views/file/ToolBar.vue:219 src/views/file/ToolBar.vue:249 +msgid "New" +msgstr "" + +#: src/views/file/ToolBar.vue:221 +msgid "Upload" +msgstr "" + +#: src/views/file/ToolBar.vue:222 src/views/file/ToolBar.vue:267 +msgid "Remote Download" +msgstr "" + +#: src/views/file/ToolBar.vue:229 +msgid "Paste" +msgstr "" + +#: src/views/file/ToolBar.vue:233 +msgid "Move" +msgstr "" + +#: src/views/file/ToolBar.vue:234 +msgid "Compress" +msgstr "" + +#: src/views/file/ToolBar.vue:235 +msgid "Permission" +msgstr "" + +#: src/views/file/ToolBar.vue:240 +msgid "Are you sure you want to delete in bulk?" +msgstr "" + +#: src/views/file/ToolBar.vue:275 +msgid "Download URL" +msgstr "" + +#: src/views/file/ToolBar.vue:278 +#, fuzzy +msgid "Save as" +msgstr "Save" + +#: src/views/login/IndexView.vue:46 +msgid "Please enter username and password" +msgstr "" + +#: src/views/login/IndexView.vue:50 +msgid "" +"Failed to get encryption public key, please refresh the page and try again" +msgstr "" + +#: src/views/login/IndexView.vue:61 +#, fuzzy +msgid "Login successful!" +msgstr "Saved successfully" + +#: src/views/login/IndexView.vue:130 +msgid "Safe Login" +msgstr "" + +#: src/views/login/IndexView.vue:131 +msgid "Remember Me" +msgstr "" + +#: src/views/login/IndexView.vue:145 +msgid "Login" +msgstr "" + +#: src/views/setting/IndexView.vue:17 +msgid "Basic" +msgstr "" + +#: src/views/setting/SettingBase.vue:34 src/views/setting/SettingHttps.vue:27 +msgid "Saved successfully" +msgstr "Saved successfully" + +#: src/views/setting/SettingBase.vue:51 +msgid "" +"Modifying panel port/entrance requires corresponding changes in the browser " +"address bar to access the panel!" +msgstr "" + +#: src/views/setting/SettingBase.vue:54 src/views/setting/SettingBase.vue:57 +msgid "Panel Name" +msgstr "" + +#: src/views/setting/SettingBase.vue:60 +msgid "Language" +msgstr "" + +#: src/views/setting/SettingBase.vue:66 src/views/setting/SettingBase.vue:72 +#: src/views/setting/SettingBase.vue:90 +msgid "admin" +msgstr "" + +#: src/views/setting/SettingBase.vue:75 +#, fuzzy +msgid "Certificate Default Email" +msgstr "Certificate" + +#: src/views/setting/SettingBase.vue:78 +msgid "admin@example.com" +msgstr "" + +#: src/views/setting/SettingBase.vue:81 +msgid "Port" +msgstr "" + +#: src/views/setting/SettingBase.vue:84 +msgid "8888" +msgstr "" + +#: src/views/setting/SettingBase.vue:87 +msgid "Security Entrance" +msgstr "" + +#: src/views/setting/SettingBase.vue:93 +msgid "Offline Mode" +msgstr "" + +#: src/views/setting/SettingBase.vue:96 +msgid "Auto Update" +msgstr "" + +#: src/views/setting/SettingBase.vue:99 +msgid "Default Website Directory" +msgstr "" + +#: src/views/setting/SettingBase.vue:102 +msgid "/www/wwwroot" +msgstr "" + +#: src/views/setting/SettingBase.vue:105 +msgid "Default Backup Directory" +msgstr "" + +#: src/views/setting/SettingBase.vue:108 +msgid "/www/backup" +msgstr "" + +#: src/views/setting/SettingBase.vue:114 src/views/setting/SettingHttps.vue:56 msgid "Save" msgstr "Save" + +#: src/views/setting/SettingHttps.vue:36 +msgid "Panel HTTPS" +msgstr "Panel HTTPS" diff --git a/web/src/locales/frontend.pot b/web/src/locales/frontend.pot index 4c7aa4de..f2fb15cc 100644 --- a/web/src/locales/frontend.pot +++ b/web/src/locales/frontend.pot @@ -2,22 +2,924 @@ msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" -#: src/views/setting/SettingHttps.vue:25 -msgid "Saved successfully" +#: src/views/app/IndexView.vue:19 +#: src/views/app/IndexView.vue:159 +#: src/views/app/IndexView.vue:164 +msgid "Install" msgstr "" -#: src/views/setting/SettingHttps.vue:34 -msgid "Panel HTTPS" +#: src/views/app/IndexView.vue:37 +msgid "App Name" msgstr "" -#: src/views/setting/SettingHttps.vue:37 +#: src/views/app/IndexView.vue:44 +msgid "Description" +msgstr "" + +#: src/views/app/IndexView.vue:51 +msgid "Installed Version" +msgstr "" + +#: src/views/app/IndexView.vue:57 +msgid "Show in Home" +msgstr "" + +#: src/views/app/IndexView.vue:71 +#: src/views/backup/ListView.vue:58 +#: src/views/database/DatabaseList.vue:74 +#: src/views/database/ServerList.vue:135 +msgid "Actions" +msgstr "" + +#: src/views/app/IndexView.vue:91 +msgid "Updating app %{ app } may reset related configurations to default state, are you sure to continue?" +msgstr "" + +#: src/views/app/IndexView.vue:101 +msgid "Update" +msgstr "" + +#: src/views/app/IndexView.vue:120 +msgid "Manage" +msgstr "" + +#: src/views/app/IndexView.vue:133 +msgid "Are you sure to uninstall app %{ app }?" +msgstr "" + +#: src/views/app/IndexView.vue:143 +msgid "Uninstall" +msgstr "" + +#: src/views/app/IndexView.vue:189 +msgid "Setup successfully" +msgstr "" + +#: src/views/app/IndexView.vue:195 +#: src/views/app/IndexView.vue:201 +#: src/views/app/VersionModal.vue:31 +msgid "Task submitted, please check the progress in background tasks" +msgstr "" + +#: src/views/app/IndexView.vue:212 +msgid "Cache updated successfully" +msgstr "" + +#: src/views/app/IndexView.vue:226 +msgid "Update Cache" +msgstr "" + +#: src/views/app/IndexView.vue:230 +msgid "Before updating apps, it is strongly recommended to backup/snapshot first, so you can roll back immediately if there are any issues!" +msgstr "" + +#: src/views/app/VersionModal.vue:71 +msgid "Channel" +msgstr "" + +#: src/views/app/VersionModal.vue:78 +msgid "Version" +msgstr "" + +#: src/views/app/VersionModal.vue:79 +msgid "Please select a channel" +msgstr "" + +#: src/views/app/VersionModal.vue:89 +#: src/views/backup/ListView.vue:237 +#: src/views/backup/ListView.vue:257 +#: src/views/cert/CreateAccountModal.vue:114 +#: src/views/cert/CreateCertModal.vue:111 +#: src/views/cert/CreateDnsModal.vue:173 +#: src/views/cert/ObtainModal.vue:126 +#: src/views/cert/UploadCertModal.vue:55 +#: src/views/database/CreateDatabaseModal.vue:127 +#: src/views/file/ToolBar.vue:261 +#: src/views/file/ToolBar.vue:282 +msgid "Submit" +msgstr "" + +#: src/views/backup/IndexView.vue:37 +#: src/views/backup/ListView.vue:217 +#: src/views/backup/ListView.vue:250 +#: src/views/cert/CreateCertModal.vue:86 +msgid "Website" +msgstr "" + +#: src/views/backup/ListView.vue:36 +msgid "Filename" +msgstr "" + +#: src/views/backup/ListView.vue:43 +msgid "Size" +msgstr "" + +#: src/views/backup/ListView.vue:49 +#: src/views/database/ServerList.vue:126 +msgid "Update Date" +msgstr "" + +#: src/views/backup/ListView.vue:77 +msgid "Restore" +msgstr "" + +#: src/views/backup/ListView.vue:88 +msgid "Are you sure you want to delete this backup?" +msgstr "" + +#: src/views/backup/ListView.vue:99 +#: src/views/database/DatabaseList.vue:99 +#: src/views/database/ServerList.vue:212 +#: src/views/file/ToolBar.vue:238 +msgid "Delete" +msgstr "" + +#: src/views/backup/ListView.vue:126 +#: src/views/cert/CreateAccountModal.vue:49 +#: src/views/cert/CreateCertModal.vue:50 +#: src/views/cert/CreateDnsModal.vue:35 +#: src/views/cert/UploadCertModal.vue:21 +#: src/views/database/CreateDatabaseModal.vue:28 +#: src/views/file/ToolBar.vue:45 +msgid "Created successfully" +msgstr "" + +#: src/views/backup/ListView.vue:132 +msgid "Restoring..." +msgstr "" + +#: src/views/backup/ListView.vue:139 +msgid "Restored successfully" +msgstr "" + +#: src/views/backup/ListView.vue:149 +#: src/views/database/DatabaseList.vue:124 +#: src/views/database/ServerList.vue:237 +#: src/views/file/ToolBar.vue:189 +msgid "Deleted successfully" +msgstr "" + +#: src/views/backup/ListView.vue:182 +#: src/views/backup/ListView.vue:209 +msgid "Create Backup" +msgstr "" + +#: src/views/backup/ListView.vue:183 +#: src/views/backup/UploadModal.vue:39 +msgid "Upload Backup" +msgstr "" + +#: src/views/backup/ListView.vue:218 +#: src/views/backup/ListView.vue:251 +msgid "Select website" +msgstr "" + +#: src/views/backup/ListView.vue:220 +#: src/views/database/CreateDatabaseModal.vue:70 +#: src/views/database/DatabaseList.vue:35 +msgid "Database Name" +msgstr "" + +#: src/views/backup/ListView.vue:225 +#: src/views/database/CreateDatabaseModal.vue:75 +msgid "Enter database name" +msgstr "" + +#: src/views/backup/ListView.vue:228 +msgid "Save Directory" +msgstr "" + +#: src/views/backup/ListView.vue:233 +msgid "Leave empty to use default path" +msgstr "" + +#: src/views/backup/ListView.vue:242 +msgid "Restore Backup" +msgstr "" + +#: src/views/backup/ListView.vue:253 +#: src/views/database/IndexView.vue:45 +msgid "Database" +msgstr "" + +#: src/views/backup/route.ts:19 +msgid "Backup" +msgstr "" + +#: src/views/backup/UploadModal.vue:20 +msgid "Upload %{ filename } successfully" +msgstr "" + +#: src/views/backup/UploadModal.vue:51 +msgid "Click or drag files to this area to upload" +msgstr "" + +#: src/views/backup/UploadModal.vue:53 +msgid "For large files, it is recommended to use SFTP or other methods to upload" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:38 +msgid "Registering account with CA, please wait patiently" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:61 +#: src/views/cert/IndexView.vue:106 +msgid "Create Account" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:68 +msgid "Google and SSL.com require obtaining KID and HMAC from their official websites first" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:70 +msgid "Google is not accessible in mainland China, and other CAs depend on network conditions. GoogleCN or Let's Encrypt are recommended" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:73 +msgid "CA" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:76 +msgid "Select CA" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:81 +#: src/views/cert/CreateCertModal.vue:78 +msgid "Key Type" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:84 +#: src/views/cert/CreateCertModal.vue:81 +msgid "Select key type" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:89 +msgid "Email" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:94 +msgid "Enter email address" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:102 +msgid "Enter KID" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:110 +msgid "Enter HMAC" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:59 +#: src/views/cert/IndexView.vue:102 +msgid "Create Certificate" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:67 +msgid "You can automatically issue and deploy certificates by selecting either Website or DNS, or you can manually enter domain names and set up DNS resolution to issue certificates" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:70 +#: src/views/cert/ObtainModal.vue:53 +msgid "Domain" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:89 +msgid "Select website for certificate deployment" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:94 +msgid "Account" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:97 +msgid "Select account for certificate issuance" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:102 +#: src/views/cert/CreateDnsModal.vue:55 +msgid "DNS" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:105 +msgid "Select DNS for certificate issuance" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:44 +#: src/views/cert/IndexView.vue:110 +msgid "Create DNS" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:52 +msgid "Comment Name" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:53 +msgid "Enter comment name" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:58 +msgid "Select DNS" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:64 +msgid "Enter Aliyun Access Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:67 +msgid "Enter Aliyun Secret Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:70 +msgid "Enter Tencent Cloud SecretId" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:73 +msgid "Enter Tencent Cloud SecretKey" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:76 +msgid "Enter Huawei Cloud AccessKeyId" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:82 +msgid "Enter Huawei Cloud SecretAccessKey" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:86 +msgid "Enter Western Digital Username" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:92 +msgid "Enter Western Digital API Password" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:99 +msgid "Enter Cloudflare API Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:103 +msgid "Enter GoDaddy Token" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:106 +msgid "Enter G-Core API Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:109 +msgid "Enter Porkbun API Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:115 +msgid "Enter Porkbun Secret Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:122 +msgid "Enter Namecheap API Username" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:126 +msgid "Enter Namecheap API Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:132 +msgid "Enter NameSilo API Token" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:136 +msgid "Enter Name.com Username" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:139 +msgid "Enter Name.com Token" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:146 +msgid "Enter ClouDNS Auth ID (use Sub Auth ID by adding sub-prefix)" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:153 +msgid "Enter ClouDNS Auth Password" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:157 +msgid "Enter Duck DNS Token" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:163 +msgid "Enter Hetzner Auth API Token" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:167 +msgid "Enter Linode Token" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:170 +msgid "Enter Vercel Token" +msgstr "" + +#: src/views/cert/IndexView.vue:98 +#: src/views/cert/UploadCertModal.vue:30 +msgid "Upload Certificate" +msgstr "" + +#: src/views/cert/IndexView.vue:115 +msgid "Certificate List" +msgstr "" + +#: src/views/cert/IndexView.vue:118 +msgid "Account List" +msgstr "" + +#: src/views/cert/IndexView.vue:121 +msgid "DNS List" +msgstr "" + +#: src/views/cert/ObtainModal.vue:18 +msgid "Automatic" +msgstr "" + +#: src/views/cert/ObtainModal.vue:19 +msgid "Manual" +msgstr "" + +#: src/views/cert/ObtainModal.vue:20 +msgid "Self-signed" +msgstr "" + +#: src/views/cert/ObtainModal.vue:24 +#: src/views/cert/ObtainModal.vue:77 +msgid "Please wait..." +msgstr "" + +#: src/views/cert/ObtainModal.vue:33 +#: src/views/cert/ObtainModal.vue:85 +#: src/views/cert/ObtainModal.vue:103 +msgid "Issuance successful" +msgstr "" + +#: src/views/cert/ObtainModal.vue:41 +msgid "Please set up DNS resolution for the domain first, then continue with the issuance" +msgstr "" + +#: src/views/cert/ObtainModal.vue:44 +msgid "DNS Records to Set" +msgstr "" + +#: src/views/cert/ObtainModal.vue:54 +#: src/views/database/DatabaseList.vue:12 +#: src/views/database/ServerList.vue:17 +msgid "Type" +msgstr "" + +#: src/views/cert/ObtainModal.vue:55 +msgid "Host Record" +msgstr "" + +#: src/views/cert/ObtainModal.vue:56 +msgid "Record Value" +msgstr "" + +#: src/views/cert/ObtainModal.vue:74 +msgid "Issue" +msgstr "" + +#: src/views/cert/ObtainModal.vue:116 +msgid "Issue Certificate" +msgstr "" + +#: src/views/cert/ObtainModal.vue:123 +msgid "Issuance Mode" +msgstr "" + +#: src/views/cert/route.ts:19 +#: src/views/cert/UploadCertModal.vue:38 +#: src/views/setting/SettingHttps.vue:39 msgid "Certificate" msgstr "" -#: src/views/setting/SettingHttps.vue:44 +#: src/views/cert/UploadCertModal.vue:42 +msgid "Enter the content of the PEM certificate file" +msgstr "" + +#: src/views/cert/UploadCertModal.vue:46 +#: src/views/setting/SettingHttps.vue:46 msgid "Private Key" msgstr "" -#: src/views/setting/SettingHttps.vue:54 +#: src/views/cert/UploadCertModal.vue:50 +msgid "Enter the content of the KEY private key file" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:24 +msgid "Update Panel" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:25 +msgid "Are you sure you want to update the panel?" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:26 +msgid "Confirm" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:27 +#: src/views/file/ToolBar.vue:139 +#: src/views/file/ToolBar.vue:226 +msgid "Cancel" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:29 +msgid "Panel updating..." +msgstr "" + +#: src/views/dashboard/UpdateView.vue:40 +msgid "Panel updated successfully" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:47 +msgid "Update canceled" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:59 +msgid "Update Now" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:82 +msgid "Loading update information, please wait a moment" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:20 +msgid "Local (localhost)" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:21 +msgid "All (%)" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:22 +msgid "Specific" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:54 +#: src/views/database/IndexView.vue:32 +msgid "Create Database" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:62 +#: src/views/database/DatabaseList.vue:42 +#: src/views/database/IndexView.vue:51 +msgid "Server" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:66 +msgid "Select server" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:78 +#: src/views/database/IndexView.vue:36 +msgid "Create User" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:81 +msgid "Authorized User" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:86 +msgid "Enter authorized username (leave empty for no authorization)" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:89 +#: src/views/database/ServerList.vue:47 +#: src/views/login/IndexView.vue:113 +#: src/views/setting/SettingBase.vue:63 +msgid "Username" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:94 +msgid "Enter username" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:97 +#: src/views/database/ServerList.vue:56 +#: src/views/login/IndexView.vue:121 +#: src/views/setting/SettingBase.vue:69 +msgid "Password" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:103 +msgid "Enter password" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:106 +#: src/views/database/ServerList.vue:87 +msgid "Host" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:110 +msgid "Select host" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:117 +msgid "Specific Host" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:123 +msgid "Enter supported host address" +msgstr "" + +#: src/views/database/DatabaseList.vue:47 +msgid "Encoding" +msgstr "" + +#: src/views/database/DatabaseList.vue:57 +#: src/views/database/ServerList.vue:97 +msgid "Comment" +msgstr "" + +#: src/views/database/DatabaseList.vue:88 +msgid "Are you sure you want to delete this database?" +msgstr "" + +#: src/views/database/DatabaseList.vue:130 +#: src/views/database/ServerList.vue:243 +msgid "Modified successfully" +msgstr "" + +#: src/views/database/IndexView.vue:40 +msgid "Add Server" +msgstr "" + +#: src/views/database/IndexView.vue:48 +msgid "User" +msgstr "" + +#: src/views/database/ServerList.vue:40 +#: src/views/file/ToolBar.vue:257 +msgid "Name" +msgstr "" + +#: src/views/database/ServerList.vue:52 +#: src/views/database/ServerList.vue:67 +msgid "None" +msgstr "" + +#: src/views/database/ServerList.vue:76 +#: src/views/file/ToolBar.vue:145 +#: src/views/file/ToolBar.vue:165 +msgid "Copied successfully" +msgstr "" + +#: src/views/database/ServerList.vue:80 +#: src/views/file/ToolBar.vue:232 +msgid "Copy" +msgstr "" + +#: src/views/database/ServerList.vue:114 +msgid "Status" +msgstr "" + +#: src/views/database/ServerList.vue:121 +msgid "Valid" +msgstr "" + +#: src/views/database/ServerList.vue:121 +msgid "Invalid" +msgstr "" + +#: src/views/database/ServerList.vue:148 +msgid "Synchronized successfully" +msgstr "" + +#: src/views/database/ServerList.vue:154 +msgid "Are you sure you want to synchronize database users (excluding password) to the panel?" +msgstr "" + +#: src/views/database/ServerList.vue:164 +msgid "Sync" +msgstr "" + +#: src/views/database/ServerList.vue:183 +msgid "Modify" +msgstr "" + +#: src/views/database/ServerList.vue:193 +msgid "Built-in servers cannot be deleted. If you need to delete them, please uninstall the corresponding application" +msgstr "" + +#: src/views/database/ServerList.vue:201 +msgid "Are you sure you want to delete the server?" +msgstr "" + +#: src/views/error-page/NotFound.vue:10 +msgid "Sorry, the page you visited does not exist." +msgstr "" + +#: src/views/error-page/NotFound.vue:15 +msgid "Back to Home" +msgstr "" + +#: src/views/file/ToolBar.vue:37 +#: src/views/file/ToolBar.vue:51 +msgid "Invalid name" +msgstr "" + +#: src/views/file/ToolBar.vue:60 +msgid "Download task created successfully" +msgstr "" + +#: src/views/file/ToolBar.vue:66 +msgid "Please select files/folders to copy" +msgstr "" + +#: src/views/file/ToolBar.vue:77 +#: src/views/file/ToolBar.vue:94 +msgid "Marked successfully, please navigate to the destination path to paste" +msgstr "" + +#: src/views/file/ToolBar.vue:83 +msgid "Please select files/folders to move" +msgstr "" + +#: src/views/file/ToolBar.vue:104 +msgid "Please mark the files/folders to copy or move first" +msgstr "" + +#: src/views/file/ToolBar.vue:128 +msgid "Warning" +msgstr "" + +#: src/views/file/ToolBar.vue:129 +msgid "There are items with the same name. %{ items } Do you want to overwrite?" +msgstr "" + +#: src/views/file/ToolBar.vue:138 +msgid "Overwrite" +msgstr "" + +#: src/views/file/ToolBar.vue:151 +#: src/views/file/ToolBar.vue:171 +msgid "Moved successfully" +msgstr "" + +#: src/views/file/ToolBar.vue:157 +msgid "Canceled" +msgstr "" + +#: src/views/file/ToolBar.vue:180 +msgid "Please select files/folders to delete" +msgstr "" + +#: src/views/file/ToolBar.vue:214 +msgid "File" +msgstr "" + +#: src/views/file/ToolBar.vue:215 +msgid "Folder" +msgstr "" + +#: src/views/file/ToolBar.vue:219 +#: src/views/file/ToolBar.vue:249 +msgid "New" +msgstr "" + +#: src/views/file/ToolBar.vue:221 +msgid "Upload" +msgstr "" + +#: src/views/file/ToolBar.vue:222 +#: src/views/file/ToolBar.vue:267 +msgid "Remote Download" +msgstr "" + +#: src/views/file/ToolBar.vue:229 +msgid "Paste" +msgstr "" + +#: src/views/file/ToolBar.vue:233 +msgid "Move" +msgstr "" + +#: src/views/file/ToolBar.vue:234 +msgid "Compress" +msgstr "" + +#: src/views/file/ToolBar.vue:235 +msgid "Permission" +msgstr "" + +#: src/views/file/ToolBar.vue:240 +msgid "Are you sure you want to delete in bulk?" +msgstr "" + +#: src/views/file/ToolBar.vue:275 +msgid "Download URL" +msgstr "" + +#: src/views/file/ToolBar.vue:278 +msgid "Save as" +msgstr "" + +#: src/views/login/IndexView.vue:46 +msgid "Please enter username and password" +msgstr "" + +#: src/views/login/IndexView.vue:50 +msgid "Failed to get encryption public key, please refresh the page and try again" +msgstr "" + +#: src/views/login/IndexView.vue:61 +msgid "Login successful!" +msgstr "" + +#: src/views/login/IndexView.vue:130 +msgid "Safe Login" +msgstr "" + +#: src/views/login/IndexView.vue:131 +msgid "Remember Me" +msgstr "" + +#: src/views/login/IndexView.vue:145 +msgid "Login" +msgstr "" + +#: src/views/setting/IndexView.vue:17 +msgid "Basic" +msgstr "" + +#: src/views/setting/SettingBase.vue:34 +#: src/views/setting/SettingHttps.vue:27 +msgid "Saved successfully" +msgstr "" + +#: src/views/setting/SettingBase.vue:51 +msgid "Modifying panel port/entrance requires corresponding changes in the browser address bar to access the panel!" +msgstr "" + +#: src/views/setting/SettingBase.vue:54 +#: src/views/setting/SettingBase.vue:57 +msgid "Panel Name" +msgstr "" + +#: src/views/setting/SettingBase.vue:60 +msgid "Language" +msgstr "" + +#: src/views/setting/SettingBase.vue:66 +#: src/views/setting/SettingBase.vue:72 +#: src/views/setting/SettingBase.vue:90 +msgid "admin" +msgstr "" + +#: src/views/setting/SettingBase.vue:75 +msgid "Certificate Default Email" +msgstr "" + +#: src/views/setting/SettingBase.vue:78 +msgid "admin@example.com" +msgstr "" + +#: src/views/setting/SettingBase.vue:81 +msgid "Port" +msgstr "" + +#: src/views/setting/SettingBase.vue:84 +msgid "8888" +msgstr "" + +#: src/views/setting/SettingBase.vue:87 +msgid "Security Entrance" +msgstr "" + +#: src/views/setting/SettingBase.vue:93 +msgid "Offline Mode" +msgstr "" + +#: src/views/setting/SettingBase.vue:96 +msgid "Auto Update" +msgstr "" + +#: src/views/setting/SettingBase.vue:99 +msgid "Default Website Directory" +msgstr "" + +#: src/views/setting/SettingBase.vue:102 +msgid "/www/wwwroot" +msgstr "" + +#: src/views/setting/SettingBase.vue:105 +msgid "Default Backup Directory" +msgstr "" + +#: src/views/setting/SettingBase.vue:108 +msgid "/www/backup" +msgstr "" + +#: src/views/setting/SettingBase.vue:114 +#: src/views/setting/SettingHttps.vue:56 msgid "Save" msgstr "" + +#: src/views/setting/SettingHttps.vue:36 +msgid "Panel HTTPS" +msgstr "" diff --git a/web/src/locales/zh_CN.po b/web/src/locales/zh_CN.po index 85c8b021..224ff005 100644 --- a/web/src/locales/zh_CN.po +++ b/web/src/locales/zh_CN.po @@ -8,22 +8,894 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: src/views/setting/SettingHttps.vue:25 -msgid "Saved successfully" +#: src/views/app/IndexView.vue:19 src/views/app/IndexView.vue:159 +#: src/views/app/IndexView.vue:164 +msgid "Install" msgstr "" -#: src/views/setting/SettingHttps.vue:34 -msgid "Panel HTTPS" +#: src/views/app/IndexView.vue:37 +msgid "App Name" msgstr "" -#: src/views/setting/SettingHttps.vue:37 +#: src/views/app/IndexView.vue:44 +msgid "Description" +msgstr "" + +#: src/views/app/IndexView.vue:51 +msgid "Installed Version" +msgstr "" + +#: src/views/app/IndexView.vue:57 +msgid "Show in Home" +msgstr "" + +#: src/views/app/IndexView.vue:71 src/views/backup/ListView.vue:58 +#: src/views/database/DatabaseList.vue:74 src/views/database/ServerList.vue:135 +msgid "Actions" +msgstr "" + +#: src/views/app/IndexView.vue:91 +msgid "" +"Updating app %{ app } may reset related configurations to default state, are " +"you sure to continue?" +msgstr "" + +#: src/views/app/IndexView.vue:101 +msgid "Update" +msgstr "" + +#: src/views/app/IndexView.vue:120 +msgid "Manage" +msgstr "" + +#: src/views/app/IndexView.vue:133 +msgid "Are you sure to uninstall app %{ app }?" +msgstr "" + +#: src/views/app/IndexView.vue:143 +msgid "Uninstall" +msgstr "" + +#: src/views/app/IndexView.vue:189 +msgid "Setup successfully" +msgstr "" + +#: src/views/app/IndexView.vue:195 src/views/app/IndexView.vue:201 +#: src/views/app/VersionModal.vue:31 +msgid "Task submitted, please check the progress in background tasks" +msgstr "" + +#: src/views/app/IndexView.vue:212 +msgid "Cache updated successfully" +msgstr "" + +#: src/views/app/IndexView.vue:226 +msgid "Update Cache" +msgstr "" + +#: src/views/app/IndexView.vue:230 +msgid "" +"Before updating apps, it is strongly recommended to backup/snapshot first, " +"so you can roll back immediately if there are any issues!" +msgstr "" + +#: src/views/app/VersionModal.vue:71 +msgid "Channel" +msgstr "" + +#: src/views/app/VersionModal.vue:78 +msgid "Version" +msgstr "" + +#: src/views/app/VersionModal.vue:79 +msgid "Please select a channel" +msgstr "" + +#: src/views/app/VersionModal.vue:89 src/views/backup/ListView.vue:237 +#: src/views/backup/ListView.vue:257 src/views/cert/CreateAccountModal.vue:114 +#: src/views/cert/CreateCertModal.vue:111 src/views/cert/CreateDnsModal.vue:173 +#: src/views/cert/ObtainModal.vue:126 src/views/cert/UploadCertModal.vue:55 +#: src/views/database/CreateDatabaseModal.vue:127 +#: src/views/file/ToolBar.vue:261 src/views/file/ToolBar.vue:282 +msgid "Submit" +msgstr "" + +#: src/views/backup/IndexView.vue:37 src/views/backup/ListView.vue:217 +#: src/views/backup/ListView.vue:250 src/views/cert/CreateCertModal.vue:86 +msgid "Website" +msgstr "" + +#: src/views/backup/ListView.vue:36 +msgid "Filename" +msgstr "" + +#: src/views/backup/ListView.vue:43 +msgid "Size" +msgstr "" + +#: src/views/backup/ListView.vue:49 src/views/database/ServerList.vue:126 +msgid "Update Date" +msgstr "" + +#: src/views/backup/ListView.vue:77 +msgid "Restore" +msgstr "" + +#: src/views/backup/ListView.vue:88 +msgid "Are you sure you want to delete this backup?" +msgstr "" + +#: src/views/backup/ListView.vue:99 src/views/database/DatabaseList.vue:99 +#: src/views/database/ServerList.vue:212 src/views/file/ToolBar.vue:238 +msgid "Delete" +msgstr "" + +#: src/views/backup/ListView.vue:126 src/views/cert/CreateAccountModal.vue:49 +#: src/views/cert/CreateCertModal.vue:50 src/views/cert/CreateDnsModal.vue:35 +#: src/views/cert/UploadCertModal.vue:21 +#: src/views/database/CreateDatabaseModal.vue:28 src/views/file/ToolBar.vue:45 +msgid "Created successfully" +msgstr "" + +#: src/views/backup/ListView.vue:132 +msgid "Restoring..." +msgstr "" + +#: src/views/backup/ListView.vue:139 +msgid "Restored successfully" +msgstr "" + +#: src/views/backup/ListView.vue:149 src/views/database/DatabaseList.vue:124 +#: src/views/database/ServerList.vue:237 src/views/file/ToolBar.vue:189 +msgid "Deleted successfully" +msgstr "" + +#: src/views/backup/ListView.vue:182 src/views/backup/ListView.vue:209 +msgid "Create Backup" +msgstr "" + +#: src/views/backup/ListView.vue:183 src/views/backup/UploadModal.vue:39 +msgid "Upload Backup" +msgstr "" + +#: src/views/backup/ListView.vue:218 src/views/backup/ListView.vue:251 +msgid "Select website" +msgstr "" + +#: src/views/backup/ListView.vue:220 +#: src/views/database/CreateDatabaseModal.vue:70 +#: src/views/database/DatabaseList.vue:35 +msgid "Database Name" +msgstr "" + +#: src/views/backup/ListView.vue:225 +#: src/views/database/CreateDatabaseModal.vue:75 +msgid "Enter database name" +msgstr "" + +#: src/views/backup/ListView.vue:228 +msgid "Save Directory" +msgstr "" + +#: src/views/backup/ListView.vue:233 +msgid "Leave empty to use default path" +msgstr "" + +#: src/views/backup/ListView.vue:242 +msgid "Restore Backup" +msgstr "" + +#: src/views/backup/ListView.vue:253 src/views/database/IndexView.vue:45 +msgid "Database" +msgstr "" + +#: src/views/backup/route.ts:19 +msgid "Backup" +msgstr "" + +#: src/views/backup/UploadModal.vue:20 +msgid "Upload %{ filename } successfully" +msgstr "" + +#: src/views/backup/UploadModal.vue:51 +msgid "Click or drag files to this area to upload" +msgstr "" + +#: src/views/backup/UploadModal.vue:53 +msgid "" +"For large files, it is recommended to use SFTP or other methods to upload" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:38 +msgid "Registering account with CA, please wait patiently" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:61 src/views/cert/IndexView.vue:106 +msgid "Create Account" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:68 +msgid "" +"Google and SSL.com require obtaining KID and HMAC from their official " +"websites first" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:70 +msgid "" +"Google is not accessible in mainland China, and other CAs depend on network " +"conditions. GoogleCN or Let's Encrypt are recommended" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:73 +msgid "CA" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:76 +msgid "Select CA" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:81 +#: src/views/cert/CreateCertModal.vue:78 +msgid "Key Type" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:84 +#: src/views/cert/CreateCertModal.vue:81 +msgid "Select key type" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:89 +msgid "Email" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:94 +msgid "Enter email address" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:102 +msgid "Enter KID" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:110 +msgid "Enter HMAC" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:59 src/views/cert/IndexView.vue:102 +msgid "Create Certificate" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:67 +msgid "" +"You can automatically issue and deploy certificates by selecting either " +"Website or DNS, or you can manually enter domain names and set up DNS " +"resolution to issue certificates" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:70 src/views/cert/ObtainModal.vue:53 +msgid "Domain" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:89 +msgid "Select website for certificate deployment" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:94 +msgid "Account" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:97 +msgid "Select account for certificate issuance" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:102 src/views/cert/CreateDnsModal.vue:55 +msgid "DNS" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:105 +msgid "Select DNS for certificate issuance" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:44 src/views/cert/IndexView.vue:110 +msgid "Create DNS" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:52 +msgid "Comment Name" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:53 +msgid "Enter comment name" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:58 +msgid "Select DNS" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:64 +msgid "Enter Aliyun Access Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:67 +msgid "Enter Aliyun Secret Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:70 +msgid "Enter Tencent Cloud SecretId" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:73 +msgid "Enter Tencent Cloud SecretKey" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:76 +msgid "Enter Huawei Cloud AccessKeyId" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:82 +msgid "Enter Huawei Cloud SecretAccessKey" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:86 +msgid "Enter Western Digital Username" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:92 +msgid "Enter Western Digital API Password" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:99 +msgid "Enter Cloudflare API Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:103 +msgid "Enter GoDaddy Token" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:106 +msgid "Enter G-Core API Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:109 +msgid "Enter Porkbun API Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:115 +msgid "Enter Porkbun Secret Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:122 +msgid "Enter Namecheap API Username" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:126 +msgid "Enter Namecheap API Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:132 +msgid "Enter NameSilo API Token" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:136 +msgid "Enter Name.com Username" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:139 +msgid "Enter Name.com Token" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:146 +msgid "Enter ClouDNS Auth ID (use Sub Auth ID by adding sub-prefix)" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:153 +msgid "Enter ClouDNS Auth Password" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:157 +msgid "Enter Duck DNS Token" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:163 +msgid "Enter Hetzner Auth API Token" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:167 +msgid "Enter Linode Token" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:170 +msgid "Enter Vercel Token" +msgstr "" + +#: src/views/cert/IndexView.vue:98 src/views/cert/UploadCertModal.vue:30 +msgid "Upload Certificate" +msgstr "" + +#: src/views/cert/IndexView.vue:115 +msgid "Certificate List" +msgstr "" + +#: src/views/cert/IndexView.vue:118 +msgid "Account List" +msgstr "" + +#: src/views/cert/IndexView.vue:121 +msgid "DNS List" +msgstr "" + +#: src/views/cert/ObtainModal.vue:18 +msgid "Automatic" +msgstr "" + +#: src/views/cert/ObtainModal.vue:19 +msgid "Manual" +msgstr "" + +#: src/views/cert/ObtainModal.vue:20 +msgid "Self-signed" +msgstr "" + +#: src/views/cert/ObtainModal.vue:24 src/views/cert/ObtainModal.vue:77 +msgid "Please wait..." +msgstr "" + +#: src/views/cert/ObtainModal.vue:33 src/views/cert/ObtainModal.vue:85 +#: src/views/cert/ObtainModal.vue:103 +msgid "Issuance successful" +msgstr "" + +#: src/views/cert/ObtainModal.vue:41 +msgid "" +"Please set up DNS resolution for the domain first, then continue with the " +"issuance" +msgstr "" + +#: src/views/cert/ObtainModal.vue:44 +msgid "DNS Records to Set" +msgstr "" + +#: src/views/cert/ObtainModal.vue:54 src/views/database/DatabaseList.vue:12 +#: src/views/database/ServerList.vue:17 +msgid "Type" +msgstr "" + +#: src/views/cert/ObtainModal.vue:55 +msgid "Host Record" +msgstr "" + +#: src/views/cert/ObtainModal.vue:56 +msgid "Record Value" +msgstr "" + +#: src/views/cert/ObtainModal.vue:74 +msgid "Issue" +msgstr "" + +#: src/views/cert/ObtainModal.vue:116 +msgid "Issue Certificate" +msgstr "" + +#: src/views/cert/ObtainModal.vue:123 +msgid "Issuance Mode" +msgstr "" + +#: src/views/cert/route.ts:19 src/views/cert/UploadCertModal.vue:38 +#: src/views/setting/SettingHttps.vue:39 msgid "Certificate" msgstr "" -#: src/views/setting/SettingHttps.vue:44 +#: src/views/cert/UploadCertModal.vue:42 +msgid "Enter the content of the PEM certificate file" +msgstr "" + +#: src/views/cert/UploadCertModal.vue:46 src/views/setting/SettingHttps.vue:46 msgid "Private Key" msgstr "" -#: src/views/setting/SettingHttps.vue:54 +#: src/views/cert/UploadCertModal.vue:50 +msgid "Enter the content of the KEY private key file" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:24 +msgid "Update Panel" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:25 +msgid "Are you sure you want to update the panel?" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:26 +msgid "Confirm" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:27 src/views/file/ToolBar.vue:139 +#: src/views/file/ToolBar.vue:226 +msgid "Cancel" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:29 +msgid "Panel updating..." +msgstr "" + +#: src/views/dashboard/UpdateView.vue:40 +msgid "Panel updated successfully" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:47 +msgid "Update canceled" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:59 +msgid "Update Now" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:82 +msgid "Loading update information, please wait a moment" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:20 +msgid "Local (localhost)" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:21 +msgid "All (%)" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:22 +msgid "Specific" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:54 +#: src/views/database/IndexView.vue:32 +msgid "Create Database" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:62 +#: src/views/database/DatabaseList.vue:42 src/views/database/IndexView.vue:51 +msgid "Server" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:66 +msgid "Select server" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:78 +#: src/views/database/IndexView.vue:36 +msgid "Create User" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:81 +msgid "Authorized User" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:86 +msgid "Enter authorized username (leave empty for no authorization)" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:89 +#: src/views/database/ServerList.vue:47 src/views/login/IndexView.vue:113 +#: src/views/setting/SettingBase.vue:63 +msgid "Username" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:94 +msgid "Enter username" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:97 +#: src/views/database/ServerList.vue:56 src/views/login/IndexView.vue:121 +#: src/views/setting/SettingBase.vue:69 +msgid "Password" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:103 +msgid "Enter password" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:106 +#: src/views/database/ServerList.vue:87 +msgid "Host" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:110 +msgid "Select host" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:117 +msgid "Specific Host" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:123 +msgid "Enter supported host address" +msgstr "" + +#: src/views/database/DatabaseList.vue:47 +msgid "Encoding" +msgstr "" + +#: src/views/database/DatabaseList.vue:57 src/views/database/ServerList.vue:97 +msgid "Comment" +msgstr "" + +#: src/views/database/DatabaseList.vue:88 +msgid "Are you sure you want to delete this database?" +msgstr "" + +#: src/views/database/DatabaseList.vue:130 +#: src/views/database/ServerList.vue:243 +msgid "Modified successfully" +msgstr "" + +#: src/views/database/IndexView.vue:40 +msgid "Add Server" +msgstr "" + +#: src/views/database/IndexView.vue:48 +msgid "User" +msgstr "" + +#: src/views/database/ServerList.vue:40 src/views/file/ToolBar.vue:257 +msgid "Name" +msgstr "" + +#: src/views/database/ServerList.vue:52 src/views/database/ServerList.vue:67 +msgid "None" +msgstr "" + +#: src/views/database/ServerList.vue:76 src/views/file/ToolBar.vue:145 +#: src/views/file/ToolBar.vue:165 +msgid "Copied successfully" +msgstr "" + +#: src/views/database/ServerList.vue:80 src/views/file/ToolBar.vue:232 +msgid "Copy" +msgstr "" + +#: src/views/database/ServerList.vue:114 +msgid "Status" +msgstr "" + +#: src/views/database/ServerList.vue:121 +msgid "Valid" +msgstr "" + +#: src/views/database/ServerList.vue:121 +msgid "Invalid" +msgstr "" + +#: src/views/database/ServerList.vue:148 +msgid "Synchronized successfully" +msgstr "" + +#: src/views/database/ServerList.vue:154 +msgid "" +"Are you sure you want to synchronize database users (excluding password) to " +"the panel?" +msgstr "" + +#: src/views/database/ServerList.vue:164 +msgid "Sync" +msgstr "" + +#: src/views/database/ServerList.vue:183 +msgid "Modify" +msgstr "" + +#: src/views/database/ServerList.vue:193 +msgid "" +"Built-in servers cannot be deleted. If you need to delete them, please " +"uninstall the corresponding application" +msgstr "" + +#: src/views/database/ServerList.vue:201 +msgid "Are you sure you want to delete the server?" +msgstr "" + +#: src/views/error-page/NotFound.vue:10 +msgid "Sorry, the page you visited does not exist." +msgstr "" + +#: src/views/error-page/NotFound.vue:15 +msgid "Back to Home" +msgstr "" + +#: src/views/file/ToolBar.vue:37 src/views/file/ToolBar.vue:51 +msgid "Invalid name" +msgstr "" + +#: src/views/file/ToolBar.vue:60 +msgid "Download task created successfully" +msgstr "" + +#: src/views/file/ToolBar.vue:66 +msgid "Please select files/folders to copy" +msgstr "" + +#: src/views/file/ToolBar.vue:77 src/views/file/ToolBar.vue:94 +msgid "Marked successfully, please navigate to the destination path to paste" +msgstr "" + +#: src/views/file/ToolBar.vue:83 +msgid "Please select files/folders to move" +msgstr "" + +#: src/views/file/ToolBar.vue:104 +msgid "Please mark the files/folders to copy or move first" +msgstr "" + +#: src/views/file/ToolBar.vue:128 +msgid "Warning" +msgstr "" + +#: src/views/file/ToolBar.vue:129 +msgid "" +"There are items with the same name. %{ items } Do you want to overwrite?" +msgstr "" + +#: src/views/file/ToolBar.vue:138 +msgid "Overwrite" +msgstr "" + +#: src/views/file/ToolBar.vue:151 src/views/file/ToolBar.vue:171 +msgid "Moved successfully" +msgstr "" + +#: src/views/file/ToolBar.vue:157 +msgid "Canceled" +msgstr "" + +#: src/views/file/ToolBar.vue:180 +msgid "Please select files/folders to delete" +msgstr "" + +#: src/views/file/ToolBar.vue:214 +msgid "File" +msgstr "" + +#: src/views/file/ToolBar.vue:215 +msgid "Folder" +msgstr "" + +#: src/views/file/ToolBar.vue:219 src/views/file/ToolBar.vue:249 +msgid "New" +msgstr "" + +#: src/views/file/ToolBar.vue:221 +msgid "Upload" +msgstr "" + +#: src/views/file/ToolBar.vue:222 src/views/file/ToolBar.vue:267 +msgid "Remote Download" +msgstr "" + +#: src/views/file/ToolBar.vue:229 +msgid "Paste" +msgstr "" + +#: src/views/file/ToolBar.vue:233 +msgid "Move" +msgstr "" + +#: src/views/file/ToolBar.vue:234 +msgid "Compress" +msgstr "" + +#: src/views/file/ToolBar.vue:235 +msgid "Permission" +msgstr "" + +#: src/views/file/ToolBar.vue:240 +msgid "Are you sure you want to delete in bulk?" +msgstr "" + +#: src/views/file/ToolBar.vue:275 +msgid "Download URL" +msgstr "" + +#: src/views/file/ToolBar.vue:278 +msgid "Save as" +msgstr "" + +#: src/views/login/IndexView.vue:46 +msgid "Please enter username and password" +msgstr "" + +#: src/views/login/IndexView.vue:50 +msgid "" +"Failed to get encryption public key, please refresh the page and try again" +msgstr "" + +#: src/views/login/IndexView.vue:61 +msgid "Login successful!" +msgstr "" + +#: src/views/login/IndexView.vue:130 +msgid "Safe Login" +msgstr "" + +#: src/views/login/IndexView.vue:131 +msgid "Remember Me" +msgstr "" + +#: src/views/login/IndexView.vue:145 +msgid "Login" +msgstr "" + +#: src/views/setting/IndexView.vue:17 +msgid "Basic" +msgstr "" + +#: src/views/setting/SettingBase.vue:34 src/views/setting/SettingHttps.vue:27 +msgid "Saved successfully" +msgstr "" + +#: src/views/setting/SettingBase.vue:51 +msgid "" +"Modifying panel port/entrance requires corresponding changes in the browser " +"address bar to access the panel!" +msgstr "" + +#: src/views/setting/SettingBase.vue:54 src/views/setting/SettingBase.vue:57 +msgid "Panel Name" +msgstr "" + +#: src/views/setting/SettingBase.vue:60 +msgid "Language" +msgstr "" + +#: src/views/setting/SettingBase.vue:66 src/views/setting/SettingBase.vue:72 +#: src/views/setting/SettingBase.vue:90 +msgid "admin" +msgstr "" + +#: src/views/setting/SettingBase.vue:75 +msgid "Certificate Default Email" +msgstr "" + +#: src/views/setting/SettingBase.vue:78 +msgid "admin@example.com" +msgstr "" + +#: src/views/setting/SettingBase.vue:81 +msgid "Port" +msgstr "" + +#: src/views/setting/SettingBase.vue:84 +msgid "8888" +msgstr "" + +#: src/views/setting/SettingBase.vue:87 +msgid "Security Entrance" +msgstr "" + +#: src/views/setting/SettingBase.vue:93 +msgid "Offline Mode" +msgstr "" + +#: src/views/setting/SettingBase.vue:96 +msgid "Auto Update" +msgstr "" + +#: src/views/setting/SettingBase.vue:99 +msgid "Default Website Directory" +msgstr "" + +#: src/views/setting/SettingBase.vue:102 +msgid "/www/wwwroot" +msgstr "" + +#: src/views/setting/SettingBase.vue:105 +msgid "Default Backup Directory" +msgstr "" + +#: src/views/setting/SettingBase.vue:108 +msgid "/www/backup" +msgstr "" + +#: src/views/setting/SettingBase.vue:114 src/views/setting/SettingHttps.vue:56 msgid "Save" msgstr "" + +#: src/views/setting/SettingHttps.vue:36 +msgid "Panel HTTPS" +msgstr "" diff --git a/web/src/locales/zh_TW.po b/web/src/locales/zh_TW.po index 94b809b7..3ffc63fb 100644 --- a/web/src/locales/zh_TW.po +++ b/web/src/locales/zh_TW.po @@ -8,22 +8,894 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: src/views/setting/SettingHttps.vue:25 -msgid "Saved successfully" +#: src/views/app/IndexView.vue:19 src/views/app/IndexView.vue:159 +#: src/views/app/IndexView.vue:164 +msgid "Install" msgstr "" -#: src/views/setting/SettingHttps.vue:34 -msgid "Panel HTTPS" +#: src/views/app/IndexView.vue:37 +msgid "App Name" msgstr "" -#: src/views/setting/SettingHttps.vue:37 +#: src/views/app/IndexView.vue:44 +msgid "Description" +msgstr "" + +#: src/views/app/IndexView.vue:51 +msgid "Installed Version" +msgstr "" + +#: src/views/app/IndexView.vue:57 +msgid "Show in Home" +msgstr "" + +#: src/views/app/IndexView.vue:71 src/views/backup/ListView.vue:58 +#: src/views/database/DatabaseList.vue:74 src/views/database/ServerList.vue:135 +msgid "Actions" +msgstr "" + +#: src/views/app/IndexView.vue:91 +msgid "" +"Updating app %{ app } may reset related configurations to default state, are " +"you sure to continue?" +msgstr "" + +#: src/views/app/IndexView.vue:101 +msgid "Update" +msgstr "" + +#: src/views/app/IndexView.vue:120 +msgid "Manage" +msgstr "" + +#: src/views/app/IndexView.vue:133 +msgid "Are you sure to uninstall app %{ app }?" +msgstr "" + +#: src/views/app/IndexView.vue:143 +msgid "Uninstall" +msgstr "" + +#: src/views/app/IndexView.vue:189 +msgid "Setup successfully" +msgstr "" + +#: src/views/app/IndexView.vue:195 src/views/app/IndexView.vue:201 +#: src/views/app/VersionModal.vue:31 +msgid "Task submitted, please check the progress in background tasks" +msgstr "" + +#: src/views/app/IndexView.vue:212 +msgid "Cache updated successfully" +msgstr "" + +#: src/views/app/IndexView.vue:226 +msgid "Update Cache" +msgstr "" + +#: src/views/app/IndexView.vue:230 +msgid "" +"Before updating apps, it is strongly recommended to backup/snapshot first, " +"so you can roll back immediately if there are any issues!" +msgstr "" + +#: src/views/app/VersionModal.vue:71 +msgid "Channel" +msgstr "" + +#: src/views/app/VersionModal.vue:78 +msgid "Version" +msgstr "" + +#: src/views/app/VersionModal.vue:79 +msgid "Please select a channel" +msgstr "" + +#: src/views/app/VersionModal.vue:89 src/views/backup/ListView.vue:237 +#: src/views/backup/ListView.vue:257 src/views/cert/CreateAccountModal.vue:114 +#: src/views/cert/CreateCertModal.vue:111 src/views/cert/CreateDnsModal.vue:173 +#: src/views/cert/ObtainModal.vue:126 src/views/cert/UploadCertModal.vue:55 +#: src/views/database/CreateDatabaseModal.vue:127 +#: src/views/file/ToolBar.vue:261 src/views/file/ToolBar.vue:282 +msgid "Submit" +msgstr "" + +#: src/views/backup/IndexView.vue:37 src/views/backup/ListView.vue:217 +#: src/views/backup/ListView.vue:250 src/views/cert/CreateCertModal.vue:86 +msgid "Website" +msgstr "" + +#: src/views/backup/ListView.vue:36 +msgid "Filename" +msgstr "" + +#: src/views/backup/ListView.vue:43 +msgid "Size" +msgstr "" + +#: src/views/backup/ListView.vue:49 src/views/database/ServerList.vue:126 +msgid "Update Date" +msgstr "" + +#: src/views/backup/ListView.vue:77 +msgid "Restore" +msgstr "" + +#: src/views/backup/ListView.vue:88 +msgid "Are you sure you want to delete this backup?" +msgstr "" + +#: src/views/backup/ListView.vue:99 src/views/database/DatabaseList.vue:99 +#: src/views/database/ServerList.vue:212 src/views/file/ToolBar.vue:238 +msgid "Delete" +msgstr "" + +#: src/views/backup/ListView.vue:126 src/views/cert/CreateAccountModal.vue:49 +#: src/views/cert/CreateCertModal.vue:50 src/views/cert/CreateDnsModal.vue:35 +#: src/views/cert/UploadCertModal.vue:21 +#: src/views/database/CreateDatabaseModal.vue:28 src/views/file/ToolBar.vue:45 +msgid "Created successfully" +msgstr "" + +#: src/views/backup/ListView.vue:132 +msgid "Restoring..." +msgstr "" + +#: src/views/backup/ListView.vue:139 +msgid "Restored successfully" +msgstr "" + +#: src/views/backup/ListView.vue:149 src/views/database/DatabaseList.vue:124 +#: src/views/database/ServerList.vue:237 src/views/file/ToolBar.vue:189 +msgid "Deleted successfully" +msgstr "" + +#: src/views/backup/ListView.vue:182 src/views/backup/ListView.vue:209 +msgid "Create Backup" +msgstr "" + +#: src/views/backup/ListView.vue:183 src/views/backup/UploadModal.vue:39 +msgid "Upload Backup" +msgstr "" + +#: src/views/backup/ListView.vue:218 src/views/backup/ListView.vue:251 +msgid "Select website" +msgstr "" + +#: src/views/backup/ListView.vue:220 +#: src/views/database/CreateDatabaseModal.vue:70 +#: src/views/database/DatabaseList.vue:35 +msgid "Database Name" +msgstr "" + +#: src/views/backup/ListView.vue:225 +#: src/views/database/CreateDatabaseModal.vue:75 +msgid "Enter database name" +msgstr "" + +#: src/views/backup/ListView.vue:228 +msgid "Save Directory" +msgstr "" + +#: src/views/backup/ListView.vue:233 +msgid "Leave empty to use default path" +msgstr "" + +#: src/views/backup/ListView.vue:242 +msgid "Restore Backup" +msgstr "" + +#: src/views/backup/ListView.vue:253 src/views/database/IndexView.vue:45 +msgid "Database" +msgstr "" + +#: src/views/backup/route.ts:19 +msgid "Backup" +msgstr "" + +#: src/views/backup/UploadModal.vue:20 +msgid "Upload %{ filename } successfully" +msgstr "" + +#: src/views/backup/UploadModal.vue:51 +msgid "Click or drag files to this area to upload" +msgstr "" + +#: src/views/backup/UploadModal.vue:53 +msgid "" +"For large files, it is recommended to use SFTP or other methods to upload" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:38 +msgid "Registering account with CA, please wait patiently" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:61 src/views/cert/IndexView.vue:106 +msgid "Create Account" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:68 +msgid "" +"Google and SSL.com require obtaining KID and HMAC from their official " +"websites first" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:70 +msgid "" +"Google is not accessible in mainland China, and other CAs depend on network " +"conditions. GoogleCN or Let's Encrypt are recommended" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:73 +msgid "CA" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:76 +msgid "Select CA" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:81 +#: src/views/cert/CreateCertModal.vue:78 +msgid "Key Type" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:84 +#: src/views/cert/CreateCertModal.vue:81 +msgid "Select key type" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:89 +msgid "Email" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:94 +msgid "Enter email address" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:102 +msgid "Enter KID" +msgstr "" + +#: src/views/cert/CreateAccountModal.vue:110 +msgid "Enter HMAC" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:59 src/views/cert/IndexView.vue:102 +msgid "Create Certificate" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:67 +msgid "" +"You can automatically issue and deploy certificates by selecting either " +"Website or DNS, or you can manually enter domain names and set up DNS " +"resolution to issue certificates" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:70 src/views/cert/ObtainModal.vue:53 +msgid "Domain" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:89 +msgid "Select website for certificate deployment" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:94 +msgid "Account" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:97 +msgid "Select account for certificate issuance" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:102 src/views/cert/CreateDnsModal.vue:55 +msgid "DNS" +msgstr "" + +#: src/views/cert/CreateCertModal.vue:105 +msgid "Select DNS for certificate issuance" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:44 src/views/cert/IndexView.vue:110 +msgid "Create DNS" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:52 +msgid "Comment Name" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:53 +msgid "Enter comment name" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:58 +msgid "Select DNS" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:64 +msgid "Enter Aliyun Access Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:67 +msgid "Enter Aliyun Secret Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:70 +msgid "Enter Tencent Cloud SecretId" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:73 +msgid "Enter Tencent Cloud SecretKey" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:76 +msgid "Enter Huawei Cloud AccessKeyId" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:82 +msgid "Enter Huawei Cloud SecretAccessKey" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:86 +msgid "Enter Western Digital Username" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:92 +msgid "Enter Western Digital API Password" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:99 +msgid "Enter Cloudflare API Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:103 +msgid "Enter GoDaddy Token" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:106 +msgid "Enter G-Core API Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:109 +msgid "Enter Porkbun API Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:115 +msgid "Enter Porkbun Secret Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:122 +msgid "Enter Namecheap API Username" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:126 +msgid "Enter Namecheap API Key" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:132 +msgid "Enter NameSilo API Token" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:136 +msgid "Enter Name.com Username" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:139 +msgid "Enter Name.com Token" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:146 +msgid "Enter ClouDNS Auth ID (use Sub Auth ID by adding sub-prefix)" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:153 +msgid "Enter ClouDNS Auth Password" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:157 +msgid "Enter Duck DNS Token" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:163 +msgid "Enter Hetzner Auth API Token" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:167 +msgid "Enter Linode Token" +msgstr "" + +#: src/views/cert/CreateDnsModal.vue:170 +msgid "Enter Vercel Token" +msgstr "" + +#: src/views/cert/IndexView.vue:98 src/views/cert/UploadCertModal.vue:30 +msgid "Upload Certificate" +msgstr "" + +#: src/views/cert/IndexView.vue:115 +msgid "Certificate List" +msgstr "" + +#: src/views/cert/IndexView.vue:118 +msgid "Account List" +msgstr "" + +#: src/views/cert/IndexView.vue:121 +msgid "DNS List" +msgstr "" + +#: src/views/cert/ObtainModal.vue:18 +msgid "Automatic" +msgstr "" + +#: src/views/cert/ObtainModal.vue:19 +msgid "Manual" +msgstr "" + +#: src/views/cert/ObtainModal.vue:20 +msgid "Self-signed" +msgstr "" + +#: src/views/cert/ObtainModal.vue:24 src/views/cert/ObtainModal.vue:77 +msgid "Please wait..." +msgstr "" + +#: src/views/cert/ObtainModal.vue:33 src/views/cert/ObtainModal.vue:85 +#: src/views/cert/ObtainModal.vue:103 +msgid "Issuance successful" +msgstr "" + +#: src/views/cert/ObtainModal.vue:41 +msgid "" +"Please set up DNS resolution for the domain first, then continue with the " +"issuance" +msgstr "" + +#: src/views/cert/ObtainModal.vue:44 +msgid "DNS Records to Set" +msgstr "" + +#: src/views/cert/ObtainModal.vue:54 src/views/database/DatabaseList.vue:12 +#: src/views/database/ServerList.vue:17 +msgid "Type" +msgstr "" + +#: src/views/cert/ObtainModal.vue:55 +msgid "Host Record" +msgstr "" + +#: src/views/cert/ObtainModal.vue:56 +msgid "Record Value" +msgstr "" + +#: src/views/cert/ObtainModal.vue:74 +msgid "Issue" +msgstr "" + +#: src/views/cert/ObtainModal.vue:116 +msgid "Issue Certificate" +msgstr "" + +#: src/views/cert/ObtainModal.vue:123 +msgid "Issuance Mode" +msgstr "" + +#: src/views/cert/route.ts:19 src/views/cert/UploadCertModal.vue:38 +#: src/views/setting/SettingHttps.vue:39 msgid "Certificate" msgstr "" -#: src/views/setting/SettingHttps.vue:44 +#: src/views/cert/UploadCertModal.vue:42 +msgid "Enter the content of the PEM certificate file" +msgstr "" + +#: src/views/cert/UploadCertModal.vue:46 src/views/setting/SettingHttps.vue:46 msgid "Private Key" msgstr "" -#: src/views/setting/SettingHttps.vue:54 +#: src/views/cert/UploadCertModal.vue:50 +msgid "Enter the content of the KEY private key file" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:24 +msgid "Update Panel" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:25 +msgid "Are you sure you want to update the panel?" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:26 +msgid "Confirm" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:27 src/views/file/ToolBar.vue:139 +#: src/views/file/ToolBar.vue:226 +msgid "Cancel" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:29 +msgid "Panel updating..." +msgstr "" + +#: src/views/dashboard/UpdateView.vue:40 +msgid "Panel updated successfully" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:47 +msgid "Update canceled" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:59 +msgid "Update Now" +msgstr "" + +#: src/views/dashboard/UpdateView.vue:82 +msgid "Loading update information, please wait a moment" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:20 +msgid "Local (localhost)" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:21 +msgid "All (%)" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:22 +msgid "Specific" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:54 +#: src/views/database/IndexView.vue:32 +msgid "Create Database" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:62 +#: src/views/database/DatabaseList.vue:42 src/views/database/IndexView.vue:51 +msgid "Server" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:66 +msgid "Select server" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:78 +#: src/views/database/IndexView.vue:36 +msgid "Create User" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:81 +msgid "Authorized User" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:86 +msgid "Enter authorized username (leave empty for no authorization)" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:89 +#: src/views/database/ServerList.vue:47 src/views/login/IndexView.vue:113 +#: src/views/setting/SettingBase.vue:63 +msgid "Username" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:94 +msgid "Enter username" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:97 +#: src/views/database/ServerList.vue:56 src/views/login/IndexView.vue:121 +#: src/views/setting/SettingBase.vue:69 +msgid "Password" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:103 +msgid "Enter password" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:106 +#: src/views/database/ServerList.vue:87 +msgid "Host" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:110 +msgid "Select host" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:117 +msgid "Specific Host" +msgstr "" + +#: src/views/database/CreateDatabaseModal.vue:123 +msgid "Enter supported host address" +msgstr "" + +#: src/views/database/DatabaseList.vue:47 +msgid "Encoding" +msgstr "" + +#: src/views/database/DatabaseList.vue:57 src/views/database/ServerList.vue:97 +msgid "Comment" +msgstr "" + +#: src/views/database/DatabaseList.vue:88 +msgid "Are you sure you want to delete this database?" +msgstr "" + +#: src/views/database/DatabaseList.vue:130 +#: src/views/database/ServerList.vue:243 +msgid "Modified successfully" +msgstr "" + +#: src/views/database/IndexView.vue:40 +msgid "Add Server" +msgstr "" + +#: src/views/database/IndexView.vue:48 +msgid "User" +msgstr "" + +#: src/views/database/ServerList.vue:40 src/views/file/ToolBar.vue:257 +msgid "Name" +msgstr "" + +#: src/views/database/ServerList.vue:52 src/views/database/ServerList.vue:67 +msgid "None" +msgstr "" + +#: src/views/database/ServerList.vue:76 src/views/file/ToolBar.vue:145 +#: src/views/file/ToolBar.vue:165 +msgid "Copied successfully" +msgstr "" + +#: src/views/database/ServerList.vue:80 src/views/file/ToolBar.vue:232 +msgid "Copy" +msgstr "" + +#: src/views/database/ServerList.vue:114 +msgid "Status" +msgstr "" + +#: src/views/database/ServerList.vue:121 +msgid "Valid" +msgstr "" + +#: src/views/database/ServerList.vue:121 +msgid "Invalid" +msgstr "" + +#: src/views/database/ServerList.vue:148 +msgid "Synchronized successfully" +msgstr "" + +#: src/views/database/ServerList.vue:154 +msgid "" +"Are you sure you want to synchronize database users (excluding password) to " +"the panel?" +msgstr "" + +#: src/views/database/ServerList.vue:164 +msgid "Sync" +msgstr "" + +#: src/views/database/ServerList.vue:183 +msgid "Modify" +msgstr "" + +#: src/views/database/ServerList.vue:193 +msgid "" +"Built-in servers cannot be deleted. If you need to delete them, please " +"uninstall the corresponding application" +msgstr "" + +#: src/views/database/ServerList.vue:201 +msgid "Are you sure you want to delete the server?" +msgstr "" + +#: src/views/error-page/NotFound.vue:10 +msgid "Sorry, the page you visited does not exist." +msgstr "" + +#: src/views/error-page/NotFound.vue:15 +msgid "Back to Home" +msgstr "" + +#: src/views/file/ToolBar.vue:37 src/views/file/ToolBar.vue:51 +msgid "Invalid name" +msgstr "" + +#: src/views/file/ToolBar.vue:60 +msgid "Download task created successfully" +msgstr "" + +#: src/views/file/ToolBar.vue:66 +msgid "Please select files/folders to copy" +msgstr "" + +#: src/views/file/ToolBar.vue:77 src/views/file/ToolBar.vue:94 +msgid "Marked successfully, please navigate to the destination path to paste" +msgstr "" + +#: src/views/file/ToolBar.vue:83 +msgid "Please select files/folders to move" +msgstr "" + +#: src/views/file/ToolBar.vue:104 +msgid "Please mark the files/folders to copy or move first" +msgstr "" + +#: src/views/file/ToolBar.vue:128 +msgid "Warning" +msgstr "" + +#: src/views/file/ToolBar.vue:129 +msgid "" +"There are items with the same name. %{ items } Do you want to overwrite?" +msgstr "" + +#: src/views/file/ToolBar.vue:138 +msgid "Overwrite" +msgstr "" + +#: src/views/file/ToolBar.vue:151 src/views/file/ToolBar.vue:171 +msgid "Moved successfully" +msgstr "" + +#: src/views/file/ToolBar.vue:157 +msgid "Canceled" +msgstr "" + +#: src/views/file/ToolBar.vue:180 +msgid "Please select files/folders to delete" +msgstr "" + +#: src/views/file/ToolBar.vue:214 +msgid "File" +msgstr "" + +#: src/views/file/ToolBar.vue:215 +msgid "Folder" +msgstr "" + +#: src/views/file/ToolBar.vue:219 src/views/file/ToolBar.vue:249 +msgid "New" +msgstr "" + +#: src/views/file/ToolBar.vue:221 +msgid "Upload" +msgstr "" + +#: src/views/file/ToolBar.vue:222 src/views/file/ToolBar.vue:267 +msgid "Remote Download" +msgstr "" + +#: src/views/file/ToolBar.vue:229 +msgid "Paste" +msgstr "" + +#: src/views/file/ToolBar.vue:233 +msgid "Move" +msgstr "" + +#: src/views/file/ToolBar.vue:234 +msgid "Compress" +msgstr "" + +#: src/views/file/ToolBar.vue:235 +msgid "Permission" +msgstr "" + +#: src/views/file/ToolBar.vue:240 +msgid "Are you sure you want to delete in bulk?" +msgstr "" + +#: src/views/file/ToolBar.vue:275 +msgid "Download URL" +msgstr "" + +#: src/views/file/ToolBar.vue:278 +msgid "Save as" +msgstr "" + +#: src/views/login/IndexView.vue:46 +msgid "Please enter username and password" +msgstr "" + +#: src/views/login/IndexView.vue:50 +msgid "" +"Failed to get encryption public key, please refresh the page and try again" +msgstr "" + +#: src/views/login/IndexView.vue:61 +msgid "Login successful!" +msgstr "" + +#: src/views/login/IndexView.vue:130 +msgid "Safe Login" +msgstr "" + +#: src/views/login/IndexView.vue:131 +msgid "Remember Me" +msgstr "" + +#: src/views/login/IndexView.vue:145 +msgid "Login" +msgstr "" + +#: src/views/setting/IndexView.vue:17 +msgid "Basic" +msgstr "" + +#: src/views/setting/SettingBase.vue:34 src/views/setting/SettingHttps.vue:27 +msgid "Saved successfully" +msgstr "" + +#: src/views/setting/SettingBase.vue:51 +msgid "" +"Modifying panel port/entrance requires corresponding changes in the browser " +"address bar to access the panel!" +msgstr "" + +#: src/views/setting/SettingBase.vue:54 src/views/setting/SettingBase.vue:57 +msgid "Panel Name" +msgstr "" + +#: src/views/setting/SettingBase.vue:60 +msgid "Language" +msgstr "" + +#: src/views/setting/SettingBase.vue:66 src/views/setting/SettingBase.vue:72 +#: src/views/setting/SettingBase.vue:90 +msgid "admin" +msgstr "" + +#: src/views/setting/SettingBase.vue:75 +msgid "Certificate Default Email" +msgstr "" + +#: src/views/setting/SettingBase.vue:78 +msgid "admin@example.com" +msgstr "" + +#: src/views/setting/SettingBase.vue:81 +msgid "Port" +msgstr "" + +#: src/views/setting/SettingBase.vue:84 +msgid "8888" +msgstr "" + +#: src/views/setting/SettingBase.vue:87 +msgid "Security Entrance" +msgstr "" + +#: src/views/setting/SettingBase.vue:93 +msgid "Offline Mode" +msgstr "" + +#: src/views/setting/SettingBase.vue:96 +msgid "Auto Update" +msgstr "" + +#: src/views/setting/SettingBase.vue:99 +msgid "Default Website Directory" +msgstr "" + +#: src/views/setting/SettingBase.vue:102 +msgid "/www/wwwroot" +msgstr "" + +#: src/views/setting/SettingBase.vue:105 +msgid "Default Backup Directory" +msgstr "" + +#: src/views/setting/SettingBase.vue:108 +msgid "/www/backup" +msgstr "" + +#: src/views/setting/SettingBase.vue:114 src/views/setting/SettingHttps.vue:56 msgid "Save" msgstr "" + +#: src/views/setting/SettingHttps.vue:36 +msgid "Panel HTTPS" +msgstr "" diff --git a/web/src/utils/gettext/index.ts b/web/src/utils/gettext/index.ts index 42887264..38f4d0b8 100644 --- a/web/src/utils/gettext/index.ts +++ b/web/src/utils/gettext/index.ts @@ -23,13 +23,7 @@ export function setupGettext(app: App) { zh_CN: '简体中文', zh_TW: '繁體中文' }, - defaultLanguage: 'zh_CN', - globalProperties: { - gettext: ['$gettext', '__'], // 这样支持同时使用 $gettext, __ 两种方式 - ngettext: ['$ngettext', '_n'], - pgettext: ['$pgettext', '_x'], - npgettext: ['$npgettext', '_nx'] - } + defaultLanguage: 'zh_CN' }) app.use(gettext) } diff --git a/web/src/views/app/IndexView.vue b/web/src/views/app/IndexView.vue index ecff4670..7aa1e24d 100644 --- a/web/src/views/app/IndexView.vue +++ b/web/src/views/app/IndexView.vue @@ -6,17 +6,17 @@ defineOptions({ import VersionModal from '@/views/app/VersionModal.vue' import { NButton, NDataTable, NFlex, NPopconfirm, NSwitch } from 'naive-ui' -import { useI18n } from 'vue-i18n' +import { useGettext } from 'vue3-gettext' import app from '@/api/panel/app' import TheIcon from '@/components/custom/TheIcon.vue' import { router } from '@/router' import { renderIcon } from '@/utils' -const { t } = useI18n() +const { $gettext } = useGettext() const versionModalShow = ref(false) -const versionModalOperation = ref('安装') +const versionModalOperation = ref($gettext('Install')) const versionModalInfo = ref({}) const columns: any = [ @@ -34,27 +34,27 @@ const columns: any = [ } }, { - title: t('appIndex.columns.name'), + title: $gettext('App Name'), key: 'name', width: 300, resizable: true, ellipsis: { tooltip: true } }, { - title: t('appIndex.columns.description'), + title: $gettext('Description'), key: 'description', minWidth: 300, resizable: true, ellipsis: { tooltip: true } }, { - title: t('appIndex.columns.installedVersion'), + title: $gettext('Installed Version'), key: 'installed_version', width: 100, ellipsis: { tooltip: true } }, { - title: t('appIndex.columns.show'), + title: $gettext('Show in Home'), key: 'show', width: 100, align: 'center', @@ -68,7 +68,7 @@ const columns: any = [ } }, { - title: t('appIndex.columns.actions'), + title: $gettext('Actions'), key: 'actions', width: 300, hideInExcel: true, @@ -88,7 +88,7 @@ const columns: any = [ }, { default: () => { - return t('appIndex.confirm.update', { app: row.name }) + return $gettext('Updating app %{ app } may reset related configurations to default state, are you sure to continue?', { app: row.name }) }, trigger: () => { return h( @@ -98,7 +98,7 @@ const columns: any = [ type: 'warning' }, { - default: () => t('appIndex.buttons.update'), + default: () => $gettext('Update'), icon: renderIcon('material-symbols:arrow-circle-up-outline-rounded', { size: 14 }) @@ -117,7 +117,7 @@ const columns: any = [ onClick: () => handleManage(row.slug) }, { - default: () => t('appIndex.buttons.manage'), + default: () => $gettext('Manage'), icon: renderIcon('material-symbols:settings-outline', { size: 14 }) } ) @@ -130,7 +130,7 @@ const columns: any = [ }, { default: () => { - return t('appIndex.confirm.uninstall', { app: row.name }) + return $gettext('Are you sure to uninstall app %{ app }?', { app: row.name }) }, trigger: () => { return h( @@ -140,7 +140,7 @@ const columns: any = [ type: 'error' }, { - default: () => t('appIndex.buttons.uninstall'), + default: () => $gettext('Uninstall'), icon: renderIcon('material-symbols:delete-outline', { size: 14 }) } ) @@ -156,12 +156,12 @@ const columns: any = [ type: 'info', onClick: () => { versionModalShow.value = true - versionModalOperation.value = '安装' + versionModalOperation.value = $gettext('Install') versionModalInfo.value = row } }, { - default: () => t('appIndex.buttons.install'), + default: () => $gettext('Install'), icon: renderIcon('material-symbols:download-rounded', { size: 14 }) } ) @@ -186,19 +186,19 @@ const { loading, data, page, total, pageSize, pageCount, refresh } = usePaginati const handleShowChange = (row: any) => { useRequest(app.updateShow(row.slug, !row.show)).onSuccess(() => { row.show = !row.show - window.$message.success(t('appIndex.alerts.setup')) + window.$message.success($gettext('Setup successfully')) }) } const handleUpdate = (slug: string) => { useRequest(app.update(slug)).onSuccess(() => { - window.$message.success(t('appIndex.alerts.update')) + window.$message.success($gettext('Task submitted, please check the progress in background tasks')) }) } const handleUninstall = (slug: string) => { useRequest(app.uninstall(slug)).onSuccess(() => { - window.$message.success(t('appIndex.alerts.uninstall')) + window.$message.success($gettext('Task submitted, please check the progress in background tasks')) }) } @@ -209,7 +209,7 @@ const handleManage = (slug: string) => { const handleUpdateCache = () => { useRequest(app.updateCache()).onSuccess(() => { refresh() - window.$message.success(t('appIndex.alerts.cache')) + window.$message.success($gettext('Cache updated successfully')) }) } @@ -223,11 +223,11 @@ onMounted(() => { - {{ $t('appIndex.alerts.warning') }} + {{ $gettext('Before updating apps, it is strongly recommended to backup/snapshot first, so you can roll back immediately if there are any issues!') }} { pageSizes: [20, 50, 100, 200] }" /> - + diff --git a/web/src/views/app/VersionModal.vue b/web/src/views/app/VersionModal.vue index 12ea8c98..defde3a6 100644 --- a/web/src/views/app/VersionModal.vue +++ b/web/src/views/app/VersionModal.vue @@ -1,9 +1,9 @@ @@ -54,7 +56,7 @@ const handleCreateCert = () => { { > - 可以通过选择网站 / DNS 中的任意一项来自动签发和部署证书,也可以手动输入域名并设置 DNS - 解析来签发证书 + {{ $gettext('You can automatically issue and deploy certificates by selecting either Website or DNS, or you can manually enter domain names and set up DNS resolution to issue certificates') }} - + { show-sort-button /> - + - + - + - + - 提交 + {{ $gettext('Submit') }} diff --git a/web/src/views/cert/CreateDnsModal.vue b/web/src/views/cert/CreateDnsModal.vue index dabeb084..109ede72 100644 --- a/web/src/views/cert/CreateDnsModal.vue +++ b/web/src/views/cert/CreateDnsModal.vue @@ -1,7 +1,9 @@ @@ -39,7 +41,7 @@ const handleCreateDNS = async () => { { > - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - 提交 + {{ $gettext('Submit') }} diff --git a/web/src/views/cert/IndexView.vue b/web/src/views/cert/IndexView.vue index d93ed5d6..2c51128f 100644 --- a/web/src/views/cert/IndexView.vue +++ b/web/src/views/cert/IndexView.vue @@ -4,6 +4,7 @@ defineOptions({ }) import { NButton } from 'naive-ui' +import { useGettext } from 'vue3-gettext' import app from '@/api/panel/app' import cert from '@/api/panel/cert' @@ -16,6 +17,7 @@ import CreateDnsModal from '@/views/cert/CreateDnsModal.vue' import DnsView from '@/views/cert/DnsView.vue' import UploadCertModal from '@/views/cert/UploadCertModal.vue' +const { $gettext } = useGettext() const currentTab = ref('cert') const uploadCert = ref(false) @@ -93,30 +95,30 @@ onUnmounted(() => { - 上传证书 + {{ $gettext('Upload Certificate') }} - 创建证书 + {{ $gettext('Create Certificate') }} - 创建账号 + {{ $gettext('Create Account') }} - 创建 DNS + {{ $gettext('Create DNS') }} - + - + - + diff --git a/web/src/views/cert/ObtainModal.vue b/web/src/views/cert/ObtainModal.vue index 6d2dc231..b9bf30e5 100644 --- a/web/src/views/cert/ObtainModal.vue +++ b/web/src/views/cert/ObtainModal.vue @@ -2,7 +2,9 @@ import cert from '@/api/panel/cert' import type { MessageReactive } from 'naive-ui' import { NButton, NTable } from 'naive-ui' +import { useGettext } from 'vue3-gettext' +const { $gettext } = useGettext() let messageReactive: MessageReactive | null = null const show = defineModel('show', { type: Boolean, required: true }) @@ -13,13 +15,13 @@ const model = ref({ }) const options = [ - { label: '自动', value: 'auto' }, - { label: '手动', value: 'manual' }, - { label: '自签名', value: 'self-signed' } + { label: $gettext('Automatic'), value: 'auto' }, + { label: $gettext('Manual'), value: 'manual' }, + { label: $gettext('Self-signed'), value: 'self-signed' } ] const handleSubmit = () => { - messageReactive = window.$message.loading('请稍后...', { + messageReactive = window.$message.loading($gettext('Please wait...'), { duration: 0 }) if (model.value.type == 'auto') { @@ -28,7 +30,7 @@ const handleSubmit = () => { window.$bus.emit('cert:refresh-cert') window.$bus.emit('cert:refresh-async') show.value = false - window.$message.success('签发成功') + window.$message.success($gettext('Issuance successful')) }) .onComplete(() => { messageReactive?.destroy() @@ -36,10 +38,10 @@ const handleSubmit = () => { } else if (model.value.type == 'manual') { useRequest(cert.manualDNS(id.value)) .onSuccess(({ data }: { data: any }) => { - window.$message.info('请先前往域名处设置 DNS 解析,再继续签发') + window.$message.info($gettext('Please set up DNS resolution for the domain first, then continue with the issuance')) const d = window.$dialog.info({ style: 'width: 60vw', - title: '待设置DNS 记录列表', + title: $gettext('DNS Records to Set'), content: () => { return h( NTable, @@ -48,10 +50,10 @@ const handleSubmit = () => { default: () => [ h('thead', [ h('tr', [ - h('th', '域名'), - h('th', '类型'), - h('th', '主机记录'), - h('th', '记录值') + h('th', $gettext('Domain')), + h('th', $gettext('Type')), + h('th', $gettext('Host Record')), + h('th', $gettext('Record Value')) ]) ]), h( @@ -69,10 +71,10 @@ const handleSubmit = () => { } ) }, - positiveText: '签发', + positiveText: $gettext('Issue'), onPositiveClick: async () => { d.loading = true - messageReactive = window.$message.loading('请稍后...', { + messageReactive = window.$message.loading($gettext('Please wait...'), { duration: 0 }) useRequest(cert.obtainManual(id.value)) @@ -80,7 +82,7 @@ const handleSubmit = () => { window.$bus.emit('cert:refresh-cert') window.$bus.emit('cert:refresh-async') show.value = false - window.$message.success('签发成功') + window.$message.success($gettext('Issuance successful')) }) .onComplete(() => { d.loading = false @@ -98,7 +100,7 @@ const handleSubmit = () => { window.$bus.emit('cert:refresh-cert') window.$bus.emit('cert:refresh-async') show.value = false - window.$message.success('签发成功') + window.$message.success($gettext('Issuance successful')) }) .onComplete(() => { messageReactive?.destroy() @@ -111,17 +113,17 @@ const handleSubmit = () => { - + - 提交 + {{ $gettext('Submit') }} diff --git a/web/src/views/cert/UploadCertModal.vue b/web/src/views/cert/UploadCertModal.vue index 557072b5..c8b06464 100644 --- a/web/src/views/cert/UploadCertModal.vue +++ b/web/src/views/cert/UploadCertModal.vue @@ -1,7 +1,9 @@ @@ -25,7 +27,7 @@ const handleSubmit = () => { { > - + - + - 提交 + {{ $gettext('Submit') }} diff --git a/web/src/views/cert/route.ts b/web/src/views/cert/route.ts index 13e45f09..e76aecee 100644 --- a/web/src/views/cert/route.ts +++ b/web/src/views/cert/route.ts @@ -1,3 +1,4 @@ +import { $gettext } from '@/utils/gettext' import type { RouteType } from '~/types/router' const Layout = () => import('@/layout/IndexView.vue') @@ -15,7 +16,7 @@ export default { path: '', component: () => import('./IndexView.vue'), meta: { - title: 'certIndex.title', + title: $gettext('Certificate'), icon: 'mdi:certificate-outline', role: ['admin'], requireAuth: true diff --git a/web/src/views/dashboard/UpdateView.vue b/web/src/views/dashboard/UpdateView.vue index a179583c..53c9f6cc 100644 --- a/web/src/views/dashboard/UpdateView.vue +++ b/web/src/views/dashboard/UpdateView.vue @@ -7,13 +7,13 @@ import { MdPreview } from 'md-editor-v3' import 'md-editor-v3/lib/style.css' import type { MessageReactive } from 'naive-ui' import { NButton } from 'naive-ui' -import { useI18n } from 'vue-i18n' +import { useGettext } from 'vue3-gettext' import dashboard from '@/api/panel/dashboard' import { router } from '@/router' import { formatDateTime } from '@/utils' -const { t } = useI18n() +const { $gettext } = useGettext() const { data: versions } = useRequest(dashboard.updateInfo, { initialData: [] }) @@ -21,12 +21,12 @@ let messageReactive: MessageReactive | null = null const handleUpdate = () => { window.$dialog.warning({ - title: t('homeUpdate.confirm.update.title'), - content: t('homeUpdate.confirm.update.content'), - positiveText: t('homeUpdate.confirm.update.positiveText'), - negativeText: t('homeUpdate.confirm.update.negativeText'), + title: $gettext('Update Panel'), + content: $gettext('Are you sure you want to update the panel?'), + positiveText: $gettext('Confirm'), + negativeText: $gettext('Cancel'), onPositiveClick: () => { - messageReactive = window.$message.loading(t('homeUpdate.confirm.update.loading'), { + messageReactive = window.$message.loading($gettext('Panel updating...'), { duration: 0 }) useRequest(dashboard.update()) @@ -37,14 +37,14 @@ const handleUpdate = () => { }, 400) router.push({ name: 'dashboard-index' }) }, 2500) - window.$message.success(t('homeUpdate.alerts.success')) + window.$message.success($gettext('Panel updated successfully')) }) .onComplete(() => { messageReactive?.destroy() }) }, onNegativeClick: () => { - window.$message.info(t('homeUpdate.alerts.info')) + window.$message.info($gettext('Update canceled')) } }) } @@ -56,7 +56,7 @@ const handleUpdate = () => {
- {{ $t('homeUpdate.button.update') }} + {{ $gettext('Update Now') }}
@@ -79,7 +79,7 @@ const handleUpdate = () => {
- +
diff --git a/web/src/views/database/CreateDatabaseModal.vue b/web/src/views/database/CreateDatabaseModal.vue index c80dc35c..f874221c 100644 --- a/web/src/views/database/CreateDatabaseModal.vue +++ b/web/src/views/database/CreateDatabaseModal.vue @@ -1,7 +1,9 @@