Feature(custom): split i18n in main and renderer, use vue-i18n

This commit is contained in:
Kuingsmile
2025-08-01 13:10:05 +08:00
parent ff95e0f6fe
commit 236b7c6e7d
76 changed files with 4310 additions and 5986 deletions

View File

@@ -1,326 +0,0 @@
name: 'I18n Check - Find Unused Translation Keys'
on:
workflow_dispatch:
inputs:
auto_fix:
description: 'Automatically remove unused keys and create PR'
required: false
default: false
type: boolean
pull_request:
branches: [ main, dev ]
paths:
- 'src/**/*.vue'
- 'src/**/*.ts'
- 'src/**/*.js'
- 'public/i18n/**/*.yml'
- 'scripts/find-unused-i18n.mjs'
- '.github/workflows/i18n-check.yml'
push:
branches: [ main, dev ]
paths:
- 'public/i18n/**/*.yml'
env:
NODE_OPTIONS: '--max-old-space-size=4096'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
i18n-check:
name: Check for Unused I18n Keys
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
cache: 'yarn'
- name: Install dependencies
run: yarn install --frozen-lockfile
- name: Run i18n unused keys check
id: i18n-check
run: |
echo "Running i18n unused keys analysis..."
# Run the script and capture output
OUTPUT=$(node scripts/find-unused-i18n.mjs 2>&1)
EXIT_CODE=$?
# Save the output to a file for the job summary
echo "$OUTPUT" > i18n-check-output.txt
# Also output to console
echo "$OUTPUT"
# Check if there are unused keys by looking for the specific pattern in output
if echo "$OUTPUT" | grep -q "🗑️ Unused I18n Keys:"; then
echo "unused_keys_found=true" >> $GITHUB_OUTPUT
echo "❌ Found unused i18n keys!"
exit 1
else
echo "unused_keys_found=false" >> $GITHUB_OUTPUT
echo "✅ No unused i18n keys found!"
exit 0
fi
- name: Generate Job Summary
if: always()
run: |
echo "## 🌐 I18n Keys Analysis Report" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
if [ -f i18n-check-output.txt ]; then
echo "### 📊 Analysis Results" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
cat i18n-check-output.txt >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
fi
if [ "${{ steps.i18n-check.outputs.unused_keys_found }}" = "true" ]; then
echo "### ❌ Action Required" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "Unused i18n keys were found. Consider:" >> $GITHUB_STEP_SUMMARY
echo "- Removing unused keys from locale files" >> $GITHUB_STEP_SUMMARY
echo "- Verifying that the keys are actually unused" >> $GITHUB_STEP_SUMMARY
echo "- Adding usage for keys that should be kept" >> $GITHUB_STEP_SUMMARY
else
echo "### ✅ All Clear" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "No unused i18n keys found. Great job maintaining clean translations! 🎉" >> $GITHUB_STEP_SUMMARY
fi
echo "" >> $GITHUB_STEP_SUMMARY
echo "### 💡 Tips" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "- Run \`yarn i18n:check\` locally to check for unused keys" >> $GITHUB_STEP_SUMMARY
echo "- Run \`yarn i18n:check:verbose\` for detailed usage information" >> $GITHUB_STEP_SUMMARY
echo "- This check runs automatically on PRs that modify Vue, TS, JS, or i18n files" >> $GITHUB_STEP_SUMMARY
- name: Upload analysis results
if: always()
uses: actions/upload-artifact@v4
with:
name: i18n-analysis-results
path: i18n-check-output.txt
retention-days: 7
- name: Comment on PR (if unused keys found)
if: github.event_name == 'pull_request' && steps.i18n-check.outputs.unused_keys_found == 'true'
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
let output = '';
try {
output = fs.readFileSync('i18n-check-output.txt', 'utf8');
} catch (error) {
output = 'Unable to read analysis output';
}
const body = `## 🌐 I18n Analysis Report
❌ **Unused i18n keys were found in this PR**
<details>
<summary>📊 Click to view detailed analysis</summary>
\`\`\`
${output}
\`\`\`
</details>
### 🔧 Action Required
Please review the unused keys listed above and consider:
- **Removing** keys that are truly unused
- **Verifying** that the detection is correct (some dynamic key usage might not be detected)
- **Adding usage** for keys that should be kept
### 💡 Local Testing
You can run this analysis locally using:
\`\`\`bash
yarn i18n:check # Basic check
yarn i18n:check:verbose # Detailed output with usage examples
\`\`\`
---
*This comment was automatically generated by the I18n Check workflow.*`;
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: body
});
locale-consistency-check:
name: Check Locale File Consistency
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
cache: 'yarn'
- name: Install dependencies
run: yarn install --frozen-lockfile
- name: Check locale files consistency
run: |
echo "Checking if all locale files have the same structure..."
# Run the i18n script in verbose mode to also check for inconsistencies
node scripts/find-unused-i18n.mjs --verbose > locale-check.txt 2>&1
# Check if there are inconsistencies reported
if grep -q "⚠️ Locale Inconsistencies:" locale-check.txt; then
echo "❌ Found locale inconsistencies!"
cat locale-check.txt
exit 1
else
echo "✅ All locale files are consistent!"
fi
- name: Generate Consistency Report
if: always()
run: |
echo "## 🔄 Locale Consistency Check" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
if grep -q "⚠️ Locale Inconsistencies:" locale-check.txt 2>/dev/null; then
echo "### ❌ Inconsistencies Found" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "Some keys exist in one locale but not others:" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
cat locale-check.txt >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
else
echo "### ✅ All Locale Files Consistent" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "All locale files have matching key structures. Perfect! 🎉" >> $GITHUB_STEP_SUMMARY
fi
auto-fix:
name: Auto-fix Unused I18n Keys
runs-on: ubuntu-latest
if: github.event_name == 'workflow_dispatch' && github.event.inputs.auto_fix == 'true'
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
cache: 'yarn'
- name: Install dependencies
run: yarn install --frozen-lockfile
- name: Check for unused keys before deletion
id: check-before
run: |
echo "Checking for unused keys..."
# Check if there are unused keys
if node scripts/find-unused-i18n.mjs | grep -q "🗑️ Unused I18n Keys:"; then
echo "unused_keys_found=true" >> $GITHUB_OUTPUT
echo "✅ Found unused keys to clean up"
else
echo "unused_keys_found=false" >> $GITHUB_OUTPUT
echo " No unused keys found"
fi
- name: Delete unused keys
if: steps.check-before.outputs.unused_keys_found == 'true'
run: |
echo "🗑️ Removing unused i18n keys..."
node scripts/find-unused-i18n.mjs --delete
- name: Regenerate TypeScript types
if: steps.check-before.outputs.unused_keys_found == 'true'
run: |
echo "🔄 Regenerating TypeScript types..."
yarn i18n
- name: Create Pull Request
if: steps.check-before.outputs.unused_keys_found == 'true'
uses: peter-evans/create-pull-request@v5
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: 'feat(i18n): remove unused translation keys'
title: '🗑️ Remove unused i18n translation keys'
body: |
## 🗑️ Automated I18n Cleanup
This PR automatically removes unused translation keys that were detected by the i18n analysis script.
### ✨ Changes Made
- Removed unused translation keys from all locale files
- Regenerated TypeScript type definitions
### 🔍 Analysis Details
The unused keys were identified by scanning the entire codebase for i18n usage patterns including:
- `$T('KEY')` - Template usage
- `T('KEY')` - Script usage
- `i18nManager.T('KEY')` - Direct manager usage
- Dynamic patterns with template literals
### ⚠️ Review Required
Please review the changes to ensure:
- No keys were removed that are used in ways not detected by the script
- All locale files maintain consistency
- The TypeScript types were properly regenerated
---
*This PR was automatically created by the I18n Auto-fix workflow.*
branch: feat/cleanup-unused-i18n-keys
delete-branch: true
- name: Generate Summary
run: |
if [ "${{ steps.check-before.outputs.unused_keys_found }}" = "true" ]; then
echo "## 🗑️ I18n Auto-fix Completed" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "✅ Successfully removed unused translation keys and created a pull request." >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### 📝 Next Steps" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "1. Review the created pull request" >> $GITHUB_STEP_SUMMARY
echo "2. Verify that no important keys were removed" >> $GITHUB_STEP_SUMMARY
echo "3. Test the application to ensure everything works correctly" >> $GITHUB_STEP_SUMMARY
echo "4. Merge the pull request when ready" >> $GITHUB_STEP_SUMMARY
else
echo "## No Action Needed" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "No unused i18n keys were found. Your translations are already clean! 🎉" >> $GITHUB_STEP_SUMMARY
fi

View File

@@ -1,8 +1,9 @@
import { resolve } from 'node:path'
import { dirname, resolve } from 'node:path'
import { fileURLToPath } from 'node:url'
import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite'
import vue from '@vitejs/plugin-vue'
import { defineConfig, externalizeDepsPlugin } from 'electron-vite'
export default defineConfig({
main: {
// Main process configuration
@@ -22,7 +23,13 @@ export default defineConfig({
},
preload: {
// Preload scripts configuration
plugins: [externalizeDepsPlugin()],
plugins: [externalizeDepsPlugin(),
VueI18nPlugin({
/* options */
// locale messages resource pre-compile option
include: resolve(dirname(fileURLToPath(import.meta.url)), './src/renderer/i18n/locales/**')
})
],
resolve: {
alias: {
'@': resolve('src/renderer'),

View File

@@ -24,10 +24,6 @@
"cz": "git-cz",
"dev": "electron-vite dev --watch",
"i18n": "node ./scripts/gen-i18n-types.js",
"i18n:check": "node ./scripts/find-unused-i18n.js",
"i18n:check:verbose": "node ./scripts/find-unused-i18n.js --verbose",
"i18n:clean": "node ./scripts/find-unused-i18n.js --delete",
"i18n:clean:dry-run": "node ./scripts/find-unused-i18n.js --delete --dry-run",
"link": "node ./scripts/link.js",
"lint": "eslint --ext .js,.jsx,.ts,.tsx,.vue src/",
"lint:dpdm": "dpdm -T --tsconfig ./tsconfig.json --no-tree --no-warning --exit-code circular:1 src/main/index.ts",
@@ -78,8 +74,8 @@
"node-ssh-no-cpu-features": "^2.0.0",
"nodejs-file-downloader": "^4.13.0",
"piclist": "file:../piclist-core",
"pinia": "^2.1.7",
"pinia-plugin-persistedstate": "^3.2.1",
"pinia": "^3.0.3",
"pinia-plugin-persistedstate": "^4.4.1",
"proxy-agent": "^6.5.0",
"qiniu": "7.14.0",
"qrcode.vue": "^3.6.0",
@@ -91,6 +87,7 @@
"uuid": "^11.1.0",
"video.js": "^8.23.3",
"vue": "^3.5.18",
"vue-i18n": "^11.1.11",
"vue-router": "^4.5.1",
"vue3-lazyload": "^0.3.8",
"vue3-photo-preview": "^0.3.0",
@@ -100,6 +97,7 @@
"devDependencies": {
"@electron/notarize": "^3.0.1",
"@eslint/js": "^9.32.0",
"@intlify/unplugin-vue-i18n": "^6.0.8",
"@types/ali-oss": "^6.16.11",
"@types/fs-extra": "^11.0.4",
"@types/js-yaml": "^4.0.9",
@@ -125,7 +123,7 @@
"eslint-plugin-prettier": "^5.5.3",
"eslint-plugin-simple-import-sort": "^12.1.1",
"eslint-plugin-unicorn": "^60.0.0",
"eslint-plugin-vue": "^10.3.0",
"eslint-plugin-vue": "^10.4.0",
"husky": "^9.1.7",
"node-bump-version": "^2.0.0",
"npm-check-updates": "^18.0.2",

View File

@@ -5,16 +5,13 @@ OPEN_MINI_WINDOW: Open Mini Window
HIDE_MINI_WINDOW: Hide Mini Window
CHOOSE_DEFAULT_PICBED: Choose Default Picbed
RELOAD_APP: Reload App
UPLOAD_FAILED: Upload Failed
UPLOAD_SUCCEED: Upload Succeed
UPLOAD_FAILED: Upload Failed
UPLOAD_PROGRESS: Upload Progress
OPERATION_SUCCEED: Operation Succeed
OPERATION_FAILED: Operation Failed
UPLOADING: Uploading
QUICK_UPLOAD: Quick Upload
UPLOAD_BY_CLIPBOARD: Upload by Clipboard
SHOW_PICBED_QRCODE: Show Picbed Qrcode
PICBED_QRCODE: Picbed Qrcode
ENABLE: Enable
DISABLE: Disable
CONFIG_THING: Config ${c}
@@ -28,18 +25,6 @@ START_WATCH_CLIPBOARD: Start Watch Clipboard
STOP_WATCH_CLIPBOARD: Stop Watch Clipboard
OPEN_TOOLBOX: Open Toolbox
TOOLBOX: Toolbox
TOOLBOX_TITLE: Troubleshoot PicList runtime issues
TOOLBOX_SUB_TITLE: Scan the following items immediately to fix usage issues
TOOLBOX_CHECK_CONFIG_FILE_BROKEN: Check if the configuration file is damaged
TOOLBOX_CHECK_GALLERY_FILE_BROKEN: Check if the album file is damaged
TOOLBOX_CHECK_PROBLEM_WITH_CLIPBOARD_PIC_UPLOAD: Check if there is a problem with clipboard picture upload
TOOLBOX_CHECK_PROBLEM_WITH_PROXY: Check if the proxy settings are normal
TOOLBOX_FIX_DONE_NEED_RELOAD: Repair completed, need to restart to take effect, restart or not
TOOLBOX_CANT_AUTO_FIX: Unable to automatically repair, please repair the following problems yourself
TOOLBOX_START_SCAN: Start scanning
TOOLBOX_RE_SCAN: Re scanning
TOOLBOX_START_FIX: Start fixing
TOOLBOX_SUCCESS_TIPS: Congratulations, no problems were found
TOOLBOX_CHECK_CONFIG_FILE_PATH_TIPS: 'The configuration file path is: ${path}'
TOOLBOX_CHECK_CONFIG_FILE_BROKEN_TIPS: The configuration file is damaged
TOOLBOX_CHECK_GALLERY_FILE_PATH_TIPS: 'The album file path is: ${path}'
@@ -51,865 +36,12 @@ TOOLBOX_CHECK_PROXY_PROXY_IS_NOT_WORKING: Proxy settings unavailable
TOOLBOX_CHECK_CLIPBOARD_FILE_PATH_TIPS: 'The temporary folder path for clipboard pictures is: ${path}'
TOOLBOX_CHECK_CLIPBOARD_FILE_PATH_NOT_EXIST_TIPS: 'The temporary folder for clipboard pictures does not exist: ${path}'
TOOLBOX_CHECK_CLIPBOARD_FILE_PATH_ERROR_TIPS: 'Please create the folder yourself: ${path}'
MANUAL_PAGE_OPEN_TIP: Please select the way to open the manual
MANUAL_PAGE_OPEN_TIP_TITLE: Tips
MANUAL_PAGE_OPEN_BY_BROWSER: Browser
MANUAL_PAGE_OPEN_BY_BUILD_IN: Built-in Window
MANUAL_PAGE_OPEN_SETTING_TIP: Select the way to open the manual
UPLOAD_AREA: Upload
UPLOAD_VIEW_HINT: Click to open picbeds settings
MANAGE_PAGE: Manage
GALLERY: Gallery
REFRESH: Refresh
MANUAL: Manual
PICBEDS_SETTINGS: Picbeds
PICLIST_SETTINGS: Settings
PLUGIN_SETTINGS: Plugins
CHOOSE_PICBED: Choose Picbed
COPY_PICBED_CONFIG: Copy Picbed Config
COPY_PICBED_CONFIG_SUCCEED: Copy Picbed Config Succeed
INPUT: Input
CANCEL: Cancel
CONFIRM: Confirm
RESET_PICBED_CONFIG: Reset
CHOOSE_SHOWED_PICBED: Choose Showed Picbed
CHOOSE_PASTE_FORMAT: Choose Paste Format
COPY: Copy
DELETE: Delete
SELECT_ALL: Select All
CHANGE_IMAGE_URL: Change Image URL
CHANGE_IMAGE_URL_SUCCEED: Change Image URL Succeed
COPY_LINK_SUCCEED: Copy Link Succeed
BATCH_COPY_LINK_SUCCEED: Batch Copy Link Succeed
FILE_RENAME: File Rename
OPEN_FILE_PATH: Open file path
GALLERY_SYNC_DELETE: Cloud Sync Delete
GALLERY_SYNC_DELETE_NOTICE_TITLE: Notice
GALLERY_SYNC_DELETE_NOTICE_SUCCEED: Cloud Delete Succeed
GALLERY_SYNC_DELETE_NOTICE_FAILED: Cloud Delete Failed
GALLERY_CHANGE_URL: Rename
GALLERY_SEARCH_FILENAME: Search by Filename
GALLERY_SEARCH_URL: Search by URL
GALLERY_MATCHED: ' Matched: '
UPLOAD_PAGE_COPY_UPLOAD_API: Copy Upload API
UPLOAD_PAGE_IMAGE_PROCESS_NAME: Image Processing
UPLOAD_PAGE_IMAGE_PROCESS_DIALOG_TITLE: Image Processing Settings
UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST: Skip Process Ext List
UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST_TIPS: Enter the file extensions to skip processing, separated by commas (e.g., jpg,png,gif)
UPLOAD_PAGE_IMAGE_PROCESS_ISADDWM: Add Watermark
UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE: Watermark Type
UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE_TEXT: Text
UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE_IMAGE: Image
UPLOAD_PAGE_IMAGE_PROCESS_ISFULLSCREEN_WM: Full-Screen Watermark
UPLOAD_PAGE_IMAGE_PROCESS_WMDEGREE: Watermark Angle
UPLOAD_PAGE_IMAGE_PROCESS_WMTEXT: Watermark Text
UPLOAD_PAGE_IMAGE_PROCESS_WMTEXT_FONT_PATH: Watermark Font Path (download font file for the first time)
UPLOAD_PAGE_IMAGE_PROCESS_WMRATIO: Watermark Size Ratio
UPLOAD_PAGE_IMAGE_PROCESS_WMCOLOR: Watermark Color, Please select from the color picker
UPLOAD_PAGE_IMAGE_PROCESS_WMPATH: Watermark Image Path (leave blank to use default image)
UPLOAD_PAGE_IMAGE_PROCESS_WMPOSITION: Watermark Position
UPLOAD_PAGE_IMAGE_PROCESS_ISREMOVEEXIF: Remove EXIF Info
UPLOAD_PAGE_IMAGE_PROCESS_QUALITY: Compression Quality(1-100)
UPLOAD_PAGE_IMAGE_PROCESS_ISCONVERT: Convert Format
UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT: Destination Format
UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT_SPECIFIC: 'Specific Format, Please enter in json format, e.g. {"png": "jpg"}'
UPLOAD_PAGE_IMAGE_PROCESS_ISFLIP: Whether to flip vertically
UPLOAD_PAGE_IMAGE_PROCESS_ISFLOP: Whether to flip horizontally
UPLOAD_PAGE_IMAGE_PROCESS_ISRESIZE: Resize to fixed size
UPLOAD_PAGE_IMAGE_PROCESS_RESIZEWIDTH: Width(Set to 0 to scale by height)
UPLOAD_PAGE_IMAGE_PROCESS_RESIZEHEIGHT: Height(Set to 0 to scale by width)
UPLOAD_PAGE_IMAGE_PROCESS_SKIPRESIZEOfSMALLIMG_HEIGHT: Skip resize when image height is smaller than target height
UPLOAD_PAGE_IMAGE_PROCESS_SKIPRESIZEOfSMALLIMG_WIDTH: Skip resize when image width is smaller than target width
UPLOAD_PAGE_IMAGE_PROCESS_ISRESIZEBYPERCENT: Resize by percentage (Higher priority)
UPLOAD_PAGE_IMAGE_PROCESS_RESIZEPERCENT: Resize Percentage, enter 50 for 50%
UPLOAD_PAGE_IMAGE_PROCESS_ISROTATE: Rotate
UPLOAD_PAGE_IMAGE_PROCESS_ROTATEDEGREE: Rotation Angle
UPLOAD_PAGE_IMAGE_PROCESS_CONFIRM: Save
UPLOAD_PAGE_IMAGE_PROCESS_CANCEL: Cancel
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP: top
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM: bottom
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_LEFT: left
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_RIGHT: right
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP_LEFT: top left
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP_RIGHT: top right
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM_LEFT: bottom left
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM_RIGHT: bottom right
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_CENTER: center
UPLOAD_SHORT_URL: Short
UPLOAD_NORMAL_URL: Long
SETTINGS: Settings
SETTINGS_OPEN_CONFIG_FILE: Open Config File
SETTINGS_MIGRATE_FROM_PICGO: Migrate from PicGo
SETTINGS_MIGRATE_FROM_PICGO_TITLE: Notice
SETTINGS_MIGRATE_FROM_PICGO_CONTENT: Migrate from PicGo will overwrite your current settings and gallery, do you want to continue?
SETTINGS_MIGRATE_FROM_PICGO_SUCCESS: Import succeed, please restart PicList
SETTINGS_MIGRATE_FROM_PICGO_FAILED: Import failed
SETTINGS_START_MODE: Default Start Mode
SETTINGS_START_MODE_MINI: Mini Window
SETTINGS_START_MODE_MAIN: Main Window
SETTINGS_START_MODE_NO_TRAY: No Tray
SETTINGS_START_MODE_QUIET: Quiet Mode
SETTINGS_CLICK_TO_OPEN: Click to Open
SETTINGS_SET_LOG_FILE: Set Log File
SETTINGS_CLICK_TO_SET: Click to Set
SETTINGS_CLICK_TO_CHECK: Click to Check
SETTINGS_SET_SHORTCUT: Set Shortcut
SETTINGS_CUSTOM_LINK_FORMAT: Custom Link Format
SETTINGS_SET_PROXY_AND_MIRROR: Set Proxy and Mirror
SETTINGS_SET_SERVER: Set Server
SETTINGS_CHECK_UPDATE: Check Update
SETTINGS_OPEN_UPDATE_HELPER: Open Update Helper
SETTINGS_OPEN: Open
SETTINGS_CLOSE: Close
SETTINGS_CLOSE_MINI_WINDOW_SYNC: Close Mini Window When open Main Window
SETTINGS_CLOSE_MAIN_WINDOW_SYNC: Close Main Window When open Mini Window
SETTINGS_LAUNCH_ON_BOOT: Launch On Boot
SETTINGS_RENAME_BEFORE_UPLOAD: Manual Rename
SETTINGS_TIMESTAMP_RENAME: Timestamp Rename
SETTINGS_ADVANCED_RENAME: Advanced Rename
SETTINGS_ADVANCED_RENAME_ENABLE: Enable Advanced Rename
SETTINGS_ADVANCED_RENAME_FORMAT: Advanced Rename Format
SETTINGS_ENABLE_SECOND_PICBED: Enable Second Picbed
SETTINGS_SET_SECOND_PICBED: Set Second Picbed
SETTINGS_OPEN_UPLOAD_TIPS: Open Upload Tips
SETTINGS_OPEN_UPLOAD_RESULT_TIPS: Open Upload Result Tips
SETTINGS_MINI_WINDOW_ON_TOP: Mini Window On Top
SETTINGS_AUTO_COPY_URL_AFTER_UPLOAD: Auto Copy URL After Upload
SETTINGS_TIPS_PLACEHOLDER_URL: Use $url to represent url position
SETTINGS_TIPS_PLACEHOLDER_FILENAME: Use $fileName to represent file name position
SETTINGS_TIPS_PLACEHOLDER_EXTNAME: Use $extName to represent file's ext position
SETTINGS_TIPS_SUCH_AS: 'Such as: $url/$fileName'
SETTINGS_UPLOAD_PROXY: Upload Proxy
SETTINGS_PLUGIN_INSTALL_PROXY: Proxy for Plugin Install
SETTINGS_PLUGIN_INSTALL_MIRROR: Mirror for Plugin Install
SETTINGS_CURRENT_VERSION: Current Version
SETTINGS_NEWEST_VERSION: Newest Version
SETTINGS_GETING: Getting...
SETTINGS_TIPS_HAS_NEW_VERSION: PicList has a new version, please click confirm to restart
SETTINGS_LOG_FILE_PATH: Log File Path
SETTINGS_CONFIG_FILE_PATH: Config File Path
SETTINGS_LOG_FILE: Log File
SETTINGS_GUI_LOG_FILE: GUI Log File
SETTINGS_MANAGE_LOG_FILE: Manage Log File
SETTINGS_LOG_LEVEL: Log Level
SETTINGS_LOG_FILE_SIZE: Log File Size
SETTINGS_SET_PICGO_SERVER: Set PicGo Server
SETTINGS_TIPS_SERVER_NOTICE: If you don't know what is the server's function, please read the document, or don't modify the configuration.
SETTINGS_ENABLE_SERVER: Enable Server
SETTINGS_SET_SERVER_HOST: Set Server Host
SETTINGS_SET_SERVER_PORT: Set Server Port
SETTINGS_SET_SERVER_KEY: Set Auth Key
SETTINGS_SET_WEB_SERVER: Set Web Server
SETTINGS_TIPS_WEB_SERVER_NOTICE: If you don't know what is the web server's function, please read the document, or don't modify the configuration.
SETTINGS_SET_ENABLE_WEB_SERVER: Enable Web Server
SETTINGS_SET_WEB_SERVER_HOST: Set Web Server Host
SETTINGS_SET_WEB_SERVER_PORT: Set Web Server Port
SETTINGS_SET_WEB_SERVER_PATH: Set Web Server Path
SETTINGS_TIP_PLACEHOLDER_WEB_HOST: Default:127.0.0.1
SETTINGS_TIP_PLACEHOLDER_WEB_PORT: Default:37777
SETTINGS_TIP_PLACEHOLDER_HOST: Default:127.0.0.1
SETTINGS_TIP_PLACEHOLDER_PORT: Default:36677
SETTINGS_TIP_PLACEHOLDER_KEY: This key is used to avoid malicious requests, through urlParams '?key=xxx' to pass
SETTINGS_SET_SERVER_AES_KEY: Set AES Key for server response
SETTINGS_LOG_LEVEL_ALL: All
SETTINGS_LOG_LEVEL_SUCCESS: Success
SETTINGS_LOG_LEVEL_ERROR: Error
SETTINGS_LOG_LEVEL_INFO: Info
SETTINGS_LOG_LEVEL_WARN: Warn
SETTINGS_LOG_LEVEL_NONE: None
SETTINGS_RESULT: Result
SETTINGS_DEFAULT_PICBED: Default Picbed
SETTINGS_SET_DEFAULT_PICBED: Set Default Picbed
SETTINGS_NOT_CONFIG_OPTIONS: Not Config Options
SETTINGS_USE_BUILTIN_CLIPBOARD_UPLOAD: Use Builtin Clipboard to Upload
SETTINGS_CHOOSE_LANGUAGE: Choose Language
UPLOADER_CONFIG_NAME: Configuration Name
UPLOADER_CONFIG_PLACEHOLDER: Please Enter Configuration Name
SELECTED_SETTING_HINT: Selected
SETTINGS_MAIN_WINDOW_SIZE: Default Main Window Size
SETTINGS_MAIN_WINDOW_SIZE_WIDTH: Default Main Window Width
SETTINGS_MAIN_WINDOW_WIDTH_HINT: 'Default: 1200'
SETTINGS_MAIN_WINDOW_SIZE_HEIGHT: Default Main Window Height
SETTINGS_MAIN_WINDOW_HEIGHT_HINT: 'Default: 800'
SETTINGS_RAW_PICGO_SIZE: Raw PicGo Size
SETTINGS_CUSTOM_MINI_ICON_PATH: Custom Mini Window Icon Path
SETTINGS_CUSTOM_MINI_ICON: Custom Mini Window Icon
SETTINGS_COMPRESS_AND_WATERMARK: Compress and Watermark
SETTINGS_SYNC_DELETE_CLOUD: Sync delete from cloud storage of gallery
SETTINGS_ISHIDEDOCK: Hide Dock Icon
SETTINGS_ISHIDEDOCK_TIPS: Not support hide dock and tray at the same time
SETTINGS_ENCODE_OUTPUT_URL: Encode Output(or Copyed) URL
SETTINGS_WATCH_CLIPBOARD: Watch clipboard when software start
SETTINGS_SHORT_URL: Use short url
SETTINGS_SHORT_URL_SERVER: Short url server
SETTINGS_SHORT_URL_C1N_TOKEN: C1N Token
SETTINGS_SHORT_URL_YOURLS_DOMAIN: YOURLS domain
SETTINGS_SHORT_URL_YOURLS_SIGNATURE: YOURLS signature
SETTINGS_SHORT_URL_CF_WORKER_HOST: Cloudflare Worker Host
SETTINGS_SHORT_SINK_DOMAIN: sink domain
SETTINGS_SHORT_SINK_TOKEN: sink token
SETTINGS_DELETE_LOCAL_FILE_AFTER_UPLOAD: Delete local file after upload
SETTINGS_SYNC_CONFIG: Settings Sync Configuration
SETTINGS_SYNC_CONFIG_TITLE: Sync Settings
SETTINGS_SYNC_CONFIG_NOTE: The files to be synchronized are configuration files.
SETTINGS_SYNC_CONFIG_SELECT_TYPE: Select sync method
SETTINGS_SYNC_CONFIG_SELECT_FILE: Select files to sync
SETTINGS_SYNC_CONFIG_SELECT_CONFIG: Configuration files only
SETTINGS_SYNC_CONFIG_SELECT_GALLERY: Gallery files only
SETTINGS_SYNC_CONFIG_SELECT_BOTH: Both configuration and gallery files
SETTINGS_SYNC_CONFIG_GITEA_HOST: Gitea Host
SETTINGS_SYNC_CONFIG_GITHUB_USERNAME: username
SETTINGS_SYNC_CONFIG_GITEA_USERNAME: username
SETTINGS_SYNC_CONFIG_GITEE_USERNAME: username
SETTINGS_SYNC_CONFIG_GITHUB_REPO: repository (private)
SETTINGS_SYNC_CONFIG_GITEA_REPO: repository
SETTINGS_SYNC_CONFIG_GITEE_REPO: repository path
SETTINGS_SYNC_CONFIG_GITHUB_BRANCH: branch
SETTINGS_SYNC_CONFIG_GITEA_BRANCH: branch
SETTINGS_SYNC_CONFIG_GITEE_BRANCH: branch
SETTINGS_SYNC_CONFIG_GITHUB_TOKEN: Token
SETTINGS_SYNC_CONFIG_GITEA_TOKEN: Token
SETTINGS_SYNC_CONFIG_GITEE_TOKEN: Token
SETTINGS_SYNC_CONFIG_PROXY: Proxy
SETTINGS_SYNC_CONFIG_GITHUB_USERNAME_PLACEHOLDER: Please enter GitHub username
SETTINGS_SYNC_CONFIG_GITEA_USERNAME_PLACEHOLDER: Please enter Gitea username
SETTINGS_SYNC_CONFIG_GITEE_USERNAME_PLACEHOLDER: Please enter Gitee username
SETTINGS_SYNC_CONFIG_GITHUB_REPO_PLACEHOLDER: Please enter GitHub repository name
SETTINGS_SYNC_CONFIG_GITEA_REPO_PLACEHOLDER: Please enter Gitea repository name
SETTINGS_SYNC_CONFIG_GITEE_REPO_PLACEHOLDER: Please enter Gitee repository name
SETTINGS_SYNC_CONFIG_GITHUB_BRANCH_PLACEHOLDER: Please enter GitHub branch name
SETTINGS_SYNC_CONFIG_GITEE_BRANCH_PLACEHOLDER: Please enter Gitee branch name
SETTINGS_SYNC_CONFIG_GITEA_BRANCH_PLACEHOLDER: Please enter Gitea branch name
SETTINGS_SYNC_CONFIG_GITHUB_TOKEN_PLACEHOLDER: Please enter GitHub Token
SETTINGS_SYNC_CONFIG_GITEA_TOKEN_PLACEHOLDER: Please enter Gitea Token
SETTINGS_SYNC_CONFIG_GITEE_TOKEN_PLACEHOLDER: Please enter Gitee Token
SETTINGS_SYNC_CONFIG_PROXY_PLACEHOLDER: Please enter proxy
SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT: WebDAV Endpoint
SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT_PLACEHOLDER: Please enter WebDAV endpoint URL
SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME: Username
SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME_PLACEHOLDER: Please enter WebDAV username
SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD: Password
SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD_PLACEHOLDER: Please enter WebDAV password
SETTINGS_SYNC_CONFIG_WEBDAV_AUTH_TYPE: Authentication Type
SETTINGS_SYNC_CONFIG_WEBDAV_SSL_ENABLED: Enable SSL/HTTPS
SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH: Save Path
SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH_PLACEHOLDER: Please select save path for sync files
SETTINGS_UP_DOWN_DESC: Upload and download configuration files
SETTINGS_SYNC_UPLOAD: Upload
SETTINGS_SYNC_DOWNLOAD: Download
SETTINGS_SYNC_UPLOAD_ALL: Upload all
SETTINGS_SYNC_DOWNLOAD_ALL: Download all
SETTINGS_SYNC_UPLOAD_SUCCESS: Successfully uploaded
SETTINGS_SYNC_UPLOAD_FAILED: Upload failed
SETTINGS_SYNC_DOWNLOAD_SUCCESS: Successfully downloaded
SETTINGS_SYNC_DOWNLOAD_FAILED: Download failed
SETTINGS_SYNC_COMMON_CONFIG: Common configuration
SETTINGS_SYNC_MANAGE_CONFIG: Manage configuration
SETTINGS_AUTO_IMPORT: Auto import config in manage page
SETTINGS_AUTO_IMPORT_SELECT_PICBED: Select picbed
SETTINGS_TAB_SYSTEM: System
SETTINGS_TAB_SYNC_CONFIG: Configuration
SETTINGS_TAB_UPLOAD: Upload
SETTINGS_TAB_ADVANCED: Advanced
SETTINGS_TAB_UPDATE: Update
BUILTIN_CLIPBOARD_TIPS: Use builtin clipboard function to upload instead of using scripts
SHORTCUT_NAME: Shortcut Name
SHORTCUT_BIND: Shortcut Binding
SHORTCUT_STATUS: Status
SHORTCUT_ENABLED: Enabled
SHORTCUT_DISABLED: Disabled
SHORTCUT_SOURCE: Source
SHORTCUT_HANDLE: Handle
SHORTCUT_ENABLE: Enable
SHORTCUT_DISABLE: Disable
SHORTCUT_EDIT: Edit
SHORTCUT_CHANGE_UPLOAD: Change Upload Shortcut
WAIT_TO_UPLOAD: Wait to Upload
ALREADY_UPLOAD: Already Uploaded
DRAG_FILE_TO_HERE: Drag file to here, or
CLICK_TO_UPLOAD: click to upload
LINK_FORMAT: Link Format
CLIPBOARD_PICTURE: Clipboard
TIPS_DRAG_VALID_PICTURE_OR_URL: Drag valid picture or url to here
TIPS_INPUT_URL: Input URL
TIPS_HTTP_PREFIX: http:// or https://
TIPS_INPUT_VALID_URL: Input valid URL
PLUGIN_SEARCH_PLACEHOLDER: Search picgo plugins on npm, or click the button to view the awesome plugins list
PLUGIN_INSTALL: Install
PLUGIN_INSTALLING: Installing...
PLUGIN_INSTALLED: Installed
PLUGIN_DOING_SOMETHING: Doing...
PLUGIN_LIST: Plugin List
PLUGIN_IMPORT_LOCAL: Import Local Plugins
PLUGIN_UPDATE_ALL: Update All Plugins
TIPS_REMOVE_LINK: This operation will remove the picture from the album, continue?
TIPS_WILL_REMOVE_CHOOSED_IMAGES: This operation will remove the picture from the album, continue?
TIPS_MUST_CONTAINS_URL: Must contains $url or $fileName or $extName
TIPS_NETWORK_ERROR: Network Error
TIPS_NEED_RELOAD: Need Reload App
TIPS_PLEASE_CHOOSE_LOG_LEVEL: Please choose log level
TIPS_SET_SUCCEED: Set successfully
TIPS_RESET_SUCCEED: Reset successfully
TIPS_PLUGIN_NOT_GUI_IMPLEMENT: This plugin is not optimized for the GUI, continue?
TIPS_GET_PLUGIN_LIST_FAILED: Get plugin list failed
MANAGE_SETTING_TITLE: Manage Setting
MANAGE_SETTING_ISAUTOREFRESH_TITLE: Auto refresh file list when entering new directory
MANAGE_SETTING_ISAUTOREFRESH_TIPS: Only applies to non-paginated mode, data is cached to indexdb to speed up loading speed
MANAGE_SETTING_CLEAR_CACHE_TITLE: 'Clear file list cache database, currently in use:'
MANAGE_SETTING_CLEAR_CACHE_FREE_TITLE: 'Available:'
MANAGE_SETTING_CLEAR_CACHE_TIPS: After clearing, the file list will be reloaded when entering a new directory next time
MANAGE_SETTING_CLEAR_CACHE_PROMPT: Are you sure you want to clear the file list cache database?
MANAGE_SETTING_CLEAR_CACHE_BUTTON: Clear
MANAGE_SETTING_ISSHOWTHUMBNAIL_TITLE: Display the original image instead of format icon (requires public access permissions)
MANAGE_SETTING_ISUSEPRESIGNEDURL_TITLE: Use presigned URL for image display
MANAGE_SETTING_ISSHOWLIST_TITLE: Default display mode for the file list
MANAGE_SETTING_ISSHOWLIST_ON: List
MANAGE_SETTING_ISSHOWLIST_OFF: Card
MANAGE_SETTING_ISFORCECUSTOMURLHTTPS_TITLE: Force custom URL to use HTTPS
MANAGE_SETTING_ISFORCECUSTOMURLHTTPS_TIPS: After enabling, all operations will automatically add the https prefix to custom domains
MANAGE_SETTING_ISUPLOADKEEPDIRSTRUCTURE_TITLE: Preserve directory structure when uploading
MANAGE_SETTING_ISUPLOADKEEPDIRSTRUCTURE_TIPS: After disabling, all files will be expanded to the specified directory
MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_A: Download
MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_B: ' File '
MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_C: will preserve the directory structure
MANAGE_SETTING_ISDOWNLOADFOLDERKEEPDIRSTRUCTURE_TITLE_D: ' Folder '
MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TIPS: After enabling, the original directory structure will be preserved
MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_TITLE: Maximum number of files to download simultaneously (1-9999)
MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_TIPS: Not work on Tencent
MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_INPUT_TIPS: Please enter the maximum number of files to download simultaneously
MANAGE_SETTING_ISIGNORECASE_TITLE: Should file search be case-insensitive
MANAGE_SETTING_ISIGNORECASE_TIPS: After enabling, the search will be case-insensitive
MANAGE_SETTING_TIMESTAMPRENAME_TITLE: Rename uploaded files with timestamp - (highest priority)
MANAGE_SETTING_TIMESTAMPRENAME_TIPS: After enabling, the uploaded file will be renamed with the timestamp
MANAGE_SETTING_RANDOMSTRINGRENAME_TITLE: Rename uploaded files with random strings - (medium priority)
MANAGE_SETTING_RANDOMSTRINGRENAME_TIPS: Random string length is 20
MANAGE_SETTING_CUSTOMRENAME_TITLE: Rename uploaded files with custom names - (lowest priority)
MANAGE_SETTING_CUSTOMRENAME_TIPS: After enabling, the uploaded file will be renamed with the custom pattern
MANAGE_SETTING_CUSTOM_PATTERN_TITLE: Custom rename format, placeholders can be freely combined, please refer to the table below
MANAGE_SETTING_CUSTOM_PATTERN_TIPS: Please enter the custom rename format
MANAGE_SETTING_CUSTOM_PATTERN_TABLE_TITLE: Placeholder
MANAGE_SETTING_CUSTOM_PATTERN_TABLE_TIPS: Description
MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TITLE: Presigned URL expiration time (seconds)
MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TIPS: Please enter the presigned URL expiration time
MANAGE_SETTING_CHOOSE_COPY_FORMAT_TITLE: Select default link format for copying
MANAGE_SETTING_CHOOSE_COPY_FORMAT_MARKDOWN: Markdown
MANAGE_SETTING_CHOOSE_COPY_FORMAT_MARKDOWN_WITH_LINK: Markdown with link
MANAGE_SETTING_CHOOSE_COPY_FORMAT_RAWURL: Raw URL
MANAGE_SETTING_CHOOSE_COPY_FORMAT_HTML: HTML
MANAGE_SETTING_CHOOSE_COPY_FORMAT_BBCODE: BBCode
MANAGE_SETTING_CHOOSE_COPY_FORMAT_CUSTOM: Custom
MANAGE_SETTING_CUSTOM_COPY_FORMAT_TITLE: Custom link format($url -> raw url, $fileName -> raw fileName)
MANAGE_SETTING_CUSTOM_COPY_FORMAT_TIPS: Please enter the custom link format
MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_TITLE: Choose default download folder
MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_TIPS: System default download directory
MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_BUTTON: Choose folder
MANAGE_SETTING_COPY_MESSAGE: Copied
MANAGE_SETTING_CLEAR_CACHE_SUCCESS: Cleared successfully
MANAGE_SETTING_CLEAR_CACHE_FAILED: Clear failed
MANAGE_SETTING_ISENCODEURL_TITLE: Encode URL when copy
MANAGE_SETTING_ISENCODEURL_TIPS: After enabling, the URL will be encoded when copying
MANAGE_NO_DATA: No data
MANAGE_MAIN_PAGE_NEW_BUCKET: New Bucket
MANAGE_MAIN_PAGE_BACK_TO_HOME: Home
MANAGE_MAIN_PAGE_SWITCH_PICBED: Switch
MANAGE_MAIN_PAGE_SETTING: Setting
MANAGE_MAIN_PAGE_SUBMIT: Submit
MANAGE_MAIN_PAGE_TIPS: Tips
MANAGE_MAIN_PAGE_TIPS_SUCCESS: Created successfully
MANAGE_MAIN_PAGE_TIPS_FAILED: Create failed
MANAGE_MAIN_PAGE_BUCKET: Bucket
MANAGE_MAIN_PAGE_GALLERY: Album
MANAGE_MAIN_PAGE_REPOSITORY: Repo
MANAGE_CONSTANT_BASE_RULE: 'Please enter '
MANAGE_CONSTANT_ITEMS_PAGE_RULE_MESSAGE_A: Please enter the number of items displayed per page.
MANAGE_CONSTANT_ITEMS_PAGE_RULE_MESSAGE_B: The number of items displayed per page must be a number.
MANAGE_CONSTANT_ITEMS_PAGE_RULE_MESSAGE_C: The number of items displayed per page must be between 20 and 1000.
MANAGE_CONSTANT_ALIAS_RULE_MESSAGE_A: Please enter the alias, which is the unique identifier for this configuration.
MANAGE_CONSTANT_ALIAS_RULE_MESSAGE_B: The alias can only contain Chinese, English, numbers, underscores, and hyphens.
MANAGE_CONSTANT_ALIAS_TOOLTIP: The alias can only contain Chinese, English, numbers, underscores, and hyphens.
MANAGE_CONSTANT_ITEMS_PAGE_TOOLTIP: The number of items displayed per page must be between 20 and 1000.
MANAGE_CONSTANT_PAGING_TOOLTIP: When paging is turned off, the directory list will use database caching to optimize performance.
MANAGE_CONSTANT_BUCKET_NAME_TOOLTIP: Separated by commas, e.g., bucket1,bucket2,bucket3, and corresponding to the starting directory order one by one.
MANAGE_CONSTANT_BASE_DIR_TOOLTIP: Separated by commas, e.g., /dir1,/dir2,/dir3, corresponding to the storage bucket order one by one.
MANAGE_CONSTANT_IS_AUTO_CUSTOM_URL_TOOLTIP: When turned on, the domainbound to bucket will be automatically obtained. Else, it can be manually filled in.
MANAGE_CONSTANT_SMMS_ALIAS_DESC: Alias - required
MANAGE_CONSTANT_SMMS_ALIAS_PLACEHOLDER: Unique identifier of this configuration
MANAGE_CONSTANT_SMMS_TOKEN_DESC: Token - required
MANAGE_CONSTANT_SMMS_TOKEN_PLACEHOLDER: Please fill in your token
MANAGE_CONSTANT_SMMS_PAGING_DESC: Whether to enable pagination
MANAGE_CONSTANT_SMMS_EXPLAIN: For users in mainland China, please visit the backup domain https://smms.app. Do not upload images in large quantities.
MANAGE_CONSTANT_SMMS_REFER_TEXT: 'Refer to: '
MANAGE_CONSTANT_QINIU_NAME: Qiniu
MANAGE_CONSTANT_QINIU_ALIAS_DESC: Alias - Required
MANAGE_CONSTANT_QINIU_ALIAS_PLACEHOLDER: Unique identifier for this configuration
MANAGE_CONSTANT_QINIU_ACCESS_KEY_DESC: accessKey - Required
MANAGE_CONSTANT_QINIU_ACCESS_KEY_PLACEHOLDER: Please enter the accessKey
MANAGE_CONSTANT_QINIU_SECRET_KEY_DESC: secretKey - Required
MANAGE_CONSTANT_QINIU_SECRET_KEY_PLACEHOLDER: Please enter the secretKey
MANAGE_CONSTANT_QINIU_BUCKET_DESC: space name - Optional
MANAGE_CONSTANT_QINIU_BUCKET_PLACEHOLDER: 'English comma separated, for example: bucket1, bucket2'
MANAGE_CONSTANT_QINIU_BASE_DIR_DESC: Base directory - Optional
MANAGE_CONSTANT_QINIU_BASE_DIR_PLACEHOLDER: 'English comma separated, for example: /dir1, /dir2'
MANAGE_CONSTANT_QINIU_IS_AUTO_CUSTOM_URL_DESC: Automatically get the bound domain name
MANAGE_CONSTANT_QINIU_PAGING_DESC: Enable pagination
MANAGE_CONSTANT_QINIU_ITEMS_PAGE_DESC: Number of items displayed per page
MANAGE_CONSTANT_QINIU_EXPLAIN: When configuring space name and base directory, they can be set using English comma separation. The order must be consistent and missing or empty items will use the default value.
MANAGE_CONSTANT_QINIU_REFER_TEXT: 'Refer to: '
MANAGE_CONSTANT_GITHUB_ALIAS_DESC: Alias - Required
MANAGE_CONSTANT_GITHUB_ALIAS_PLACEHOLDER: Unique identifier for this configuration
MANAGE_CONSTANT_GITHUB_TOKEN_DESC: Token - Required
MANAGE_CONSTANT_GITHUB_TOKEN_PLACEHOLDER: Please enter the Token
MANAGE_CONSTANT_GITHUB_TOKEN_TIPS: Please provide a token with full repo permissions
MANAGE_CONSTANT_GITHUB_USER_DESC: Username - Required
MANAGE_CONSTANT_GITHUB_USER_PLACEHOLDER: Please enter the Username
MANAGE_CONSTANT_GITHUB_USER_RULE_MESSAGE: Username
MANAGE_CONSTANT_GITHUB_PROXY_DESC: Proxy address - Optional
MANAGE_CONSTANT_GITHUB_PROXY_PLACEHOLDER: 'For example: http://127.0.0.1:1080'
MANAGE_CONSTANT_GITHUB_PROXY_TIPS: If the access speed is slow, you can try configuring a proxy
MANAGE_CONSTANT_GITHUB_PAGING_DESC: Enable pagination
MANAGE_CONSTANT_GITHUB_CUSTOM_URL_DESC: CDN acceleration domain name - Optional
MANAGE_CONSTANT_GITHUB_CUSTOM_URL_PLACEHOLDER: Support using {username}, {repo}, {branch}, and {path} as replacement placeholders
MANAGE_CONSTANT_GITHUB_CUSTOM_URL_TIPS: 'For example: https://cdn.staticaly.com/gh/{username}/{repo}@{branch}/{path}'
MANAGE_CONSTANT_GITHUB_CUSTOM_URL_RULE_MESSAGE_A: The acceleration domain name must start with http:// or https://
MANAGE_CONSTANT_GITHUB_CUSTOM_URL_RULE_MESSAGE_B: The braces in the acceleration domain name must appear in pairs
MANAGE_CONSTANT_GITHUB_EXPLAIN: There is an hourly limit for API calls, and uploading files larger than 100M is not supported
MANAGE_CONSTANT_GITHUB_REFER_TEXT: 'Refer to:'
MANAGE_CONSTANT_ALIYUN_NAME: Ali Cloud
MANAGE_CONSTANT_ALIYUN_ALIAS_DESC: Alias - required
MANAGE_CONSTANT_ALIYUN_ALIAS_PLACEHOLDER: The unique identifier of this configuration
MANAGE_CONSTANT_ALIYUN_ACCESS_KEY_ID_DESC: AccessKeyId - required
MANAGE_CONSTANT_ALIYUN_ACCESS_KEY_SECRET_DESC: AccessKeySecret - required
MANAGE_CONSTANT_ALIYUN_ACCESS_KEY_SECRET_PLACEHOLDER: Please fill in AccessKeySecret
MANAGE_CONSTANT_ALIYUN_BUCKET_DESC: Bucket name - optional
MANAGE_CONSTANT_ALIYUN_BUCKET_PLACEHOLDER: 'Separated by commas in English, for example: bucket1, bucket2'
MANAGE_CONSTANT_ALIYUN_BASE_DIR_DESC: Base directory - optional
MANAGE_CONSTANT_ALIYUN_BASE_DIR_PLACEHOLDER: 'Separated by commas in English, for example: /dir1, /dir2'
MANAGE_CONSTANT_ALIYUN_IS_AUTO_CUSTOM_URL_DESC: Automatically obtain bound domain name
MANAGE_CONSTANT_ALIYUN_PAGING_DESC: Whether to enable pagination
MANAGE_CONSTANT_ALIYUN_ITEMS_PAGE_DESC: Number of items displayed per page
MANAGE_CONSTANT_ALIYUN_EXPLAIN: When configuring bucket name and base directory, they can be set using English comma separation. The order must be consistent and missing or empty items will use the default value.
MANAGE_CONSTANT_ALIYUN_REFER_TEXT: 'Refer to: '
MANAGE_CONSTANT_TENCENT_NAME: Tencent
MANAGE_CONSTANT_TENCENT_ALIAS_DESC: Alias - Required
MANAGE_CONSTANT_TENCENT_ALIAS_PLACEHOLDER: Unique identifier for this configuration
MANAGE_CONSTANT_TENCENT_SECRET_ID_DESC: SecretID - Required
MANAGE_CONSTANT_TENCENT_SECRET_ID_PLACEHOLDER: Please fill in the SecretID
MANAGE_CONSTANT_TENCENT_SECRET_KEY_DESC: SecretKey - Required
MANAGE_CONSTANT_TENCENT_SECRET_KEY_PLACEHOLDER: Please fill in the SecretKey
MANAGE_CONSTANT_TENCENT_APPID_DESC: App ID - Required
MANAGE_CONSTANT_TENCENT_APPID_PLACEHOLDER: Please fill in the App ID
MANAGE_CONSTANT_TENCENT_APPID_TOOLTIP: 'For example: 1250000000'
MANAGE_CONSTANT_TENCENT_BUCKET_DESC: Bucket name - Optional (note the App ID must be included)
MANAGE_CONSTANT_TENCENT_BUCKET_PLACEHOLDER: 'Comma-separated list of bucket names, for example: bucket1-1250000000, bucket2-1250000000'
MANAGE_CONSTANT_TENCENT_BASE_DIR_DESC: Starting directory - Optional
MANAGE_CONSTANT_TENCENT_BASE_DIR_PLACEHOLDER: 'Comma-separated list of directories, for example: /dir1, /dir2'
MANAGE_CONSTANT_TENCENT_IS_AUTO_CUSTOM_URL_DESC: Automatically obtain binding domain name
MANAGE_CONSTANT_TENCENT_PAGING_DESC: Enable paging
MANAGE_CONSTANT_TENCENT_ITEMS_PAGE_DESC: Number of items to display per page
MANAGE_CONSTANT_TENCENT_EXPLAIN: When configuring bucket name and base directory, they can be set using English comma separation. The order must be consistent and missing or empty items will use the default value.
MANAGE_CONSTANT_TENCENT_REFER_TEXT: 'Refer to: '
MANAGE_CONSTANT_UPYUN_NAME: Upyun
MANAGE_CONSTANT_UPYUN_ALIAS_DESC: Alias - required
MANAGE_CONSTANT_UPYUN_ALIAS_PLACEHOLDER: Unique identifier of the configuration
MANAGE_CONSTANT_UPYUN_BUCKET_DESC: Service name - required
MANAGE_CONSTANT_UPYUN_BUCKET_PLACEHOLDER: Name of the storage bucket corresponding to other object storage
MANAGE_CONSTANT_UPYUN_OPERATOR_NAME_DESC: Operator name - required
MANAGE_CONSTANT_UPYUN_OPERATOR_NAME_PLACEHOLDER: It is recommended to use an operator with full read, write, and delete permissions
MANAGE_CONSTANT_UPYUN_OPERATOR_NAME_RULE: Operator
MANAGE_CONSTANT_UPYUN_OPERATOR_PWD_DESC: Operator password - required
MANAGE_CONSTANT_UPYUN_OPERATOR_PWD_PLACEHOLDER: Please enter the password
MANAGE_CONSTANT_UPYUN_OPERATOR_PWD_RULE: Operator password
MANAGE_CONSTANT_UPYUN_BASE_DIR_DESC: Base directory - optional
MANAGE_CONSTANT_UPYUN_BASE_DIR_PLACEHOLDER: Initial directory when reading files
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_DESC: Acceleration domain name - required
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_PLACEHOLDER: Please start with http:// or https://
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_RULE_MESSAGE_A: Acceleration domain name cannot be empty
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_RULE_MESSAGE_B: Please start the custom domain name with http:// or https://
MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_DESC: Anti-leech key - optional
MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_PLACEHOLDER: Please enter the anti-leech key
MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_TOOLTIP: If you do not need to use anti-leech, please leave it blank
MANAGE_CONSTANT_UPYUN_EXPIRE_TIME_DESC: Expiration time(s) - optional
MANAGE_CONSTANT_UPYUN_PAGING: Whether to enable pagination
MANAGE_CONSTANT_UPYUN_ITEMS_PAGE: Number of items displayed per page
MANAGE_CONSTANT_UPYUN_EXPLAIN: It is necessary to fill in the acceleration domain name of Upyun image bed, otherwise it cannot be used normally.
MANAGE_CONSTANT_UPYUN_REFER_TEXT: 'Refer to: '
MANAGE_CONSTANT_IMGUR_NAME: Imgur
MANAGE_CONSTANT_IMGUR_ALIAS_DESC: Alias - required
MANAGE_CONSTANT_IMGUR_ALIAS_PLACEHOLDER: Unique identifier of the configuration
MANAGE_CONSTANT_IMGUR_USERNAME_DESC: Imgur username - required
MANAGE_CONSTANT_IMGUR_USERNAME_PLACEHOLDER: Please enter the Imgur username
MANAGE_CONSTANT_IMGUR_ACCESS_TOKEN_DESC: Access token - required
MANAGE_CONSTANT_IMGUR_ACCESS_TOKEN_PLACEHOLDER: Please enter the access token
MANAGE_CONSTANT_IMGUR_ACCESS_TOKEN_TOOLTIP: Not the client ID, please refer to the configuration tutorial
MANAGE_CONSTANT_IMGUR_PROXY_DESC: Proxy - optional
MANAGE_CONSTANT_IMGUR_PROXY_PLACEHOLDER: 'For example: http://127.0.0.1:1080'
MANAGE_CONSTANT_IMGUR_PROXY_TOOLTIP: Please use a proxy in mainland China, otherwise it cannot be used normally
MANAGE_CONSTANT_IMGUR_EXPLAIN: Please use a proxy in mainland China, API calls have restrictions, please pay attention to usage frequency
MANAGE_CONSTANT_IMGUR_REFER_TEXT: 'Refer to: '
MANAGE_CONSTANT_S3_NAME: S3-Compatible
MANAGE_CONSTANT_S3_ALIAS_DESC: Alias - Required
MANAGE_CONSTANT_S3_ALIAS_PLACEHOLDER: Unique identifier for this configuration
MANAGE_CONSTANT_S3_ACCESS_KEY_ID_DESC: Access Key ID - Required
MANAGE_CONSTANT_S3_ACCESS_KEY_ID_PLACEHOLDER: Please enter Access Key ID
MANAGE_CONSTANT_S3_SECRET_ACCESS_KEY_DESC: Secret Access Key - Required
MANAGE_CONSTANT_S3_SECRET_ACCESS_KEY_PLACEHOLDER: Please enter Secret Access Key
MANAGE_CONSTANT_S3_ENDPOINT_DESC: Endpoint - Optional
MANAGE_CONSTANT_S3_ENDPOINT_PLACEHOLDER: e.g. s3.us-east-1.amazonaws.com
MANAGE_CONSTANT_S3_ENDPOINT_TOOLTIP: If left blank, AWS S3 is accessed by default. Provide the root API endpoint
MANAGE_CONSTANT_S3_SSLENABLED_DESC: Use HTTPS connection
MANAGE_CONSTANT_S3_SSLENABLED_TOOLTIP: Disable this option if not supported by your platform.
MANAGE_CONSTANT_S3_FORCE_PATH_STYLE_DESC: Enable S3 Path style
MANAGE_CONSTANT_S3_FORCE_PATH_STYLE_TOOLTIP: Required when using Minio, for example.
MANAGE_CONSTANT_S3_PROXY_DESC: Proxy - Optional
MANAGE_CONSTANT_S3_PROXY_PLACEHOLDER: e.g. http://127.0.0.1:1080
MANAGE_CONSTANT_S3_PROXY_TOOLTIP: Use proxy if unable to access in some parts of Mainland China
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_DESC: Permission for uploaded files
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_PRIVATE: Private
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_PUBLIC_READ: Public read
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_PUBLIC_READ_WRITE: Public read and write
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_AUTHENTICATED_READ: Authenticated read
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_BUCKET_OWNER_READ: Bucket owner read
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_BUCKET_OWNER_FULL_CONTROL: Bucket owner full control
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_AWS_EXEC_READ: AWS execution read
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_TOOLTIP: Permission options for uploaded files
MANAGE_CONSTANT_S3_BUCKET_DESC: Bucket name - Optional
MANAGE_CONSTANT_S3_BUCKET_PLACEHOLDER: English comma-separated list, e.g. bucket1,bucket2
MANAGE_CONSTANT_S3_BASE_DIR_DESC: Base directory - Optional
MANAGE_CONSTANT_S3_BASE_DIR_PLACEHOLDER: English comma-separated list, e.g. /dir1,/dir2
MANAGE_CONSTANT_S3_DOGE_CLOUD_SUPPORT_DESC: Enable Doge Cloud API
MANAGE_CONSTANT_S3_DOGE_CLOUD_SUPPORT_TOOLTIP: Support Doge Cloud API
MANAGE_CONSTANT_S3_PAGING_DESC: Enable pagination
MANAGE_CONSTANT_S3_ITEMS_PAGE_DESC: Items per page
MANAGE_CONSTANT_S3_EXPLAIN: When configuring bucket name and base directory, they can be set using English comma separation. The order must be consistent and missing or empty items will use the default value.
MANAGE_CONSTANT_S3_REFER_TEXT: 'Refer to: '
MANAGE_CONSTANT_WEBDAV_ALIAS_DESC: Alias - Required
MANAGE_CONSTANT_WEBDAV_ALIAS_PLACEHOLDER: Unique identifier for this configuration
MANAGE_CONSTANT_WEBDAV_HOST_DESC: Address - Required
MANAGE_CONSTANT_WEBDAV_HOST_PLACEHOLDER: e.g. https://example.com/dav
MANAGE_CONSTANT_WEBDAV_HOST_TOOLTIP: Please enter the complete WebDAV address
MANAGE_CONSTANT_WEBDAV_USERNAME_DESC: Username - Required
MANAGE_CONSTANT_WEBDAV_USERNAME_PLACEHOLDER: Please enter your username
MANAGE_CONSTANT_WEBDAV_BUCKET_DESC: Special Configuration
MANAGE_CONSTANT_WEBDAV_BUCKET_PLACEHOLDER: e.g. bucket1
MANAGE_CONSTANT_WEBDAV_BUCKET_TOOLTIP: This cannot be modified, only for software compatibility consideration
MANAGE_CONSTANT_WEBDAV_PASSWORD_DESC: Password - Required
MANAGE_CONSTANT_WEBDAV_PASSWORD_PLACEHOLDER: Please enter your password
MANAGE_CONSTANT_WEBDAV_BASE_DIR_DESC: Base Directory - Optional
MANAGE_CONSTANT_WEBDAV_BASE_DIR_PLACEHOLDER: e.g. /dir1
MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_DESC: Custom Domain - Optional
MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_PLACEHOLDER: e.g. https://example.com
MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_TOOLTIP: If your WebDAV server supports custom domains, please fill in
MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_RULE_MESSAGE: Custom domain should start with http:// or https://
MANAGE_CONSTANT_WEBDAV_WEB_PATH: Web Path - Optional
MANAGE_CONSTANT_WEBDAV_WEB_PATH_PLACEHOLDER: e.g. test/ttc
MANAGE_CONSTANT_WEBDAV_WEB_PATH_TOOLTIP: Used to generate URL
MANAGE_CONSTANT_WEBDAV_PROXY_DESC: Proxy - Optional
MANAGE_CONSTANT_WEBDAV_PROXY_PLACEHOLDER: e.g. http://127.0.0.1:1080
MANAGE_CONSTANT_WEBDAV_PROXY_TOOLTIP: If special network environment is required to access, please use proxy
MANAGE_CONSTANT_WEBDAV_SSL_DESC: Use HTTPS Connection
MANAGE_CONSTANT_WEBDAV_SSL_TOOLTIP: Depending on the configuration of your WebDAV server, if your server does not support HTTPS, please turn off this option
MANAGE_CONSTANT_WEBDAV_AUTH_TYPE_DESC: Authentication Type
MANAGE_CONSTANT_WEBDAV_EXPLAIN: WebDAV Configuration
MANAGE_CONSTANT_WEBDAV_REFER_TEXT: 'Refer to:'
MANAGE_CONSTANT_LOCAL_NAME: Local
MANAGE_CONSTANT_LOCAL_ALIAS_DESC: Alias - Required
MANAGE_CONSTANT_LOCAL_ALIAS_PLACEHOLDER: Unique identifier for this configuration
MANAGE_CONSTANT_LOCAL_BASE_DIR_DESC: Base directory - Required
MANAGE_CONSTANT_LOCAL_BASE_DIR_PLACEHOLDER: e.g. /dir1
MANAGE_CONSTANT_LOCAL_CUSTOM_URL_DESC: Custom Domain - Optional
MANAGE_CONSTANT_LOCAL_CUSTOM_URL_PLACEHOLDER: e.g. https://example.com
MANAGE_CONSTANT_LOCAL_CUSTOM_URL_TOOLTIP: If your local path supports custom domains, please fill in
MANAGE_CONSTANT_LOCAL_WEB_PATH: Web Path - Optional
MANAGE_CONSTANT_LOCAL_WEB_PATH_PLACEHOLDER: e.g. test/ttc
MANAGE_CONSTANT_LOCAL_WEB_PATH_TOOLTIP: Used to generate URL
MANAGE_CONSTANT_LOCAL_EXPLAIN: Local Configuration
MANAGE_CONSTANT_LOCAL_REFER_TEXT: 'Refer to:'
MANAGE_CONSTANT_LOCAL_BASE_DIR_RULE_MESSAGE: baseDir cannot be empty
MANAGE_CONSTANT_LOCAL_BUCKET_DESC: Special Configuration
MANAGE_CONSTANT_LOCAL_BUCKET_PLACEHOLDER: bucket1
MANAGE_CONSTANT_LOCAL_BUCKET_TOOLTIP: This cannot be modified, only for software compatibility consideration
MANAGE_CONSTANT_SFTP_NAME: SFTP
MANAGE_CONSTANT_SFTP_ALIAS_DESC: Alias - Required
MANAGE_CONSTANT_SFTP_ALIAS_PLACEHOLDER: Unique identifier for this configuration
MANAGE_CONSTANT_SFTP_HOST_DESC: SSH Host - Required
MANAGE_CONSTANT_SFTP_HOST_PLACEHOLDER: e.g. 233.233.233.233
MANAGE_CONSTANT_SFTP_PORT_DESC: SSH Port - Required
MANAGE_CONSTANT_SFTP_PORT_PLACEHOLDER: e.g. 22
MANAGE_CONSTANT_SFTP_USERNAME_DESC: Username
MANAGE_CONSTANT_SFTP_USERNAME_PLACEHOLDER: Please enter your username
MANAGE_CONSTANT_SFTP_PASSWORD_DESC: Password
MANAGE_CONSTANT_SFTP_PASSWORD_PLACEHOLDER: Please enter your password
MANAGE_CONSTANT_SFTP_PRIVATE_KEY_DESC: Private Key
MANAGE_CONSTANT_SFTP_PRIVATE_KEY_PLACEHOLDER: Please enter your private key
MANAGE_CONSTANT_SFTP_PASSPHRASE_DESC: Private Key Password
MANAGE_CONSTANT_SFTP_PASSPHRASE_PLACEHOLDER: Please enter your private key password
MANAGE_CONSTANT_SFTP_BASE_DIR_DESC: Base Directory
MANAGE_CONSTANT_SFTP_BASE_DIR_PLACEHOLDER: e.g. /dir1
MANAGE_CONSTANT_SFTP_CUSTOM_URL_DESC: Custom Domain
MANAGE_CONSTANT_SFTP_CUSTOM_URL_PLACEHOLDER: e.g. https://example.com
MANAGE_CONSTANT_SFTP_CUSTOM_URL_TOOLTIP: If your SFTP server supports custom domains, please fill in
MANAGE_CONSTANT_SFTP_WEB_PATH: Web Path
MANAGE_CONSTANT_SFTP_WEB_PATH_PLACEHOLDER: e.g. test/ttc
MANAGE_CONSTANT_SFTP_WEB_PATH_TOOLTIP: Used to generate URL
MANAGE_CONSTANT_SFTP_FILE_PERMISSIONS_DESC: File mode
MANAGE_CONSTANT_SFTP_FILE_PERMISSIONS_PLACEHOLDER: e.g. 0644
MANAGE_CONSTANT_SFTP_DIR_PERMISSIONS_DESC: Directory mode
MANAGE_CONSTANT_SFTP_DIR_PERMISSIONS_PLACEHOLDER: e.g. 0755
MANAGE_CONSTANT_SFTP_EXPLAIN: SFTP Configuration
MANAGE_CONSTANT_SFTP_REFER_TEXT: 'Refer to:'
MANAGE_CONSTANT_SFTP_BASE_DIR_RULE_MESSAGE: baseDir cannot be empty
MANAGE_CONSTANT_SFTP_BUCKET_DESC: Special Configuration
MANAGE_CONSTANT_SFTP_BUCKET_PLACEHOLDER: e.g. bucket1
MANAGE_CONSTANT_SFTP_BUCKET_TOOLTIP: This cannot be modified, only for software compatibility consideration
MANAGE_LOGIN_PAGE_PANE_NAME: Saved Config
MANAGE_LOGIN_PAGE_PANE_KEY_NAME: Configuration
MANAGE_LOGIN_PAGE_PANE_KEY_VALUE: Value
MANAGE_LOGIN_PAGE_PANE_ENTER: Enter
MANAGE_LOGIN_PAGE_PANE_DELETE: Delete
MANAGE_LOGIN_PAGE_PANE_SELECT_PLACEHOLDER: Please select
MANAGE_LOGIN_PAGE_PANE_IMPORT: Import
MANAGE_LOGIN_PAGE_PANE_SAVE: Save
MANAGE_LOGIN_PAGE_PANE_RESET: Reset
MANAGE_LOGIN_PAGE_PANE_TABLE_TITLE: Existing configurations, click to copy corresponding cell data
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_MESSAGE_A: Please fill in
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_ALIAS_MESSAGE: The alias can only contain Chinese, English, numbers, underscores, and hyphens
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_ITEMS_PER_PAGE_MESSAGE: The number of items per page must be between 20-1000
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_CUSTOM_URL_MESSAGE: Custom domain name should start with http:// or https://
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_NAME: Notice
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE: 'Alias overwritten: '
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_B: 'Alias saved: '
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_C: 'Alias deleted: '
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_D: 'Configuration with alias: '
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_E: ' failed to delete'
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_COPY_SUCCESS: 'Copied '
MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_TITLE: Are you sure to delete this?
MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_TIP: Tip
MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_CONFIRM: Confirm
MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_CANCEL: Cancel
MANAGE_BUCKET_PAGE_LOADING_TEXT: Loading...
MANAGE_BUCKET_PAGE_CUSTOM_URL_SELECT_PLACEHOLDER: Please select a custom domain
MANAGE_BUCKET_PAGE_CUSTOM_URL_INPUT_PLACEHOLDER: Please enter a custom domain
MANAGE_BUCKET_PAGE_UPLOAD_FILES_TOOLTIP: Upload files
MANAGE_BUCKET_PAGE_UPLOAD_FROM_URL_TOOLTIP: Upload from URL
MANAGE_BUCKET_PAGE_CREATE_FOLDER_TOOLTIP: Create folder
MANAGE_BUCKET_PAGE_DOWNLOAD_TOOLTIP: Download page
MANAGE_BUCKET_PAGE_BATCH_RENAME_TOOLTIP: Batch rename
MANAGE_BUCKET_PAGE_BATCH_COPY_URL_TOOLTIP: Batch copy URL
MANAGE_BUCKET_PAGE_COPY_FILE_INFO_TOOLTIP: Copy file information
MANAGE_BUCKET_PAGE_FORCE_REFRESH_TOOLTIP: Force refresh file list
MANAGE_BUCKET_PAGE_SEARCH_PLACEHOLDER: Search files
MANAGE_BUCKET_PAGE_ROOT_FOLDER: Root folder
MANAGE_BUCKET_PAGE_FILE_NUMBER: 'Number of files: '
MANAGE_BUCKET_PAGE_FILE_SIZE: 'Total size: '
MANAGE_BUCKET_PAGE_SELECT_ALL: Select all
MANAGE_BUCKET_PAGE_SELECT_NONE: Deselect all
MANAGE_BUCKET_PAGE_SELECT_INVERT: Invert selection
MANAGE_BUCKET_DOWNLOAD_BTN: Download
MANAGE_BUCKET_DELETE_BTN: Delete
MANAGE_BUCKET_SORT_TITLE: Sort
MANAGE_BUCKET_SORT_NAME: Name
MANAGE_BUCKET_SORT_SIZE: Size
MANAGE_BUCKET_SORT_EXT: Type
MANAGE_BUCKET_SORT_TIME: Time
MANAGE_BUCKET_SORT_CHECK: Selected status
MANAGE_BUCKET_SORT_INIT: Init
MANAGE_BUCKET_URL_UPLOAD_DIALOG_TITLE: Please enter URL(s), support multiple URLs separated by line breaks
MANAGE_BUCKET_URL_UPLOAD_DIALOG_CONFIRM: Confirm
MANAGE_BUCKET_URL_UPLOAD_DIALOG_CANCEL: Cancel
MANAGE_BUCKET_URL_FORMAT_MARKDOWN: Markdown
MANAGE_BUCKET_URL_FORMAT_MARKDOWN_WITH_LINK: Markdown-link
MANAGE_BUCKET_URL_FORMAT_URL: Url
MANAGE_BUCKET_URL_FORMAT_HTML: Html
MANAGE_BUCKET_URL_FORMAT_BBCODE: BBCode
MANAGE_BUCKET_URL_FORMAT_CUSTOM: Custom
MANAGE_BUCKET_URL_FORMAT_PRESIGN: Presigned link
MANAGE_BUCKET_FILE_INFO_TITLE: File information
MANAGE_BUCKET_FILE_INFO_COPY_TIPS: Copy in JSON format
MANAGE_BUCKET_FILE_LIST_LOADING: Loading, click to cancel
MANAGE_BUCKET_FILE_LIST_DOWNLOAD_PRE: Preparing to download, click to cancel
MANAGE_BUCKET_KEEP_FOLDER_STRUCTURE: Keep folder structure
MANAGE_BUCKET_NOT_KEEP_FOLDER_STRUCTURE: Do not keep folder structure
MANAGE_BUCKET_UPLOAD_AREA_TITLE: Drag and drop to upload, support recursive upload of folders
MANAGE_BUCKET_UPLOAD_AREA_TEXT: 'Or: click to select file (folders are not supported)'
MANAGE_BUCKET_UPLOAD_AREA_BTN_LOADING: Loading files
MANAGE_BUCKET_UPLOAD_AREA_BTN: Upload
MANAGE_BUCKET_UPLOAD_AREA_CLEAR: Clear
MANAGE_BUCKET_UPLOAD_AREA_STATUS_UPLOADING: Uploading
MANAGE_BUCKET_UPLOAD_AREA_COPY_TASK: Copy upload task information
MANAGE_BUCKET_UPLOAD_AREA_CLEAR_UPLOADED_TASK: Clear completed tasks
MANAGE_BUCKET_UPLOAD_AREA_CLEAR_ALL_TASK: Clear all tasks
MANAGE_BUCKET_UPLOAD_AREA_SUCCESS: Success
MANAGE_BUCKET_UPLOAD_AREA_FAILED: Failed
MANAGE_BUCKET_DOWNLOAD_PAGE_TITLE: Download page
MANAGE_BUCKET_DOWNLOADING: Downloading
MANAGE_BUCKET_DOWNLOAD_COPY_TASK: Copy download task information
MANAGE_BUCKET_DOWNLOAD_CLEAR_DOWNLOADED_TASK: Clear completed tasks
MANAGE_BUCKET_DOWNLOAD_CLEAR_ALL_TASK: Clear all tasks
MANAGE_BUCKET_DOWNLOAD_OPEN_FOLDER: Open download folder
MANAGE_BUCKET_DOWNLOAD_SUCCESS: Success
MANAGE_BUCKET_DOWNLOAD_FAILED: Failed
MANAGE_BUCKET_MARKDOWN_PREVIEW: Preview
MANAGE_BUCKET_PLAY: Play
MANAGE_BUCKET_RENAME_FILE: Rename file
MANAGE_BUCKET_RENAME_FILE_INPUT_A: String or JS regular expression for matching during replacement
MANAGE_BUCKET_RENAME_FILE_INPUT_A_TIPS: Directly enter the regular expression, no need to add /
MANAGE_BUCKET_RENAME_FILE_INPUT_A_PLACEHOLDER: 'For example: ^\d{4}-\d{2}-\d{2} '
MANAGE_BUCKET_RENAME_FILE_INPUT_B: String for replacement, placeholders from custom
MANAGE_BUCKET_RENAME_FILE_TABLE_IID: Auto-incrementing number
MANAGE_BUCKET_RENAME_FILE_EXT: Replace extension if it matches
MANAGE_BUCKET_RENAME_FILE_EXT_TIPS: Check this option if you want to modify the extension
MANAGE_BUCKET_RENAME_FILE_EXT_YES: 'Yes'
MANAGE_BUCKET_RENAME_FILE_EXT_NO: 'No'
MANAGE_BUCKET_RENAME_FILE_CANCEL: Cancel
MANAGE_BUCKET_RENAME_FILE_CONFIRM: Confirm
MANAGE_BUCKET_COPY_SUCCESS: Copy success
MANAGE_BUCKET_START_LOADING_MESSAGE: Start getting files
MANAGE_BUCKET_END_LOADING_MESSAGE_FAIL: Failed to get file content
MANAGE_BUCKET_LAST_PAGE_TITLE: Tip
MANAGE_BUCKET_LAST_PAGE_MSG: This is the last page
MANAGE_BUCKET_GET_LIST_FAIL_TITLE: Tip
MANAGE_BUCKET_GET_LIST_FAIL_MSG: Failed to get file list
MANAGE_BUCKET_GET_LIST_FAIL_MSG2: Getting file list in the background, please do not switch pages
MANAGE_BUCKET_GET_LIST_FAIL_MSG3: Loading file list, please try again later
MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_TITLE: Are you sure you want to download this folder?
MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_TIP: Tip
MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_CONFIRM: Confirm
MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_CANCEL: Cancel
MANAGE_BUCKET_DOWNLOAD_FOLDER_SUCCESS: Successfully obtained download list
MANAGE_BUCKET_DOWNLOAD_FOLDER_FAIL: Failed to obtain download list
MANAGE_BUCKET_DOWNLOAD_FOLDER_CANCEL: Canceled
MANAGE_BUCKET_CREATE_FOLDER_BOX_TITLE: Please enter the folder name
MANAGE_BUCKET_CREATE_FOLDER_BOX_TIP: Create folder
MANAGE_BUCKET_CREATE_FOLDER_BOX_CONFIRM: Confirm
MANAGE_BUCKET_CREATE_FOLDER_BOX_CANCEL: Cancel
MANAGE_BUCKET_CREATE_FOLDER_ERROR_MSG: Folder name can only contain Chinese, English, numbers, underscores, and slashes
MANAGE_BUCKET_CREATE_FOLDER_SUCCESS: Successfully created, please refresh
MANAGE_BUCKET_CREATE_FOLDER_FAIL: Failed to create
MANAGE_BUCKET_UPLOAD_URL_ERROR_MSQ: Please enter a valid URL
MANAGE_BUCKET_UPLOAD_URL_NOT_TITLE: Tip
MANAGE_BUCKET_UPLOAD_URL_NOT_MSG: Starting background download, automatic upload after success
MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG: Please enter the matching string
MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG2: No matching files found
MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG3: No files need to be renamed
MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_A: Detected
MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_B: files are duplicated. Do you want to continue?
MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_C: Tip
MANAGE_BUCKET_BATCH_RENAME_REPEATED_CONFIRM: Confirm
MANAGE_BUCKET_BATCH_RENAME_REPEATED_CANCEL: Cancel
MANAGE_BUCKET_BATCH_RENAME_RESULT_MSG_A: Rename successful
MANAGE_BUCKET_BATCH_RENAME_RESULT_MSG_B: Failed
MANAGE_BUCKET_BATCH_RENAME_CANCEL: Canceled
MANAGE_BUCKET_BATCH_COPY_INFO_ERROR_MSG: Please select the file first
MANAGE_BUCKET_BATCH_COPY_INFO_MSG_A: Copied
MANAGE_BUCKET_BATCH_COPY_INFO_MSG_B: file(s) information
MANAGE_BUCKET_BATCH_COPY_URL_ERROR_MSG: Please select the file first
MANAGE_BUCKET_BATCH_COPY_URL_MSG_A: Copied
MANAGE_BUCKET_BATCH_COPY_URL_MSG_B: file(s) link
MANAGE_BUCKET_CANCEL_LOADING_TITLE: Stop getting file list?
MANAGE_BUCKET_CANCEL_LOADING_MSG: Tip
MANAGE_BUCKET_CANCEL_LOADING_CONFIRM: Confirm
MANAGE_BUCKET_CANCEL_LOADING_CANCEL: Cancel
MANAGE_BUCKET_CANCEL_LOADING_SUCCESS: File list retrieval has been stopped
MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_TITLE: Stop downloading file retrieval?
MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_MSG: Prompt
MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_CONFIRM: Confirm
MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_CANCEL: Cancel
MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_SUCCESS: Download file retrieval has been stopped
MANAGE_BUCKET_GET_FILE_BS_NOT_TITLE: Prompt
MANAGE_BUCKET_GET_FILE_BS_NOT_MSG: Successfully retrieved file list
MANAGE_BUCKET_GET_FILE_BS_NOT_MSG2: Some files failed to retrieve
MANAGE_BUCKET_BATCH_DELETE_CONFIRM_TITLE_A: Permanently delete
MANAGE_BUCKET_BATCH_DELETE_CONFIRM_TITLE_B: files, continue?
MANAGE_BUCKET_BATCH_DELETE_CONFIRM_MSG: Prompt
MANAGE_BUCKET_BATCH_DELETE_CONFIRM_CONFIRM: Confirm
MANAGE_BUCKET_BATCH_DELETE_CONFIRM_CANCEL: Cancel
MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_TITLE: Prompt
MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_MSG: Deletion failed
MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_MSG2: Deletion successful
MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_MSG3: Failed
MANAGE_BUCKET_BATCH_DELETE_CANCEL: Deletion has been cancelled
MANAGE_BUCKET_DELETE_CONFIRM_TITLE: Permanently delete
MANAGE_BUCKET_DELETE_CONFIRM_TITLE_FOLDER: folder
MANAGE_BUCKET_DELETE_CONFIRM_TITLE_FOLDER_A: and all files in this directory
MANAGE_BUCKET_DELETE_CONFIRM_TITLE_FILE: file
MANAGE_BUCKET_DELETE_CONFIRM_TITLE_C: Continue?
MANAGE_BUCKET_DELETE_CONFIRM_MSG: Prompt
MANAGE_BUCKET_DELETE_CONFIRM_CONFIRM: Confirm
MANAGE_BUCKET_DELETE_CONFIRM_CANCEL: Cancel
MANAGE_BUCKET_DELETE_ERROR_MSG_TITLE: Prompt
MANAGE_BUCKET_DELETE_ERROR_MSG_MSG: Deleting a folder may take some time, please be patient
MANAGE_BUCKET_DELETE_SUCCESS: Deletion successful
MANAGE_BUCKET_DELETE_FAIL: Deletion failed
MANAGE_BUCKET_DELETE_CANCEL: Deletion has been cancelled
MANAGE_BUCKET_RENAME_INFO_MSG: The new file name is the same as the original file name, no need to rename
MANAGE_BUCKET_RENAME_SUCCESS: Rename successful
MANAGE_BUCKET_RENAME_ERROR_MSG: Rename failed
MANAGE_BUCKET_DOWNLOAD_COLUMN_FILENAME: File name
MANAGE_BUCKET_DOWNLOAD_COLUMN_FINISHTIME: Completion time
MANAGE_BUCKET_DOWNLOAD_COLUMN_STATUS: Status
MANAGE_BUCKET_DOWNLOAD_COLUMN_STATUS_SUCCESS: Success
MANAGE_BUCKET_DOWNLOAD_COLUMN_STATUS_FAIL: Failed
MANAGE_BUCKET_UPLOAD_COLUMN_FILENAME: File name
MANAGE_BUCKET_UPLOAD_COLUMN_TARGETFILEPATH: Upload path
MANAGE_BUCKET_UPLOAD_COLUMN_FINISHTIME: Completion time
MANAGE_BUCKET_UPLOAD_COLUMN_STATUS: Status
MANAGE_BUCKET_UPLOAD_COLUMN_STATUS_SUCCESS: Success
MANAGE_BUCKET_UPLOAD_COLUMN_STATUS_FAIL: Failed
MANAGE_BUCKET_DOWNLOADING_COLUMN_FILENAME: File name
MANAGE_BUCKET_DOWNLOADING_COLUMN_PROGRESS: Progress
MANAGE_BUCKET_UPLOADING_COLUMN_FILENAME: File name
MANAGE_BUCKET_UPLOADING_COLUMN_PROGRESS: Progress
MANAGE_BUCKET_UPLOADED_COLUMN_FILENAME: File name
MANAGE_BUCKET_UPLOADED_COLUMN_FILESIZE: Size
MANAGE_BUCKET_UPLOADED_COLUMN_FILENUM: Number of files
MANAGE_BUCKET_FILE_COLUMN_FILENAME: FileName
MANAGE_BUCKET_FILE_COLUMN_COPY_URL: Copy link
MANAGE_BUCKET_FILE_COLUMN_INFO: File Info
MANAGE_BUCKET_FILE_COLUMN_FILESIZE: Size
MANAGE_BUCKET_FILE_COLUMN_TIME: Time
MANAGE_NEW_BUCKET_TCYUN_NAME: Tencent Cloud
MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_DESC: Bucket Name
MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_PLACEHOLDER: Please enter the Bucket name
MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_A: Bucket name can't be empty
MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_B: Bucket name length cannot exceed 23 characters
MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_C: Bucket name can only contain lowercase letters, numbers, and hyphens, and cannot begin or end with a hyphen
MANAGE_NEW_BUCKET_TCYUN_REGION: Region
MANAGE_NEW_BUCKET_TCYUN_ACL_DESC: Access Control
MANAGE_NEW_BUCKET_TCYUN_ACL_PUBLIC_RW: Public Read and Write
MANAGE_NEW_BUCKET_TCYUN_ACL_PUBLIC_R: Public Read
MANAGE_NEW_BUCKET_TCYUN_ACL_PRIVATE: Private
MANAGE_NEW_BUCKET_ALIYUN_NAME: Alibaba Cloud
MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_DESC: Bucket Name
MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_PLACEHOLDER: Please enter the Bucket name
MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_A: Bucket name can't be empty
MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_B: Bucket name length cannot exceed 63 characters
MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_C: Bucket name can only contain lowercase letters, numbers, and hyphens, and cannot begin or end with a hyphen
MANAGE_NEW_BUCKET_ALIYUN_REGION: Region
MANAGE_NEW_BUCKET_ALIYUN_ACL_DESC: Access Control
MANAGE_NEW_BUCKET_ALIYUN_ACL_PUBLIC_RW: Public Read and Write
MANAGE_NEW_BUCKET_ALIYUN_ACL_PUBLIC_R: Public Read
MANAGE_NEW_BUCKET_ALIYUN_ACL_PRIVATE: Private
MANAGE_NEW_BUCKET_QINIU_NAME: Qiniu Cloud
MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_DESC: Bucket Name
MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_PLACEHOLDER: Please enter the Bucket name
MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_A: Bucket name can't be empty
MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_B: Bucket name length cannot exceed 63 characters
MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_C: Bucket names can only contain lowercase letters, numbers, and hyphens, and cannot start or end with a hyphen.
MANAGE_NEW_BUCKET_QINIU_REGION: Region
MANAGE_NEW_BUCKET_QINIU_ACL_DESC: Public Access
MANAGE_NEW_BUCKET_S3PLIST_NAME: S3-Compatible
MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_DESC: Bucket Name
MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_PLACEHOLDER: Please enter the Bucket name
MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_RULE_MSG_A: Bucket name can't be empty
MANAGE_NEW_BUCKET_S3PLIST_REGION: Region
MANAGE_NEW_BUCKET_S3PLIST_ACL_DESC: Access Control
MANAGE_NEW_BUCKET_S3PLIST_ACL_PUBLIC_RW: Public Read and Write
MANAGE_NEW_BUCKET_S3PLIST_ACL_PUBLIC_R: Public Read
MANAGE_NEW_BUCKET_S3PLIST_ACL_PRIVATE: Private
MANAGE_NEW_BUCKET_S3PLIST_ACL_AUTHENTICATED_READ: Authenticated Read
PLUGIN_INSTALL_FAILED: Plugin install failed
PLUGIN_UNINSTALL_FAILED: Plugin uninstall failed
PLUGIN_UPDATE_SUCCEED: Plugin update succeed
PLUGIN_UPDATE_FAILED: Plugin update failed
PLUGIN_IMPORT_SUCCEED: Plugin import succeed
PLUGIN_IMPORT_FAILED: Plugin import failed

View File

@@ -8,13 +8,10 @@ RELOAD_APP: 重启应用
UPLOAD_SUCCEED: 上传成功
UPLOAD_FAILED: 上传失败
UPLOAD_PROGRESS: 上传进度
OPERATION_SUCCEED: 操作成功
OPERATION_FAILED: 操作失败
UPLOADING: 正在上传
QUICK_UPLOAD: 快捷上传
UPLOAD_BY_CLIPBOARD: 剪贴板图片上传
SHOW_PICBED_QRCODE: 生成图床配置二维码
PICBED_QRCODE: 图床配置二维码
ENABLE: 启用
DISABLE: 禁用
CONFIG_THING: 配置${c}
@@ -28,18 +25,6 @@ START_WATCH_CLIPBOARD: 开始监听剪贴板
STOP_WATCH_CLIPBOARD: 停止监听剪贴板
OPEN_TOOLBOX: 打开修复工具箱
TOOLBOX: 工具箱
TOOLBOX_TITLE: 排查 PicList 运行时问题
TOOLBOX_SUB_TITLE: 立即扫描以下项目,修复使用问题
TOOLBOX_CHECK_CONFIG_FILE_BROKEN: 检查配置文件是否损坏
TOOLBOX_CHECK_GALLERY_FILE_BROKEN: 检查相册文件是否损坏
TOOLBOX_CHECK_PROBLEM_WITH_CLIPBOARD_PIC_UPLOAD: 检查剪贴板图片上传是否存在问题
TOOLBOX_CHECK_PROBLEM_WITH_PROXY: 检查代理设置是否正常
TOOLBOX_FIX_DONE_NEED_RELOAD: 修复完成,需要重启生效,是否重启
TOOLBOX_CANT_AUTO_FIX: 无法自动修复,请自行修复以下问题
TOOLBOX_START_SCAN: 开始扫描
TOOLBOX_RE_SCAN: 重新扫描
TOOLBOX_START_FIX: 开始修复
TOOLBOX_SUCCESS_TIPS: 恭喜你,没有检查出问题
TOOLBOX_CHECK_CONFIG_FILE_PATH_TIPS: 配置文件路径是:${path}
TOOLBOX_CHECK_CONFIG_FILE_BROKEN_TIPS: 配置文件已损坏
TOOLBOX_CHECK_GALLERY_FILE_PATH_TIPS: 相册文件路径是:${path}
@@ -51,865 +36,12 @@ TOOLBOX_CHECK_PROXY_PROXY_IS_NOT_WORKING: 代理设置不可用
TOOLBOX_CHECK_CLIPBOARD_FILE_PATH_TIPS: 剪贴板图片临时文件夹路径是:${path}
TOOLBOX_CHECK_CLIPBOARD_FILE_PATH_NOT_EXIST_TIPS: 剪贴板图片临时文件夹不存在:${path}
TOOLBOX_CHECK_CLIPBOARD_FILE_PATH_ERROR_TIPS: 请自行创建文件夹:${path}
MANUAL_PAGE_OPEN_TIP: 请选择打开方式
MANUAL_PAGE_OPEN_TIP_TITLE: Tips
MANUAL_PAGE_OPEN_BY_BROWSER: 浏览器
MANUAL_PAGE_OPEN_BY_BUILD_IN: 内置窗口
MANUAL_PAGE_OPEN_SETTING_TIP: 选择手册打开方式
UPLOAD_AREA: 上传
UPLOAD_VIEW_HINT: 点击打开图床设置
MANAGE_PAGE: 管理
GALLERY: 相册
REFRESH: 刷新
MANUAL: 手册
PICBEDS_SETTINGS: 图床
PICLIST_SETTINGS: 设置
PLUGIN_SETTINGS: 插件
CHOOSE_PICBED: 选择图床
COPY_PICBED_CONFIG: 复制图床配置
COPY_PICBED_CONFIG_SUCCEED: 复制图床配置成功
INPUT: 输入框
CANCEL: 取消
CONFIRM: 确定
RESET_PICBED_CONFIG: 重置
CHOOSE_SHOWED_PICBED: 请选择显示的图床
CHOOSE_PASTE_FORMAT: 请选择粘贴的格式
COPY: 复制
DELETE: 删除
SELECT_ALL: 全选
CHANGE_IMAGE_URL: 修改图片URL
CHANGE_IMAGE_URL_SUCCEED: 修改图片URL成功
COPY_LINK_SUCCEED: 复制链接成功
BATCH_COPY_LINK_SUCCEED: 批量复制链接成功
FILE_RENAME: 文件改名
OPEN_FILE_PATH: 打开文件路径
GALLERY_SYNC_DELETE: 删除云端
GALLERY_SYNC_DELETE_NOTICE_TITLE: 通知
GALLERY_SYNC_DELETE_NOTICE_SUCCEED: 云端删除成功
GALLERY_SYNC_DELETE_NOTICE_FAILED: 云端删除失败
GALLERY_CHANGE_URL: 修改
GALLERY_SEARCH_FILENAME: 搜索文件名
GALLERY_SEARCH_URL: 搜索URL
GALLERY_MATCHED: ' 匹配到: '
UPLOAD_PAGE_COPY_UPLOAD_API: 复制上传API
UPLOAD_PAGE_IMAGE_PROCESS_NAME: 图片处理
UPLOAD_PAGE_IMAGE_PROCESS_DIALOG_TITLE: 图片处理设置
UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST: 跳过处理的文件扩展名列表
UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST_TIPS: '请填写需要跳过处理的文件扩展名列表, 以英文逗号分隔, 如: jpg,png,gif'
UPLOAD_PAGE_IMAGE_PROCESS_ISADDWM: 是否添加水印
UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE: 水印类型
UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE_TEXT: 文字
UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE_IMAGE: 图片
UPLOAD_PAGE_IMAGE_PROCESS_ISFULLSCREEN_WM: 是否全屏水印
UPLOAD_PAGE_IMAGE_PROCESS_WMDEGREE: 水印角度
UPLOAD_PAGE_IMAGE_PROCESS_WMTEXT: 水印文字
UPLOAD_PAGE_IMAGE_PROCESS_WMTEXT_FONT_PATH: 水印字体路径(第一次需下载字体文件)
UPLOAD_PAGE_IMAGE_PROCESS_WMRATIO: 水印占原图比例
UPLOAD_PAGE_IMAGE_PROCESS_WMCOLOR: 水印颜色,请从取色器中选择
UPLOAD_PAGE_IMAGE_PROCESS_WMPATH: 水印图片路径(留空使用默认图片)
UPLOAD_PAGE_IMAGE_PROCESS_WMPOSITION: 水印位置
UPLOAD_PAGE_IMAGE_PROCESS_ISREMOVEEXIF: 是否移除EXIF信息
UPLOAD_PAGE_IMAGE_PROCESS_QUALITY: 压缩质量(1-100)
UPLOAD_PAGE_IMAGE_PROCESS_ISCONVERT: 是否转换格式
UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT: 转换目的格式
UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT_SPECIFIC: '精细化转换格式, 请输入JSON格式: {"png": "jpg"}'
UPLOAD_PAGE_IMAGE_PROCESS_ISFLIP: 是否进行垂直翻转
UPLOAD_PAGE_IMAGE_PROCESS_ISFLOP: 是否进行水平翻转
UPLOAD_PAGE_IMAGE_PROCESS_ISRESIZE: 是否按固定尺寸调整图片
UPLOAD_PAGE_IMAGE_PROCESS_RESIZEWIDTH: 调整尺寸宽度(设为0则按高度等比缩放)
UPLOAD_PAGE_IMAGE_PROCESS_RESIZEHEIGHT: 调整尺寸高度(设为0则按宽度等比缩放)
UPLOAD_PAGE_IMAGE_PROCESS_SKIPRESIZEOfSMALLIMG_HEIGHT: 当图片高度小于设定高度时跳过缩放
UPLOAD_PAGE_IMAGE_PROCESS_SKIPRESIZEOfSMALLIMG_WIDTH: 当图片宽度小于设定宽度时跳过缩放
UPLOAD_PAGE_IMAGE_PROCESS_ISRESIZEBYPERCENT: 是否按比例调整尺寸,优先级更高
UPLOAD_PAGE_IMAGE_PROCESS_RESIZEPERCENT: 调整尺寸比例, 输入50表示50%
UPLOAD_PAGE_IMAGE_PROCESS_ISROTATE: 是否旋转
UPLOAD_PAGE_IMAGE_PROCESS_ROTATEDEGREE: 旋转角度
UPLOAD_PAGE_IMAGE_PROCESS_CONFIRM: 保存
UPLOAD_PAGE_IMAGE_PROCESS_CANCEL: 取消
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP: 上
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM: 下
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_LEFT: 左
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_RIGHT: 右
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP_LEFT: 左上
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP_RIGHT: 右上
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM_LEFT: 左下
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM_RIGHT: 右下
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_CENTER: 中
UPLOAD_SHORT_URL: 短链接
UPLOAD_NORMAL_URL: 长链接
SETTINGS: 设置
SETTINGS_OPEN_CONFIG_FILE: 打开配置文件
SETTINGS_MIGRATE_FROM_PICGO: 从PicGo迁移
SETTINGS_MIGRATE_FROM_PICGO_TITLE: 通知
SETTINGS_MIGRATE_FROM_PICGO_CONTENT: 即将导入PicGo的配置文件和相册, 这将覆盖当前的配置文件和相册, 是否继续?
SETTINGS_MIGRATE_FROM_PICGO_SUCCESS: 导入成功, 请重启PicList生效
SETTINGS_MIGRATE_FROM_PICGO_FAILED: 导入失败
SETTINGS_START_MODE: 启动模式
SETTINGS_START_MODE_MINI: mini窗口
SETTINGS_START_MODE_MAIN: 主窗口
SETTINGS_START_MODE_NO_TRAY: 隐藏托盘
SETTINGS_START_MODE_QUIET: 静默启动
SETTINGS_CLICK_TO_OPEN: 点击打开
SETTINGS_SET_LOG_FILE: 设置日志文件
SETTINGS_CLICK_TO_SET: 点击设置
SETTINGS_CLICK_TO_CHECK: 点击检查
SETTINGS_SET_SHORTCUT: 设置快捷键
SETTINGS_CUSTOM_LINK_FORMAT: 自定义链接格式
SETTINGS_SET_PROXY_AND_MIRROR: 设置代理和镜像地址
SETTINGS_SET_SERVER: 设置Server
SETTINGS_CHECK_UPDATE: 检查更新
SETTINGS_OPEN_UPDATE_HELPER: 打开更新助手
SETTINGS_OPEN: 开
SETTINGS_CLOSE: 关
SETTINGS_CLOSE_MINI_WINDOW_SYNC: 打开主窗口时关闭mini窗口
SETTINGS_CLOSE_MAIN_WINDOW_SYNC: 打开mini窗口时关闭主窗口
SETTINGS_LAUNCH_ON_BOOT: 开机自启
SETTINGS_RENAME_BEFORE_UPLOAD: 手动重命名
SETTINGS_TIMESTAMP_RENAME: 时间戳重命名
SETTINGS_ADVANCED_RENAME: 高级重命名
SETTINGS_ADVANCED_RENAME_ENABLE: 开启高级重命名
SETTINGS_ADVANCED_RENAME_FORMAT: 重命名格式
SETTINGS_ENABLE_SECOND_PICBED: 启用第二图床同步上传
SETTINGS_SET_SECOND_PICBED: 设置第二图床
SETTINGS_OPEN_UPLOAD_TIPS: 开启上传进度提示
SETTINGS_OPEN_UPLOAD_RESULT_TIPS: 开启上传结果提示
SETTINGS_MINI_WINDOW_ON_TOP: Mini窗口置顶
SETTINGS_AUTO_COPY_URL_AFTER_UPLOAD: 上传后自动复制URL
SETTINGS_TIPS_PLACEHOLDER_URL: 用占位符 $url 来表示url的位置
SETTINGS_TIPS_PLACEHOLDER_FILENAME: 用占位符 $fileName 来表示文件名的位置
SETTINGS_TIPS_PLACEHOLDER_EXTNAME: 用占位符 $extName 来表示文件格式的位置
SETTINGS_TIPS_SUCH_AS: 如
SETTINGS_UPLOAD_PROXY: 上传代理
SETTINGS_PLUGIN_INSTALL_PROXY: 插件安装代理
SETTINGS_PLUGIN_INSTALL_MIRROR: 插件安装镜像
SETTINGS_CURRENT_VERSION: 当前版本
SETTINGS_NEWEST_VERSION: 最新版本
SETTINGS_GETING: 正在获取中
SETTINGS_TIPS_HAS_NEW_VERSION: PicList更新啦请点击确定重启触发更新
SETTINGS_LOG_FILE_PATH: 日志文件路径
SETTINGS_CONFIG_FILE_PATH: 配置文件路径
SETTINGS_LOG_FILE: 常规日志文件
SETTINGS_GUI_LOG_FILE: GUI日志文件
SETTINGS_MANAGE_LOG_FILE: 管理日志文件
SETTINGS_LOG_LEVEL: 日志记录等级
SETTINGS_LOG_FILE_SIZE: 日志文件大小
SETTINGS_SET_PICGO_SERVER: 设置PicGo-Server
SETTINGS_TIPS_SERVER_NOTICE: 如果你不知道Server的作用请阅读文档或者不用修改配置。
SETTINGS_ENABLE_SERVER: 是否开启Server
SETTINGS_SET_SERVER_HOST: 设置监听地址
SETTINGS_SET_SERVER_PORT: 设置监听端口
SETTINGS_SET_SERVER_KEY: 设置鉴权密钥
SETTINGS_SET_WEB_SERVER: 设置Web服务
SETTINGS_TIPS_WEB_SERVER_NOTICE: 如果你不知道Web服务的作用请阅读文档或者不用修改配置。
SETTINGS_SET_ENABLE_WEB_SERVER: 是否开启Web服务
SETTINGS_SET_WEB_SERVER_HOST: 设置Web服务监听地址
SETTINGS_SET_WEB_SERVER_PORT: 设置Web服务监听端口
SETTINGS_SET_WEB_SERVER_PATH: 设置Web服务路径
SETTINGS_TIP_PLACEHOLDER_WEB_HOST: 推荐默认地址:127.0.0.1
SETTINGS_TIP_PLACEHOLDER_WEB_PORT: 推荐默认端口:37777
SETTINGS_TIP_PLACEHOLDER_HOST: 推荐默认地址:127.0.0.1
SETTINGS_TIP_PLACEHOLDER_PORT: 推荐默认端口:36677
SETTINGS_TIP_PLACEHOLDER_KEY: 用于接口鉴权, 通过url参数添加'?key=xxx'
SETTINGS_SET_SERVER_AES_KEY: 设置接口数据加密密钥
SETTINGS_LOG_LEVEL_ALL: 全部-All
SETTINGS_LOG_LEVEL_SUCCESS: 成功-Success
SETTINGS_LOG_LEVEL_ERROR: 错误-Error
SETTINGS_LOG_LEVEL_INFO: 普通-Info
SETTINGS_LOG_LEVEL_WARN: 提醒-Warn
SETTINGS_LOG_LEVEL_NONE: 不记录日志-None
SETTINGS_RESULT: 设置结果
SETTINGS_DEFAULT_PICBED: 设置默认图床
SETTINGS_SET_DEFAULT_PICBED: 设为默认图床
SETTINGS_NOT_CONFIG_OPTIONS: 暂无配置项
SETTINGS_USE_BUILTIN_CLIPBOARD_UPLOAD: 使用内置剪贴板上传
SETTINGS_CHOOSE_LANGUAGE: 选择语言
BUILTIN_CLIPBOARD_TIPS: 使用内置剪贴板函数而不是调用脚本获取剪贴板图片
UPLOADER_CONFIG_NAME: 图床配置名
UPLOADER_CONFIG_PLACEHOLDER: 请输入配置名称
SELECTED_SETTING_HINT: 已选中
SETTINGS_MAIN_WINDOW_SIZE: 默认主窗口大小(需重启)
SETTINGS_MAIN_WINDOW_SIZE_WIDTH: 默认主窗口宽度
SETTINGS_MAIN_WINDOW_WIDTH_HINT: '默认宽度: 1200'
SETTINGS_MAIN_WINDOW_SIZE_HEIGHT: 默认主窗口高度
SETTINGS_MAIN_WINDOW_HEIGHT_HINT: '默认高度: 800'
SETTINGS_RAW_PICGO_SIZE: 原PicGo大小
SETTINGS_CUSTOM_MINI_ICON_PATH: 自定义Mini窗口图标路径
SETTINGS_CUSTOM_MINI_ICON: 是否自定义Mini窗口图标
SETTINGS_COMPRESS_AND_WATERMARK: 设置图片水印和压缩-格式转换等参数
SETTINGS_SYNC_DELETE_CLOUD: 相册内删除时同步删除云端文件
SETTINGS_ISHIDEDOCK: 是否隐藏dock图标
SETTINGS_ISHIDEDOCK_TIPS: 不支持同时隐藏dock和托盘
SETTINGS_ENCODE_OUTPUT_URL: 输出(复制) URL 时进行转义
SETTINGS_WATCH_CLIPBOARD: 软件启动时自动监听剪贴板上传
SETTINGS_SHORT_URL: 使用短链接
SETTINGS_SHORT_URL_SERVER: 短链接服务
SETTINGS_SHORT_URL_C1N_TOKEN: C1N Token
SETTINGS_SHORT_URL_YOURLS_DOMAIN: YOURLS域名
SETTINGS_SHORT_URL_YOURLS_SIGNATURE: YOURLS signature
SETTINGS_SHORT_URL_CF_WORKER_HOST: Cloudflare Worker域名
SETTINGS_SHORT_SINK_DOMAIN: sink域名
SETTINGS_SHORT_SINK_TOKEN: sink token
SETTINGS_DELETE_LOCAL_FILE_AFTER_UPLOAD: 上传后删除本地文件
SETTINGS_SYNC_CONFIG: 设置配置同步
SETTINGS_SYNC_CONFIG_TITLE: 同步设置
SETTINGS_SYNC_CONFIG_NOTE: 同步的文件为配置文件
SETTINGS_SYNC_CONFIG_SELECT_TYPE: 选择同步方式
SETTINGS_SYNC_CONFIG_SELECT_FILE: 选择同步文件
SETTINGS_SYNC_CONFIG_SELECT_CONFIG: 仅配置文件
SETTINGS_SYNC_CONFIG_SELECT_GALLERY: 仅相册文件
SETTINGS_SYNC_CONFIG_SELECT_BOTH: 配置文件和相册文件
SETTINGS_SYNC_CONFIG_GITEA_HOST: Gitea 网址
SETTINGS_SYNC_CONFIG_GITHUB_USERNAME: GitHub用户名
SETTINGS_SYNC_CONFIG_GITEA_USERNAME: Gitea用户名
SETTINGS_SYNC_CONFIG_GITEE_USERNAME: Gitee用户名
SETTINGS_SYNC_CONFIG_GITHUB_REPO: 仓库(私有)
SETTINGS_SYNC_CONFIG_GITEA_REPO: 仓库
SETTINGS_SYNC_CONFIG_GITEE_REPO: 仓库路径名
SETTINGS_SYNC_CONFIG_GITHUB_BRANCH: GitHub分支
SETTINGS_SYNC_CONFIG_GITEA_BRANCH: Gitea分支
SETTINGS_SYNC_CONFIG_GITEE_BRANCH: Gitee分支
SETTINGS_SYNC_CONFIG_GITHUB_TOKEN: GitHub Token
SETTINGS_SYNC_CONFIG_GITEA_TOKEN: Gitea Token
SETTINGS_SYNC_CONFIG_GITEE_TOKEN: Gitee Token
SETTINGS_SYNC_CONFIG_PROXY: 代理
SETTINGS_SYNC_CONFIG_GITHUB_USERNAME_PLACEHOLDER: 请输入GitHub用户名
SETTINGS_SYNC_CONFIG_GITEA_USERNAME_PLACEHOLDER: 请输入Gitea用户名
SETTINGS_SYNC_CONFIG_GITEE_USERNAME_PLACEHOLDER: 请输入Gitee用户名
SETTINGS_SYNC_CONFIG_GITHUB_REPO_PLACEHOLDER: 请输入GitHub仓库名
SETTINGS_SYNC_CONFIG_GITEA_REPO_PLACEHOLDER: 请输入Gitea仓库名
SETTINGS_SYNC_CONFIG_GITEE_REPO_PLACEHOLDER: 请输入Gitee仓库名
SETTINGS_SYNC_CONFIG_GITHUB_BRANCH_PLACEHOLDER: 请输入GitHub分支名
SETTINGS_SYNC_CONFIG_GITEA_BRANCH_PLACEHOLDER: 请输入Gitea分支名
SETTINGS_SYNC_CONFIG_GITEE_BRANCH_PLACEHOLDER: 请输入Gitee分支名
SETTINGS_SYNC_CONFIG_GITHUB_TOKEN_PLACEHOLDER: 请输入GitHub Token
SETTINGS_SYNC_CONFIG_GITEA_TOKEN_PLACEHOLDER: 请输入Gitea Token
SETTINGS_SYNC_CONFIG_GITEE_TOKEN_PLACEHOLDER: 请输入Gitee Token
SETTINGS_SYNC_CONFIG_PROXY_PLACEHOLDER: 请输入代理地址
SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT: WebDAV端点
SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT_PLACEHOLDER: 请输入WebDAV端点URL
SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME: 用户名
SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME_PLACEHOLDER: 请输入WebDAV用户名
SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD: 密码
SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD_PLACEHOLDER: 请输入WebDAV密码
SETTINGS_SYNC_CONFIG_WEBDAV_AUTH_TYPE: 认证类型
SETTINGS_SYNC_CONFIG_WEBDAV_SSL_ENABLED: 启用SSL/HTTPS
SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH: 保存路径
SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH_PLACEHOLDER: 请选择同步文件的保存路径
SETTINGS_UP_DOWN_DESC: 上传下载配置文件
SETTINGS_SYNC_UPLOAD: 上传
SETTINGS_SYNC_DOWNLOAD: 下载
SETTINGS_SYNC_UPLOAD_ALL: 上传所有
SETTINGS_SYNC_DOWNLOAD_ALL: 下载所有
SETTINGS_SYNC_UPLOAD_SUCCESS: 上传成功
SETTINGS_SYNC_UPLOAD_FAILED: 上传失败
SETTINGS_SYNC_DOWNLOAD_SUCCESS: 下载成功
SETTINGS_SYNC_DOWNLOAD_FAILED: 下载失败
SETTINGS_SYNC_COMMON_CONFIG: 通用配置
SETTINGS_SYNC_MANAGE_CONFIG: 管理配置
SETTINGS_AUTO_IMPORT: 管理页面自动导入配置
SETTINGS_AUTO_IMPORT_SELECT_PICBED: 选择需要开启自动导入的图床
SETTINGS_TAB_SYSTEM: 系统设置
SETTINGS_TAB_SYNC_CONFIG: 同步与配置
SETTINGS_TAB_UPLOAD: 上传设置
SETTINGS_TAB_ADVANCED: 高级设置
SETTINGS_TAB_UPDATE: 更新
SHORTCUT_NAME: 快捷键名称
SHORTCUT_BIND: 快捷键绑定
SHORTCUT_STATUS: 状态
SHORTCUT_ENABLED: 已启用
SHORTCUT_DISABLED: 已禁用
SHORTCUT_SOURCE: 来源
SHORTCUT_HANDLE: 操作
SHORTCUT_ENABLE: 启用
SHORTCUT_DISABLE: 禁用
SHORTCUT_EDIT: 编辑
SHORTCUT_CHANGE_UPLOAD: 修改上传快捷键
WAIT_TO_UPLOAD: 等待上传
ALREADY_UPLOAD: 已上传
DRAG_FILE_TO_HERE: 将文件拖拽到此处,或
CLICK_TO_UPLOAD: 点击上传
LINK_FORMAT: 链接格式
CLIPBOARD_PICTURE: 剪贴板
TIPS_DRAG_VALID_PICTURE_OR_URL: 请拖入合法的图片文件或者图片URL地址
TIPS_INPUT_URL: 请输入URL
TIPS_HTTP_PREFIX: http://或者https://开头
TIPS_INPUT_VALID_URL: 请输入合法的URL
PLUGIN_SEARCH_PLACEHOLDER: 搜索npm上的PicGo插件或者点击上方按钮查看优秀插件列表
PLUGIN_INSTALL: 安装
PLUGIN_INSTALLING: 安装中
PLUGIN_INSTALLED: 已安装
PLUGIN_DOING_SOMETHING: 进行中
PLUGIN_LIST: 插件列表
PLUGIN_IMPORT_LOCAL: 导入本地插件
PLUGIN_UPDATE_ALL: 更新全部插件
TIPS_REMOVE_LINK: 此操作将把该图片移出相册, 是否继续?
TIPS_WILL_REMOVE_CHOOSED_IMAGES: 将在相册中移除刚才选中的 ${m} 张图片,是否继续?
TIPS_MUST_CONTAINS_URL: 必须含有$url 或 $fileName 或 $extName
TIPS_NETWORK_ERROR: 网络错误暂时无法获取
TIPS_NEED_RELOAD: 需要重启生效
TIPS_PLEASE_CHOOSE_LOG_LEVEL: 请选择日志记录等级
TIPS_SET_SUCCEED: 设置成功
TIPS_RESET_SUCCEED: 重置成功
TIPS_PLUGIN_NOT_GUI_IMPLEMENT: 该插件未对可视化界面进行优化, 是否继续安装?
TIPS_GET_PLUGIN_LIST_FAILED: 获取插件列表失败
MANAGE_SETTING_TITLE: 管理页面设置
MANAGE_SETTING_ISAUTOREFRESH_TITLE: 每次进入新目录时,是否自动刷新文件列表
MANAGE_SETTING_ISAUTOREFRESH_TIPS: 仅对不分页模式有效,默认在加载过一次后自动缓存到数据库来加快下次加载速度
MANAGE_SETTING_CLEAR_CACHE_TITLE: '清空文件列表缓存数据库 已占用:'
MANAGE_SETTING_CLEAR_CACHE_FREE_TITLE: '剩余可用:'
MANAGE_SETTING_CLEAR_CACHE_TIPS: 清空后下次进入新目录时将会重新加载文件列表
MANAGE_SETTING_CLEAR_CACHE_PROMPT: 确定要清空文件列表缓存数据库吗?
MANAGE_SETTING_CLEAR_CACHE_BUTTON: 清空
MANAGE_SETTING_ISSHOWTHUMBNAIL_TITLE: 图片显示为原图而非默认文件格式图标(需要存储桶可公开访问)
MANAGE_SETTING_ISUSEPRESIGNEDURL_TITLE: 使用预签名URL预览图片
MANAGE_SETTING_ISSHOWLIST_TITLE: 文件列表默认显示方式
MANAGE_SETTING_ISSHOWLIST_ON: 列表
MANAGE_SETTING_ISSHOWLIST_OFF: 卡片
MANAGE_SETTING_ISFORCECUSTOMURLHTTPS_TITLE: 为自定义域名开启强制HTTPS
MANAGE_SETTING_ISFORCECUSTOMURLHTTPS_TIPS: 开启后, 复制链接等操作将会自动为自定义域名添加https前缀
MANAGE_SETTING_ISUPLOADKEEPDIRSTRUCTURE_TITLE: 上传时保留目录结构
MANAGE_SETTING_ISUPLOADKEEPDIRSTRUCTURE_TIPS: 关闭后会将所有文件展开到指定目录下
MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_A: 下载
MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_B: 文件
MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_C: 时保留目录结构
MANAGE_SETTING_ISDOWNLOADFOLDERKEEPDIRSTRUCTURE_TITLE_D: 文件夹
MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TIPS: 开启后,下载时会保留原始目录结构
MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_TITLE: 最大同时下载文件数(1-9999)
MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_TIPS: 腾讯云由于后端实现不同,该设置不生效
MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_INPUT_TIPS: 请输入最大同时下载文件数
MANAGE_SETTING_ISIGNORECASE_TITLE: 文件搜索时,是否忽略大小写
MANAGE_SETTING_ISIGNORECASE_TIPS: 开启后,搜索时会忽略大小写
MANAGE_SETTING_TIMESTAMPRENAME_TITLE: 上传文件时间戳重命名--(优先级最高)
MANAGE_SETTING_TIMESTAMPRENAME_TIPS: 开启后,上传文件时会自动重命名为时间戳
MANAGE_SETTING_RANDOMSTRINGRENAME_TITLE: 上传文件随机字符串重命名--(优先级中)
MANAGE_SETTING_RANDOMSTRINGRENAME_TIPS: 随机字符串长度为20
MANAGE_SETTING_CUSTOMRENAME_TITLE: 上传文件自定义重命名--(优先级最低)
MANAGE_SETTING_CUSTOMRENAME_TIPS: 请填写自定义重命名格式
MANAGE_SETTING_CUSTOM_PATTERN_TITLE: 自定义重命名格式,占位符请参考下表,可自由组合
MANAGE_SETTING_CUSTOM_PATTERN_TIPS: 请填写自定义重命名格式
MANAGE_SETTING_CUSTOM_PATTERN_TABLE_TITLE: 占位符
MANAGE_SETTING_CUSTOM_PATTERN_TABLE_TIPS: 描述
MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TITLE: 预签名URL过期时间(单位:秒)
MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TIPS: 请填写预签名URL过期时间
MANAGE_SETTING_CHOOSE_COPY_FORMAT_TITLE: 选择默认复制的链接格式
MANAGE_SETTING_CHOOSE_COPY_FORMAT_MARKDOWN: Markdown
MANAGE_SETTING_CHOOSE_COPY_FORMAT_MARKDOWN_WITH_LINK: Markdown(带链接)
MANAGE_SETTING_CHOOSE_COPY_FORMAT_RAWURL: 原始链接
MANAGE_SETTING_CHOOSE_COPY_FORMAT_HTML: HTML格式
MANAGE_SETTING_CHOOSE_COPY_FORMAT_BBCODE: BBCode格式
MANAGE_SETTING_CHOOSE_COPY_FORMAT_CUSTOM: 自定义格式
MANAGE_SETTING_CUSTOM_COPY_FORMAT_TITLE: 自定义链接格式($url为链接,$fileName为文件名)
MANAGE_SETTING_CUSTOM_COPY_FORMAT_TIPS: 请填写自定义链接格式
MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_TITLE: 选择下载目录
MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_TIPS: 系统默认下载目录
MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_BUTTON: 选择目录
MANAGE_SETTING_COPY_MESSAGE: 已复制
MANAGE_SETTING_CLEAR_CACHE_SUCCESS: 清除成功
MANAGE_SETTING_CLEAR_CACHE_FAILED: 清除失败
MANAGE_SETTING_ISENCODEURL_TITLE: 复制链接时进行URL编码
MANAGE_SETTING_ISENCODEURL_TIPS: 根据平台选择是否开启
MANAGE_NO_DATA: 暂无数据
MANAGE_MAIN_PAGE_NEW_BUCKET: 新建存储桶
MANAGE_MAIN_PAGE_BACK_TO_HOME: 返回首页
MANAGE_MAIN_PAGE_SWITCH_PICBED: 切换图床
MANAGE_MAIN_PAGE_SETTING: 设置
MANAGE_MAIN_PAGE_SUBMIT: 提交
MANAGE_MAIN_PAGE_TIPS: 提示
MANAGE_MAIN_PAGE_TIPS_SUCCESS: 创建成功
MANAGE_MAIN_PAGE_TIPS_FAILED: 创建失败
MANAGE_MAIN_PAGE_BUCKET: 存储桶
MANAGE_MAIN_PAGE_GALLERY: 相册
MANAGE_MAIN_PAGE_REPOSITORY: 仓库
MANAGE_CONSTANT_BASE_RULE: 请输入
MANAGE_CONSTANT_ITEMS_PAGE_RULE_MESSAGE_A: 请输入每页显示数量
MANAGE_CONSTANT_ITEMS_PAGE_RULE_MESSAGE_B: 每页显示数量必须为数字
MANAGE_CONSTANT_ITEMS_PAGE_RULE_MESSAGE_C: 每页显示数量必须在20-1000之间
MANAGE_CONSTANT_ALIAS_RULE_MESSAGE_A: 请输入别名, 该配置的唯一标识
MANAGE_CONSTANT_ALIAS_RULE_MESSAGE_B: 别名只能包含中文、英文、数字、下划线和中划线
MANAGE_CONSTANT_ALIAS_TOOLTIP: 别名只能包含中文、英文、数字、下划线和中划线
MANAGE_CONSTANT_ITEMS_PAGE_TOOLTIP: 每页显示数量必须在20-1000之间
MANAGE_CONSTANT_PAGING_TOOLTIP: 关闭分页时,目录列表将使用数据库缓存以优化性能
MANAGE_CONSTANT_BUCKET_NAME_TOOLTIP: 英文逗号分隔bucket1,bucket2,bucket3和起始目录顺序一一对应
MANAGE_CONSTANT_BASE_DIR_TOOLTIP: 英文逗号分隔,如:/dir1,/dir2,/dir3, 和存储桶顺序一一对应
MANAGE_CONSTANT_IS_AUTO_CUSTOM_URL_TOOLTIP: 开启时,将自动获取存储桶绑定的域名,关闭时可手动填写
MANAGE_CONSTANT_SMMS_ALIAS_DESC: 配置别名-必需
MANAGE_CONSTANT_SMMS_ALIAS_PLACEHOLDER: 该配置的唯一标识
MANAGE_CONSTANT_SMMS_TOKEN_DESC: Token-必需
MANAGE_CONSTANT_SMMS_TOKEN_PLACEHOLDER: 请填写Token
MANAGE_CONSTANT_SMMS_PAGING_DESC: 是否开启分页
MANAGE_CONSTANT_SMMS_EXPLAIN: 大陆地区请访问备用域名https://smms.app, 请勿大批量上传图片否则API接口会被限制
MANAGE_CONSTANT_SMMS_REFER_TEXT: '配置教程请参考: '
MANAGE_CONSTANT_QINIU_NAME: 七牛云
MANAGE_CONSTANT_QINIU_ALIAS_DESC: 配置别名-必需
MANAGE_CONSTANT_QINIU_ALIAS_PLACEHOLDER: 该配置的唯一标识
MANAGE_CONSTANT_QINIU_ACCESS_KEY_DESC: accessKey-必需
MANAGE_CONSTANT_QINIU_ACCESS_KEY_PLACEHOLDER: 请填写accessKey
MANAGE_CONSTANT_QINIU_SECRET_KEY_DESC: secretKey-必需
MANAGE_CONSTANT_QINIU_SECRET_KEY_PLACEHOLDER: 请填写secretKey
MANAGE_CONSTANT_QINIU_BUCKET_DESC: 空间名-可选
MANAGE_CONSTANT_QINIU_BUCKET_PLACEHOLDER: 英文逗号分隔例如bucket1,bucket2
MANAGE_CONSTANT_QINIU_BASE_DIR_DESC: 起始目录-可选
MANAGE_CONSTANT_QINIU_BASE_DIR_PLACEHOLDER: 英文逗号分隔,例如:/dir1,/dir2
MANAGE_CONSTANT_QINIU_IS_AUTO_CUSTOM_URL_DESC: 是否自动获取绑定域名
MANAGE_CONSTANT_QINIU_PAGING_DESC: 是否开启分页
MANAGE_CONSTANT_QINIU_ITEMS_PAGE_DESC: 每页显示数量
MANAGE_CONSTANT_QINIU_EXPLAIN: 空间名和起始目录配置时可通过英文逗号分隔设置,顺序必须一致,逗号间留空或缺失项使用默认值
MANAGE_CONSTANT_QINIU_REFER_TEXT: '配置教程请参考: '
MANAGE_CONSTANT_GITHUB_ALIAS_DESC: 配置别名-必需
MANAGE_CONSTANT_GITHUB_ALIAS_PLACEHOLDER: 该配置的唯一标识
MANAGE_CONSTANT_GITHUB_TOKEN_DESC: Token-必需
MANAGE_CONSTANT_GITHUB_TOKEN_PLACEHOLDER: 请填写Token
MANAGE_CONSTANT_GITHUB_TOKEN_TIPS: 请提供具有完整repo权限的token否则部分功能可能无法使用
MANAGE_CONSTANT_GITHUB_USER_DESC: 用户名-必需
MANAGE_CONSTANT_GITHUB_USER_PLACEHOLDER: 请填写用户名
MANAGE_CONSTANT_GITHUB_USER_RULE_MESSAGE: 用户名
MANAGE_CONSTANT_GITHUB_PROXY_DESC: 代理地址-可选
MANAGE_CONSTANT_GITHUB_PROXY_PLACEHOLDER: 例如http://127.0.0.1:1080
MANAGE_CONSTANT_GITHUB_PROXY_TIPS: 如果访问速度较慢,可以尝试配置代理
MANAGE_CONSTANT_GITHUB_PAGING_DESC: 是否开启分页
MANAGE_CONSTANT_GITHUB_CUSTOM_URL_DESC: CDN加速域名-可选
MANAGE_CONSTANT_GITHUB_CUSTOM_URL_PLACEHOLDER: 支持使用{username}、{repo}、{branch}和{path}作为替换占位符,用于适配不同仓库和分支
MANAGE_CONSTANT_GITHUB_CUSTOM_URL_TIPS: '例如: https://cdn.staticaly.com/gh/{username}/{repo}@{branch}/{path}'
MANAGE_CONSTANT_GITHUB_CUSTOM_URL_RULE_MESSAGE_A: 加速域名请以http://或https://开头
MANAGE_CONSTANT_GITHUB_CUSTOM_URL_RULE_MESSAGE_B: 加速域名中的大括号必须成对出现
MANAGE_CONSTANT_GITHUB_EXPLAIN: API调用有每小时上限此外不支持上传超过100M的文件
MANAGE_CONSTANT_GITHUB_REFER_TEXT: '配置教程请参考: '
MANAGE_CONSTANT_ALIYUN_NAME: 阿里云
MANAGE_CONSTANT_ALIYUN_ALIAS_DESC: 配置别名-必需
MANAGE_CONSTANT_ALIYUN_ALIAS_PLACEHOLDER: 该配置的唯一标识
MANAGE_CONSTANT_ALIYUN_ACCESS_KEY_ID_DESC: accessKeyId-必需
MANAGE_CONSTANT_ALIYUN_ACCESS_KEY_SECRET_DESC: accessKeySecret-必需
MANAGE_CONSTANT_ALIYUN_ACCESS_KEY_SECRET_PLACEHOLDER: 请填写accessKeySecret
MANAGE_CONSTANT_ALIYUN_BUCKET_DESC: 存储桶名-可选
MANAGE_CONSTANT_ALIYUN_BUCKET_PLACEHOLDER: 英文逗号分隔例如bucket1,bucket2
MANAGE_CONSTANT_ALIYUN_BASE_DIR_DESC: 起始目录-可选
MANAGE_CONSTANT_ALIYUN_BASE_DIR_PLACEHOLDER: 英文逗号分隔,例如:/dir1,/dir2
MANAGE_CONSTANT_ALIYUN_IS_AUTO_CUSTOM_URL_DESC: 是否自动获取绑定域名
MANAGE_CONSTANT_ALIYUN_PAGING_DESC: 是否开启分页
MANAGE_CONSTANT_ALIYUN_ITEMS_PAGE_DESC: 每页显示数量
MANAGE_CONSTANT_ALIYUN_EXPLAIN: 存储桶名和起始目录配置时可通过英文逗号分隔不同存储桶的设置,顺序必须一致,逗号间留空或缺失项使用默认值
MANAGE_CONSTANT_ALIYUN_REFER_TEXT: '配置教程请参考: '
MANAGE_CONSTANT_TENCENT_NAME: 腾讯云
MANAGE_CONSTANT_TENCENT_ALIAS_DESC: 配置别名-必需
MANAGE_CONSTANT_TENCENT_ALIAS_PLACEHOLDER: 该配置的唯一标识
MANAGE_CONSTANT_TENCENT_SECRET_ID_DESC: secretId-必需
MANAGE_CONSTANT_TENCENT_SECRET_ID_PLACEHOLDER: 请填写secretId
MANAGE_CONSTANT_TENCENT_SECRET_KEY_DESC: secretKey-必需
MANAGE_CONSTANT_TENCENT_SECRET_KEY_PLACEHOLDER: 请填写secretKey
MANAGE_CONSTANT_TENCENT_APPID_DESC: appId-必需
MANAGE_CONSTANT_TENCENT_APPID_PLACEHOLDER: 请填写appId
MANAGE_CONSTANT_TENCENT_APPID_TOOLTIP: 例如1250000000
MANAGE_CONSTANT_TENCENT_BUCKET_DESC: 存储桶名-可选(注意包含AppId)
MANAGE_CONSTANT_TENCENT_BUCKET_PLACEHOLDER: 英文逗号分隔例如bucket1-1250000000,bucket2-1250000000
MANAGE_CONSTANT_TENCENT_BASE_DIR_DESC: 起始目录-可选
MANAGE_CONSTANT_TENCENT_BASE_DIR_PLACEHOLDER: 英文逗号分隔,例如:/dir1,/dir2
MANAGE_CONSTANT_TENCENT_IS_AUTO_CUSTOM_URL_DESC: 是否自动获取绑定域名
MANAGE_CONSTANT_TENCENT_PAGING_DESC: 是否开启分页
MANAGE_CONSTANT_TENCENT_ITEMS_PAGE_DESC: 每页显示数量
MANAGE_CONSTANT_TENCENT_EXPLAIN: 存储桶名和起始目录配置时可通过英文逗号分隔不同存储桶的设置,顺序必须一致,逗号间留空或缺失项使用默认值
MANAGE_CONSTANT_TENCENT_REFER_TEXT: '配置教程请参考: '
MANAGE_CONSTANT_UPYUN_NAME: 又拍云
MANAGE_CONSTANT_UPYUN_ALIAS_DESC: 配置别名-必需
MANAGE_CONSTANT_UPYUN_ALIAS_PLACEHOLDER: 该配置的唯一标识
MANAGE_CONSTANT_UPYUN_BUCKET_DESC: 服务名-必需
MANAGE_CONSTANT_UPYUN_BUCKET_PLACEHOLDER: 对应其它对象存储的存储桶名
MANAGE_CONSTANT_UPYUN_OPERATOR_NAME_DESC: 操作员名-必需
MANAGE_CONSTANT_UPYUN_OPERATOR_NAME_PLACEHOLDER: 推荐使用具有读取、写入和删除完整权限的操作员
MANAGE_CONSTANT_UPYUN_OPERATOR_NAME_RULE: 操作员
MANAGE_CONSTANT_UPYUN_OPERATOR_PWD_DESC: 操作员密码-必需
MANAGE_CONSTANT_UPYUN_OPERATOR_PWD_PLACEHOLDER: 请填写密码
MANAGE_CONSTANT_UPYUN_OPERATOR_PWD_RULE: 操作员密码
MANAGE_CONSTANT_UPYUN_BASE_DIR_DESC: 起始目录-可选
MANAGE_CONSTANT_UPYUN_BASE_DIR_PLACEHOLDER: 读取文件时的初始目录
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_DESC: 加速域名-必需
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_PLACEHOLDER: 请以http://或https://开头
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_RULE_MESSAGE_A: 加速域名不能为空
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_RULE_MESSAGE_B: 自定义域名请以http://或https://开头
MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_DESC: 防盗链密钥-可选
MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_PLACEHOLDER: 请填写防盗链密钥
MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_TOOLTIP: 如果不填写,默认不启用防盗链
MANAGE_CONSTANT_UPYUN_EXPIRE_TIME_DESC: 防盗链过期时间(秒)-可选
MANAGE_CONSTANT_UPYUN_PAGING: 是否开启分页
MANAGE_CONSTANT_UPYUN_ITEMS_PAGE: 每页显示数量
MANAGE_CONSTANT_UPYUN_EXPLAIN: 又拍云图床务必填写加速域名,否则无法正常使用
MANAGE_CONSTANT_UPYUN_REFER_TEXT: '配置教程请参考: '
MANAGE_CONSTANT_IMGUR_NAME: Imgur
MANAGE_CONSTANT_IMGUR_ALIAS_DESC: 配置别名-必需
MANAGE_CONSTANT_IMGUR_ALIAS_PLACEHOLDER: 该配置的唯一标识
MANAGE_CONSTANT_IMGUR_USERNAME_DESC: imgur用户名-必需
MANAGE_CONSTANT_IMGUR_USERNAME_PLACEHOLDER: 请填写imgur用户名
MANAGE_CONSTANT_IMGUR_ACCESS_TOKEN_DESC: access token-必需
MANAGE_CONSTANT_IMGUR_ACCESS_TOKEN_PLACEHOLDER: 请填写access token
MANAGE_CONSTANT_IMGUR_ACCESS_TOKEN_TOOLTIP: 不是clientID,请参考配置教程
MANAGE_CONSTANT_IMGUR_PROXY_DESC: 代理-可选
MANAGE_CONSTANT_IMGUR_PROXY_PLACEHOLDER: 例如http://127.0.0.1:1080
MANAGE_CONSTANT_IMGUR_PROXY_TOOLTIP: 大陆地区请使用代理,否则无法正常使用
MANAGE_CONSTANT_IMGUR_EXPLAIN: 大陆地区请使用代理API调用存在限制请注意使用频率
MANAGE_CONSTANT_IMGUR_REFER_TEXT: '配置教程请参考: '
MANAGE_CONSTANT_S3_NAME: S3兼容云
MANAGE_CONSTANT_S3_ALIAS_DESC: 配置别名-必需
MANAGE_CONSTANT_S3_ALIAS_PLACEHOLDER: 该配置的唯一标识
MANAGE_CONSTANT_S3_ACCESS_KEY_ID_DESC: accessKeyId-必需
MANAGE_CONSTANT_S3_ACCESS_KEY_ID_PLACEHOLDER: 请填写accessKeyId
MANAGE_CONSTANT_S3_SECRET_ACCESS_KEY_DESC: secretAccessKey-必需
MANAGE_CONSTANT_S3_SECRET_ACCESS_KEY_PLACEHOLDER: 请填写secretAccessKey
MANAGE_CONSTANT_S3_ENDPOINT_DESC: endpoint-可选
MANAGE_CONSTANT_S3_ENDPOINT_PLACEHOLDER: 例如s3.us-east-1.amazonaws.com
MANAGE_CONSTANT_S3_ENDPOINT_TOOLTIP: 如果不填写,默认访问 AWS S3请提供根API endpoint
MANAGE_CONSTANT_S3_SSLENABLED_DESC: 使用HTTPS连接
MANAGE_CONSTANT_S3_SSLENABLED_TOOLTIP: 如果您的平台不支持,请关闭该选项
MANAGE_CONSTANT_S3_FORCE_PATH_STYLE_DESC: 启用 S3 Path style
MANAGE_CONSTANT_S3_FORCE_PATH_STYLE_TOOLTIP: 例如使用 minio 时需要启用
MANAGE_CONSTANT_S3_PROXY_DESC: 代理-可选
MANAGE_CONSTANT_S3_PROXY_PLACEHOLDER: 例如http://127.0.0.1:1080
MANAGE_CONSTANT_S3_PROXY_TOOLTIP: 如果部分平台大陆地区无法访问,请使用代理
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_DESC: 上传文件的权限
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_PRIVATE: 私有
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_PUBLIC_READ: 公共读
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_PUBLIC_READ_WRITE: 公共读写
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_AUTHENTICATED_READ: 授权读
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_BUCKET_OWNER_READ: 桶所有者读
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_BUCKET_OWNER_FULL_CONTROL: 桶所有者完全控制
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_AWS_EXEC_READ: AWS执行读
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_TOOLTIP: 上传文件的权限可选值private、public-read、public-read-write、authenticated-read、bucket-owner-read、bucket-owner-full-control、aws-exec-read
MANAGE_CONSTANT_S3_BUCKET_DESC: 存储桶名-可选
MANAGE_CONSTANT_S3_BUCKET_PLACEHOLDER: 英文逗号分隔例如bucket1,bucket2
MANAGE_CONSTANT_S3_BASE_DIR_DESC: 起始目录-可选
MANAGE_CONSTANT_S3_BASE_DIR_PLACEHOLDER: 英文逗号分隔,例如:/dir1,/dir2
MANAGE_CONSTANT_S3_DOGE_CLOUD_SUPPORT_DESC: 是否使用Doge Cloud
MANAGE_CONSTANT_S3_DOGE_CLOUD_SUPPORT_TOOLTIP: 开启后将使用Doge Cloud的API
MANAGE_CONSTANT_S3_PAGING_DESC: 是否开启分页
MANAGE_CONSTANT_S3_ITEMS_PAGE_DESC: 每页显示数量
MANAGE_CONSTANT_S3_EXPLAIN: 存储桶名和起始目录配置时可通过英文逗号分隔不同存储桶的设置,顺序必须一致,逗号间留空或缺失项使用默认值
MANAGE_CONSTANT_S3_REFER_TEXT: '配置教程请参考: '
MANAGE_CONSTANT_WEBDAV_ALIAS_DESC: 配置别名-必需
MANAGE_CONSTANT_WEBDAV_ALIAS_PLACEHOLDER: 该配置的唯一标识
MANAGE_CONSTANT_WEBDAV_HOST_DESC: 地址-必需
MANAGE_CONSTANT_WEBDAV_HOST_PLACEHOLDER: 例如https://example.com/dav
MANAGE_CONSTANT_WEBDAV_HOST_TOOLTIP: 请填写完整的WebDAV地址
MANAGE_CONSTANT_WEBDAV_USERNAME_DESC: 用户名-必需
MANAGE_CONSTANT_WEBDAV_USERNAME_PLACEHOLDER: 请填写用户名
MANAGE_CONSTANT_WEBDAV_BUCKET_DESC: 特殊配置
MANAGE_CONSTANT_WEBDAV_BUCKET_PLACEHOLDER: 例如bucket1
MANAGE_CONSTANT_WEBDAV_BUCKET_TOOLTIP: 此处不可修改,仅为软件兼容性考虑
MANAGE_CONSTANT_WEBDAV_PASSWORD_DESC: 密码-必需
MANAGE_CONSTANT_WEBDAV_PASSWORD_PLACEHOLDER: 请填写密码
MANAGE_CONSTANT_WEBDAV_BASE_DIR_DESC: 起始目录-可选
MANAGE_CONSTANT_WEBDAV_BASE_DIR_PLACEHOLDER: 例如:/dir1
MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_DESC: 自定义域名-可选
MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_PLACEHOLDER: 例如https://example.com
MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_TOOLTIP: 如果您的WebDAV服务器支持自定义域名请填写
MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_RULE_MESSAGE: 自定义域名请以http://或https://开头
MANAGE_CONSTANT_WEBDAV_WEB_PATH: 网址拼接用起始路径
MANAGE_CONSTANT_WEBDAV_WEB_PATH_PLACEHOLDER: 例如test/ttc
MANAGE_CONSTANT_WEBDAV_WEB_PATH_TOOLTIP: 用于拼接网址
MANAGE_CONSTANT_WEBDAV_PROXY_DESC: 代理-可选
MANAGE_CONSTANT_WEBDAV_PROXY_PLACEHOLDER: 例如http://127.0.0.1:1080
MANAGE_CONSTANT_WEBDAV_PROXY_TOOLTIP: 如果需要特殊网络环境才能访问,请使用代理
MANAGE_CONSTANT_WEBDAV_SSL_DESC: 使用HTTPS连接
MANAGE_CONSTANT_WEBDAV_SSL_TOOLTIP: 根据WebDAV服务器的配置如果您的服务器不支持HTTPS请关闭该选项
MANAGE_CONSTANT_WEBDAV_AUTH_TYPE_DESC: 认证类型
MANAGE_CONSTANT_WEBDAV_EXPLAIN: WebDAV配置
MANAGE_CONSTANT_WEBDAV_REFER_TEXT: '配置教程请参考: '
MANAGE_CONSTANT_LOCAL_NAME: 本地存储
MANAGE_CONSTANT_LOCAL_ALIAS_DESC: 配置别名-必需
MANAGE_CONSTANT_LOCAL_ALIAS_PLACEHOLDER: 该配置的唯一标识
MANAGE_CONSTANT_LOCAL_BASE_DIR_DESC: 起始目录-必需
MANAGE_CONSTANT_LOCAL_BASE_DIR_PLACEHOLDER: 请填写起始目录
MANAGE_CONSTANT_LOCAL_CUSTOM_URL_DESC: 自定义域名-可选
MANAGE_CONSTANT_LOCAL_CUSTOM_URL_PLACEHOLDER: 例如https://example.com
MANAGE_CONSTANT_LOCAL_CUSTOM_URL_TOOLTIP: 如果您的本地存储支持自定义域名,请填写
MANAGE_CONSTANT_LOCAL_WEB_PATH: 网址拼接用起始路径
MANAGE_CONSTANT_LOCAL_WEB_PATH_PLACEHOLDER: 例如test/ttc
MANAGE_CONSTANT_LOCAL_WEB_PATH_TOOLTIP: 用于拼接网址
MANAGE_CONSTANT_LOCAL_EXPLAIN: 本地存储配置
MANAGE_CONSTANT_LOCAL_REFER_TEXT: '配置教程请参考: '
MANAGE_CONSTANT_LOCAL_BASE_DIR_RULE_MESSAGE: 起始目录不能为空
MANAGE_CONSTANT_LOCAL_BUCKET_DESC: 特殊配置
MANAGE_CONSTANT_LOCAL_BUCKET_PLACEHOLDER: 例如bucket1
MANAGE_CONSTANT_LOCAL_BUCKET_TOOLTIP: 此处不可修改,仅为软件兼容性考虑
MANAGE_CONSTANT_SFTP_NAME: SFTP
MANAGE_CONSTANT_SFTP_ALIAS_DESC: 配置别名-必需
MANAGE_CONSTANT_SFTP_ALIAS_PLACEHOLDER: 该配置的唯一标识
MANAGE_CONSTANT_SFTP_HOST_DESC: SSH地址-必需
MANAGE_CONSTANT_SFTP_HOST_PLACEHOLDER: 例如233.233.233.233
MANAGE_CONSTANT_SFTP_PORT_DESC: SSH端口-必需
MANAGE_CONSTANT_SFTP_PORT_PLACEHOLDER: 例如22
MANAGE_CONSTANT_SFTP_USERNAME_DESC: 用户名
MANAGE_CONSTANT_SFTP_USERNAME_PLACEHOLDER: 请填写用户名
MANAGE_CONSTANT_SFTP_PASSWORD_DESC: 密码
MANAGE_CONSTANT_SFTP_PASSWORD_PLACEHOLDER: 请填写密码
MANAGE_CONSTANT_SFTP_PRIVATE_KEY_DESC: 私钥地址
MANAGE_CONSTANT_SFTP_PRIVATE_KEY_PLACEHOLDER: 请填写私钥地址
MANAGE_CONSTANT_SFTP_PASSPHRASE_DESC: 私钥密码
MANAGE_CONSTANT_SFTP_PASSPHRASE_PLACEHOLDER: 请填写私钥密码
MANAGE_CONSTANT_SFTP_BASE_DIR_DESC: 起始目录-可选
MANAGE_CONSTANT_SFTP_BASE_DIR_PLACEHOLDER: 例如:/dir1
MANAGE_CONSTANT_SFTP_CUSTOM_URL_DESC: 自定义域名-可选
MANAGE_CONSTANT_SFTP_CUSTOM_URL_PLACEHOLDER: 例如https://example.com
MANAGE_CONSTANT_SFTP_CUSTOM_URL_TOOLTIP: 如果您的对应路径支持域名访问,请填写
MANAGE_CONSTANT_SFTP_WEB_PATH: 网址拼接用起始路径
MANAGE_CONSTANT_SFTP_WEB_PATH_PLACEHOLDER: 例如test/ttc
MANAGE_CONSTANT_SFTP_WEB_PATH_TOOLTIP: 用于拼接网址
MANAGE_CONSTANT_SFTP_FILE_PERMISSIONS_DESC: 文件权限
MANAGE_CONSTANT_SFTP_FILE_PERMISSIONS_PLACEHOLDER: 例如0644
MANAGE_CONSTANT_SFTP_DIR_PERMISSIONS_DESC: 目录权限
MANAGE_CONSTANT_SFTP_DIR_PERMISSIONS_PLACEHOLDER: 例如0755
MANAGE_CONSTANT_SFTP_EXPLAIN: SFTP配置
MANAGE_CONSTANT_SFTP_REFER_TEXT: '配置教程请参考: '
MANAGE_CONSTANT_SFTP_BASE_DIR_RULE_MESSAGE: 起始目录不能为空
MANAGE_CONSTANT_SFTP_BUCKET_DESC: 特殊配置
MANAGE_CONSTANT_SFTP_BUCKET_PLACEHOLDER: 例如bucket1
MANAGE_CONSTANT_SFTP_BUCKET_TOOLTIP: 此处不可修改,仅为软件兼容性考虑
MANAGE_LOGIN_PAGE_PANE_NAME: 已保存配置
MANAGE_LOGIN_PAGE_PANE_KEY_NAME: 配置项
MANAGE_LOGIN_PAGE_PANE_KEY_VALUE: 值
MANAGE_LOGIN_PAGE_PANE_ENTER: 进入
MANAGE_LOGIN_PAGE_PANE_DELETE: 删除
MANAGE_LOGIN_PAGE_PANE_SELECT_PLACEHOLDER: 请选择
MANAGE_LOGIN_PAGE_PANE_IMPORT: 导入
MANAGE_LOGIN_PAGE_PANE_SAVE: 保存
MANAGE_LOGIN_PAGE_PANE_RESET: 重置
MANAGE_LOGIN_PAGE_PANE_TABLE_TITLE: 已有配置,单击可复制对应单元格数据
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_MESSAGE_A: 请填写
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_ALIAS_MESSAGE: 别名只能包含中文、英文、数字、下划线和中划线
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_ITEMS_PER_PAGE_MESSAGE: 每页数量必须在20-1000之间
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_CUSTOM_URL_MESSAGE: 自定义域名请以http://或https://开头
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_NAME: 通知
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE: 已覆盖别名
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_B: 已保存别名
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_C: 已删除别名
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_D: 删除别名为
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_E: 的配置失败
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_COPY_SUCCESS: 已复制
MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_TITLE: 确定要删除配置么?
MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_TIP: 提示
MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_CONFIRM: 确定
MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_CANCEL: 取消
MANAGE_BUCKET_PAGE_LOADING_TEXT: 加载文件中...
MANAGE_BUCKET_PAGE_CUSTOM_URL_SELECT_PLACEHOLDER: 请选择自定义域名
MANAGE_BUCKET_PAGE_CUSTOM_URL_INPUT_PLACEHOLDER: 请输入自定义域名
MANAGE_BUCKET_PAGE_UPLOAD_FILES_TOOLTIP: 文件上传(支持多选)
MANAGE_BUCKET_PAGE_UPLOAD_FROM_URL_TOOLTIP: 从URL上传
MANAGE_BUCKET_PAGE_CREATE_FOLDER_TOOLTIP: 创建文件夹
MANAGE_BUCKET_PAGE_DOWNLOAD_TOOLTIP: 下载页面
MANAGE_BUCKET_PAGE_BATCH_RENAME_TOOLTIP: 批量重命名
MANAGE_BUCKET_PAGE_BATCH_COPY_URL_TOOLTIP: 批量复制URL
MANAGE_BUCKET_PAGE_COPY_FILE_INFO_TOOLTIP: 复制文件信息
MANAGE_BUCKET_PAGE_FORCE_REFRESH_TOOLTIP: 强制刷新文件列表
MANAGE_BUCKET_PAGE_SEARCH_PLACEHOLDER: 搜索文件
MANAGE_BUCKET_PAGE_ROOT_FOLDER: 根目录
MANAGE_BUCKET_PAGE_FILE_NUMBER: '文件数: '
MANAGE_BUCKET_PAGE_FILE_SIZE: '总大小: '
MANAGE_BUCKET_PAGE_SELECT_ALL: 全选
MANAGE_BUCKET_PAGE_SELECT_NONE: 取消
MANAGE_BUCKET_PAGE_SELECT_INVERT: 反选
MANAGE_BUCKET_DOWNLOAD_BTN: 下载
MANAGE_BUCKET_DELETE_BTN: 删除
MANAGE_BUCKET_SORT_TITLE: 排序
MANAGE_BUCKET_SORT_NAME: 文件名
MANAGE_BUCKET_SORT_SIZE: 大小
MANAGE_BUCKET_SORT_EXT: 类型
MANAGE_BUCKET_SORT_TIME: 时间
MANAGE_BUCKET_SORT_CHECK: 选中状态
MANAGE_BUCKET_SORT_INIT: 初始化
MANAGE_BUCKET_URL_UPLOAD_DIALOG_TITLE: 请输入URL支持多个URL以换行分隔
MANAGE_BUCKET_URL_UPLOAD_DIALOG_CONFIRM: 确定
MANAGE_BUCKET_URL_UPLOAD_DIALOG_CANCEL: 取消
MANAGE_BUCKET_URL_FORMAT_MARKDOWN: Markdown
MANAGE_BUCKET_URL_FORMAT_MARKDOWN_WITH_LINK: Markdown-link
MANAGE_BUCKET_URL_FORMAT_URL: Url
MANAGE_BUCKET_URL_FORMAT_HTML: Html
MANAGE_BUCKET_URL_FORMAT_BBCODE: BBCode
MANAGE_BUCKET_URL_FORMAT_CUSTOM: 自定义
MANAGE_BUCKET_URL_FORMAT_PRESIGN: 预签名链接
MANAGE_BUCKET_FILE_INFO_TITLE: 文件信息
MANAGE_BUCKET_FILE_INFO_COPY_TIPS: 复制JSON格式信息
MANAGE_BUCKET_FILE_LIST_LOADING: 加载中,点击取消
MANAGE_BUCKET_FILE_LIST_DOWNLOAD_PRE: 准备下载中,点击取消
MANAGE_BUCKET_KEEP_FOLDER_STRUCTURE: 保持目录结构
MANAGE_BUCKET_NOT_KEEP_FOLDER_STRUCTURE: 不保持目录结构
MANAGE_BUCKET_UPLOAD_AREA_TITLE: 拖放上传支持递归上传文件夹
MANAGE_BUCKET_UPLOAD_AREA_TEXT: 或:点击选择文件(不支持文件夹)
MANAGE_BUCKET_UPLOAD_AREA_BTN_LOADING: 读取文件中
MANAGE_BUCKET_UPLOAD_AREA_BTN: 上传
MANAGE_BUCKET_UPLOAD_AREA_CLEAR: 清空
MANAGE_BUCKET_UPLOAD_AREA_STATUS_UPLOADING: 上传中
MANAGE_BUCKET_UPLOAD_AREA_COPY_TASK: 复制上传任务信息
MANAGE_BUCKET_UPLOAD_AREA_CLEAR_UPLOADED_TASK: 清空已完成任务
MANAGE_BUCKET_UPLOAD_AREA_CLEAR_ALL_TASK: 清空所有任务
MANAGE_BUCKET_UPLOAD_AREA_SUCCESS: 成功
MANAGE_BUCKET_UPLOAD_AREA_FAILED: 失败
MANAGE_BUCKET_DOWNLOAD_PAGE_TITLE: 下载页面
MANAGE_BUCKET_DOWNLOADING: 下载中
MANAGE_BUCKET_DOWNLOAD_COPY_TASK: 复制下载任务信息
MANAGE_BUCKET_DOWNLOAD_CLEAR_DOWNLOADED_TASK: 清空已完成任务
MANAGE_BUCKET_DOWNLOAD_CLEAR_ALL_TASK: 清空所有任务
MANAGE_BUCKET_DOWNLOAD_OPEN_FOLDER: 打开下载目录
MANAGE_BUCKET_DOWNLOAD_SUCCESS: 成功
MANAGE_BUCKET_DOWNLOAD_FAILED: 失败
MANAGE_BUCKET_MARKDOWN_PREVIEW: 预览
MANAGE_BUCKET_PLAY: 播放
MANAGE_BUCKET_RENAME_FILE: 文件重命名
MANAGE_BUCKET_RENAME_FILE_INPUT_A: 进行替换时匹配的字符串或js正则表达式
MANAGE_BUCKET_RENAME_FILE_INPUT_A_TIPS: 正则表达式请直接输入,不需要加上/
MANAGE_BUCKET_RENAME_FILE_INPUT_A_PLACEHOLDER: '例如:^\d{4}-\d{2}-\d{2} '
MANAGE_BUCKET_RENAME_FILE_INPUT_B: 需要替换的字符串,可使用自定义重命名规则中的占位符
MANAGE_BUCKET_RENAME_FILE_TABLE_IID: 自增数字
MANAGE_BUCKET_RENAME_FILE_EXT: 是否匹配扩展名进行替换
MANAGE_BUCKET_RENAME_FILE_EXT_TIPS: 如果希望修改扩展名,请勾选此项
MANAGE_BUCKET_RENAME_FILE_EXT_YES:
MANAGE_BUCKET_RENAME_FILE_EXT_NO:
MANAGE_BUCKET_RENAME_FILE_CANCEL: 取消
MANAGE_BUCKET_RENAME_FILE_CONFIRM: 确定
MANAGE_BUCKET_COPY_SUCCESS: 复制成功
MANAGE_BUCKET_START_LOADING_MESSAGE: 开始获取文件
MANAGE_BUCKET_END_LOADING_MESSAGE_FAIL: 获取文件内容失败
MANAGE_BUCKET_LAST_PAGE_TITLE: 提示
MANAGE_BUCKET_LAST_PAGE_MSG: 已经是最后一页了
MANAGE_BUCKET_GET_LIST_FAIL_TITLE: 提示
MANAGE_BUCKET_GET_LIST_FAIL_MSG: 获取文件列表失败
MANAGE_BUCKET_GET_LIST_FAIL_MSG2: 正在后台获取文件列表,请不要切换页面
MANAGE_BUCKET_GET_LIST_FAIL_MSG3: 正在加载文件列表,请稍后再试
MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_TITLE: 确定要下载该文件夹吗?
MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_TIP: 提示
MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_CONFIRM: 确定
MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_CANCEL: 取消
MANAGE_BUCKET_DOWNLOAD_FOLDER_SUCCESS: 获取下载列表成功
MANAGE_BUCKET_DOWNLOAD_FOLDER_FAIL: 获取失败
MANAGE_BUCKET_DOWNLOAD_FOLDER_CANCEL: 已取消
MANAGE_BUCKET_CREATE_FOLDER_BOX_TITLE: 请输入文件夹名称
MANAGE_BUCKET_CREATE_FOLDER_BOX_TIP: 新建文件夹
MANAGE_BUCKET_CREATE_FOLDER_BOX_CONFIRM: 确定
MANAGE_BUCKET_CREATE_FOLDER_BOX_CANCEL: 取消
MANAGE_BUCKET_CREATE_FOLDER_ERROR_MSG: 文件夹名称只能包含中文、英文、数字、下划线和斜杠
MANAGE_BUCKET_CREATE_FOLDER_SUCCESS: 创建成功, 请刷新
MANAGE_BUCKET_CREATE_FOLDER_FAIL: 创建失败
MANAGE_BUCKET_UPLOAD_URL_ERROR_MSQ: 请输入有效的URL
MANAGE_BUCKET_UPLOAD_URL_NOT_TITLE: 提示
MANAGE_BUCKET_UPLOAD_URL_NOT_MSG: 开始后台下载,成功后自动上传
MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG: 请输入匹配字符串
MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG2: 没有匹配到文件
MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG3: 没有需要重命名的文件
MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_A: 检测到有
MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_B: 个文件重复,是否继续
MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_C: 提示
MANAGE_BUCKET_BATCH_RENAME_REPEATED_CONFIRM: 确定
MANAGE_BUCKET_BATCH_RENAME_REPEATED_CANCEL: 取消
MANAGE_BUCKET_BATCH_RENAME_RESULT_MSG_A: 重命名成功
MANAGE_BUCKET_BATCH_RENAME_RESULT_MSG_B: 失败
MANAGE_BUCKET_BATCH_RENAME_CANCEL: 已取消
MANAGE_BUCKET_BATCH_COPY_INFO_ERROR_MSG: 请先选择文件
MANAGE_BUCKET_BATCH_COPY_INFO_MSG_A: 已复制
MANAGE_BUCKET_BATCH_COPY_INFO_MSG_B: 个文件信息
MANAGE_BUCKET_BATCH_COPY_URL_ERROR_MSG: 请先选择文件
MANAGE_BUCKET_BATCH_COPY_URL_MSG_A: 已复制
MANAGE_BUCKET_BATCH_COPY_URL_MSG_B: 个链接
MANAGE_BUCKET_CANCEL_LOADING_TITLE: 是否停止获取文件列表?
MANAGE_BUCKET_CANCEL_LOADING_MSG: 提示
MANAGE_BUCKET_CANCEL_LOADING_CONFIRM: 确定
MANAGE_BUCKET_CANCEL_LOADING_CANCEL: 取消
MANAGE_BUCKET_CANCEL_LOADING_SUCCESS: 文件列表获取已停止
MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_TITLE: 是否停止下载文件获取?
MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_MSG: 提示
MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_CONFIRM: 确定
MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_CANCEL: 取消
MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_SUCCESS: 下载文件获取已停止
MANAGE_BUCKET_GET_FILE_BS_NOT_TITLE: 提示
MANAGE_BUCKET_GET_FILE_BS_NOT_MSG: 获取文件列表成功
MANAGE_BUCKET_GET_FILE_BS_NOT_MSG2: 部分文件获取失败
MANAGE_BUCKET_BATCH_DELETE_CONFIRM_TITLE_A: 将永久删除
MANAGE_BUCKET_BATCH_DELETE_CONFIRM_TITLE_B: 个文件,是否继续?
MANAGE_BUCKET_BATCH_DELETE_CONFIRM_MSG: 提示
MANAGE_BUCKET_BATCH_DELETE_CONFIRM_CONFIRM: 确定
MANAGE_BUCKET_BATCH_DELETE_CONFIRM_CANCEL: 取消
MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_TITLE: 提示
MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_MSG: 删除失败
MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_MSG2: 删除成功
MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_MSG3: 失败
MANAGE_BUCKET_BATCH_DELETE_CANCEL: 已取消删除
MANAGE_BUCKET_DELETE_CONFIRM_TITLE: 将永久删除
MANAGE_BUCKET_DELETE_CONFIRM_TITLE_FOLDER: 文件夹
MANAGE_BUCKET_DELETE_CONFIRM_TITLE_FOLDER_A: 和该目录下的所有文件
MANAGE_BUCKET_DELETE_CONFIRM_TITLE_FILE: 文件
MANAGE_BUCKET_DELETE_CONFIRM_TITLE_C: 是否继续
MANAGE_BUCKET_DELETE_CONFIRM_MSG: 提示
MANAGE_BUCKET_DELETE_CONFIRM_CONFIRM: 确定
MANAGE_BUCKET_DELETE_CONFIRM_CANCEL: 取消
MANAGE_BUCKET_DELETE_ERROR_MSG_TITLE: 提示
MANAGE_BUCKET_DELETE_ERROR_MSG_MSG: 删除文件夹可能需要一段时间,请耐心等待
MANAGE_BUCKET_DELETE_SUCCESS: 删除成功
MANAGE_BUCKET_DELETE_FAIL: 删除失败
MANAGE_BUCKET_DELETE_CANCEL: 已取消删除
MANAGE_BUCKET_RENAME_INFO_MSG: 新文件名与原文件名相同,无需重命名
MANAGE_BUCKET_RENAME_SUCCESS: 重命名成功
MANAGE_BUCKET_RENAME_ERROR_MSG: 重命名失败
MANAGE_BUCKET_DOWNLOAD_COLUMN_FILENAME: 文件名
MANAGE_BUCKET_DOWNLOAD_COLUMN_FINISHTIME: 完成时间
MANAGE_BUCKET_DOWNLOAD_COLUMN_STATUS: 状态
MANAGE_BUCKET_DOWNLOAD_COLUMN_STATUS_SUCCESS: 成功
MANAGE_BUCKET_DOWNLOAD_COLUMN_STATUS_FAIL: 失败
MANAGE_BUCKET_UPLOAD_COLUMN_FILENAME: 文件名
MANAGE_BUCKET_UPLOAD_COLUMN_TARGETFILEPATH: 上传路径
MANAGE_BUCKET_UPLOAD_COLUMN_FINISHTIME: 完成时间
MANAGE_BUCKET_UPLOAD_COLUMN_STATUS: 状态
MANAGE_BUCKET_UPLOAD_COLUMN_STATUS_SUCCESS: 成功
MANAGE_BUCKET_UPLOAD_COLUMN_STATUS_FAIL: 失败
MANAGE_BUCKET_DOWNLOADING_COLUMN_FILENAME: 文件名
MANAGE_BUCKET_DOWNLOADING_COLUMN_PROGRESS: 进度
MANAGE_BUCKET_UPLOADING_COLUMN_FILENAME: 文件名
MANAGE_BUCKET_UPLOADING_COLUMN_PROGRESS: 进度
MANAGE_BUCKET_UPLOADED_COLUMN_FILENAME: 文件名
MANAGE_BUCKET_UPLOADED_COLUMN_FILESIZE: 大小
MANAGE_BUCKET_UPLOADED_COLUMN_FILENUM: 文件数
MANAGE_BUCKET_FILE_COLUMN_FILENAME: 文件名
MANAGE_BUCKET_FILE_COLUMN_COPY_URL: 复制链接
MANAGE_BUCKET_FILE_COLUMN_INFO: 文件信息
MANAGE_BUCKET_FILE_COLUMN_FILESIZE: 大小
MANAGE_BUCKET_FILE_COLUMN_TIME: 修改时间
MANAGE_NEW_BUCKET_TCYUN_NAME: 腾讯云
MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_DESC: Bucket名
MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_PLACEHOLDER: 请输入Bucket名
MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_A: Bucket名不能为空
MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_B: Bucket名称长度不能超过23个字符
MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_C: Bucket名称只能包含小写字母、数字和中划线且不能以中划线开头和结尾
MANAGE_NEW_BUCKET_TCYUN_REGION: 区域
MANAGE_NEW_BUCKET_TCYUN_ACL_DESC: 访问权限
MANAGE_NEW_BUCKET_TCYUN_ACL_PUBLIC_RW: 公共读写
MANAGE_NEW_BUCKET_TCYUN_ACL_PUBLIC_R: 公共读
MANAGE_NEW_BUCKET_TCYUN_ACL_PRIVATE: 私有
MANAGE_NEW_BUCKET_ALIYUN_NAME: 阿里云
MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_DESC: Bucket名
MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_PLACEHOLDER: 请输入Bucket名
MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_A: Bucket名不能为空
MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_B: Bucket名称长度不能超过63个字符
MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_C: Bucket名称只能包含小写字母、数字和中划线且不能以中划线开头和结尾
MANAGE_NEW_BUCKET_ALIYUN_REGION: 区域
MANAGE_NEW_BUCKET_ALIYUN_ACL_DESC: 访问权限
MANAGE_NEW_BUCKET_ALIYUN_ACL_PUBLIC_RW: 公共读写
MANAGE_NEW_BUCKET_ALIYUN_ACL_PUBLIC_R: 公共读
MANAGE_NEW_BUCKET_ALIYUN_ACL_PRIVATE: 私有
MANAGE_NEW_BUCKET_QINIU_NAME: 七牛云
MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_DESC: Bucket名
MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_PLACEHOLDER: 请输入Bucket名
MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_A: Bucket名不能为空
MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_B: Bucket名称长度不能超过63个字符
MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_C: Bucket名称只能包含小写字母、数字和中划线且不能以中划线开头和结尾
MANAGE_NEW_BUCKET_QINIU_REGION: 区域
MANAGE_NEW_BUCKET_QINIU_ACL_DESC: 公开访问
MANAGE_NEW_BUCKET_S3PLIST_NAME: S3兼容云
MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_DESC: Bucket名
MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_PLACEHOLDER: 请输入Bucket名
MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_RULE_MSG_A: Bucket名不能为空
MANAGE_NEW_BUCKET_S3PLIST_REGION: 区域
MANAGE_NEW_BUCKET_S3PLIST_ACL_DESC: 访问权限
MANAGE_NEW_BUCKET_S3PLIST_ACL_PUBLIC_RW: 公共读写
MANAGE_NEW_BUCKET_S3PLIST_ACL_PUBLIC_R: 公共读
MANAGE_NEW_BUCKET_S3PLIST_ACL_PRIVATE: 私有
MANAGE_NEW_BUCKET_S3PLIST_ACL_AUTHENTICATED_READ: 授权读
PLUGIN_INSTALL_FAILED: 插件安装失败
PLUGIN_UNINSTALL_FAILED: 插件卸载失败
PLUGIN_UPDATE_SUCCEED: 插件更新成功
PLUGIN_UPDATE_FAILED: 插件更新失败
PLUGIN_IMPORT_SUCCEED: 插件导入成功
PLUGIN_IMPORT_FAILED: 插件导入失败

View File

@@ -8,13 +8,10 @@ RELOAD_APP: 重啟程式
UPLOAD_SUCCEED: 上傳成功
UPLOAD_FAILED: 上傳失敗
UPLOAD_PROGRESS: 上傳進度
OPERATION_SUCCEED: 操作成功
OPERATION_FAILED: 操作失敗
UPLOADING: 正在上傳
QUICK_UPLOAD: 快速上傳
UPLOAD_BY_CLIPBOARD: 剪貼簿圖片上傳
SHOW_PICBED_QRCODE: 產生圖床配置 QRCODE
PICBED_QRCODE: 圖床配置 QRCODE
ENABLE: 啟用
DISABLE: 禁用
CONFIG_THING: 設定${c}
@@ -28,18 +25,6 @@ START_WATCH_CLIPBOARD: 開始監聽剪貼簿
STOP_WATCH_CLIPBOARD: 停止監聽剪貼簿
OPEN_TOOLBOX: 開啟修復工具箱
TOOLBOX: 工具箱
TOOLBOX_TITLE: 排查 PicList 執行時問題
TOOLBOX_SUB_TITLE: 立即掃描以下項目,修復使用問題
TOOLBOX_CHECK_CONFIG_FILE_BROKEN: 檢查配置文件是否損壞
TOOLBOX_CHECK_GALLERY_FILE_BROKEN: 檢查相冊文件是否損壞
TOOLBOX_CHECK_PROBLEM_WITH_CLIPBOARD_PIC_UPLOAD: 檢查剪貼板圖片上傳是否存在問題
TOOLBOX_CHECK_PROBLEM_WITH_PROXY: 檢查代理設置是否正常
TOOLBOX_FIX_DONE_NEED_RELOAD: 修復完成,需要重啓生效,是否重啓
TOOLBOX_CANT_AUTO_FIX: 無法自動修復,請自行修復以下問題
TOOLBOX_START_SCAN: 開始掃描
TOOLBOX_RE_SCAN: 重新掃描
TOOLBOX_START_FIX: 開始修復
TOOLBOX_SUCCESS_TIPS: 恭喜你,沒有檢查出問題
TOOLBOX_CHECK_CONFIG_FILE_PATH_TIPS: 配置文件路徑是:${path}
TOOLBOX_CHECK_CONFIG_FILE_BROKEN_TIPS: 配置文件已損壞
TOOLBOX_CHECK_GALLERY_FILE_PATH_TIPS: 相冊文件路徑是:${path}
@@ -51,865 +36,12 @@ TOOLBOX_CHECK_PROXY_PROXY_IS_NOT_WORKING: 代理設置不可用
TOOLBOX_CHECK_CLIPBOARD_FILE_PATH_TIPS: 剪貼板圖片臨時文件夾路徑是:${path}
TOOLBOX_CHECK_CLIPBOARD_FILE_PATH_NOT_EXIST_TIPS: 剪貼板圖片臨時文件夾不存在:${path}
TOOLBOX_CHECK_CLIPBOARD_FILE_PATH_ERROR_TIPS: 請自行創建文件夾:${path}
MANUAL_PAGE_OPEN_TIP: 請選擇打開方式
MANUAL_PAGE_OPEN_TIP_TITLE: Tips
MANUAL_PAGE_OPEN_BY_BROWSER: 瀏覽器
MANUAL_PAGE_OPEN_BY_BUILD_IN: 內置窗口
MANUAL_PAGE_OPEN_SETTING_TIP: 選擇打開手冊方式
UPLOAD_AREA: 上傳
UPLOAD_VIEW_HINT: 點擊打開圖床設定
MANAGE_PAGE: 管理
GALLERY: 相簿
REFRESH: 刷新
MANUAL: 手冊
PICBEDS_SETTINGS: 圖床
PICLIST_SETTINGS: 設定
PLUGIN_SETTINGS: 插件
CHOOSE_PICBED: 選擇圖床
COPY_PICBED_CONFIG: 複製圖床設定
COPY_PICBED_CONFIG_SUCCEED: 複製圖床設定成功
INPUT: 輸入框
CANCEL: 取消
CONFIRM: 確定
RESET_PICBED_CONFIG: 重置
CHOOSE_SHOWED_PICBED: 請選擇顯示的圖床
CHOOSE_PASTE_FORMAT: 請選擇貼上的格式
COPY: 複製
DELETE: 刪除
SELECT_ALL: 全選
CHANGE_IMAGE_URL: 修改圖片URL
CHANGE_IMAGE_URL_SUCCEED: 修改圖片URL成功
COPY_LINK_SUCCEED: 複製連結成功
BATCH_COPY_LINK_SUCCEED: 批量複製連結成功
FILE_RENAME: 檔案改名
OPEN_FILE_PATH: 打開檔案路徑
GALLERY_SYNC_DELETE: 刪除雲端
GALLERY_SYNC_DELETE_NOTICE_TITLE: 通知
GALLERY_SYNC_DELETE_NOTICE_SUCCEED: 雲端刪除成功
GALLERY_SYNC_DELETE_NOTICE_FAILED: 雲端刪除失敗
GALLERY_CHANGE_URL: 修改
GALLERY_SEARCH_FILENAME: 搜尋文件名
GALLERY_SEARCH_URL: 搜尋URL
GALLERY_MATCHED: ' 匹配到: '
UPLOAD_PAGE_COPY_UPLOAD_API: 複製上傳API
UPLOAD_PAGE_IMAGE_PROCESS_NAME: 圖片處理
UPLOAD_PAGE_IMAGE_PROCESS_DIALOG_TITLE: 圖片處理設置
UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST: 跳過處理的文件擴展名列表
UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST_TIPS: '請填寫需要跳過處理的文件擴展名列表, 以英文逗號分隔, 如: jpg,png,gif'
UPLOAD_PAGE_IMAGE_PROCESS_ISADDWM: 是否添加水印
UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE: 水印類型
UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE_TEXT: 文字
UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE_IMAGE: 圖片
UPLOAD_PAGE_IMAGE_PROCESS_ISFULLSCREEN_WM: 是否全屏水印
UPLOAD_PAGE_IMAGE_PROCESS_WMDEGREE: 水印角度
UPLOAD_PAGE_IMAGE_PROCESS_WMTEXT: 水印文字
UPLOAD_PAGE_IMAGE_PROCESS_WMTEXT_FONT_PATH: 水印字體路徑(第一次需下載字體文件)
UPLOAD_PAGE_IMAGE_PROCESS_WMRATIO: 水印占原圖比例
UPLOAD_PAGE_IMAGE_PROCESS_WMCOLOR: 水印顏色,請從取色器中選擇
UPLOAD_PAGE_IMAGE_PROCESS_WMPATH: 水印圖片路徑(留空使用預設圖片)
UPLOAD_PAGE_IMAGE_PROCESS_WMPOSITION: 水印位置
UPLOAD_PAGE_IMAGE_PROCESS_ISREMOVEEXIF: 是否移除EXIF信息
UPLOAD_PAGE_IMAGE_PROCESS_QUALITY: 壓縮質量(1-100)
UPLOAD_PAGE_IMAGE_PROCESS_ISCONVERT: 是否轉換格式
UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT: 轉換目的格式
UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT_SPECIFIC: 指定格式, 请输入JSON格式配置如{"jpg":"png"}
UPLOAD_PAGE_IMAGE_PROCESS_ISFLIP: 是否進行垂直翻轉
UPLOAD_PAGE_IMAGE_PROCESS_ISFLOP: 是否進行水平翻轉
UPLOAD_PAGE_IMAGE_PROCESS_ISRESIZE: 是否按固定尺寸調整圖片
UPLOAD_PAGE_IMAGE_PROCESS_RESIZEWIDTH: 調整尺寸寬度(設為0則按高度等比縮放)
UPLOAD_PAGE_IMAGE_PROCESS_RESIZEHEIGHT: 調整尺寸高度(設為0則按寬度等比縮放)
UPLOAD_PAGE_IMAGE_PROCESS_SKIPRESIZEOfSMALLIMG_HEIGHT: 當圖片高度小於設定高度時跳過縮放
UPLOAD_PAGE_IMAGE_PROCESS_SKIPRESIZEOfSMALLIMG_WIDTH: 當圖片寬度小於設定寬度時跳過縮放
UPLOAD_PAGE_IMAGE_PROCESS_ISRESIZEBYPERCENT: 是否按比例調整尺寸,優先級更高
UPLOAD_PAGE_IMAGE_PROCESS_RESIZEPERCENT: 調整尺寸比例輸入50表示50%
UPLOAD_PAGE_IMAGE_PROCESS_ISROTATE: 是否旋轉
UPLOAD_PAGE_IMAGE_PROCESS_ROTATEDEGREE: 旋轉角度
UPLOAD_PAGE_IMAGE_PROCESS_CONFIRM: 儲存
UPLOAD_PAGE_IMAGE_PROCESS_CANCEL: 取消
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP:
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM:
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_LEFT:
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_RIGHT:
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP_LEFT: 左上
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP_RIGHT: 右上
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM_LEFT: 左下
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM_RIGHT: 右下
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_CENTER:
UPLOAD_SHORT_URL: 短連結
UPLOAD_NORMAL_URL: 长連結
SETTINGS: 設定
SETTINGS_OPEN_CONFIG_FILE: 打開設定檔案
SETTINGS_MIGRATE_FROM_PICGO: 從PicGo導入設定
SETTINGS_MIGRATE_FROM_PICGO_TITLE: 通知
SETTINGS_MIGRATE_FROM_PICGO_CONTENT: 即將導入PicGo的設定文件和相冊, 這將會覆蓋當前的設定, 是否繼續?
SETTINGS_MIGRATE_FROM_PICGO_SUCCESS: 導入成功, 請重啟應用
SETTINGS_MIGRATE_FROM_PICGO_FAILED: 導入失敗
SETTINGS_START_MODE: 啟動模式
SETTINGS_START_MODE_MINI: mini視窗
SETTINGS_START_MODE_MAIN: 主視窗
SETTINGS_START_MODE_QUIET: 靜默啟動
SETTINGS_START_MODE_NO_TRAY: 隐藏托盘
SETTINGS_CLICK_TO_OPEN: 點擊打開
SETTINGS_SET_LOG_FILE: 設定記錄檔案
SETTINGS_CLICK_TO_SET: 點擊設定
SETTINGS_CLICK_TO_CHECK: 點擊檢查
SETTINGS_SET_SHORTCUT: 設定快捷鍵
SETTINGS_CUSTOM_LINK_FORMAT: 自訂連結格式
SETTINGS_SET_PROXY_AND_MIRROR: 設定PROXY和鏡像地址
SETTINGS_SET_SERVER: 設定Server
SETTINGS_CHECK_UPDATE: 檢查更新
SETTINGS_OPEN_UPDATE_HELPER: 打開更新助手
SETTINGS_OPEN:
SETTINGS_CLOSE:
SETTINGS_CLOSE_MINI_WINDOW_SYNC: 開主窗口同步關閉mini窗口
SETTINGS_CLOSE_MAIN_WINDOW_SYNC: 關mini窗口同步關閉主窗口
SETTINGS_LAUNCH_ON_BOOT: 開機時啟動
SETTINGS_RENAME_BEFORE_UPLOAD: 手動重新命名
SETTINGS_TIMESTAMP_RENAME: 以時間戳命名
SETTINGS_ADVANCED_RENAME: 高級命名
SETTINGS_ADVANCED_RENAME_ENABLE: 啟用高級命名
SETTINGS_ADVANCED_RENAME_FORMAT: 高級命名格式
SETTINGS_ENABLE_SECOND_PICBED: 啟用第二圖床同步上傳
SETTINGS_SET_SECOND_PICBED: 設定第二圖床
SETTINGS_OPEN_UPLOAD_TIPS: 開啟上傳提示
SETTINGS_OPEN_UPLOAD_RESULT_TIPS: 開啟上傳結果提示
SETTINGS_MINI_WINDOW_ON_TOP: Mini視窗置頂
SETTINGS_AUTO_COPY_URL_AFTER_UPLOAD: 上傳後自動複製URL
SETTINGS_TIPS_PLACEHOLDER_URL: 用佔位符 $url 來表示URL的位置
SETTINGS_TIPS_PLACEHOLDER_FILENAME: 用佔位符 $fileName 來表示檔案名稱的位置
SETTINGS_TIPS_PLACEHOLDER_EXTNAME: 用佔位符 $extName 來表示檔案格式的位置
SETTINGS_TIPS_SUCH_AS:
SETTINGS_UPLOAD_PROXY: 上傳PROXY
SETTINGS_PLUGIN_INSTALL_PROXY: 插件安裝PROXY
SETTINGS_PLUGIN_INSTALL_MIRROR: 插件安裝鏡像
SETTINGS_CURRENT_VERSION: 當前版本
SETTINGS_NEWEST_VERSION: 最新版本
SETTINGS_GETING: 正在取得中
SETTINGS_TIPS_HAS_NEW_VERSION: PicList更新啦請點擊確定重启應用
SETTINGS_LOG_FILE_PATH: 記錄檔案路徑
SETTINGS_CONFIG_FILE_PATH: 設定檔案路徑
SETTINGS_LOG_FILE: 記錄檔案
SETTINGS_GUI_LOG_FILE: GUI記錄檔案
SETTINGS_MANAGE_LOG_FILE: 管理記錄檔案
SETTINGS_LOG_LEVEL: 記錄等级
SETTINGS_LOG_FILE_SIZE: 記錄檔案大小
SETTINGS_SET_PICGO_SERVER: 設定PicGo-Server
SETTINGS_TIPS_SERVER_NOTICE: 如果你不知道Server的作用請閱讀文檔或者不用修改設定。
SETTINGS_ENABLE_SERVER: 是否開啟Server
SETTINGS_SET_SERVER_HOST: 設定監聽地址
SETTINGS_SET_SERVER_PORT: 設定監聽端口
SETTINGS_SET_SERVER_KEY: 設定鑒權密鑰
SETTINGS_SET_WEB_SERVER: 設定Web服務
SETTINGS_TIPS_WEB_SERVER_NOTICE: 如果你不知道Web服務的作用請閱讀文檔或者不用修改設定。
SETTINGS_SET_ENABLE_WEB_SERVER: 是否開啟Web服務
SETTINGS_SET_WEB_SERVER_HOST: 設定Web服務地
SETTINGS_SET_WEB_SERVER_PORT: 設定Web服務端口
SETTINGS_SET_WEB_SERVER_PATH: 設定Web服務路徑
SETTINGS_TIP_PLACEHOLDER_WEB_HOST: 推薦預設地址:127.0.0.1
SETTINGS_TIP_PLACEHOLDER_WEB_PORT: 推薦預設端口:37777
SETTINGS_TIP_PLACEHOLDER_HOST: 推薦預設地址:127.0.0.1
SETTINGS_TIP_PLACEHOLDER_PORT: 推薦預設端口:36677
SETTINGS_TIP_PLACEHOLDER_KEY: 用於接口鑒權, 通過url參數添加'?key=xxx'
SETTINGS_SET_SERVER_AES_KEY: 設定AES加密密鑰
SETTINGS_LOG_LEVEL_ALL: 全部-All
SETTINGS_LOG_LEVEL_SUCCESS: 成功-Success
SETTINGS_LOG_LEVEL_ERROR: 錯誤-Error
SETTINGS_LOG_LEVEL_INFO: 普通-Info
SETTINGS_LOG_LEVEL_WARN: 提醒-Warn
SETTINGS_LOG_LEVEL_NONE: 不記錄-None
SETTINGS_RESULT: 設定結果
SETTINGS_DEFAULT_PICBED: 設定預設圖床
SETTINGS_SET_DEFAULT_PICBED: 設為預設圖床
SETTINGS_NOT_CONFIG_OPTIONS: 暫無設定選項
SETTINGS_USE_BUILTIN_CLIPBOARD_UPLOAD: 使用內建剪貼簿上傳
SETTINGS_CHOOSE_LANGUAGE: 選擇語言
BUILTIN_CLIPBOARD_TIPS: 使用內建剪貼簿函數而不是調用腳本取得剪貼簿內的照片
UPLOADER_CONFIG_NAME: 圖床配置名
UPLOADER_CONFIG_PLACEHOLDER: 請輸入配置名稱
SELECTED_SETTING_HINT: 已選中
SETTINGS_MAIN_WINDOW_SIZE: 默認主視窗大小
SETTINGS_MAIN_WINDOW_SIZE_WIDTH: 默認主視窗寬度
SETTINGS_MAIN_WINDOW_WIDTH_HINT: '默認: 1200'
SETTINGS_MAIN_WINDOW_SIZE_HEIGHT: 默認主視窗高度
SETTINGS_MAIN_WINDOW_HEIGHT_HINT: '默認: 800'
SETTINGS_RAW_PICGO_SIZE: 原PicGo大小
SETTINGS_CUSTOM_MINI_ICON_PATH: 自訂Mini視窗圖示路徑
SETTINGS_CUSTOM_MINI_ICON: 自訂Mini視窗圖示
SETTINGS_COMPRESS_AND_WATERMARK: 設置圖片浮水印和壓縮-格式轉換等參數
SETTINGS_SYNC_DELETE_CLOUD: 從相簿中刪除並同步從雲端刪除
SETTINGS_ISHIDEDOCK: 是否隱藏dock圖示
SETTINGS_ISHIDEDOCK_TIPS: 不支持同時隱藏dock和托盘
SETTINGS_ENCODE_OUTPUT_URL: 輸出(複製) URL 時進行轉義
SETTINGS_WATCH_CLIPBOARD: 軟體啟動時自動監聽剪貼簿上傳
SETTINGS_SHORT_URL: 使用短網址
SETTINGS_SHORT_URL_SERVER: 短網址服務
SETTINGS_SHORT_URL_C1N_TOKEN: C1N Token
SETTINGS_SHORT_URL_YOURLS_DOMAIN: YOURLS域名
SETTINGS_SHORT_URL_YOURLS_SIGNATURE: YOURLS signature
SETTINGS_SHORT_URL_CF_WORKER_HOST: Cloudflare Worker Host
SETTINGS_SHORT_SINK_DOMAIN: sink域名
SETTINGS_SHORT_SINK_TOKEN: sink token
SETTINGS_DELETE_LOCAL_FILE_AFTER_UPLOAD: 上傳後刪除本地檔案
SETTINGS_SYNC_CONFIG: 設置同步配置
SETTINGS_SYNC_CONFIG_TITLE: 同步設置
SETTINGS_SYNC_CONFIG_NOTE: 同步的檔案为配置檔案
SETTINGS_SYNC_CONFIG_SELECT_TYPE: 選擇同步方式
SETTINGS_SYNC_CONFIG_SELECT_FILE: 選擇同步檔案
SETTINGS_SYNC_CONFIG_SELECT_CONFIG: 僅配置檔案
SETTINGS_SYNC_CONFIG_SELECT_GALLERY: 僅相簿檔案
SETTINGS_SYNC_CONFIG_SELECT_BOTH: 配置檔案和相簿檔案
SETTINGS_SYNC_CONFIG_GITEA_HOST: Gitea Host
SETTINGS_SYNC_CONFIG_GITHUB_USERNAME: 用戶名
SETTINGS_SYNC_CONFIG_GITEA_USERNAME: 用戶名
SETTINGS_SYNC_CONFIG_GITEE_USERNAME: 用戶名
SETTINGS_SYNC_CONFIG_GITHUB_REPO: 儲存庫(私有)
SETTINGS_SYNC_CONFIG_GITEA_REPO: 儲存庫
SETTINGS_SYNC_CONFIG_GITEE_REPO: 儲存庫路径
SETTINGS_SYNC_CONFIG_GITHUB_BRANCH: GitHub 分支
SETTINGS_SYNC_CONFIG_GITEA_BRANCH: Gitea 分支
SETTINGS_SYNC_CONFIG_GITEE_BRANCH: Gitee 分支
SETTINGS_SYNC_CONFIG_GITHUB_TOKEN: GitHub Token
SETTINGS_SYNC_CONFIG_GITEA_TOKEN: Gitea Token
SETTINGS_SYNC_CONFIG_GITEE_TOKEN: Gitee Token
SETTINGS_SYNC_CONFIG_PROXY: 代理
SETTINGS_SYNC_CONFIG_GITHUB_USERNAME_PLACEHOLDER: 請輸入 GitHub 用戶名
SETTINGS_SYNC_CONFIG_GITEA_USERNAME_PLACEHOLDER: 請輸入 Gitea 用戶名
SETTINGS_SYNC_CONFIG_GITEE_USERNAME_PLACEHOLDER: 請輸入 Gitee 用戶名
SETTINGS_SYNC_CONFIG_GITHUB_REPO_PLACEHOLDER: 請輸入 GitHub 儲存庫名稱
SETTINGS_SYNC_CONFIG_GITEA_REPO_PLACEHOLDER: 請輸入 Gitea 儲存庫名稱
SETTINGS_SYNC_CONFIG_GITEE_REPO_PLACEHOLDER: 請輸入 Gitee 儲存庫名稱
SETTINGS_SYNC_CONFIG_GITHUB_BRANCH_PLACEHOLDER: 請輸入 GitHub 分支名稱
SETTINGS_SYNC_CONFIG_GITEA_BRANCH_PLACEHOLDER: 請輸入 Gitea 分支名稱
SETTINGS_SYNC_CONFIG_GITEE_BRANCH_PLACEHOLDER: 請輸入 Gitee 分支名稱
SETTINGS_SYNC_CONFIG_GITHUB_TOKEN_PLACEHOLDER: 請輸入 GitHub Token
SETTINGS_SYNC_CONFIG_GITEA_TOKEN_PLACEHOLDER: 請輸入 Gitea Token
SETTINGS_SYNC_CONFIG_GITEE_TOKEN_PLACEHOLDER: 請輸入 Gitee Token
SETTINGS_SYNC_CONFIG_PROXY_PLACEHOLDER: 請輸入代理地址
SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT: WebDAV端點
SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT_PLACEHOLDER: 請輸入WebDAV端點URL
SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME: 用戶名
SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME_PLACEHOLDER: 請輸入WebDAV用戶名
SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD: 密碼
SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD_PLACEHOLDER: 請輸入WebDAV密碼
SETTINGS_SYNC_CONFIG_WEBDAV_AUTH_TYPE: 認證類型
SETTINGS_SYNC_CONFIG_WEBDAV_SSL_ENABLED: 啟用SSL/HTTPS
SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH: 保存路徑
SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH_PLACEHOLDER: 請選擇同步檔案的保存路徑
SETTINGS_UP_DOWN_DESC: 上傳和下載配置檔案
SETTINGS_SYNC_UPLOAD: 上傳
SETTINGS_SYNC_DOWNLOAD: 下載
SETTINGS_SYNC_UPLOAD_ALL: 上傳全部
SETTINGS_SYNC_DOWNLOAD_ALL: 下載全部
SETTINGS_SYNC_UPLOAD_SUCCESS: 上傳成功
SETTINGS_SYNC_UPLOAD_FAILED: 上傳失敗
SETTINGS_SYNC_DOWNLOAD_SUCCESS: 下載成功
SETTINGS_SYNC_DOWNLOAD_FAILED: 下載失敗
SETTINGS_SYNC_COMMON_CONFIG: 通用配置
SETTINGS_SYNC_MANAGE_CONFIG: 管理配置
SETTINGS_AUTO_IMPORT: 管理頁面自動導入配置
SETTINGS_AUTO_IMPORT_SELECT_PICBED: 選擇需要開啟自動導入的圖床
SETTINGS_TAB_SYSTEM: 系統設置
SETTINGS_TAB_SYNC_CONFIG: 同步與配置
SETTINGS_TAB_UPLOAD: 上傳設置
SETTINGS_TAB_ADVANCED: 高級設置
SETTINGS_TAB_UPDATE: 更新
SHORTCUT_NAME: 快捷鍵名稱
SHORTCUT_BIND: 快捷鍵綁定
SHORTCUT_STATUS: 狀態
SHORTCUT_ENABLED: 已啟用
SHORTCUT_DISABLED: 已禁用
SHORTCUT_SOURCE: 來源
SHORTCUT_HANDLE: 操作
SHORTCUT_ENABLE: 啟用
SHORTCUT_DISABLE: 禁用
SHORTCUT_EDIT: 編輯
SHORTCUT_CHANGE_UPLOAD: 修改上傳快捷鍵
WAIT_TO_UPLOAD: 等待上傳
ALREADY_UPLOAD: 已上傳
DRAG_FILE_TO_HERE: 將檔案拖曳到此處,或
CLICK_TO_UPLOAD: 點擊上傳
LINK_FORMAT: 連結格式
CLIPBOARD_PICTURE: 剪貼簿
TIPS_DRAG_VALID_PICTURE_OR_URL: 請拖入合法的圖片檔案或者圖片URL地址
TIPS_INPUT_URL: 請輸入URL
TIPS_HTTP_PREFIX: http://或者https://開頭
TIPS_INPUT_VALID_URL: 請輸入合法的URL
PLUGIN_SEARCH_PLACEHOLDER: 搜尋npm上的PicGo插件或者點擊上方按鈕查看優秀插件列表
PLUGIN_INSTALL: 安裝
PLUGIN_INSTALLING: 安裝中
PLUGIN_INSTALLED: 已安裝
PLUGIN_DOING_SOMETHING: 進行中
PLUGIN_LIST: 插件列表
PLUGIN_IMPORT_LOCAL: 導入本地插件
PLUGIN_UPDATE_ALL: 更新全部插件
TIPS_REMOVE_LINK: 此操作將在相簿中移除該圖片,是否繼續?
TIPS_WILL_REMOVE_CHOOSED_IMAGES: 將在相簿中移除剛才選中的 ${m} 張圖片,是否繼續?
TIPS_MUST_CONTAINS_URL: 必須含有$url 或 $fileName 或 $extName
TIPS_NETWORK_ERROR: 網路錯誤,暫時無法取得
TIPS_NEED_RELOAD: 需要重新啟動生效
TIPS_PLEASE_CHOOSE_LOG_LEVEL: 請選擇記錄等級
TIPS_SET_SUCCEED: 設定成功
TIPS_RESET_SUCCEED: 重置成功
TIPS_PLUGIN_NOT_GUI_IMPLEMENT: 該插件未對GUI進行優化是否繼續安裝
TIPS_GET_PLUGIN_LIST_FAILED: 取得插件列表失敗
MANAGE_SETTING_TITLE: 管理設定
MANAGE_SETTING_ISAUTOREFRESH_TITLE: 每次進入新目錄時,是否自動重新整理檔案列表
MANAGE_SETTING_ISAUTOREFRESH_TIPS: 僅對不分頁模式有效,預設會在載入後自動快取至資料庫以提升下次載入速度
MANAGE_SETTING_CLEAR_CACHE_TITLE: '清空檔案列表快取資料庫 已佔用:'
MANAGE_SETTING_CLEAR_CACHE_FREE_TITLE: '剩餘可用:'
MANAGE_SETTING_CLEAR_CACHE_TIPS: 清空後下次進入新目錄時將會重新載入檔案列表
MANAGE_SETTING_CLEAR_CACHE_PROMPT: 確定要清空檔案列表快取資料庫嗎?
MANAGE_SETTING_CLEAR_CACHE_BUTTON: 清空
MANAGE_SETTING_ISSHOWTHUMBNAIL_TITLE: 顯示圖片的原始圖像而非預設的檔案格式圖示(需要存儲桶公開訪問權限)
MANAGE_SETTING_ISUSEPRESIGNEDURL_TITLE: 使用預簽名URL预览圖片
MANAGE_SETTING_ISSHOWLIST_TITLE: 檔案列表預設顯示方式
MANAGE_SETTING_ISSHOWLIST_ON: 列表
MANAGE_SETTING_ISSHOWLIST_OFF: 卡片
MANAGE_SETTING_ISFORCECUSTOMURLHTTPS_TITLE: 自定義域名啟用強制 HTTPS
MANAGE_SETTING_ISFORCECUSTOMURLHTTPS_TIPS: 開啟後,複製鏈結等操作將會自動為自定義域名添加 HTTPS 前綴
MANAGE_SETTING_ISUPLOADKEEPDIRSTRUCTURE_TITLE: 保留上傳時的目錄結構
MANAGE_SETTING_ISUPLOADKEEPDIRSTRUCTURE_TIPS: 停用後,所有文件將會展開到指定目錄下
MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_A: 下載
MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_B: 文件
MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_C: 時保留目錄結構
MANAGE_SETTING_ISDOWNLOADFOLDERKEEPDIRSTRUCTURE_TITLE_D: 目錄
MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TIPS: 啟用後,下載時會保留原始目錄結構
MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_TITLE: 最大同時下載檔案數量(1-9999)
MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_TIPS: 由於後端實現方式不同,此設定在腾讯云上不生效
MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_INPUT_TIPS: 請輸入最大同時下載檔案數量
MANAGE_SETTING_ISIGNORECASE_TITLE: 搜尋檔案時,是否忽略大小寫
MANAGE_SETTING_ISIGNORECASE_TIPS: 啟用後,搜尋時將會忽略大小寫
MANAGE_SETTING_TIMESTAMPRENAME_TITLE: 上傳檔案時間戳重新命名--(最高優先級)
MANAGE_SETTING_TIMESTAMPRENAME_TIPS: 啟用後,上傳檔案時將會使用時間戳重新命名
MANAGE_SETTING_RANDOMSTRINGRENAME_TITLE: 上傳檔案隨機字符串重新命名--(中優先級)
MANAGE_SETTING_RANDOMSTRINGRENAME_TIPS: 隨機字符串長度為20
MANAGE_SETTING_CUSTOMRENAME_TITLE: 上傳檔案自定義重新命名--(最低優先級)
MANAGE_SETTING_CUSTOMRENAME_TIPS: 啟用後,上傳檔案時將會使用自定義重新命名
MANAGE_SETTING_CUSTOM_PATTERN_TITLE: 自訂重新命名格式,占位符請參考下表,可自由組合
MANAGE_SETTING_CUSTOM_PATTERN_TIPS: 請輸入自訂重新命名格式
MANAGE_SETTING_CUSTOM_PATTERN_TABLE_TITLE: 占位符
MANAGE_SETTING_CUSTOM_PATTERN_TABLE_TIPS: 說明
MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TITLE: 預設下載鏈結有效期(秒)
MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TIPS: 請輸入下載鏈結有效期
MANAGE_SETTING_CHOOSE_COPY_FORMAT_TITLE: 選擇預設複製的連結格式
MANAGE_SETTING_CHOOSE_COPY_FORMAT_MARKDOWN: Markdown
MANAGE_SETTING_CHOOSE_COPY_FORMAT_MARKDOWN_WITH_LINK: Markdown(帶連結)
MANAGE_SETTING_CHOOSE_COPY_FORMAT_RAWURL: 原始鏈結
MANAGE_SETTING_CHOOSE_COPY_FORMAT_HTML: HTML格式
MANAGE_SETTING_CHOOSE_COPY_FORMAT_BBCODE: BBCode格式
MANAGE_SETTING_CHOOSE_COPY_FORMAT_CUSTOM: 自定義格式
MANAGE_SETTING_CUSTOM_COPY_FORMAT_TITLE: 自定義鏈結格式($url為原始鏈結,$fileName為檔案名稱)
MANAGE_SETTING_CUSTOM_COPY_FORMAT_TIPS: 請輸入自定義鏈結格式
MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_TITLE: 選擇下載目錄
MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_TIPS: 系統預設下載目錄
MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_BUTTON: 選擇目錄
MANAGE_SETTING_COPY_MESSAGE: 已複製
MANAGE_SETTING_CLEAR_CACHE_SUCCESS: 清除成功
MANAGE_SETTING_CLEAR_CACHE_FAILED: 清除失敗
MANAGE_SETTING_ISENCODEURL_TITLE: 複製鏈結時編碼
MANAGE_SETTING_ISENCODEURL_TIPS: 啟用後,複製鏈結時將會編碼
MANAGE_NO_DATA: 暫無數據
MANAGE_MAIN_PAGE_NEW_BUCKET: 新建存儲桶
MANAGE_MAIN_PAGE_BACK_TO_HOME: 返回首頁
MANAGE_MAIN_PAGE_SWITCH_PICBED: 切換圖床
MANAGE_MAIN_PAGE_SETTING: 設定
MANAGE_MAIN_PAGE_SUBMIT: 提交
MANAGE_MAIN_PAGE_TIPS: 提示
MANAGE_MAIN_PAGE_TIPS_SUCCESS: 創建成功
MANAGE_MAIN_PAGE_TIPS_FAILED: 創建失敗
MANAGE_MAIN_PAGE_BUCKET: 存儲桶
MANAGE_MAIN_PAGE_GALLERY: 圖庫
MANAGE_MAIN_PAGE_REPOSITORY: 倉庫
MANAGE_CONSTANT_BASE_RULE: 請輸入
MANAGE_CONSTANT_ITEMS_PAGE_RULE_MESSAGE_A: 請輸入每頁顯示數量
MANAGE_CONSTANT_ITEMS_PAGE_RULE_MESSAGE_B: 每頁顯示數量必須為數字
MANAGE_CONSTANT_ITEMS_PAGE_RULE_MESSAGE_C: 每頁顯示數量必須在20-1000之間
MANAGE_CONSTANT_ALIAS_RULE_MESSAGE_A: 請輸入別名,該配置的唯一標識
MANAGE_CONSTANT_ALIAS_RULE_MESSAGE_B: 別名只能包含中文、英文、數字、下劃線和中劃線
MANAGE_CONSTANT_ALIAS_TOOLTIP: 別名只能包含中文、英文、數字、下劃線和中劃線
MANAGE_CONSTANT_ITEMS_PAGE_TOOLTIP: 每頁顯示數量必須在20-1000之間
MANAGE_CONSTANT_PAGING_TOOLTIP: 關閉分頁時,目錄列表將使用數據庫緩存以優化性能
MANAGE_CONSTANT_BUCKET_NAME_TOOLTIP: 英文逗號分隔bucket1,bucket2,bucket3和起始目錄順序一一對應
MANAGE_CONSTANT_BASE_DIR_TOOLTIP: 英文逗號分隔,如:/dir1,/dir2,/dir3, 和存儲桶順序一一對應
MANAGE_CONSTANT_IS_AUTO_CUSTOM_URL_TOOLTIP: 開啟時,將自動獲取存儲桶綁定的域名,關閉時可手動填寫
MANAGE_CONSTANT_SMMS_ALIAS_DESC: 配置別名-必需
MANAGE_CONSTANT_SMMS_ALIAS_PLACEHOLDER: 該配置的唯一標識
MANAGE_CONSTANT_SMMS_TOKEN_DESC: Token-必需
MANAGE_CONSTANT_SMMS_TOKEN_PLACEHOLDER: 請填寫Token
MANAGE_CONSTANT_SMMS_PAGING_DESC: 是否開啟分頁
MANAGE_CONSTANT_SMMS_EXPLAIN: 大陸地區請訪問備用域名https://smms.app請勿大批量上傳圖片否則API接口會被限制
MANAGE_CONSTANT_SMMS_REFER_TEXT: 配置教程請參考:
MANAGE_CONSTANT_QINIU_NAME: 七牛雲
MANAGE_CONSTANT_QINIU_ALIAS_DESC: 配置別名-必需
MANAGE_CONSTANT_QINIU_ALIAS_PLACEHOLDER: 該配置的唯一標識
MANAGE_CONSTANT_QINIU_ACCESS_KEY_DESC: accessKey-必需
MANAGE_CONSTANT_QINIU_ACCESS_KEY_PLACEHOLDER: 請填寫 accessKey
MANAGE_CONSTANT_QINIU_SECRET_KEY_DESC: secretKey-必需
MANAGE_CONSTANT_QINIU_SECRET_KEY_PLACEHOLDER: 請填寫 secretKey
MANAGE_CONSTANT_QINIU_BUCKET_DESC: 空間名-可選
MANAGE_CONSTANT_QINIU_BUCKET_PLACEHOLDER: 英文逗號分隔例如bucket1,bucket2
MANAGE_CONSTANT_QINIU_BASE_DIR_DESC: 起始目錄-可選
MANAGE_CONSTANT_QINIU_BASE_DIR_PLACEHOLDER: 英文逗號分隔,例如:/dir1,/dir2
MANAGE_CONSTANT_QINIU_IS_AUTO_CUSTOM_URL_DESC: 是否自動獲取綁定域名
MANAGE_CONSTANT_QINIU_PAGING_DESC: 是否開啟分頁
MANAGE_CONSTANT_QINIU_ITEMS_PAGE_DESC: 每頁顯示數量
MANAGE_CONSTANT_QINIU_EXPLAIN: 空間名和起始目錄配置時可通過英文逗號分隔設置,順序必須一致,逗號間留空或缺失項使用默認值
MANAGE_CONSTANT_QINIU_REFER_TEXT: '配置教程請參考: '
MANAGE_CONSTANT_GITHUB_ALIAS_DESC: 配置別名-必需
MANAGE_CONSTANT_GITHUB_ALIAS_PLACEHOLDER: 該配置的唯一標識
MANAGE_CONSTANT_GITHUB_TOKEN_DESC: Token-必需
MANAGE_CONSTANT_GITHUB_TOKEN_PLACEHOLDER: 請填寫Token
MANAGE_CONSTANT_GITHUB_TOKEN_TIPS: 請提供具有完整repo權限的token否則部分功能可能無法使用
MANAGE_CONSTANT_GITHUB_USER_DESC: 用戶名-必需
MANAGE_CONSTANT_GITHUB_USER_PLACEHOLDER: 請填寫用戶名
MANAGE_CONSTANT_GITHUB_USER_RULE_MESSAGE: 用戶名
MANAGE_CONSTANT_GITHUB_PROXY_DESC: 代理地址-可選
MANAGE_CONSTANT_GITHUB_PROXY_PLACEHOLDER: 例如http://127.0.0.1:1080
MANAGE_CONSTANT_GITHUB_PROXY_TIPS: 如果訪問速度較慢,可以嘗試配置代理
MANAGE_CONSTANT_GITHUB_PAGING_DESC: 是否開啟分頁
MANAGE_CONSTANT_GITHUB_CUSTOM_URL_DESC: CDN加速域名-可選
MANAGE_CONSTANT_GITHUB_CUSTOM_URL_PLACEHOLDER: 支持使用{username}、{repo}、{branch}和{path}作為替換占位符,用於適配不同倉庫和分支
MANAGE_CONSTANT_GITHUB_CUSTOM_URL_TIPS: '例如: https://cdn.staticaly.com/gh/{username}/{repo}@{branch}/{path}'
MANAGE_CONSTANT_GITHUB_CUSTOM_URL_RULE_MESSAGE_A: 加速域名請以http://或https://開頭
MANAGE_CONSTANT_GITHUB_CUSTOM_URL_RULE_MESSAGE_B: 加速域名中的大括號必須成對出現
MANAGE_CONSTANT_GITHUB_EXPLAIN: API調用有每小時上限此外不支持上傳超過100M的文件
MANAGE_CONSTANT_GITHUB_REFER_TEXT: 配置教程請參考:
MANAGE_CONSTANT_ALIYUN_NAME: 阿里雲
MANAGE_CONSTANT_ALIYUN_ALIAS_DESC: 配置別名-必需
MANAGE_CONSTANT_ALIYUN_ALIAS_PLACEHOLDER: 該配置的唯一標識
MANAGE_CONSTANT_ALIYUN_ACCESS_KEY_ID_DESC: accessKeyId-必需
MANAGE_CONSTANT_ALIYUN_ACCESS_KEY_SECRET_DESC: accessKeySecret-必需
MANAGE_CONSTANT_ALIYUN_ACCESS_KEY_SECRET_PLACEHOLDER: 請填寫accessKeySecret
MANAGE_CONSTANT_ALIYUN_BUCKET_DESC: 儲存桶名-可選
MANAGE_CONSTANT_ALIYUN_BUCKET_PLACEHOLDER: 英文逗號分隔例如bucket1,bucket2
MANAGE_CONSTANT_ALIYUN_BASE_DIR_DESC: 起始目錄-可選
MANAGE_CONSTANT_ALIYUN_BASE_DIR_PLACEHOLDER: 英文逗號分隔,例如:/dir1,/dir2
MANAGE_CONSTANT_ALIYUN_IS_AUTO_CUSTOM_URL_DESC: 是否自動獲取綁定域名
MANAGE_CONSTANT_ALIYUN_PAGING_DESC: 是否開啟分頁
MANAGE_CONSTANT_ALIYUN_ITEMS_PAGE_DESC: 每頁顯示數量
MANAGE_CONSTANT_ALIYUN_EXPLAIN: 儲存桶名和起始目錄配置時可通過英文逗號分隔不同儲存桶的設置,順序必須一致,逗號間留空或缺失項使用默認值
MANAGE_CONSTANT_ALIYUN_REFER_TEXT: '配置教程請參考: '
MANAGE_CONSTANT_TENCENT_NAME: 腾讯雲
MANAGE_CONSTANT_TENCENT_ALIAS_DESC: 配置别名-必需
MANAGE_CONSTANT_TENCENT_ALIAS_PLACEHOLDER: 該配置的唯一標識
MANAGE_CONSTANT_TENCENT_SECRET_ID_DESC: secretId-必需
MANAGE_CONSTANT_TENCENT_SECRET_ID_PLACEHOLDER: 請填寫 secretId
MANAGE_CONSTANT_TENCENT_SECRET_KEY_DESC: secretKey-必需
MANAGE_CONSTANT_TENCENT_SECRET_KEY_PLACEHOLDER: 請填寫 secretKey
MANAGE_CONSTANT_TENCENT_APPID_DESC: appId-必需
MANAGE_CONSTANT_TENCENT_APPID_PLACEHOLDER: 請填寫 appId
MANAGE_CONSTANT_TENCENT_APPID_TOOLTIP: 例如1250000000
MANAGE_CONSTANT_TENCENT_BUCKET_DESC: 存儲桶名-可選(注意包含AppId)
MANAGE_CONSTANT_TENCENT_BUCKET_PLACEHOLDER: 英文逗號分隔例如bucket1-1250000000,bucket2-1250000000
MANAGE_CONSTANT_TENCENT_BASE_DIR_DESC: 起始目錄-可選
MANAGE_CONSTANT_TENCENT_BASE_DIR_PLACEHOLDER: 英文逗號分隔,例如:/dir1,/dir2
MANAGE_CONSTANT_TENCENT_IS_AUTO_CUSTOM_URL_DESC: 是否自動獲取綁定域名
MANAGE_CONSTANT_TENCENT_PAGING_DESC: 是否開啟分頁
MANAGE_CONSTANT_TENCENT_ITEMS_PAGE_DESC: 每頁顯示數量
MANAGE_CONSTANT_TENCENT_EXPLAIN: 存儲桶名和起始目錄配置時可通過英文逗號分隔不同存儲桶的設置,順序必須一致,逗號間留空或缺失項使用默認值
MANAGE_CONSTANT_TENCENT_REFER_TEXT: '配置教程請參考: '
MANAGE_CONSTANT_UPYUN_NAME: 又拍雲
MANAGE_CONSTANT_UPYUN_ALIAS_DESC: 配置別名-必需
MANAGE_CONSTANT_UPYUN_ALIAS_PLACEHOLDER: 該配置的唯一標識
MANAGE_CONSTANT_UPYUN_BUCKET_DESC: 服務名-必需
MANAGE_CONSTANT_UPYUN_BUCKET_PLACEHOLDER: 對應其它對象存儲的存儲桶名
MANAGE_CONSTANT_UPYUN_OPERATOR_NAME_DESC: 操作員名-必需
MANAGE_CONSTANT_UPYUN_OPERATOR_NAME_PLACEHOLDER: 推薦使用具有讀取、寫入和刪除完整權限的操作員
MANAGE_CONSTANT_UPYUN_OPERATOR_NAME_RULE: 操作員
MANAGE_CONSTANT_UPYUN_OPERATOR_PWD_DESC: 操作員密碼-必需
MANAGE_CONSTANT_UPYUN_OPERATOR_PWD_PLACEHOLDER: 請填寫密碼
MANAGE_CONSTANT_UPYUN_OPERATOR_PWD_RULE: 操作員密碼
MANAGE_CONSTANT_UPYUN_BASE_DIR_DESC: 起始目錄-可選
MANAGE_CONSTANT_UPYUN_BASE_DIR_PLACEHOLDER: 讀取文件時的初始目錄
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_DESC: 加速域名-必需
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_PLACEHOLDER: 請以http://或https://開頭
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_RULE_MESSAGE_A: 加速域名不能為空
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_RULE_MESSAGE_B: 自定義域名請以http://或https://開頭
MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_DESC: 防盗链密钥-可選
MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_PLACEHOLDER: 請填寫防盗链密钥
MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_TOOLTIP: 如果不填寫,則不啟用防盗链
MANAGE_CONSTANT_UPYUN_EXPIRE_TIME_DESC: 防盗链有效期(秒)-可選
MANAGE_CONSTANT_UPYUN_PAGING: 是否開啟分頁
MANAGE_CONSTANT_UPYUN_ITEMS_PAGE: 每頁顯示數量
MANAGE_CONSTANT_UPYUN_EXPLAIN: 又拍雲圖床必須填寫加速域名,否則無法正常使用
MANAGE_CONSTANT_UPYUN_REFER_TEXT: '配置教程請參考: '
MANAGE_CONSTANT_IMGUR_NAME: Imgur
MANAGE_CONSTANT_IMGUR_ALIAS_DESC: 配置別名-必需
MANAGE_CONSTANT_IMGUR_ALIAS_PLACEHOLDER: 該配置的唯一標識
MANAGE_CONSTANT_IMGUR_USERNAME_DESC: Imgur用戶名-必需
MANAGE_CONSTANT_IMGUR_USERNAME_PLACEHOLDER: 請填寫Imgur用戶名
MANAGE_CONSTANT_IMGUR_ACCESS_TOKEN_DESC: Access Token-必需
MANAGE_CONSTANT_IMGUR_ACCESS_TOKEN_PLACEHOLDER: 請填寫Access Token
MANAGE_CONSTANT_IMGUR_ACCESS_TOKEN_TOOLTIP: 不是client ID請參考配置教程
MANAGE_CONSTANT_IMGUR_PROXY_DESC: 代理-可選
MANAGE_CONSTANT_IMGUR_PROXY_PLACEHOLDER: 例如http://127.0.0.1:1080
MANAGE_CONSTANT_IMGUR_PROXY_TOOLTIP: 大陸地區請使用代理,否則無法正常使用
MANAGE_CONSTANT_IMGUR_EXPLAIN: 大陸地區請使用代理API調用存在限制請注意使用頻率
MANAGE_CONSTANT_IMGUR_REFER_TEXT: '配置教程請參考:'
MANAGE_CONSTANT_S3_NAME: S3兼容雲
MANAGE_CONSTANT_S3_ALIAS_DESC: 配置別名-必需
MANAGE_CONSTANT_S3_ALIAS_PLACEHOLDER: 該配置的唯一標識
MANAGE_CONSTANT_S3_ACCESS_KEY_ID_DESC: accessKeyId-必需
MANAGE_CONSTANT_S3_ACCESS_KEY_ID_PLACEHOLDER: 請填寫accessKeyId
MANAGE_CONSTANT_S3_SECRET_ACCESS_KEY_DESC: secretAccessKey-必需
MANAGE_CONSTANT_S3_SECRET_ACCESS_KEY_PLACEHOLDER: 請填寫secretAccessKey
MANAGE_CONSTANT_S3_ENDPOINT_DESC: endpoint-可選
MANAGE_CONSTANT_S3_ENDPOINT_PLACEHOLDER: 例如s3.us-east-1.amazonaws.com
MANAGE_CONSTANT_S3_ENDPOINT_TOOLTIP: 如果不填寫,默認訪問 AWS S3請提供根API endpoint
MANAGE_CONSTANT_S3_SSLENABLED_DESC: 使用HTTPS連接
MANAGE_CONSTANT_S3_SSLENABLED_TOOLTIP: 如果您的平臺不支持,請關閉該選項
MANAGE_CONSTANT_S3_FORCE_PATH_STYLE_DESC: 啟用 S3 Path style
MANAGE_CONSTANT_S3_FORCE_PATH_STYLE_TOOLTIP: 例如使用 minio 時需要啟用
MANAGE_CONSTANT_S3_PROXY_DESC: 代理-可選
MANAGE_CONSTANT_S3_PROXY_PLACEHOLDER: 例如http://127.0.0.1:1080
MANAGE_CONSTANT_S3_PROXY_TOOLTIP: 如果部分平臺大陸地區無法訪問,請使用代理
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_DESC: 上傳文件的權限
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_PRIVATE: 私有
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_PUBLIC_READ: 公共讀
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_PUBLIC_READ_WRITE: 公共讀寫
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_AUTHENTICATED_READ: 授權讀
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_BUCKET_OWNER_READ: 桶所有者讀
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_BUCKET_OWNER_FULL_CONTROL: 桶所有者完全控制
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_AWS_EXEC_READ: AWS執行讀
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_TOOLTIP: 上傳文件的權限可選值private、public-read、public-read-write、authenticated-read、bucket-owner-read、bucket-owner-full-control、aws-exec-read
MANAGE_CONSTANT_S3_BUCKET_DESC: 存儲桶名-可選
MANAGE_CONSTANT_S3_BUCKET_PLACEHOLDER: 英文逗號分隔例如bucket1,bucket2
MANAGE_CONSTANT_S3_BASE_DIR_DESC: 起始目錄-可選
MANAGE_CONSTANT_S3_BASE_DIR_PLACEHOLDER: 英文逗號分隔,例如:/dir1,/dir2
MANAGE_CONSTANT_S3_DOGE_CLOUD_SUPPORT_DESC: 啟用 Doge Cloud 支援
MANAGE_CONSTANT_S3_DOGE_CLOUD_SUPPORT_TOOLTIP: 啟用後將會啟用Doge Cloud API
MANAGE_CONSTANT_S3_PAGING_DESC: 是否開啟分頁
MANAGE_CONSTANT_S3_ITEMS_PAGE_DESC: 每頁顯示數量
MANAGE_CONSTANT_S3_EXPLAIN: 存儲桶名和起始目錄配置時可通過英文逗號分隔不同存儲桶的設置,順序必須一致,逗號間留空或缺失項使用默認值
MANAGE_CONSTANT_S3_REFER_TEXT: '配置教程請參考:'
MANAGE_CONSTANT_WEBDAV_ALIAS_DESC: 配置別名-必需
MANAGE_CONSTANT_WEBDAV_ALIAS_PLACEHOLDER: 該配置的唯一標識
MANAGE_CONSTANT_WEBDAV_HOST_DESC: 地址-必需
MANAGE_CONSTANT_WEBDAV_HOST_PLACEHOLDER: 例如https://example.com/dav
MANAGE_CONSTANT_WEBDAV_HOST_TOOLTIP: 請填寫完整的WebDAV地址
MANAGE_CONSTANT_WEBDAV_USERNAME_DESC: 使用者名稱-必需
MANAGE_CONSTANT_WEBDAV_USERNAME_PLACEHOLDER: 請填寫使用者名稱
MANAGE_CONSTANT_WEBDAV_BUCKET_DESC: 特殊配置
MANAGE_CONSTANT_WEBDAV_BUCKET_PLACEHOLDER: 例如bucket1
MANAGE_CONSTANT_WEBDAV_BUCKET_TOOLTIP: 此處不可修改,僅為軟體相容性考量
MANAGE_CONSTANT_WEBDAV_PASSWORD_DESC: 密碼-必需
MANAGE_CONSTANT_WEBDAV_PASSWORD_PLACEHOLDER: 請填寫密碼
MANAGE_CONSTANT_WEBDAV_BASE_DIR_DESC: 起始目錄-可選
MANAGE_CONSTANT_WEBDAV_BASE_DIR_PLACEHOLDER: 例如:/dir1
MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_DESC: 自訂網域名稱-可選
MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_PLACEHOLDER: 例如https://example.com
MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_TOOLTIP: 如果您的WebDAV伺服器支援自訂網域名稱請填寫
MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_RULE_MESSAGE: 自訂網域名稱請以http://或https://開頭
MANAGE_CONSTANT_WEBDAV_WEB_PATH: WebDAV網路路徑-可選
MANAGE_CONSTANT_WEBDAV_WEB_PATH_PLACEHOLDER: 例如test/ttc
MANAGE_CONSTANT_WEBDAV_WEB_PATH_TOOLTIP: 用於拼接網址
MANAGE_CONSTANT_WEBDAV_PROXY_DESC: 代理-可選
MANAGE_CONSTANT_WEBDAV_PROXY_PLACEHOLDER: 例如http://127.0.0.1:1080
MANAGE_CONSTANT_WEBDAV_PROXY_TOOLTIP: 如果需要特殊網路環境才能訪問,請使用代理
MANAGE_CONSTANT_WEBDAV_SSL_DESC: 使用HTTPS連線
MANAGE_CONSTANT_WEBDAV_SSL_TOOLTIP: 根據WebDAV伺服器的配置如果您的伺服器不支援HTTPS請關閉該選項
MANAGE_CONSTANT_WEBDAV_AUTH_TYPE_DESC: 認證類型
MANAGE_CONSTANT_WEBDAV_EXPLAIN: WebDAV配置
MANAGE_CONSTANT_WEBDAV_REFER_TEXT: '配置教程請參考: '
MANAGE_CONSTANT_LOCAL_NAME: 本地
MANAGE_CONSTANT_LOCAL_ALIAS_DESC: 配置別名-必需
MANAGE_CONSTANT_LOCAL_ALIAS_PLACEHOLDER: 該配置的唯一標識
MANAGE_CONSTANT_LOCAL_BASE_DIR_DESC: 起始目錄-必需
MANAGE_CONSTANT_LOCAL_BASE_DIR_PLACEHOLDER: 請填寫起始目錄
MANAGE_CONSTANT_LOCAL_CUSTOM_URL_DESC: 自定義網域-可選
MANAGE_CONSTANT_LOCAL_CUSTOM_URL_PLACEHOLDER: 例如https://example.com
MANAGE_CONSTANT_LOCAL_CUSTOM_URL_TOOLTIP: 如果您的目錄支援自定義網域,請填寫
MANAGE_CONSTANT_LOCAL_WEB_PATH: 網路路徑-可選
MANAGE_CONSTANT_LOCAL_WEB_PATH_PLACEHOLDER: 例如test/ttc
MANAGE_CONSTANT_LOCAL_WEB_PATH_TOOLTIP: 用於拼接網址
MANAGE_CONSTANT_LOCAL_EXPLAIN: 本地配置
MANAGE_CONSTANT_LOCAL_REFER_TEXT: '配置教程請參考: '
MANAGE_CONSTANT_LOCAL_BASE_DIR_RULE_MESSAGE: 起始目錄不能為空
MANAGE_CONSTANT_LOCAL_BUCKET_DESC: 特殊配置
MANAGE_CONSTANT_LOCAL_BUCKET_PLACEHOLDER: 例如bucket1
MANAGE_CONSTANT_LOCAL_BUCKET_TOOLTIP: 此處不可修改,僅為軟體相容性考量
MANAGE_CONSTANT_SFTP_NAME: SFTP
MANAGE_CONSTANT_SFTP_ALIAS_DESC: 配置別名-必需
MANAGE_CONSTANT_SFTP_ALIAS_PLACEHOLDER: 該配置的唯一標識
MANAGE_CONSTANT_SFTP_HOST_DESC: 地址-必需
MANAGE_CONSTANT_SFTP_HOST_PLACEHOLDER: 例如233.233.233.233
MANAGE_CONSTANT_SFTP_PORT_DESC: 端口-必需
MANAGE_CONSTANT_SFTP_PORT_PLACEHOLDER: 例如22
MANAGE_CONSTANT_SFTP_USERNAME_DESC: 用戶名
MANAGE_CONSTANT_SFTP_USERNAME_PLACEHOLDER: 請填寫用戶名
MANAGE_CONSTANT_SFTP_PASSWORD_DESC: 密碼
MANAGE_CONSTANT_SFTP_PASSWORD_PLACEHOLDER: 請填寫密碼
MANAGE_CONSTANT_SFTP_PRIVATE_KEY_DESC: 私鑰地址
MANAGE_CONSTANT_SFTP_PRIVATE_KEY_PLACEHOLDER: 請填寫私鑰地址
MANAGE_CONSTANT_SFTP_PASSPHRASE_DESC: 私鑰密碼
MANAGE_CONSTANT_SFTP_PASSPHRASE_PLACEHOLDER: 請填寫私鑰密碼
MANAGE_CONSTANT_SFTP_BASE_DIR_DESC: 起始目錄-可選
MANAGE_CONSTANT_SFTP_BASE_DIR_PLACEHOLDER: 例如:/dir1
MANAGE_CONSTANT_SFTP_CUSTOM_URL_DESC: 自定義網域-可選
MANAGE_CONSTANT_SFTP_CUSTOM_URL_PLACEHOLDER: 例如https://example.com
MANAGE_CONSTANT_SFTP_CUSTOM_URL_TOOLTIP: 如果您的目錄支援自定義網域,請填寫
MANAGE_CONSTANT_SFTP_WEB_PATH: 網路路徑-可選
MANAGE_CONSTANT_SFTP_WEB_PATH_PLACEHOLDER: 例如test/ttc
MANAGE_CONSTANT_SFTP_WEB_PATH_TOOLTIP: 用於拼接網址
MANAGE_CONSTANT_SFTP_FILE_PERMISSIONS_DESC: 文件權限
MANAGE_CONSTANT_SFTP_FILE_PERMISSIONS_PLACEHOLDER: 例如0644
MANAGE_CONSTANT_SFTP_DIR_PERMISSIONS_DESC: 目錄權限
MANAGE_CONSTANT_SFTP_DIR_PERMISSIONS_PLACEHOLDER: 例如0755
MANAGE_CONSTANT_SFTP_EXPLAIN: SFTP配置
MANAGE_CONSTANT_SFTP_REFER_TEXT: '配置教程請參考: '
MANAGE_CONSTANT_SFTP_BASE_DIR_RULE_MESSAGE: 起始目錄不能為空
MANAGE_CONSTANT_SFTP_BUCKET_DESC: 特殊配置
MANAGE_CONSTANT_SFTP_BUCKET_PLACEHOLDER: 例如bucket1
MANAGE_CONSTANT_SFTP_BUCKET_TOOLTIP: 此處不可修改,僅為軟體相容性考量
MANAGE_LOGIN_PAGE_PANE_NAME: 已保存配置
MANAGE_LOGIN_PAGE_PANE_KEY_NAME: 配置項
MANAGE_LOGIN_PAGE_PANE_KEY_VALUE: 值
MANAGE_LOGIN_PAGE_PANE_ENTER: 進入
MANAGE_LOGIN_PAGE_PANE_DELETE: 刪除
MANAGE_LOGIN_PAGE_PANE_SELECT_PLACEHOLDER: 請選擇
MANAGE_LOGIN_PAGE_PANE_IMPORT: 導入
MANAGE_LOGIN_PAGE_PANE_SAVE: 保存
MANAGE_LOGIN_PAGE_PANE_RESET: 重置
MANAGE_LOGIN_PAGE_PANE_TABLE_TITLE: 已有配置,單擊可複製對應儲存格資料
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_MESSAGE_A: 請填寫
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_ALIAS_MESSAGE: 別名只能包含中文、英文、數字、下劃線和中劃線
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_ITEMS_PER_PAGE_MESSAGE: 每頁數量必須在20-1000之間
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_CUSTOM_URL_MESSAGE: 自定義網域請以http://或https://開頭
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_NAME: 通知
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE: 已覆蓋別名
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_B: 已保存別名
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_C: 已刪除別名
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_D: 刪除別名為
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_E: 的配置失敗
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_COPY_SUCCESS: 已複製
MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_TITLE: 確定要删除嗎??
MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_TIP: 提示
MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_CONFIRM: 確定
MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_CANCEL: 取消
MANAGE_BUCKET_PAGE_LOADING_TEXT: 載入檔案中...
MANAGE_BUCKET_PAGE_CUSTOM_URL_SELECT_PLACEHOLDER: 請選擇自訂域名
MANAGE_BUCKET_PAGE_CUSTOM_URL_INPUT_PLACEHOLDER: 請輸入自訂域名
MANAGE_BUCKET_PAGE_UPLOAD_FILES_TOOLTIP: 檔案上傳(支援多選)
MANAGE_BUCKET_PAGE_UPLOAD_FROM_URL_TOOLTIP: 從 URL 上傳
MANAGE_BUCKET_PAGE_CREATE_FOLDER_TOOLTIP: 建立資料夾
MANAGE_BUCKET_PAGE_DOWNLOAD_TOOLTIP: 下載頁面
MANAGE_BUCKET_PAGE_BATCH_RENAME_TOOLTIP: 批次重新命名
MANAGE_BUCKET_PAGE_BATCH_COPY_URL_TOOLTIP: 批次複製 URL
MANAGE_BUCKET_PAGE_COPY_FILE_INFO_TOOLTIP: 複製檔案資訊
MANAGE_BUCKET_PAGE_FORCE_REFRESH_TOOLTIP: 強制重新整理檔案列表
MANAGE_BUCKET_PAGE_SEARCH_PLACEHOLDER: 搜尋檔案
MANAGE_BUCKET_PAGE_ROOT_FOLDER: 根目錄
MANAGE_BUCKET_PAGE_FILE_NUMBER: 檔案數:
MANAGE_BUCKET_PAGE_FILE_SIZE: 總大小:
MANAGE_BUCKET_PAGE_SELECT_ALL: 全選
MANAGE_BUCKET_PAGE_SELECT_NONE: 取消選擇
MANAGE_BUCKET_PAGE_SELECT_INVERT: 反選
MANAGE_BUCKET_DOWNLOAD_BTN: 下載
MANAGE_BUCKET_DELETE_BTN: 刪除
MANAGE_BUCKET_SORT_TITLE: 排序
MANAGE_BUCKET_SORT_NAME: 檔案名稱
MANAGE_BUCKET_SORT_SIZE: 大小
MANAGE_BUCKET_SORT_EXT: 類型
MANAGE_BUCKET_SORT_TIME: 時間
MANAGE_BUCKET_SORT_CHECK: 選取狀態
MANAGE_BUCKET_SORT_INIT: 初始化
MANAGE_BUCKET_URL_UPLOAD_DIALOG_TITLE: 請輸入 URL支援多個 URL以換行分隔
MANAGE_BUCKET_URL_UPLOAD_DIALOG_CONFIRM: 確定
MANAGE_BUCKET_URL_UPLOAD_DIALOG_CANCEL: 取消
MANAGE_BUCKET_URL_FORMAT_MARKDOWN: Markdown
MANAGE_BUCKET_URL_FORMAT_MARKDOWN_WITH_LINK: Markdown-link
MANAGE_BUCKET_URL_FORMAT_URL: Url
MANAGE_BUCKET_URL_FORMAT_HTML: Html
MANAGE_BUCKET_URL_FORMAT_BBCODE: BBCode
MANAGE_BUCKET_URL_FORMAT_CUSTOM: 自訂
MANAGE_BUCKET_URL_FORMAT_PRESIGN: 預簽名連結
MANAGE_BUCKET_FILE_INFO_TITLE: 檔案資訊
MANAGE_BUCKET_FILE_INFO_COPY_TIPS: 複製 JSON 格式資訊
MANAGE_BUCKET_FILE_LIST_LOADING: 載入中,點擊取消
MANAGE_BUCKET_FILE_LIST_DOWNLOAD_PRE: 準備下載中,點擊取消
MANAGE_BUCKET_KEEP_FOLDER_STRUCTURE: 保持目錄結構
MANAGE_BUCKET_NOT_KEEP_FOLDER_STRUCTURE: 不保持目錄結構
MANAGE_BUCKET_UPLOAD_AREA_TITLE: 拖放上傳支援遞歸上傳資料夾
MANAGE_BUCKET_UPLOAD_AREA_TEXT: 或:點選選擇檔案(不支援資料夾)
MANAGE_BUCKET_UPLOAD_AREA_BTN_LOADING: 讀取檔案中
MANAGE_BUCKET_UPLOAD_AREA_BTN: 上傳
MANAGE_BUCKET_UPLOAD_AREA_CLEAR: 清空
MANAGE_BUCKET_UPLOAD_AREA_STATUS_UPLOADING: 上傳中
MANAGE_BUCKET_UPLOAD_AREA_COPY_TASK: 複製上傳任務資訊
MANAGE_BUCKET_UPLOAD_AREA_CLEAR_UPLOADED_TASK: 清空已完成任務
MANAGE_BUCKET_UPLOAD_AREA_CLEAR_ALL_TASK: 清空所有任務
MANAGE_BUCKET_UPLOAD_AREA_SUCCESS: 成功
MANAGE_BUCKET_UPLOAD_AREA_FAILED: 失敗
MANAGE_BUCKET_DOWNLOAD_PAGE_TITLE: 下載頁面
MANAGE_BUCKET_DOWNLOADING: 下載中
MANAGE_BUCKET_DOWNLOAD_COPY_TASK: 複製下載任務資訊
MANAGE_BUCKET_DOWNLOAD_CLEAR_DOWNLOADED_TASK: 清空已完成任務
MANAGE_BUCKET_DOWNLOAD_CLEAR_ALL_TASK: 清空所有任務
MANAGE_BUCKET_DOWNLOAD_OPEN_FOLDER: 開啟下載目錄
MANAGE_BUCKET_DOWNLOAD_SUCCESS: 成功
MANAGE_BUCKET_DOWNLOAD_FAILED: 失敗
MANAGE_BUCKET_MARKDOWN_PREVIEW: 預覽
MANAGE_BUCKET_PLAY: 播放
MANAGE_BUCKET_RENAME_FILE: 檔案重新命名
MANAGE_BUCKET_RENAME_FILE_INPUT_A: 進行替換時匹配的字串或 JS 正則表達式
MANAGE_BUCKET_RENAME_FILE_INPUT_A_TIPS: 正則表達式請直接輸入,不需要加上 /
MANAGE_BUCKET_RENAME_FILE_INPUT_A_PLACEHOLDER: 例如:^\d{4}-\d{2}-\d{2}
MANAGE_BUCKET_RENAME_FILE_INPUT_B: 需要替換的字串,可使用自訂重新命名規則中的佔位符
MANAGE_BUCKET_RENAME_FILE_TABLE_IID: 自增數字
MANAGE_BUCKET_RENAME_FILE_EXT: 是否匹配副檔名進行替換
MANAGE_BUCKET_RENAME_FILE_EXT_TIPS: 如果希望修改副檔名,請勾選此項
MANAGE_BUCKET_RENAME_FILE_EXT_YES: 是
MANAGE_BUCKET_RENAME_FILE_EXT_NO: 否
MANAGE_BUCKET_RENAME_FILE_CANCEL: 取消
MANAGE_BUCKET_RENAME_FILE_CONFIRM: 確定
MANAGE_BUCKET_COPY_SUCCESS: 複製成功
MANAGE_BUCKET_START_LOADING_MESSAGE: 開始取得檔案
MANAGE_BUCKET_END_LOADING_MESSAGE_FAIL: 取得檔案內容失敗
MANAGE_BUCKET_LAST_PAGE_TITLE: 提示
MANAGE_BUCKET_LAST_PAGE_MSG: 已經是最後一頁了
MANAGE_BUCKET_GET_LIST_FAIL_TITLE: 提示
MANAGE_BUCKET_GET_LIST_FAIL_MSG: 獲取檔案列表失敗
MANAGE_BUCKET_GET_LIST_FAIL_MSG2: 正在後台獲取檔案列表,請勿切換頁面
MANAGE_BUCKET_GET_LIST_FAIL_MSG3: 正在載入檔案列表,請稍後再試
MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_TITLE: 確定要下載該資料夾嗎?
MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_TIP: 提示
MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_CONFIRM: 確定
MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_CANCEL: 取消
MANAGE_BUCKET_DOWNLOAD_FOLDER_SUCCESS: 獲取下載列表成功
MANAGE_BUCKET_DOWNLOAD_FOLDER_FAIL: 獲取失敗
MANAGE_BUCKET_DOWNLOAD_FOLDER_CANCEL: 已取消
MANAGE_BUCKET_CREATE_FOLDER_BOX_TITLE: 請輸入資料夾名稱
MANAGE_BUCKET_CREATE_FOLDER_BOX_TIP: 新建資料夾
MANAGE_BUCKET_CREATE_FOLDER_BOX_CONFIRM: 確定
MANAGE_BUCKET_CREATE_FOLDER_BOX_CANCEL: 取消
MANAGE_BUCKET_CREATE_FOLDER_ERROR_MSG: 資料夾名稱只能包含中文、英文、數字、下劃線和斜線
MANAGE_BUCKET_CREATE_FOLDER_SUCCESS: 創建成功,請刷新
MANAGE_BUCKET_CREATE_FOLDER_FAIL: 創建失敗
MANAGE_BUCKET_UPLOAD_URL_ERROR_MSQ: 請輸入有效的URL
MANAGE_BUCKET_UPLOAD_URL_NOT_TITLE: 提示
MANAGE_BUCKET_UPLOAD_URL_NOT_MSG: 開始後台下載,成功後自動上傳
MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG: 請輸入匹配字串
MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG2: 沒有匹配到檔案
MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG3: 沒有需要重命名的檔案
MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_A: 檢測到有
MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_B: 個檔案重複,是否繼續
MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_C: 提示
MANAGE_BUCKET_BATCH_RENAME_REPEATED_CONFIRM: 確定
MANAGE_BUCKET_BATCH_RENAME_REPEATED_CANCEL: 取消
MANAGE_BUCKET_BATCH_RENAME_RESULT_MSG_A: 重命名成功
MANAGE_BUCKET_BATCH_RENAME_RESULT_MSG_B: 失敗
MANAGE_BUCKET_BATCH_RENAME_CANCEL: 已取消
MANAGE_BUCKET_BATCH_COPY_INFO_ERROR_MSG: 請先選擇檔案
MANAGE_BUCKET_BATCH_COPY_INFO_MSG_A: 已複製
MANAGE_BUCKET_BATCH_COPY_INFO_MSG_B: 個檔案資訊
MANAGE_BUCKET_BATCH_COPY_URL_ERROR_MSG: 請先選擇檔案
MANAGE_BUCKET_BATCH_COPY_URL_MSG_A: 已複製
MANAGE_BUCKET_BATCH_COPY_URL_MSG_B: 個連結
MANAGE_BUCKET_CANCEL_LOADING_TITLE: 是否停止獲取檔案列表?
MANAGE_BUCKET_CANCEL_LOADING_MSG: 提示
MANAGE_BUCKET_CANCEL_LOADING_CONFIRM: 确定
MANAGE_BUCKET_CANCEL_LOADING_CANCEL: 取消
MANAGE_BUCKET_CANCEL_LOADING_SUCCESS: 文件列表获取已停止
MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_TITLE: 是否停止下载文件获取?
MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_MSG: 提示
MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_CONFIRM: 确定
MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_CANCEL: 取消
MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_SUCCESS: 下载文件获取已停止
MANAGE_BUCKET_GET_FILE_BS_NOT_TITLE: 提示
MANAGE_BUCKET_GET_FILE_BS_NOT_MSG: 获取文件列表成功
MANAGE_BUCKET_GET_FILE_BS_NOT_MSG2: 部分文件获取失败
MANAGE_BUCKET_BATCH_DELETE_CONFIRM_TITLE_A: 将永久删除
MANAGE_BUCKET_BATCH_DELETE_CONFIRM_TITLE_B: 个文件,是否继续?
MANAGE_BUCKET_BATCH_DELETE_CONFIRM_MSG: 提示
MANAGE_BUCKET_BATCH_DELETE_CONFIRM_CONFIRM: 确定
MANAGE_BUCKET_BATCH_DELETE_CONFIRM_CANCEL: 取消
MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_TITLE: 提示
MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_MSG: 删除失败
MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_MSG2: 删除成功
MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_MSG3: 失败
MANAGE_BUCKET_BATCH_DELETE_CANCEL: 已取消删除
MANAGE_BUCKET_DELETE_CONFIRM_TITLE: 将永久删除
MANAGE_BUCKET_DELETE_CONFIRM_TITLE_FOLDER: 文件夹
MANAGE_BUCKET_DELETE_CONFIRM_TITLE_FOLDER_A: 和该目录下的所有文件
MANAGE_BUCKET_DELETE_CONFIRM_TITLE_FILE: 文件
MANAGE_BUCKET_DELETE_CONFIRM_TITLE_C: 是否继续
MANAGE_BUCKET_DELETE_CONFIRM_MSG: 提示
MANAGE_BUCKET_DELETE_CONFIRM_CONFIRM: 确定
MANAGE_BUCKET_DELETE_CONFIRM_CANCEL: 取消
MANAGE_BUCKET_DELETE_ERROR_MSG_TITLE: 提示
MANAGE_BUCKET_DELETE_ERROR_MSG_MSG: 删除文件夹可能需要一段时间,请耐心等待
MANAGE_BUCKET_DELETE_SUCCESS: 刪除成功
MANAGE_BUCKET_DELETE_FAIL: 刪除失敗
MANAGE_BUCKET_DELETE_CANCEL: 已取消删除
MANAGE_BUCKET_RENAME_INFO_MSG: 新文件名和原文件名相同,無需重命名
MANAGE_BUCKET_RENAME_SUCCESS: 重命名成功
MANAGE_BUCKET_RENAME_ERROR_MSG: 重命名失敗
MANAGE_BUCKET_DOWNLOAD_COLUMN_FILENAME: 文件名
MANAGE_BUCKET_DOWNLOAD_COLUMN_FINISHTIME: 完成時間
MANAGE_BUCKET_DOWNLOAD_COLUMN_STATUS: 狀態
MANAGE_BUCKET_DOWNLOAD_COLUMN_STATUS_SUCCESS: 成功
MANAGE_BUCKET_DOWNLOAD_COLUMN_STATUS_FAIL: 失敗
MANAGE_BUCKET_UPLOAD_COLUMN_FILENAME: 文件名
MANAGE_BUCKET_UPLOAD_COLUMN_TARGETFILEPATH: 上傳路徑
MANAGE_BUCKET_UPLOAD_COLUMN_FINISHTIME: 完成時間
MANAGE_BUCKET_UPLOAD_COLUMN_STATUS: 狀態
MANAGE_BUCKET_UPLOAD_COLUMN_STATUS_SUCCESS: 成功
MANAGE_BUCKET_UPLOAD_COLUMN_STATUS_FAIL: 失敗
MANAGE_BUCKET_DOWNLOADING_COLUMN_FILENAME: 文件名
MANAGE_BUCKET_DOWNLOADING_COLUMN_PROGRESS: 進度
MANAGE_BUCKET_UPLOADING_COLUMN_FILENAME: 文件名
MANAGE_BUCKET_UPLOADING_COLUMN_PROGRESS: 進度
MANAGE_BUCKET_UPLOADED_COLUMN_FILENAME: 文件名
MANAGE_BUCKET_UPLOADED_COLUMN_FILESIZE: 大小
MANAGE_BUCKET_UPLOADED_COLUMN_FILENUM: 文件數
MANAGE_BUCKET_FILE_COLUMN_FILENAME: 文件名
MANAGE_BUCKET_FILE_COLUMN_COPY_URL: 複製鏈接
MANAGE_BUCKET_FILE_COLUMN_INFO: 文件信息
MANAGE_BUCKET_FILE_COLUMN_FILESIZE: 大小
MANAGE_BUCKET_FILE_COLUMN_TIME: 修改時間
MANAGE_NEW_BUCKET_TCYUN_NAME: 腾讯雲
MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_DESC: Bucket名稱
MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_PLACEHOLDER: 請輸入Bucket名稱
MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_A: Bucket名稱不能為空
MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_B: Bucket名稱長度不能超過23個字符
MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_C: Bucket名稱只能包含小寫字母、數字和中橫線且不能以中橫線開頭和結尾
MANAGE_NEW_BUCKET_TCYUN_REGION: 區域
MANAGE_NEW_BUCKET_TCYUN_ACL_DESC: 訪問權限
MANAGE_NEW_BUCKET_TCYUN_ACL_PUBLIC_RW: 公共讀寫
MANAGE_NEW_BUCKET_TCYUN_ACL_PUBLIC_R: 公共讀
MANAGE_NEW_BUCKET_TCYUN_ACL_PRIVATE: 私有
MANAGE_NEW_BUCKET_ALIYUN_NAME: 阿里雲
MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_DESC: Bucket名稱
MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_PLACEHOLDER: 請輸入Bucket名稱
MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_A: Bucket名稱不能為空
MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_B: Bucket名稱長度不能超過63個字符
MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_C: Bucket名稱只能包含小寫字母、數字和中橫線且不能以中橫線開頭和結尾
MANAGE_NEW_BUCKET_ALIYUN_REGION: 區域
MANAGE_NEW_BUCKET_ALIYUN_ACL_DESC: 訪問權限
MANAGE_NEW_BUCKET_ALIYUN_ACL_PUBLIC_RW: 公共讀寫
MANAGE_NEW_BUCKET_ALIYUN_ACL_PUBLIC_R: 公共讀
MANAGE_NEW_BUCKET_ALIYUN_ACL_PRIVATE: 私有
MANAGE_NEW_BUCKET_QINIU_NAME: 七牛雲
MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_DESC: Bucket名稱
MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_PLACEHOLDER: 請輸入Bucket名稱
MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_A: Bucket名稱不能為空
MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_B: Bucket名稱長度不能超過63個字符
MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_C: Bucket名稱只能包含小寫字母、數字和中橫線且不能以中橫線開頭和結尾
MANAGE_NEW_BUCKET_QINIU_REGION: 區域
MANAGE_NEW_BUCKET_QINIU_ACL_DESC: 公開訪問
MANAGE_NEW_BUCKET_S3PLIST_NAME: S3兼容雲
MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_DESC: Bucket名稱
MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_PLACEHOLDER: 請輸入Bucket名稱
MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_RULE_MSG_A: Bucket名稱不能為空
MANAGE_NEW_BUCKET_S3PLIST_REGION: 區域
MANAGE_NEW_BUCKET_S3PLIST_ACL_DESC: 訪問權限
MANAGE_NEW_BUCKET_S3PLIST_ACL_PUBLIC_RW: 公共讀寫
MANAGE_NEW_BUCKET_S3PLIST_ACL_PUBLIC_R: 公共讀
MANAGE_NEW_BUCKET_S3PLIST_ACL_PRIVATE: 私有
MANAGE_NEW_BUCKET_S3PLIST_ACL_AUTHENTICATED_READ: 授權讀
PLUGIN_INSTALL_FAILED: 插件安裝失敗
PLUGIN_UNINSTALL_FAILED: 插件卸載失敗
PLUGIN_UPDATE_SUCCEED: 插件更新成功
PLUGIN_UPDATE_FAILED: 插件更新失敗
PLUGIN_IMPORT_SUCCEED: 插件導入成功
PLUGIN_IMPORT_FAILED: 插件導入失敗

View File

@@ -1,500 +0,0 @@
#!/usr/bin/env node
import { readdirSync, readFileSync, writeFileSync } from 'node:fs'
import { basename, dirname, extname, join, relative } from 'node:path'
import { fileURLToPath } from 'node:url'
import { dump, load } from 'js-yaml'
const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename)
const LOCALE_DIR = join(__dirname, '../public/i18n')
const SRC_DIR = join(__dirname, '../src')
// Parse command line arguments
const args = process.argv.slice(2)
const isVerbose = args.includes('--verbose') || args.includes('-v')
const shouldDelete = args.includes('--delete') || args.includes('-d')
const isDryRun = args.includes('--dry-run')
const colors = {
reset: '\x1b[0m',
bright: '\x1b[1m',
red: '\x1b[31m',
green: '\x1b[32m',
yellow: '\x1b[33m',
blue: '\x1b[34m',
magenta: '\x1b[35m',
cyan: '\x1b[36m'
}
function colorize (text, color) {
return `${colors[color]}${text}${colors.reset}`
}
console.log(`\n🔍 Analyzing i18n keys in ${LOCALE_DIR} and source files in ${SRC_DIR}`)
if (shouldDelete) {
console.log(colorize(`🗑️ Delete mode enabled ${isDryRun ? '(DRY RUN)' : ''}`, 'yellow'))
}
console.log('')
function flattenKeys (obj, prefix = '') {
const keys = []
for (const [key, value] of Object.entries(obj)) {
const fullKey = prefix ? `${prefix}.${key}` : key
if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
keys.push(...flattenKeys(value, fullKey))
} else {
keys.push(fullKey)
}
}
return keys
}
function readLocaleFile (filePath) {
try {
const content = readFileSync(filePath, 'utf8')
return load(content) || {}
} catch (error) {
console.error(colorize(`Error reading ${filePath}: ${error.message}`, 'red'))
return {}
}
}
function getAllI18nKeys () {
const localeFiles = readdirSync(LOCALE_DIR).filter(file => file.endsWith('.yml'))
const allKeys = new Set()
const localeData = {}
console.log(colorize('\n📁 Found locale files:', 'blue'))
for (const file of localeFiles) {
const filePath = join(LOCALE_DIR, file)
const locale = basename(file, '.yml')
const data = readLocaleFile(filePath)
const keys = flattenKeys(data)
localeData[locale] = {
file: filePath,
keys,
data
}
keys.forEach(key => allKeys.add(key))
console.log(` ${colorize('✓', 'green')} ${file} (${keys.length} keys)`)
}
return {
allKeys: Array.from(allKeys).sort(),
localeData
}
}
function findFiles (dir, extensions = ['.vue', '.ts', '.js']) {
const files = []
function walk (currentDir) {
try {
const entries = readdirSync(currentDir, { withFileTypes: true })
for (const entry of entries) {
const fullPath = join(currentDir, entry.name)
if (entry.isDirectory()) {
if (!['node_modules', '.git', 'dist', 'build', 'target', 'dist_electron'].includes(entry.name)) {
walk(fullPath)
}
} else if (entry.isFile()) {
const ext = extname(entry.name)
if (extensions.includes(ext)) {
files.push(fullPath)
}
}
}
} catch (error) {
console.warn(colorize(`Warning: Cannot read directory ${currentDir}: ${error.message}`, 'yellow'))
}
}
walk(dir)
return files
}
function findKeyUsage (keys) {
const usage = {}
const dynamicPatterns = []
keys.forEach(key => {
usage[key] = {
used: false,
files: [],
patterns: [],
dynamicMatch: false
}
})
console.log(colorize('\n🔍 Searching for key usage in source files...', 'blue'))
const sourceFiles = findFiles(SRC_DIR)
console.log(` Found ${sourceFiles.length} source files to analyze`)
const searchPatterns = [
/\$T\s*\(\s*['"`]([^'"`]+)['"`]/g,
/(?:^|[^a-zA-Z$])T\s*\(\s*['"`]([^'"`]+)['"`]/g,
/\{\{\s*\$T\s*\(\s*['"`]([^'"`]+)['"`]/g,
/i18nManager\.T\s*\(\s*['"`]([^'"`]+)['"`]/g
]
const dynamicPattern = /\$T\s*\(\s*`([^`]*\$\{[^}]+\}[^`]*)`/g
sourceFiles.forEach(filePath => {
try {
const content = readFileSync(filePath, 'utf8')
const relativePath = relative(join(__dirname, '..'), filePath)
searchPatterns.forEach((pattern, patternIndex) => {
let match
while ((match = pattern.exec(content)) !== null) {
const key = match[1]
if (usage[key]) {
usage[key].used = true
if (!usage[key].files.includes(relativePath)) {
usage[key].files.push(relativePath)
}
if (!usage[key].patterns.includes(patternIndex)) {
usage[key].patterns.push(patternIndex)
}
}
}
})
let dynamicMatch
while ((dynamicMatch = dynamicPattern.exec(content)) !== null) {
const templateString = dynamicMatch[1]
const staticParts = templateString.split(/\$\{[^}]+\}/)
const patternInfo = {
template: templateString,
file: relativePath,
staticParts
}
if (!dynamicPatterns.some(p => p.template === templateString && p.file === relativePath)) {
dynamicPatterns.push(patternInfo)
}
keys.forEach(key => {
if (matchesDynamicPattern(key, staticParts)) {
if (usage[key]) {
usage[key].used = true
usage[key].dynamicMatch = true
if (!usage[key].files.includes(relativePath)) {
usage[key].files.push(relativePath)
}
if (!usage[key].patterns.includes('dynamic')) {
usage[key].patterns.push('dynamic')
}
}
}
})
}
} catch (error) {
console.error(colorize(`Error reading ${filePath}: ${error.message}`, 'red'))
}
})
usage._dynamicPatterns = dynamicPatterns
return usage
}
function matchesDynamicPattern (key, staticParts) {
if (staticParts.length === 0) return false
let keyIndex = 0
for (let i = 0; i < staticParts.length; i++) {
const part = staticParts[i]
if (part === '') {
if (i < staticParts.length - 1) {
const nextPart = staticParts[i + 1]
if (nextPart) {
const nextIndex = key.indexOf(nextPart, keyIndex)
if (nextIndex === -1) return false
keyIndex = nextIndex
}
}
continue
}
if (i === 0) {
if (!key.startsWith(part)) return false
keyIndex = part.length
} else if (i === staticParts.length - 1) {
if (part && !key.endsWith(part)) return false
} else {
const index = key.indexOf(part, keyIndex)
if (index === -1) return false
keyIndex = index + part.length
}
}
return true
}
function findLocaleInconsistencies (localeData) {
const locales = Object.keys(localeData)
const inconsistencies = {}
if (locales.length < 2) {
return inconsistencies
}
locales.forEach(locale => {
const currentKeys = new Set(localeData[locale].keys)
inconsistencies[locale] = {
missing: [],
extra: []
}
locales.forEach(otherLocale => {
if (locale !== otherLocale) {
localeData[otherLocale].keys.forEach(key => {
if (!currentKeys.has(key) && !inconsistencies[locale].missing.includes(key)) {
inconsistencies[locale].missing.push(key)
}
})
}
})
localeData[locale].keys.forEach(key => {
const existsInOthers = locales.some(
otherLocale => locale !== otherLocale && localeData[otherLocale].keys.includes(key)
)
if (!existsInOthers) {
inconsistencies[locale].extra.push(key)
}
})
})
return inconsistencies
}
function deleteUnusedKeys (unusedKeys, localeData, isDryRun = false) {
const results = {}
Object.entries(localeData).forEach(([locale, data]) => {
results[locale] = {
deleted: [],
errors: []
}
try {
const updatedData = { ...data.data }
unusedKeys.forEach(key => {
if (key in updatedData) {
if (!isDryRun) {
delete updatedData[key]
}
results[locale].deleted.push(key)
}
})
if (!isDryRun && results[locale].deleted.length > 0) {
const yamlContent = dump(updatedData, {
indent: 2,
lineWidth: -1,
noRefs: true,
sortKeys: false
})
writeFileSync(data.file, yamlContent, 'utf8')
}
} catch (error) {
results[locale].errors.push(`Failed to process ${locale}: ${error.message}`)
}
})
return results
}
function main () {
console.log(colorize('🌐 PicList - I18n Usage Analyzer', 'cyan'))
console.log(colorize('==================================', 'cyan'))
const { allKeys, localeData } = getAllI18nKeys()
console.log(colorize(`\n📊 Total unique keys found: ${allKeys.length}`, 'yellow'))
const usage = findKeyUsage(allKeys)
const dynamicPatterns = usage._dynamicPatterns || []
delete usage._dynamicPatterns
const usedKeys = allKeys.filter(key => usage[key].used)
const unusedKeys = allKeys.filter(key => !usage[key].used)
const dynamicallyUsedKeys = usedKeys.filter(key => usage[key].dynamicMatch)
const staticUsedKeys = usedKeys.filter(key => !usage[key].dynamicMatch)
const inconsistencies = findLocaleInconsistencies(localeData)
console.log(colorize('\n📈 Usage Summary:', 'blue'))
console.log(` ${colorize('✓', 'green')} Used keys: ${usedKeys.length}`)
console.log(` ${colorize('→', 'cyan')} Static usage: ${staticUsedKeys.length}`)
console.log(` ${colorize('→', 'magenta')} Dynamic usage: ${dynamicallyUsedKeys.length}`)
console.log(` ${colorize('✗', 'red')} Unused keys: ${unusedKeys.length}`)
console.log(` ${colorize('📊', 'yellow')} Usage rate: ${((usedKeys.length / allKeys.length) * 100).toFixed(1)}%`)
if (dynamicPatterns.length > 0) {
console.log(colorize('\n🔮 Dynamic I18n Patterns Detected:', 'magenta'))
console.log(colorize('===================================', 'magenta'))
dynamicPatterns.forEach((pattern, index) => {
console.log(colorize(`\n${index + 1}. Template: \`${pattern.template}\``, 'cyan'))
console.log(` File: ${pattern.file}`)
console.log(` Static parts: [${pattern.staticParts.map(p => `"${p}"`).join(', ')}]`)
const matchingKeys = allKeys.filter(key => matchesDynamicPattern(key, pattern.staticParts))
if (matchingKeys.length > 0) {
console.log(
` ${colorize('Matches', 'green')} (${matchingKeys.length}): ${matchingKeys.slice(0, 5).join(', ')}${
matchingKeys.length > 5 ? '...' : ''
}`
)
}
})
}
if (unusedKeys.length > 0) {
console.log(colorize('\n🗑 Unused I18n Keys:', 'red'))
console.log(colorize('====================', 'red'))
const groupedUnused = {}
unusedKeys.forEach(key => {
const namespace = key.includes('.') ? key.split('.')[0] : 'ROOT'
if (!groupedUnused[namespace]) {
groupedUnused[namespace] = []
}
groupedUnused[namespace].push(key)
})
Object.entries(groupedUnused).forEach(([namespace, keys]) => {
console.log(colorize(`\n[${namespace}] - ${keys.length} unused keys:`, 'yellow'))
keys.forEach(key => {
console.log(` ${colorize('✗', 'red')} ${key}`)
})
})
} else {
console.log(colorize('\n🎉 No unused keys found! All i18n keys are being used.', 'green'))
}
const hasInconsistencies = Object.values(inconsistencies).some(inc => inc.missing.length > 0 || inc.extra.length > 0)
if (hasInconsistencies) {
console.log(colorize('\n⚠ Locale Inconsistencies:', 'yellow'))
console.log(colorize('=========================', 'yellow'))
Object.entries(inconsistencies).forEach(([locale, data]) => {
if (data.missing.length > 0 || data.extra.length > 0) {
console.log(colorize(`\n[${locale}.yml]:`, 'cyan'))
if (data.missing.length > 0) {
console.log(colorize(` Missing ${data.missing.length} keys:`, 'red'))
data.missing.forEach(key => {
console.log(` ${colorize('✗', 'red')} ${key}`)
})
}
if (data.extra.length > 0) {
console.log(colorize(` Extra ${data.extra.length} keys:`, 'blue'))
data.extra.forEach(key => {
console.log(` ${colorize('!', 'blue')} ${key}`)
})
}
}
})
}
if (isVerbose) {
console.log(colorize('\n📋 Sample Used Keys (first 10):', 'blue'))
console.log(colorize('=================================', 'blue'))
usedKeys.slice(0, 10).forEach(key => {
const files = usage[key].files.slice(0, 3)
const moreFiles = usage[key].files.length > 3 ? ` (+${usage[key].files.length - 3} more)` : ''
const usageType = usage[key].dynamicMatch ? colorize('(dynamic)', 'magenta') : colorize('(static)', 'cyan')
console.log(` ${colorize('✓', 'green')} ${key} ${usageType}`)
console.log(` Used in: ${files.join(', ')}${moreFiles}`)
})
if (dynamicallyUsedKeys.length > 0) {
console.log(colorize('\n🔮 Dynamic Key Usage Details:', 'magenta'))
console.log(colorize('=============================', 'magenta'))
dynamicallyUsedKeys.slice(0, 5).forEach(key => {
const files = usage[key].files.slice(0, 2)
console.log(` ${colorize('✨', 'magenta')} ${key}`)
console.log(` Files: ${files.join(', ')}`)
})
if (dynamicallyUsedKeys.length > 5) {
console.log(` ... and ${dynamicallyUsedKeys.length - 5} more dynamic keys`)
}
}
}
if (shouldDelete && unusedKeys.length > 0) {
console.log(colorize('\n🗑 Deleting Unused Keys:', 'yellow'))
console.log(colorize('=========================', 'yellow'))
if (isDryRun) {
console.log(colorize('🔍 DRY RUN MODE - No files will be modified', 'cyan'))
}
const deletionResults = deleteUnusedKeys(unusedKeys, localeData, isDryRun)
Object.entries(deletionResults).forEach(([locale, result]) => {
console.log(colorize(`\n[${locale}.yml]:`, 'cyan'))
if (result.deleted.length > 0) {
console.log(colorize(` Deleted ${result.deleted.length} keys:`, 'green'))
result.deleted.forEach(key => {
console.log(` ${colorize('✓', 'green')} ${key}`)
})
}
if (result.errors.length > 0) {
console.log(colorize(` Errors ${result.errors.length}:`, 'red'))
result.errors.forEach(error => {
console.log(` ${colorize('✗', 'red')} ${error}`)
})
}
})
if (!isDryRun) {
console.log(colorize('\n✨ Deletion complete! Remember to regenerate type definitions.', 'green'))
console.log(colorize('💡 Run `yarn i18n` to update TypeScript types', 'blue'))
}
}
console.log(colorize('\n✨ Analysis complete!', 'cyan'))
if (unusedKeys.length > 0 && !shouldDelete) {
console.log(colorize('\n💡 Tips:', 'blue'))
console.log(colorize('- Run with --verbose (-v) flag to see usage details of used keys', 'blue'))
console.log(colorize('- Run with --delete (-d) flag to automatically remove unused keys', 'blue'))
console.log(colorize('- Run with --delete --dry-run to preview what would be deleted', 'blue'))
} else if (unusedKeys.length === 0) {
console.log(colorize('\n💡 Tip: Run with --verbose (-v) flag to see usage details of used keys', 'blue'))
}
if (unusedKeys.length > 0 && !shouldDelete) {
process.exit(1)
}
}
main()

View File

@@ -8,7 +8,7 @@ const languageFileName = 'zh-CN.yml'
const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename)
const i18nFolder = join(__dirname, '../public/i18n')
const i18nFolder = join(__dirname, '../resources/i18n')
const typeFolder = join(__dirname, '../src/universal/types')
const languageFile = join(i18nFolder, languageFileName)

27
scripts/yamltojson.js Normal file
View File

@@ -0,0 +1,27 @@
// convert-yaml-to-json.mjs
import fs from 'node:fs/promises'
import path from 'node:path'
import { fileURLToPath } from 'node:url'
import yaml from 'js-yaml'
const __filename = fileURLToPath(import.meta.url)
const __dirname = path.dirname(__filename)
// Change these paths as needed
const inputPath = path.resolve('./resources/i18n/zh-TW.yml')
const outputPath = path.resolve(__dirname, './zh-TW.json')
async function convertYamlToJson (yamlFile, jsonFile) {
try {
const fileContent = await fs.readFile(yamlFile, 'utf8')
const data = yaml.load(fileContent)
const jsonContent = JSON.stringify(data, null, 2)
await fs.writeFile(jsonFile, jsonContent, 'utf8')
console.log(`Converted ${yamlFile} to ${jsonFile}`)
} catch (err) {
console.error('Error during conversion:', err)
}
}
convertYamlToJson(inputPath, outputPath)

View File

@@ -22,7 +22,7 @@ import { IPasteStyle, IWindowList } from '#/types/enum'
import { IBounds, ImgInfo } from '#/types/types'
import { configPaths } from '#/utils/configPaths'
import { buildPicBedListMenu } from '~/events/remotes/menu'
import { T } from '~/i18n'
import { T as $t } from '~/i18n'
import clipboardPoll from '~/utils/clipboardPoll'
import { ensureFilePath, handleCopyUrl, setTray, tray } from '~/utils/common'
import { isMacOSVersionGreaterThanOrEqualTo } from '~/utils/getMacOSVersion'
@@ -40,11 +40,11 @@ export function setDockMenu () {
const isListeningClipboard = db.get(configPaths.settings.isListeningClipboard) || false
const dockMenu = Menu.buildFromTemplate([
{
label: T('OPEN_MAIN_WINDOW'),
label: $t('OPEN_MAIN_WINDOW'),
click: openMainWindow
},
{
label: T('START_WATCH_CLIPBOARD'),
label: $t('START_WATCH_CLIPBOARD'),
click () {
db.set(configPaths.settings.isListeningClipboard, true)
clipboardPoll.startListening()
@@ -57,7 +57,7 @@ export function setDockMenu () {
visible: !isListeningClipboard
},
{
label: T('STOP_WATCH_CLIPBOARD'),
label: $t('STOP_WATCH_CLIPBOARD'),
click () {
db.set(configPaths.settings.isListeningClipboard, false)
clipboardPoll.stopListening()
@@ -76,9 +76,9 @@ export function createMenu () {
{
label: 'PicList',
submenu: [
{ label: T('OPEN_MAIN_WINDOW'), click: openMainWindow },
{ label: $t('OPEN_MAIN_WINDOW'), click: openMainWindow },
{
label: T('RELOAD_APP'),
label: $t('RELOAD_APP'),
click () {
app.relaunch()
app.exit(0)
@@ -86,7 +86,7 @@ export function createMenu () {
}
]
},
{ label: T('CHOOSE_DEFAULT_PICBED'), type: 'submenu', submenu },
{ label: $t('CHOOSE_DEFAULT_PICBED'), type: 'submenu', submenu },
{
label: 'Edit',
submenu: [
@@ -100,8 +100,8 @@ export function createMenu () {
]
},
{
label: T('QUIT'),
submenu: [{ label: T('QUIT'), role: 'quit' }]
label: $t('QUIT'),
submenu: [{ label: $t('QUIT'), role: 'quit' }]
}
])
Menu.setApplicationMenu(appMenu)
@@ -133,40 +133,40 @@ export function createContextMenu () {
if (process.platform === 'darwin' || process.platform === 'win32') {
const submenu = buildPicBedListMenu()
const template: (MenuItemConstructorOptions | MenuItem)[] = [
{ label: T('OPEN_MAIN_WINDOW'), click: openMainWindow },
{ label: T('CHOOSE_DEFAULT_PICBED'), type: 'submenu', submenu },
{ label: $t('OPEN_MAIN_WINDOW'), click: openMainWindow },
{ label: $t('CHOOSE_DEFAULT_PICBED'), type: 'submenu', submenu },
{
label: T('START_WATCH_CLIPBOARD'),
label: $t('START_WATCH_CLIPBOARD'),
click: startWatchClipboard,
visible: !isListeningClipboard
},
{
label: T('STOP_WATCH_CLIPBOARD'),
label: $t('STOP_WATCH_CLIPBOARD'),
click: stopWatchClipboard,
visible: isListeningClipboard
},
{
label: T('RELOAD_APP'),
label: $t('RELOAD_APP'),
click () {
app.relaunch()
app.exit(0)
}
},
{ label: T('QUIT'), role: 'quit' }
{ label: $t('QUIT'), role: 'quit' }
]
if (process.platform === 'win32') {
template.splice(
2,
0,
{
label: T('OPEN_MINI_WINDOW'),
label: $t('OPEN_MINI_WINDOW'),
click () {
openMiniWindow(false)
},
visible: !isMiniWindowVisible
},
{
label: T('HIDE_MINI_WINDOW'),
label: $t('HIDE_MINI_WINDOW'),
click: hideMiniWindow,
visible: isMiniWindowVisible
}
@@ -182,31 +182,31 @@ export function createContextMenu () {
// 目前的实现无法正常工作
contextMenu = Menu.buildFromTemplate([
{ label: T('OPEN_MAIN_WINDOW'), click: openMainWindow },
{ label: $t('OPEN_MAIN_WINDOW'), click: openMainWindow },
{
label: T('OPEN_MINI_WINDOW'),
label: $t('OPEN_MINI_WINDOW'),
click () {
openMiniWindow(false)
},
visible: !isMiniWindowVisible
},
{
label: T('HIDE_MINI_WINDOW'),
label: $t('HIDE_MINI_WINDOW'),
click: hideMiniWindow,
visible: isMiniWindowVisible
},
{
label: T('START_WATCH_CLIPBOARD'),
label: $t('START_WATCH_CLIPBOARD'),
click: startWatchClipboard,
visible: !isListeningClipboard
},
{
label: T('STOP_WATCH_CLIPBOARD'),
label: $t('STOP_WATCH_CLIPBOARD'),
click: stopWatchClipboard,
visible: isListeningClipboard
},
{
label: T('ABOUT'),
label: $t('ABOUT'),
click () {
dialog.showMessageBox({
title: 'PicList',
@@ -216,7 +216,7 @@ export function createContextMenu () {
})
}
},
{ label: T('QUIT'), role: 'quit' }
{ label: $t('QUIT'), role: 'quit' }
])
}
}
@@ -343,7 +343,7 @@ export function createTray (tooltip: string) {
: !!db.get(configPaths.settings.uploadResultNotification)
if (isShowResultNotification) {
const notification = new Notification({
title: T('UPLOAD_SUCCEED'),
title: $t('UPLOAD_SUCCEED'),
body: shortUrl || imgs[i].imgUrl!
// icon: files[i]
})

View File

@@ -10,7 +10,7 @@ import { IPicGo } from 'piclist'
import { IPasteStyle, IWindowList } from '#/types/enum'
import { IFileWithPath, ImgInfo, IStringKeyMap, IUploadOption } from '#/types/types'
import { configPaths } from '#/utils/configPaths'
import { T } from '~/i18n/index'
import { T as $t } from '~/i18n/index'
import { handleCopyUrl, handleUrlEncodeWithSetting } from '~/utils/common'
import { changeCurrentUploader } from '~/utils/handleUploaderConfig'
import pasteTemplate from '~/utils/pasteTemplate'
@@ -61,7 +61,7 @@ export const uploadClipboardFiles = async (): Promise<IStringKeyMap> => {
: !!db.get(configPaths.settings.uploadResultNotification)
if (isShowResultNotification) {
const notification = new Notification({
title: T('UPLOAD_SUCCEED'),
title: $t('UPLOAD_SUCCEED'),
body: shortUrl || img[0].imgUrl!
// icon: img[0].imgUrl
})
@@ -82,8 +82,8 @@ export const uploadClipboardFiles = async (): Promise<IStringKeyMap> => {
}
} else {
const notification = new Notification({
title: T('UPLOAD_FAILED'),
body: T('TIPS_UPLOAD_NOT_PICTURES')
title: $t('UPLOAD_FAILED'),
body: $t('TIPS_UPLOAD_NOT_PICTURES')
})
notification.show()
return {
@@ -141,7 +141,7 @@ export const uploadChoosedFiles = async (
: !!db.get(configPaths.settings.uploadResultNotification)
if (isShowResultNotification) {
const notification = new Notification({
title: T('UPLOAD_SUCCEED'),
title: $t('UPLOAD_SUCCEED'),
body: shortUrl || imgs[i].imgUrl!
// icon: files[i].path
})

View File

@@ -11,13 +11,13 @@ import fs from 'fs-extra'
import { IPicGo } from 'piclist'
import writeFile from 'write-file-atomic'
import { GET_RENAME_FILE_NAME, RENAME_FILE_NAME, TALKING_DATA_EVENT } from '#/events/constants'
import { GET_RENAME_FILE_NAME, RENAME_FILE_NAME } from '#/events/constants'
import { ICOREBuildInEvent, IWindowList } from '#/types/enum'
import { IAnalyticsData, ImgInfo, ITalkingDataOptions, IUploadOption } from '#/types/types'
import { ImgInfo, IUploadOption } from '#/types/types'
import { configPaths } from '#/utils/configPaths'
import { CLIPBOARD_IMAGE_FOLDER } from '#/utils/static'
import { T } from '~/i18n'
import { calcDurationRange, getClipboardFilePath, showNotification } from '~/utils/common'
import { T as $t } from '~/i18n'
import { getClipboardFilePath, showNotification } from '~/utils/common'
const waitForRename = (window: BrowserWindow, id: number): Promise<string | null> => {
return new Promise(resolve => {
@@ -33,21 +33,6 @@ const waitForRename = (window: BrowserWindow, id: number): Promise<string | null
})
}
const handleTalkingData = (webContents: WebContents, options: IAnalyticsData) => {
const { type, fromClipboard, count, duration } = options
const data: ITalkingDataOptions = {
EventId: 'upload',
Label: type,
MapKv: {
by: fromClipboard ? 'clipboard' : 'files',
count,
duration: calcDurationRange(duration || 0),
type
}
}
webContents.send(TALKING_DATA_EVENT, data)
}
class Uploader {
private webContents: WebContents | null = null
@@ -67,8 +52,8 @@ class Uploader {
picgo.on(ICOREBuildInEvent.BEFORE_TRANSFORM, () => {
if (db.get(configPaths.settings.uploadNotification)) {
const notification = new Notification({
title: T('UPLOAD_PROGRESS'),
body: T('UPLOADING')
title: $t('UPLOAD_PROGRESS'),
body: $t('UPLOADING')
})
notification.show()
}
@@ -164,19 +149,9 @@ class Uploader {
async uploadReturnCtx (img?: IUploadOption, skipProcess = false): Promise<IPicGo | false> {
try {
const startTime = Date.now()
const ctx = await picgo.uploadReturnCtx(img, skipProcess)
if (!Array.isArray(ctx.output) || !ctx.output.some((item: ImgInfo) => item.imgUrl)) return false
if (this.webContents) {
handleTalkingData(this.webContents, {
fromClipboard: !img,
type: db.get(configPaths.picBed.uploader) || db.get(configPaths.picBed.current) || 'smms',
count: img ? img.length : 1,
duration: Date.now() - startTime
} as IAnalyticsData)
}
ctx.output.forEach((item: ImgInfo) => {
item.config = JSON.parse(JSON.stringify(db.get(`picBed.${item.type}`)))
})
@@ -186,7 +161,7 @@ class Uploader {
logger.error(e)
setTimeout(() => {
showNotification({
title: T('UPLOAD_FAILED'),
title: $t('UPLOAD_FAILED'),
body: util.format(e.stack),
clickToCopy: true
})
@@ -199,18 +174,8 @@ class Uploader {
async upload (img?: IUploadOption): Promise<ImgInfo[] | false> {
try {
const startTime = Date.now()
const output = await picgo.upload(img)
if (!Array.isArray(output) || !output.some((item: ImgInfo) => item.imgUrl)) return false
if (this.webContents) {
handleTalkingData(this.webContents, {
fromClipboard: !img,
type: db.get(configPaths.picBed.uploader) || db.get(configPaths.picBed.current) || 'smms',
count: img ? img.length : 1,
duration: Date.now() - startTime
} as IAnalyticsData)
}
output.forEach((item: ImgInfo) => {
item.config = JSON.parse(JSON.stringify(db.get(`picBed.${item.type}`)))
})
@@ -219,7 +184,7 @@ class Uploader {
logger.error(e)
setTimeout(() => {
showNotification({
title: T('UPLOAD_FAILED'),
title: $t('UPLOAD_FAILED'),
body: util.format(e.stack),
clickToCopy: true
})

View File

@@ -10,7 +10,7 @@ import { IWindowListItem } from '#/types/electron'
import { IWindowList } from '#/types/enum'
import { IBrowserWindowOptions } from '#/types/types'
import { configPaths } from '#/utils/configPaths'
import { T } from '~/i18n'
import { T as $t } from '~/i18n'
import logo from '../../../../../resources/logo.png?asset'
import {
@@ -171,7 +171,7 @@ const toolboxWindowOptions = {
center: true,
fullscreenable: false,
resizable: false,
title: `PicList ${T('TOOLBOX')}`,
title: `PicList ${$t('TOOLBOX')}`,
vibrancy: 'ultra-dark',
icon: logo,
webPreferences: {

View File

@@ -7,7 +7,7 @@ import fs from 'fs-extra'
import writeFile from 'write-file-atomic'
import { notificationList } from '#/utils/notification'
import { T } from '~/i18n'
import { T as $t } from '~/i18n'
const STORE_PATH = app.getPath('userData')
@@ -19,8 +19,8 @@ let _configFilePath = ''
let hasCheckPath = false
const errorMsg = {
broken: T('TIPS_PICGO_CONFIG_FILE_BROKEN_WITH_DEFAULT'),
brokenButBackup: T('TIPS_PICGO_CONFIG_FILE_BROKEN_WITH_BACKUP')
broken: $t('TIPS_PICGO_CONFIG_FILE_BROKEN_WITH_DEFAULT'),
brokenButBackup: $t('TIPS_PICGO_CONFIG_FILE_BROKEN_WITH_BACKUP')
}
function dbChecker () {
@@ -41,7 +41,7 @@ function dbChecker () {
}
let configFile: string = '{}'
const optionsTpl = {
title: T('TIPS_NOTICE'),
title: $t('TIPS_NOTICE'),
body: ''
}
// config save bak
@@ -58,7 +58,7 @@ function dbChecker () {
JSON.parse(configFile)
writeFile.sync(configFilePath, configFile, { encoding: 'utf-8' })
const stats = fs.statSync(configFileBackupPath)
optionsTpl.body = `${errorMsg.brokenButBackup}\n${T('TIPS_PICGO_BACKUP_FILE_VERSION', {
optionsTpl.body = `${errorMsg.brokenButBackup}\n${$t('TIPS_PICGO_BACKUP_FILE_VERSION', {
v: dayjs(stats.mtime).format('YYYY-MM-DD HH:mm:ss')
})}`
notificationList.push(optionsTpl)
@@ -108,8 +108,8 @@ function dbPathChecker (): string {
const logger = getLogger(piclistLogPath, 'PicList')
if (!hasCheckPath) {
const optionsTpl = {
title: T('TIPS_NOTICE'),
body: T('TIPS_CUSTOM_CONFIG_FILE_PATH_ERROR')
title: $t('TIPS_NOTICE'),
body: $t('TIPS_CUSTOM_CONFIG_FILE_PATH_ERROR')
}
notificationList.push(optionsTpl)
hasCheckPath = true

View File

@@ -4,7 +4,7 @@ import fs from 'fs-extra'
import { IConfig } from 'piclist'
import { configPaths } from '#/utils/configPaths'
import { T } from '~/i18n'
import { T as $t } from '~/i18n'
interface IJSON {
[propsName: string]: string | number | IJSON
}
@@ -37,7 +37,7 @@ class ConfigStore {
enable: true,
key: 'CommandOrControl+Alt+P',
name: 'upload',
label: T('QUICK_UPLOAD')
label: $t('QUICK_UPLOAD')
})
}
this.read()

View File

@@ -12,7 +12,7 @@ import { SHOW_INPUT_BOX } from '#/events/constants'
import { IPasteStyle } from '#/types/enum'
import { IGuiApi, ImgInfo, IShowFileExplorerOption, IShowInputBoxOption, IShowMessageBoxOption, IShowMessageBoxResult, IShowNotificationOption, IUploadOption } from '#/types/types'
import { configPaths } from '#/utils/configPaths'
import { T } from '~/i18n'
import { T as $t } from '~/i18n'
import { handleCopyUrl } from '~/utils/common'
import pasteTemplate from '~/utils/pasteTemplate'
@@ -104,7 +104,7 @@ class GuiApi implements IGuiApi {
: !!db.get(configPaths.settings.uploadResultNotification)
if (isShowResultNotification) {
const notification = new Notification({
title: T('UPLOAD_SUCCEED'),
title: $t('UPLOAD_SUCCEED'),
body: shortUrl || (imgs[i].imgUrl! as string)
// icon: imgs[i].imgUrl
})
@@ -179,8 +179,8 @@ class GuiApi implements IGuiApi {
const guiApi = GuiApi.getInstance()
guiApi
.showMessageBox({
title: T('TIPS_WARNING'),
message: T('TIPS_PLUGIN_REMOVE_GALLERY_ITEM'),
title: $t('TIPS_WARNING'),
message: $t('TIPS_PLUGIN_REMOVE_GALLERY_ITEM'),
type: 'info',
buttons: ['Yes', 'No']
})
@@ -202,8 +202,8 @@ class GuiApi implements IGuiApi {
const guiApi = GuiApi.getInstance()
guiApi
.showMessageBox({
title: T('TIPS_WARNING'),
message: T('TIPS_PLUGIN_REMOVE_GALLERY_ITEM'),
title: $t('TIPS_WARNING'),
message: $t('TIPS_PLUGIN_REMOVE_GALLERY_ITEM'),
type: 'info',
buttons: ['Yes', 'No']
})

View File

@@ -18,7 +18,7 @@ import { IWindowList } from '#/types/enum'
import { IPicGoPlugin, IUploaderConfig } from '#/types/types'
import { configPaths } from '#/utils/configPaths'
import { handlePluginUninstall, handlePluginUpdate } from '~/events/rpc/routes/plugin/utils'
import { T } from '~/i18n'
import { T as $t } from '~/i18n'
import clipboardPoll from '~/utils/clipboardPoll'
import { setTrayToolTip } from '~/utils/common'
import getPicBeds from '~/utils/getPicBeds'
@@ -36,28 +36,28 @@ const buildMiniPageMenu = () => {
const submenu = buildPicBedListMenu()
const template: (MenuItemConstructorOptions | MenuItem)[] = [
{
label: T('OPEN_MAIN_WINDOW'),
label: $t('OPEN_MAIN_WINDOW'),
click: openMainWindow
},
{
label: T('CHOOSE_DEFAULT_PICBED'),
label: $t('CHOOSE_DEFAULT_PICBED'),
type: 'submenu',
submenu
},
{
label: T('UPLOAD_BY_CLIPBOARD'),
label: $t('UPLOAD_BY_CLIPBOARD'),
click () {
uploadClipboardFiles()
}
},
{
label: T('HIDE_MINI_WINDOW'),
label: $t('HIDE_MINI_WINDOW'),
click () {
BrowserWindow.getFocusedWindow()!.hide()
}
},
{
label: T('START_WATCH_CLIPBOARD'),
label: $t('START_WATCH_CLIPBOARD'),
click () {
db.set(configPaths.settings.isListeningClipboard, true)
ClipboardWatcher.startListening()
@@ -70,7 +70,7 @@ const buildMiniPageMenu = () => {
visible: !isListeningClipboard
},
{
label: T('STOP_WATCH_CLIPBOARD'),
label: $t('STOP_WATCH_CLIPBOARD'),
click () {
db.set(configPaths.settings.isListeningClipboard, false)
ClipboardWatcher.stopListening()
@@ -80,7 +80,7 @@ const buildMiniPageMenu = () => {
visible: isListeningClipboard
},
{
label: T('RELOAD_APP'),
label: $t('RELOAD_APP'),
click () {
app.relaunch()
app.exit(0)
@@ -88,7 +88,7 @@ const buildMiniPageMenu = () => {
},
{
role: 'quit',
label: T('QUIT')
label: $t('QUIT')
}
]
return Menu.buildFromTemplate(template)
@@ -97,7 +97,7 @@ const buildMiniPageMenu = () => {
const buildMainPageMenu = (win: BrowserWindow) => {
const template = [
{
label: T('ABOUT'),
label: $t('ABOUT'),
click () {
dialog.showMessageBox({
title: 'PicList',
@@ -107,26 +107,26 @@ const buildMainPageMenu = (win: BrowserWindow) => {
}
},
{
label: T('SHOW_PICBED_QRCODE'),
label: $t('SHOW_PICBED_QRCODE'),
click () {
win?.webContents?.send(SHOW_MAIN_PAGE_QRCODE)
}
},
{
label: T('OPEN_TOOLBOX'),
label: $t('OPEN_TOOLBOX'),
click () {
const window = windowManager.create(IWindowList.TOOLBOX_WINDOW)
window?.show()
}
},
{
label: T('SHOW_DEVTOOLS'),
label: $t('SHOW_DEVTOOLS'),
click () {
win?.webContents?.openDevTools({ mode: 'detach' })
}
},
{
label: T('FEEDBACK'),
label: $t('FEEDBACK'),
click () {
const url = 'https://github.com/Kuingsmile/PicList/issues'
shell.openExternal(url)
@@ -144,7 +144,7 @@ const buildSecondPicBedMenu = () => {
const picBedConfigList = picgo.getConfig<IUploaderConfig>('uploader')
const currentPicBedMenuItem = [
{
label: `${T('CURRENT_SECOND_PICBED')} - ${currentPicBedName || 'None'}`,
label: `${$t('CURRENT_SECOND_PICBED')} - ${currentPicBedName || 'None'}`,
enabled: false
},
{
@@ -196,7 +196,7 @@ const buildPicBedListMenu = () => {
const picBedConfigList = picgo.getConfig<IUploaderConfig>('uploader')
const currentPicBedMenuItem = [
{
label: `${T('CURRENT_PICBED')} - ${currentPicBedName}`,
label: `${$t('CURRENT_PICBED')} - ${currentPicBedName}`,
enabled: false
},
{
@@ -276,7 +276,7 @@ const handleRestoreState = (item: string, name: string): void => {
const buildPluginPageMenu = (plugin: IPicGoPlugin) => {
const menu = [
{
label: T('ENABLE_PLUGIN'),
label: $t('ENABLE_PLUGIN'),
enabled: !plugin.enabled,
click () {
picgo.saveConfig({
@@ -287,7 +287,7 @@ const buildPluginPageMenu = (plugin: IPicGoPlugin) => {
}
},
{
label: T('DISABLE_PLUGIN'),
label: $t('DISABLE_PLUGIN'),
enabled: plugin.enabled,
click () {
picgo.saveConfig({
@@ -306,7 +306,7 @@ const buildPluginPageMenu = (plugin: IPicGoPlugin) => {
}
},
{
label: T('UNINSTALL_PLUGIN'),
label: $t('UNINSTALL_PLUGIN'),
click () {
const window = windowManager.get(IWindowList.SETTING_WINDOW)!
window.webContents.send(PICGO_HANDLE_PLUGIN_ING, plugin.fullName)
@@ -314,7 +314,7 @@ const buildPluginPageMenu = (plugin: IPicGoPlugin) => {
}
},
{
label: T('UPDATE_PLUGIN'),
label: $t('UPDATE_PLUGIN'),
click () {
const window = windowManager.get(IWindowList.SETTING_WINDOW)!
window.webContents.send(PICGO_HANDLE_PLUGIN_ING, plugin.fullName)
@@ -325,7 +325,7 @@ const buildPluginPageMenu = (plugin: IPicGoPlugin) => {
for (const i in plugin.config) {
if (plugin.config[i].config.length > 0) {
const obj = {
label: T('CONFIG_THING', {
label: $t('CONFIG_THING', {
c: `${i} - ${plugin.config[i].fullName || plugin.config[i].name}`
}),
click () {
@@ -345,7 +345,7 @@ const buildPluginPageMenu = (plugin: IPicGoPlugin) => {
const currentTransformer = picgo.getConfig<string>(configPaths.picBed.transformer) || 'path'
const pluginTransformer = plugin.config.transformer.name
const obj = {
label: `${currentTransformer === pluginTransformer ? T('DISABLE') : T('ENABLE')}transformer - ${plugin.config.transformer.name}`,
label: `${currentTransformer === pluginTransformer ? $t('DISABLE') : $t('ENABLE')}transformer - ${plugin.config.transformer.name}`,
click () {
const transformer = plugin.config.transformer.name
const currentTransformer = picgo.getConfig<string>(configPaths.picBed.transformer) || 'path'

View File

@@ -1,20 +1,13 @@
import { GalleryDB } from '@core/datastore'
import picgo from '@core/picgo'
import logger from '@core/picgo/logger'
import GuiApi from 'apis/gui'
import { clipboard } from 'electron'
import { ICOREBuildInEvent, IPasteStyle, IRPCActionType, IRPCType } from '#/types/enum'
import { IIPCEvent } from '#/types/rpc'
import { ILogType, ImgInfo, ISftpPlistConfig, IStringKeyMap } from '#/types/types'
import { ImgInfo } from '#/types/types'
import { configPaths } from '#/utils/configPaths'
import { RPCRouter } from '~/events/rpc/router'
import {
removeFileFromDogeInMain,
removeFileFromHuaweiInMain,
removeFileFromS3InMain,
removeFileFromSFTPInMain
} from '~/utils/deleteFunc'
import pasteTemplate from '~/utils/pasteTemplate'
interface IFilter {
orderBy?: 'asc' | 'desc'
@@ -98,43 +91,6 @@ const galleryRoutes = [
return await dbStore.insertMany(args[0])
},
type: IRPCType.INVOKE
},
{
action: IRPCActionType.GALLERY_LOG_DELETE_MSG,
handler: async (_: IIPCEvent, args: [msg: string, logLevel: ILogType]) => {
const [msg, logLevel] = args
console.log(msg, logLevel)
logger[logLevel](msg)
}
},
{
action: IRPCActionType.GALLERY_DELETE_SFTP_FILE,
handler: async (_: IIPCEvent, args: [config: ISftpPlistConfig, fileName: string]) => {
const [config, fileName] = args
return await removeFileFromSFTPInMain(config, fileName)
},
type: IRPCType.INVOKE
},
{
action: IRPCActionType.GALLERY_DELETE_AWS_S3_FILE,
handler: async (_: IIPCEvent, args: [configMap: IStringKeyMap]) => {
return await removeFileFromS3InMain(args[0])
},
type: IRPCType.INVOKE
},
{
action: IRPCActionType.GALLERY_DELETE_DOGE_FILE,
handler: async (_: IIPCEvent, args: [configMap: IStringKeyMap]) => {
return await removeFileFromDogeInMain(args[0])
},
type: IRPCType.INVOKE
},
{
action: IRPCActionType.GALLERY_DELETE_HUAWEI_OSS_FILE,
handler: async (_: IIPCEvent, args: [configMap: IStringKeyMap]) => {
return await removeFileFromHuaweiInMain(args[0])
},
type: IRPCType.INVOKE
}
]

View File

@@ -12,7 +12,7 @@ import { ICOREBuildInEvent, IPicGoHelperType, IWindowList } from '#/types/enum'
import { IIPCEvent } from '#/types/rpc'
import { IDispose, IPicGoPlugin } from '#/types/types'
import { handleStreamlinePluginName, simpleClone } from '#/utils/common'
import { T } from '~/i18n'
import { T as $t } from '~/i18n'
import { showNotification } from '~/utils/common'
const STORE_PATH = dbPathDir()
@@ -108,8 +108,8 @@ const handleNPMError = (): IDispose => {
if (msg === 'NPM is not installed') {
dialog
.showMessageBox({
title: T('TIPS_ERROR'),
message: T('TIPS_INSTALL_NODE_AND_RELOAD_PICGO'),
title: $t('TIPS_ERROR'),
message: $t('TIPS_INSTALL_NODE_AND_RELOAD_PICGO'),
buttons: ['Yes']
})
.then(res => {
@@ -131,7 +131,7 @@ export const handlePluginUpdate = async (fullName: string | string[]) => {
window.webContents.send('updateSuccess', res.body[0])
} else {
showNotification({
title: T('PLUGIN_UPDATE_FAILED'),
title: $t('PLUGIN_UPDATE_FAILED'),
body: res.body as string
})
}
@@ -148,7 +148,7 @@ export const handlePluginUninstall = async (fullName: string) => {
shortKeyHandler.unregisterPluginShortKey(res.body[0])
} else {
showNotification({
title: T('PLUGIN_UNINSTALL_FAILED'),
title: $t('PLUGIN_UNINSTALL_FAILED'),
body: res.body as string
})
}
@@ -165,7 +165,7 @@ export const pluginGetListFunc = async (event: IIPCEvent) => {
} catch (e: any) {
event.sender.send('pluginList', [])
showNotification({
title: T('TIPS_GET_PLUGIN_LIST_FAILED'),
title: $t('TIPS_GET_PLUGIN_LIST_FAILED'),
body: e.message
})
picgo.log.error(e)
@@ -185,7 +185,7 @@ export const pluginInstallFunc = async (event: IIPCEvent, args: [fullName: strin
await shortKeyHandler.registerPluginShortKey(res.body[0])
} else {
showNotification({
title: T('PLUGIN_INSTALL_FAILED'),
title: $t('PLUGIN_INSTALL_FAILED'),
body: res.body as string
})
}
@@ -208,17 +208,17 @@ export const pluginImportLocalFunc = async (event: IIPCEvent) => {
} catch (e: any) {
event.sender.send('pluginList', [])
showNotification({
title: T('TIPS_GET_PLUGIN_LIST_FAILED'),
title: $t('TIPS_GET_PLUGIN_LIST_FAILED'),
body: e.message
})
}
showNotification({
title: T('PLUGIN_IMPORT_SUCCEED'),
title: $t('PLUGIN_IMPORT_SUCCEED'),
body: ''
})
} else {
showNotification({
title: T('PLUGIN_IMPORT_FAILED'),
title: $t('PLUGIN_IMPORT_FAILED'),
body: res.body as string
})
}

View File

@@ -6,12 +6,12 @@ import { TOGGLE_SHORTKEY_MODIFIED_MODE } from '#/events/constants'
import { IRPCActionType, IRPCType } from '#/types/enum'
import { IIPCEvent } from '#/types/rpc'
import { IShortKeyConfig } from '#/types/types'
import { T } from '~/i18n'
import { T as $t } from '~/i18n'
const notificationFunc = (result: boolean) => {
const notification = new Notification({
title: T(`OPERATION_${result ? 'SUCCEED' : 'FAILED'}`),
body: T(`TIPS_SHORTCUT_MODIFIED_${result ? 'SUCCEED' : 'CONFLICT'}`)
title: $t(`OPERATION_${result ? 'SUCCEED' : 'FAILED'}`),
body: $t(`TIPS_SHORTCUT_MODIFIED_${result ? 'SUCCEED' : 'CONFLICT'}`)
})
notification.show()
}

View File

@@ -1,10 +1,8 @@
import picgo from '@core/picgo'
import windowManager from 'apis/app/window/windowManager'
import { app, IpcMainEvent, shell } from 'electron'
import { IIPCEvent } from 'root/src/universal/types/rpc'
import { SET_CURRENT_LANGUAGE } from '#/events/constants'
import { IRPCActionType, IWindowList } from '#/types/enum'
import { IRPCActionType } from '#/types/enum'
import { IIPCEvent } from '#/types/rpc'
import { i18nManager } from '~/i18n'
export default [
@@ -33,35 +31,12 @@ export default [
shell.openExternal(args[0])
}
},
{
action: IRPCActionType.GET_LANGUAGE_LIST,
handler: async (event: IIPCEvent) => {
(event as IpcMainEvent).returnValue = i18nManager.languageList
}
},
{
action: IRPCActionType.GET_CURRENT_LANGUAGE,
handler: async (event: IIPCEvent) => {
const { lang, locales } = i18nManager.getCurrentLocales()
;(event as IpcMainEvent).returnValue = [lang, locales]
}
},
{
action: IRPCActionType.SET_CURRENT_LANGUAGE,
handler: async (_: IIPCEvent, args: [language: string]) => {
i18nManager.setCurrentLanguage(args[0])
const { lang, locales } = i18nManager.getCurrentLocales()
const { lang } = i18nManager.getCurrentLocales()
picgo.i18n.setLanguage(lang)
if (process.platform === 'darwin') {
const trayWindow = windowManager.get(IWindowList.TRAY_WINDOW)
trayWindow?.webContents.send(SET_CURRENT_LANGUAGE, lang, locales)
}
const settingWindow = windowManager.get(IWindowList.SETTING_WINDOW)
settingWindow?.webContents.send(SET_CURRENT_LANGUAGE, lang, locales)
if (windowManager.has(IWindowList.MINI_WINDOW)) {
const miniWindow = windowManager.get(IWindowList.MINI_WINDOW)
miniWindow?.webContents.send(SET_CURRENT_LANGUAGE, lang, locales)
}
}
}
]

View File

@@ -7,7 +7,7 @@ import { IToolboxItemCheckStatus, IToolboxItemType } from '#/types/enum'
import { IToolboxCheckerMap, IToolboxFixMap } from '#/types/rpc'
import { CLIPBOARD_IMAGE_FOLDER } from '#/utils/static'
import { sendToolboxResWithType } from '~/events/rpc/routes/toolbox/utils'
import { T } from '~/i18n'
import { T as $t } from '~/i18n'
const sendToolboxRes = sendToolboxResWithType(IToolboxItemType.HAS_PROBLEM_WITH_CLIPBOARD_PIC_UPLOAD)
@@ -25,7 +25,7 @@ export const checkClipboardUploadMap: IToolboxCheckerMap<IToolboxItemType.HAS_PR
if (fs.existsSync(clipboardImagePath)) {
sendToolboxRes(event, {
status: IToolboxItemCheckStatus.SUCCESS,
msg: T('TOOLBOX_CHECK_CLIPBOARD_FILE_PATH_TIPS', {
msg: $t('TOOLBOX_CHECK_CLIPBOARD_FILE_PATH_TIPS', {
path: clipboardImagePath
}),
value: clipboardImagePath
@@ -33,7 +33,7 @@ export const checkClipboardUploadMap: IToolboxCheckerMap<IToolboxItemType.HAS_PR
} else {
sendToolboxRes(event, {
status: IToolboxItemCheckStatus.ERROR,
msg: T('TOOLBOX_CHECK_CLIPBOARD_FILE_PATH_NOT_EXIST_TIPS', {
msg: $t('TOOLBOX_CHECK_CLIPBOARD_FILE_PATH_NOT_EXIST_TIPS', {
path: clipboardImagePath
}),
value: path.dirname(clipboardImagePath)
@@ -42,7 +42,7 @@ export const checkClipboardUploadMap: IToolboxCheckerMap<IToolboxItemType.HAS_PR
} else {
sendToolboxRes(event, {
status: IToolboxItemCheckStatus.ERROR,
msg: T('TOOLBOX_CHECK_CLIPBOARD_FILE_PATH_NOT_EXIST_TIPS', {
msg: $t('TOOLBOX_CHECK_CLIPBOARD_FILE_PATH_NOT_EXIST_TIPS', {
path: defaultClipboardImagePath
}),
value: path.dirname(defaultClipboardImagePath)
@@ -66,7 +66,7 @@ export const fixClipboardUploadMap: IToolboxFixMap<IToolboxItemType.HAS_PROBLEM_
return {
type: IToolboxItemType.HAS_PROBLEM_WITH_CLIPBOARD_PIC_UPLOAD,
status: IToolboxItemCheckStatus.ERROR,
msg: T('TOOLBOX_CHECK_CLIPBOARD_FILE_PATH_ERROR_TIPS', {
msg: $t('TOOLBOX_CHECK_CLIPBOARD_FILE_PATH_ERROR_TIPS', {
path: clipboardImagePath
}),
value: path.dirname(clipboardImagePath)

View File

@@ -2,13 +2,13 @@ import path from 'node:path'
import { DB_PATH, GalleryDB } from '@core/datastore'
import { dbPathChecker } from '@core/datastore/dbChecker'
import { IpcMainEvent } from 'electron'
import type { IpcMainEvent } from 'electron'
import fs from 'fs-extra'
import { IToolboxItemCheckStatus, IToolboxItemType } from '#/types/enum'
import { IToolboxCheckerMap, IToolboxFixMap } from '#/types/rpc'
import type { IToolboxCheckerMap, IToolboxFixMap } from '#/types/rpc'
import { sendToolboxResWithType } from '~/events/rpc/routes/toolbox/utils'
import { T } from '~/i18n'
import { T as $t } from '~/i18n'
export const checkFileMap: IToolboxCheckerMap<
IToolboxItemType.IS_CONFIG_FILE_BROKEN | IToolboxItemType.IS_GALLERY_FILE_BROKEN
@@ -24,7 +24,7 @@ export const checkFileMap: IToolboxCheckerMap<
await fs.readJSON(configFilePath)
sendToolboxRes(event, {
status: IToolboxItemCheckStatus.SUCCESS,
msg: T('TOOLBOX_CHECK_CONFIG_FILE_PATH_TIPS', {
msg: $t('TOOLBOX_CHECK_CONFIG_FILE_PATH_TIPS', {
path: configFilePath
}),
value: configFilePath
@@ -33,7 +33,7 @@ export const checkFileMap: IToolboxCheckerMap<
} catch (e) {
sendToolboxRes(event, {
status: IToolboxItemCheckStatus.ERROR,
msg: T('TOOLBOX_CHECK_CONFIG_FILE_BROKEN_TIPS'),
msg: $t('TOOLBOX_CHECK_CONFIG_FILE_BROKEN_TIPS'),
value: path.dirname(configFilePath)
})
}
@@ -47,7 +47,7 @@ export const checkFileMap: IToolboxCheckerMap<
if (galleryDB.errorList.length === 0) {
sendToolboxRes(event, {
status: IToolboxItemCheckStatus.SUCCESS,
msg: T('TOOLBOX_CHECK_GALLERY_FILE_PATH_TIPS', {
msg: $t('TOOLBOX_CHECK_GALLERY_FILE_PATH_TIPS', {
path: DB_PATH
}),
value: path.dirname(DB_PATH)
@@ -55,7 +55,7 @@ export const checkFileMap: IToolboxCheckerMap<
} else {
sendToolboxRes(event, {
status: IToolboxItemCheckStatus.ERROR,
msg: T('TOOLBOX_CHECK_GALLERY_FILE_BROKEN_TIPS'),
msg: $t('TOOLBOX_CHECK_GALLERY_FILE_BROKEN_TIPS'),
value: path.dirname(DB_PATH)
})
}

View File

@@ -7,7 +7,7 @@ import tunnel from 'tunnel'
import { IToolboxItemCheckStatus, IToolboxItemType } from '#/types/enum'
import { IToolboxCheckerMap } from '#/types/rpc'
import { sendToolboxResWithType } from '~/events/rpc/routes/toolbox/utils'
import { T } from '~/i18n'
import { T as $t } from '~/i18n'
function getProxy (proxyStr: string): AxiosRequestConfig['proxy'] | null {
if (proxyStr) {
@@ -39,7 +39,7 @@ export const checkProxyMap: IToolboxCheckerMap<IToolboxItemType.HAS_PROBLEM_WITH
if (!config) {
return sendToolboxRes(event, {
status: IToolboxItemCheckStatus.SUCCESS,
msg: T('TOOLBOX_CHECK_PROXY_NO_PROXY_TIPS')
msg: $t('TOOLBOX_CHECK_PROXY_NO_PROXY_TIPS')
})
}
@@ -47,14 +47,14 @@ export const checkProxyMap: IToolboxCheckerMap<IToolboxItemType.HAS_PROBLEM_WITH
if (!proxy) {
return sendToolboxRes(event, {
status: IToolboxItemCheckStatus.SUCCESS,
msg: T('TOOLBOX_CHECK_PROXY_NO_PROXY_TIPS')
msg: $t('TOOLBOX_CHECK_PROXY_NO_PROXY_TIPS')
})
} else {
const proxyOptions = getProxy(proxy)
if (!proxyOptions) {
return sendToolboxRes(event, {
status: IToolboxItemCheckStatus.ERROR,
msg: T('TOOLBOX_CHECK_PROXY_PROXY_IS_NOT_CORRECT')
msg: $t('TOOLBOX_CHECK_PROXY_PROXY_IS_NOT_CORRECT')
})
} else {
const httpsAgent = tunnel.httpsOverHttp({
@@ -69,13 +69,13 @@ export const checkProxyMap: IToolboxCheckerMap<IToolboxItemType.HAS_PROBLEM_WITH
})
return sendToolboxRes(event, {
status: IToolboxItemCheckStatus.SUCCESS,
msg: T('TOOLBOX_CHECK_PROXY_SUCCESS_TIPS')
msg: $t('TOOLBOX_CHECK_PROXY_SUCCESS_TIPS')
})
} catch (e) {
console.log(e)
return sendToolboxRes(event, {
status: IToolboxItemCheckStatus.ERROR,
msg: T('TOOLBOX_CHECK_PROXY_PROXY_IS_NOT_WORKING')
msg: $t('TOOLBOX_CHECK_PROXY_PROXY_IS_NOT_WORKING')
})
}
}
@@ -84,7 +84,7 @@ export const checkProxyMap: IToolboxCheckerMap<IToolboxItemType.HAS_PROBLEM_WITH
sendToolboxRes(event, {
status: IToolboxItemCheckStatus.SUCCESS,
msg: T('TOOLBOX_CHECK_PROXY_NO_PROXY_TIPS')
msg: $t('TOOLBOX_CHECK_PROXY_NO_PROXY_TIPS')
})
}
}

View File

@@ -7,7 +7,7 @@ import { IPasteStyle, IRPCActionType, IRPCType, IWindowList } from '#/types/enum
import { IIPCEvent } from '#/types/rpc'
import { configPaths } from '#/utils/configPaths'
import { RPCRouter } from '~/events/rpc/router'
import { T } from '~/i18n'
import { T as $t } from '~/i18n'
import { generateShortUrl, handleCopyUrl, setTrayToolTip } from '~/utils/common'
import pasteTemplate from '~/utils/pasteTemplate'
@@ -44,7 +44,7 @@ const trayRoutes = [
: !!db.get(configPaths.settings.uploadResultNotification)
if (isShowResultNotification) {
const notification = new Notification({
title: T('UPLOAD_SUCCEED'),
title: $t('UPLOAD_SUCCEED'),
body: shortUrl || img[0].imgUrl!
// icon: file[0]
// icon: img[0].imgUrl

View File

@@ -23,7 +23,7 @@ import { CLIPBOARD_IMAGE_FOLDER } from '#/utils/static'
import busEventList from '~/events/busEventList'
import { rpcServer } from '~/events/rpc'
import { startFileServer, stopFileServer } from '~/fileServer'
import { T } from '~/i18n'
import { T as $t } from '~/i18n'
import fixPath from '~/lifeCycle/fixPath'
import UpDownTaskQueue from '~/manage/datastore/upDownTaskQueue'
import getManageApi from '~/manage/Main'
@@ -95,16 +95,16 @@ updater.autoUpdater.on('update-available', async (info: updater.UpdateInfo) => {
dialog
.showMessageBox({
type: 'info',
title: T('FIND_NEW_VERSION'),
title: $t('FIND_NEW_VERSION'),
buttons: ['Yes', 'Go to download page'],
message:
T('TIPS_FIND_NEW_VERSION', {
$t('TIPS_FIND_NEW_VERSION', {
v: info.version
}) +
'\n\n' +
displayLog +
truncatedNote,
checkboxLabel: T('NO_MORE_NOTICE'),
checkboxLabel: $t('NO_MORE_NOTICE'),
checkboxChecked: false
})
.then(result => {
@@ -132,9 +132,9 @@ updater.autoUpdater.on('update-downloaded', () => {
dialog
.showMessageBox({
type: 'info',
title: T('UPDATE_DOWNLOADED'),
title: $t('UPDATE_DOWNLOADED'),
buttons: ['Yes', 'No'],
message: T('TIPS_UPDATE_DOWNLOADED')
message: $t('TIPS_UPDATE_DOWNLOADED')
})
.then(result => {
const window = windowManager.get(IWindowList.SETTING_WINDOW)!

View File

@@ -7,7 +7,7 @@ import fs from 'fs-extra'
import writeFile from 'write-file-atomic'
import { notificationList } from '#/utils/notification'
import { T } from '~/i18n'
import { T as $t } from '~/i18n'
const STORE_PATH = app.getPath('userData')
const manageConfigFilePath = path.join(STORE_PATH, 'manage.json')
@@ -17,8 +17,8 @@ let _configFilePath = ''
let hasCheckPath = false
const errorMsg = {
broken: T('TIPS_PICGO_CONFIG_FILE_BROKEN_WITH_DEFAULT'),
brokenButBackup: T('TIPS_PICGO_CONFIG_FILE_BROKEN_WITH_BACKUP')
broken: $t('TIPS_PICGO_CONFIG_FILE_BROKEN_WITH_DEFAULT'),
brokenButBackup: $t('TIPS_PICGO_CONFIG_FILE_BROKEN_WITH_BACKUP')
}
function manageDbChecker () {
@@ -29,7 +29,7 @@ function manageDbChecker () {
}
let configFile: string = '{}'
const optionsTpl = {
title: T('TIPS_NOTICE'),
title: $t('TIPS_NOTICE'),
body: ''
}
// config save bak
@@ -48,7 +48,7 @@ function manageDbChecker () {
encoding: 'utf-8'
})
const stats = fs.statSync(manageConfigFileBackupPath)
optionsTpl.body = `${errorMsg.brokenButBackup}\n${T('TIPS_PICGO_BACKUP_FILE_VERSION', {
optionsTpl.body = `${errorMsg.brokenButBackup}\n${$t('TIPS_PICGO_BACKUP_FILE_VERSION', {
v: dayjs(stats.mtime).format('YYYY-MM-DD HH:mm:ss')
})}`
notificationList.push(optionsTpl)
@@ -101,8 +101,8 @@ function managePathChecker (): string {
const logger = getLogger(manageLogPath, 'Manage')
if (!hasCheckPath) {
const optionsTpl = {
title: T('TIPS_NOTICE'),
body: T('TIPS_CUSTOM_CONFIG_FILE_PATH_ERROR')
title: $t('TIPS_NOTICE'),
body: $t('TIPS_CUSTOM_CONFIG_FILE_PATH_ERROR')
}
notificationList?.push(optionsTpl)
hasCheckPath = true

View File

@@ -10,7 +10,7 @@ import { ICOREBuildInEvent, IWindowList } from '#/types/enum'
import { IHttpResponse, ImgInfo, IObj } from '#/types/types'
import { configPaths } from '#/utils/configPaths'
import { picBedsCanbeDeleted } from '#/utils/static'
import { T } from '~/i18n/index'
import { T as $t } from '~/i18n/index'
export const handleResponse = ({
response,
@@ -54,8 +54,8 @@ export const deleteChoosedFiles = async (list: ImgInfo[]): Promise<boolean[]> =>
if (item.type !== undefined && picBedsCanbeDeleted.includes(item.type)) {
const noteFunc = (value: boolean) => {
const notification = new Notification({
title: T('MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_MSG2'),
body: T(value ? 'GALLERY_SYNC_DELETE_NOTICE_SUCCEED' : 'GALLERY_SYNC_DELETE_NOTICE_FAILED')
title: $t('MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_MSG2'),
body: $t(value ? 'GALLERY_SYNC_DELETE_NOTICE_SUCCEED' : 'GALLERY_SYNC_DELETE_NOTICE_FAILED')
})
notification.show()
}

View File

@@ -81,20 +81,6 @@ export const showMessageBox = (options: any) => {
})
}
export const calcDurationRange = (duration: number) => {
if (duration < 1000) return 500
if (duration < 1500) return 1000
if (duration < 3000) return 2000
if (duration < 5000) return 3000
if (duration < 7000) return 5000
if (duration < 10000) return 8000
if (duration < 12000) return 10000
if (duration < 20000) return 15000
if (duration < 30000) return 20000
// max range
return 100000
}
/**
* macOS public.file-url will get encoded file path,
* so we need to decode it

View File

@@ -1,7 +1,6 @@
import crypto from 'node:crypto'
import path from 'node:path'
import { I18n, ObjectAdapter } from '@piclist/i18n'
import { clipboard, contextBridge, ipcRenderer, webFrame } from 'electron'
import fs from 'fs-extra'
import yaml from 'js-yaml'
@@ -11,10 +10,6 @@ import { isReactive, isRef, toRaw, unref } from 'vue'
import { RPC_ACTIONS, RPC_ACTIONS_INVOKE } from '#/events/constants'
import { IpcRendererListener } from '#/types/electron'
import { IRPCActionType } from '#/types/enum'
import { ILocales, ILocalesKey } from '#/types/i18n'
import { IStringKeyMap } from '#/types/types'
let i18nObj: I18n | null = null
export const getRawData = (args: any): any => {
if (isRef(args)) return unref(args)
@@ -94,21 +89,6 @@ try {
lookup: mime.lookup
}
})
contextBridge.exposeInMainWorld('i18n', {
setLocales: (lang: string, locales: ILocales) => {
const objectAdapter = new ObjectAdapter({
[lang]: locales
})
i18nObj = new I18n({
adapter: objectAdapter,
defaultLanguage: lang
})
},
translate: (key: ILocalesKey, args: IStringKeyMap = {}): string => {
return i18nObj?.translate(key, args) || key
}
})
} catch (error) {
console.error(error)
}

View File

@@ -1,29 +0,0 @@
@font-face {font-family: "iconfont";
src: url('iconfont.eot?t=1523001890286'); /* IE9*/
src: url('iconfont.eot?t=1523001890286#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAApcAAsAAAAADqAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAARAAAAFZW7kmaY21hcAAAAYAAAACMAAAB5Jz6bNVnbHlmAAACDAAABisAAAfkf7GmJ2hlYWQAAAg4AAAALwAAADYQ+dpBaGhlYQAACGgAAAAcAAAAJAfeA4lobXR4AAAIhAAAABQAAAAgH+kAAGxvY2EAAAiYAAAAEgAAABII+gbebWF4cAAACKwAAAAfAAAAIAEYAMxuYW1lAAAIzAAAAUUAAAJtPlT+fXBvc3QAAAoUAAAASAAAAF2Rted1eJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2Bk/ss4gYGVgYOpk+kMAwNDP4RmfM1gxMjBwMDEwMrMgBUEpLmmMDgwVDxfzdzwv4EhhrmBoQEozAiSAwAxwA0deJzFkdEJwzAMRE9ymoRiSv+TETpK6BQZwvSr+2QvZYz0ZLmFTpAzz/gOGRkLwAVAIg/SAfKGwPViKjVPuNa8w5M+Y4TyXExttmXfjoNpMbHp574SVmfccOdy12Ngv8TbStvjNMl5rf+V6742N5DS4BOtwX+DaeA1NgU+O5sDn6Etgc9x3wLoBwU0H794nG1VXYwcRxHu6p7unt+enf/9m9293buZde5u97w/M3Zs7xof2AoJPsLJ4JMR52AUEUgiJcLxQ2znEEIkEEQiJGOQIl0QCDlKpCgP5MXipAiJl5N44S0IAvjVQkGKBUIs9OzFEkjslGqner7pmar6vhpEEfr3n8htUkYe6qLD6JPoswgBW4a2wDEspKMeXoZggQaRL0jaSRd4p90jJyBqMz8cZKMkYpzZIKABw4VBlvZwCuPRBB+DQRgDVGrVTXep7pJXQC+njW/PPo1/CkGzU7cnq7OHVqb+oOWpV0zXrbjuyyqjVMVYsQU8FYUa1XQ2+xm1q8Ht5iHcBLOSVh/Zslo197EXR0/HS5EGsLMDXq0lfjF1qo60q9XQcyu8ZKnlqtVZ9OHKHaPsmXHyFyR/IHP9DXmP5GhdBgJ4A6IwS8csyXvAkyxqQNCAfAIyTEeZ9HkSRtkgmgAPmUQH83tiYOEBCKO9GcW3XirZ8MUJLrVwtaK0O62zgWLrG8+Tcki5A8dP5t/ITx4Hh9OwTK6eNV2wnRdvYTojOZ3t3bzTJ7a+KSY0rYOvAU3JGphhQ6UXri+diLRpn6iHbPuQSvpTLTqxdP0C1Q+1ntdt0r9zc29W5MXmed0jWyhEPfQw+gK6hJ6UGfqsnaR5RybDxz0YZVPZpOgwbyfjUZEh6xSL+bBYDHzGi/y5mJu8mmdunoWc8QnIdXpQrXnWRF6VJzIUkN6nAflIhAIA8EuPq5ppaurVn5MbhsDKtK9QQ8iFM9vYvtJIRj1Cnjj/4Ksbb/6TQfSvM0fOYyArF3vThdmPX7ilKLde2Cn87voWxlvrpwp/LozjlTjGC4ZtG8qTPyDyMSIQGJS3vtWwDUYPnyIY7FBg/JWHFcM+rWjidHZs90i3D+SNndJ3oOrw/indrNVVcWkDP3d+6zLGl7fOPze7CZuTySbM/W5ztSkNIVwUlXyEP0Cvob0DpgiwD/64wHNPAj8KZWGGgyyfKAUdRknao2lSKCDpQ/Ix3iapLJe0ZJRPyHAQNkHWawqyZH0oliV0LLswIVOYSM3ILaU1YVBsOcjmmLlJXBFAgwSSiwfvIoXHWmnRWAnOpjgL4XfNMyFXmKgtW1xlinfE1lvML5l0fXnoXvr97aeZs8itmpmugKYQsLnhirrgbFEjRjSo+HpDCybR5742XrBj3n3QUAittAdR/WhtrChO4HBDjWhiV5dMZlK93F4JAu61PSte9a2KZmCTVayKzhlRMYms0lo5wrxW/RSMa4stGzChhiq6PjXLq7O7Xs3fI3WdcuGwNn6f1koKlnsebdiVqARlTY1ZPU7a3vb6A7ZKACuawhy99aWhc1hjPNZc1yxToli44J3GlRIvHYk2Hh/JCPi4ay1bfrfu1ip9InxXxQb3adPwBCWgLOpuq1lmFMtxwyPHjG1HngLTbVUQtWG7S4aBsaYqs10eJN16ydZLoeZWFQwFrua/qwSUEEpBDhVF6m+XfEAuIhOV0SKaILQk2zicwCiRg5RBiKIM5QlKGYruK0dqLGey1ccg8EM5LbN8XHBJdjxpc/g1lKzjluNYx01ndoGCvb8PNqWzD/f3Zx/m9O4779ylc39PEFwyLsyBsGWUMBEvmy3zWRmBU3GklzfQ/97g/p3S/80JDXGjeMwNYYTO65ZVzEjJ/b/iX6I1yfyMFYOvXTAw6hXan7NTWh5KysohmRwwsQCEw8WMvO+VFfzHf2x8QnRjunMZcGhd+y5zTH9j8/PbluWDGrZyXVxa9mtC0hbt48t9UMR7wl47ybazHarYj7x76tFXGkcbGMdrR39icd1tf9+xHMu9tmGYf74/x39LfkVOo20ZJGky/wB1Pn4XKUt5yK+SfOEsTbK5kKTgChxnbnFxLpjhfIjLJJLikJWX048daKtTCKvA5RkmUK7oPntWq9i60X2o6vsYjDLFnhss6UIFJap2Lo4D68uU6tfunXti+XvVuubzZ7SqMHSJDzyJjyjxPD/RBFfC2hz+GGPa9b+f+2of/8GRfVF/ZJiStkmnNl2wqFn1mowGK55uPvDo4mofnG+qLul85uuvzt5+xi/9D7xt/l+4o3TOPvVD2JDl+g9+5y00AHicY2BkYGAA4vdhFhPj+W2+MnCzMIDAtbfeSgj6/wIWBuYEIJeDgQkkCgAriQovAHicY2BkYGBu+N/AEMPCAAJAkpEBFXAAAEcOAnF4nGNhYGBgfsnAwMKAHQMAGtcBCQAAAAAAdgDiAYoCogMIA1oD8gAAeJxjYGRgYOBgOMDAxgACTEDMBYQMDP/BfAYAHGwB5QB4nGWPTU7DMBCFX/oHpBKqqGCH5AViASj9EatuWFRq911036ZOmyqJI8et1ANwHo7ACTgC3IA78EgnmzaWx9+8eWNPANzgBx6O3y33kT1cMjtyDRe4F65TfxBukF+Em2jjVbhF/U3YxzOmwm10YXmD17hi9oR3YQ8dfAjXcI1P4Tr1L+EG+Vu4iTv8CrfQ8erCPuZeV7iNRy/2x1YvnF6p5UHFockikzm/gple75KFrdLqnGtbxCZTg6BfSVOdaVvdU+zXQ+ciFVmTqgmrOkmMyq3Z6tAFG+fyUa8XiR6EJuVYY/62xgKOcQWFJQ6MMUIYZIjK6Og7VWb0r7FDwl57Vj3N53RbFNT/c4UBAvTPXFO6stJ5Ok+BPV8bUnV0K27LnpQ0kV7NSRKyQl7WtlRC6gE2ZVeOEXpc0Yk/KGdI/wAJWm7IAAAAeJxtyMEOQDAQBNCZslX+UhE2kbaSbvD3JK7e8cHhM+BfoGPDlkLPjoE9ePlV62ZRzkVjljrdlryVPY+zHJrUxMpbwANFHA6a') format('woff'),
url('iconfont.ttf?t=1523001890286') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
url('iconfont.svg?t=1523001890286#iconfont') format('svg'); /* iOS 4.1- */
}
[class*=" el-icon-ui"], [class^=el-icon-ui] {
font-family:"iconfont" !important;
font-size:16px;
font-style:normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.el-icon-ui-github:before { content: "\e7ab"; }
.el-icon-ui-weibo:before { content: "\e61c"; }
.el-icon-ui-tcyun:before { content: "\e64c"; }
.el-icon-ui-upload:before { content: "\e61b"; }
.el-icon-ui-qiniu:before { content: "\e601"; }
.el-icon-ui-upyun:before { content: "\e602"; }

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 KiB

View File

@@ -12,14 +12,14 @@
size="small"
>
<el-form-item
:label="$T('UPLOADER_CONFIG_NAME')"
:label="$t('UPLOADER_CONFIG_NAME')"
required
prop="_configName"
>
<el-input
v-model="ruleForm._configName"
type="input"
:placeholder="$T('UPLOADER_CONFIG_PLACEHOLDER')"
:placeholder="$t('UPLOADER_CONFIG_PLACEHOLDER')"
/>
</el-form-item>
<!-- dynamic config -->
@@ -109,7 +109,6 @@ import { marked } from 'marked'
import { reactive, ref, toRefs, watch } from 'vue'
import { useRoute } from 'vue-router'
import { T as $T } from '@/i18n/index'
import { getConfig } from '@/utils/dataSender'
import { IPicGoPluginConfig, IStringKeyMap } from '#/types/types'

View File

@@ -11,14 +11,14 @@
size="small"
>
<el-form-item
:label="$T('UPLOADER_CONFIG_NAME')"
:label="$t('UPLOADER_CONFIG_NAME')"
required
prop="_configName"
>
<el-input
v-model="ruleForm._configName"
type="input"
:placeholder="$T('UPLOADER_CONFIG_PLACEHOLDER')"
:placeholder="$t('UPLOADER_CONFIG_PLACEHOLDER')"
/>
</el-form-item>
<!-- dynamic config -->
@@ -82,7 +82,6 @@ import type { FormInstance } from 'element-plus'
import { cloneDeep, union } from 'lodash-es'
import { reactive, ref, watch } from 'vue'
import { T as $T } from '@/i18n'
import { getConfig } from '@/utils/dataSender'
import { IPicGoPluginConfig, IStringKeyMap } from '#/types/types'

View File

@@ -6,17 +6,17 @@
size="default"
:model="waterMarkForm"
>
<el-form-item :label="$T('UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST')">
<el-form-item :label="$t('UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST')">
<el-input
v-model="skipProcessForm.skipProcessExtList"
type="textarea"
:autosize="{ minRows: 2, maxRows: 4 }"
/>
<div class="text-xs text-gray-500">
{{ $T('UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST_TIPS') }}
{{ $t('UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST_TIPS') }}
</div>
</el-form-item>
<el-form-item :label="$T('UPLOAD_PAGE_IMAGE_PROCESS_ISADDWM')">
<el-form-item :label="$t('UPLOAD_PAGE_IMAGE_PROCESS_ISADDWM')">
<el-switch
v-model="waterMarkForm.isAddWatermark"
:style="switchStyle"
@@ -24,20 +24,20 @@
</el-form-item>
<el-form-item
v-show="waterMarkForm.isAddWatermark"
:label="$T('UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE')"
:label="$t('UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE')"
>
<el-radio-group v-model="waterMarkForm.watermarkType">
<el-radio value="text">
{{ $T('UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE_TEXT') }}
{{ $t('UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE_TEXT') }}
</el-radio>
<el-radio value="image">
{{ $T('UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE_IMAGE') }}
{{ $t('UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE_IMAGE') }}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
v-show="waterMarkForm.isAddWatermark"
:label="$T('UPLOAD_PAGE_IMAGE_PROCESS_ISFULLSCREEN_WM')"
:label="$t('UPLOAD_PAGE_IMAGE_PROCESS_ISFULLSCREEN_WM')"
>
<el-switch
v-model="waterMarkForm.isFullScreenWatermark"
@@ -46,7 +46,7 @@
</el-form-item>
<el-form-item
v-show="waterMarkForm.isAddWatermark"
:label="$T('UPLOAD_PAGE_IMAGE_PROCESS_WMDEGREE')"
:label="$t('UPLOAD_PAGE_IMAGE_PROCESS_WMDEGREE')"
>
<el-input-number
v-model="waterMarkForm.watermarkDegree"
@@ -55,19 +55,19 @@
</el-form-item>
<el-form-item
v-show="waterMarkForm.isAddWatermark && waterMarkForm.watermarkType === 'text'"
:label="$T('UPLOAD_PAGE_IMAGE_PROCESS_WMTEXT')"
:label="$t('UPLOAD_PAGE_IMAGE_PROCESS_WMTEXT')"
>
<el-input v-model="waterMarkForm.watermarkText" />
</el-form-item>
<el-form-item
v-show="waterMarkForm.isAddWatermark && waterMarkForm.watermarkType === 'text'"
:label="$T('UPLOAD_PAGE_IMAGE_PROCESS_WMTEXT_FONT_PATH')"
:label="$t('UPLOAD_PAGE_IMAGE_PROCESS_WMTEXT_FONT_PATH')"
>
<el-input v-model="waterMarkForm.watermarkFontPath" />
</el-form-item>
<el-form-item
v-show="waterMarkForm.isAddWatermark"
:label="$T('UPLOAD_PAGE_IMAGE_PROCESS_WMRATIO')"
:label="$t('UPLOAD_PAGE_IMAGE_PROCESS_WMRATIO')"
>
<el-input-number
v-model="waterMarkForm.watermarkScaleRatio"
@@ -78,7 +78,7 @@
</el-form-item>
<el-form-item
v-show="waterMarkForm.isAddWatermark && waterMarkForm.watermarkType === 'text'"
:label="$T('UPLOAD_PAGE_IMAGE_PROCESS_WMCOLOR')"
:label="$t('UPLOAD_PAGE_IMAGE_PROCESS_WMCOLOR')"
>
<el-color-picker
v-model="waterMarkForm.watermarkColor"
@@ -87,13 +87,13 @@
</el-form-item>
<el-form-item
v-show="waterMarkForm.isAddWatermark && waterMarkForm.watermarkType === 'image'"
:label="$T('UPLOAD_PAGE_IMAGE_PROCESS_WMPATH')"
:label="$t('UPLOAD_PAGE_IMAGE_PROCESS_WMPATH')"
>
<el-input v-model="waterMarkForm.watermarkImagePath" />
</el-form-item>
<el-form-item
v-show="waterMarkForm.isAddWatermark"
:label="$T('UPLOAD_PAGE_IMAGE_PROCESS_WMPOSITION')"
:label="$t('UPLOAD_PAGE_IMAGE_PROCESS_WMPOSITION')"
>
<el-radio-group v-model="waterMarkForm.watermarkPosition">
<el-radio
@@ -105,13 +105,13 @@
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item :label="$T('UPLOAD_PAGE_IMAGE_PROCESS_ISREMOVEEXIF')">
<el-form-item :label="$t('UPLOAD_PAGE_IMAGE_PROCESS_ISREMOVEEXIF')">
<el-switch
v-model="compressForm.isRemoveExif"
:style="switchStyle"
/>
</el-form-item>
<el-form-item :label="$T('UPLOAD_PAGE_IMAGE_PROCESS_QUALITY')">
<el-form-item :label="$t('UPLOAD_PAGE_IMAGE_PROCESS_QUALITY')">
<el-input-number
v-model="compressForm.quality"
:min="1"
@@ -119,7 +119,7 @@
:step="1"
/>
</el-form-item>
<el-form-item :label="$T('UPLOAD_PAGE_IMAGE_PROCESS_ISCONVERT')">
<el-form-item :label="$t('UPLOAD_PAGE_IMAGE_PROCESS_ISCONVERT')">
<el-switch
v-model="compressForm.isConvert"
:style="switchStyle"
@@ -127,7 +127,7 @@
</el-form-item>
<el-form-item
v-show="compressForm.isConvert"
:label="$T('UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT')"
:label="$t('UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT')"
>
<el-select
v-model="compressForm.convertFormat"
@@ -144,7 +144,7 @@
</el-form-item>
<el-form-item
v-show="compressForm.isConvert"
:label="$T('UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT_SPECIFIC')"
:label="$t('UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT_SPECIFIC')"
>
<el-input
v-model="formatConvertObj"
@@ -153,19 +153,19 @@
:autosize="{ minRows: 2, maxRows: 4 }"
/>
</el-form-item>
<el-form-item :label="$T('UPLOAD_PAGE_IMAGE_PROCESS_ISFLIP')">
<el-form-item :label="$t('UPLOAD_PAGE_IMAGE_PROCESS_ISFLIP')">
<el-switch
v-model="compressForm.isFlip"
:style="switchStyle"
/>
</el-form-item>
<el-form-item :label="$T('UPLOAD_PAGE_IMAGE_PROCESS_ISFLOP')">
<el-form-item :label="$t('UPLOAD_PAGE_IMAGE_PROCESS_ISFLOP')">
<el-switch
v-model="compressForm.isFlop"
:style="switchStyle"
/>
</el-form-item>
<el-form-item :label="$T('UPLOAD_PAGE_IMAGE_PROCESS_ISRESIZE')">
<el-form-item :label="$t('UPLOAD_PAGE_IMAGE_PROCESS_ISRESIZE')">
<el-switch
v-model="compressForm.isReSize"
:style="switchStyle"
@@ -173,7 +173,7 @@
</el-form-item>
<el-form-item
v-show="compressForm.isReSize"
:label="$T('UPLOAD_PAGE_IMAGE_PROCESS_RESIZEWIDTH')"
:label="$t('UPLOAD_PAGE_IMAGE_PROCESS_RESIZEWIDTH')"
>
<el-input-number
v-model="compressForm.reSizeWidth"
@@ -182,7 +182,7 @@
</el-form-item>
<el-form-item
v-show="compressForm.isReSize"
:label="$T('UPLOAD_PAGE_IMAGE_PROCESS_RESIZEHEIGHT')"
:label="$t('UPLOAD_PAGE_IMAGE_PROCESS_RESIZEHEIGHT')"
>
<el-input-number
v-model="compressForm.reSizeHeight"
@@ -191,7 +191,7 @@
</el-form-item>
<el-form-item
v-show="compressForm.isReSize && compressForm.reSizeHeight! > 0 && compressForm.reSizeWidth === 0"
:label="$T('UPLOAD_PAGE_IMAGE_PROCESS_SKIPRESIZEOfSMALLIMG_HEIGHT')"
:label="$t('UPLOAD_PAGE_IMAGE_PROCESS_SKIPRESIZEOfSMALLIMG_HEIGHT')"
>
<el-switch
v-model="compressForm.skipReSizeOfSmallImg"
@@ -200,14 +200,14 @@
</el-form-item>
<el-form-item
v-show="compressForm.isReSize && compressForm.reSizeWidth! > 0 && compressForm.reSizeHeight === 0"
:label="$T('UPLOAD_PAGE_IMAGE_PROCESS_SKIPRESIZEOfSMALLIMG_WIDTH')"
:label="$t('UPLOAD_PAGE_IMAGE_PROCESS_SKIPRESIZEOfSMALLIMG_WIDTH')"
>
<el-switch
v-model="compressForm.skipReSizeOfSmallImg"
:style="switchStyle"
/>
</el-form-item>
<el-form-item :label="$T('UPLOAD_PAGE_IMAGE_PROCESS_ISRESIZEBYPERCENT')">
<el-form-item :label="$t('UPLOAD_PAGE_IMAGE_PROCESS_ISRESIZEBYPERCENT')">
<el-switch
v-model="compressForm.isReSizeByPercent"
:style="switchStyle"
@@ -215,14 +215,14 @@
</el-form-item>
<el-form-item
v-show="compressForm.isReSizeByPercent"
:label="$T('UPLOAD_PAGE_IMAGE_PROCESS_RESIZEPERCENT')"
:label="$t('UPLOAD_PAGE_IMAGE_PROCESS_RESIZEPERCENT')"
>
<el-input-number
v-model="compressForm.reSizePercent"
:min="0"
/>
</el-form-item>
<el-form-item :label="$T('UPLOAD_PAGE_IMAGE_PROCESS_ISROTATE')">
<el-form-item :label="$t('UPLOAD_PAGE_IMAGE_PROCESS_ISROTATE')">
<el-switch
v-model="compressForm.isRotate"
:style="switchStyle"
@@ -230,7 +230,7 @@
</el-form-item>
<el-form-item
v-show="compressForm.isRotate"
:label="$T('UPLOAD_PAGE_IMAGE_PROCESS_ROTATEDEGREE')"
:label="$t('UPLOAD_PAGE_IMAGE_PROCESS_ROTATEDEGREE')"
>
<el-input-number
v-model="compressForm.rotateDegree"
@@ -242,10 +242,10 @@
type="primary"
@click="handleSaveConfig"
>
{{ $T('UPLOAD_PAGE_IMAGE_PROCESS_CONFIRM') }}
{{ $t('UPLOAD_PAGE_IMAGE_PROCESS_CONFIRM') }}
</el-button>
<el-button @click="closeDialog">
{{ $T('UPLOAD_PAGE_IMAGE_PROCESS_CANCEL') }}
{{ $t('UPLOAD_PAGE_IMAGE_PROCESS_CANCEL') }}
</el-button>
</el-form-item>
</el-form>
@@ -254,23 +254,23 @@
<script lang="ts" setup>
import type { IBuildInCompressOptions, IBuildInWaterMarkOptions } from 'piclist'
import { onBeforeMount, reactive, ref, toRaw } from 'vue'
import { useI18n } from 'vue-i18n'
import { T as $T } from '@/i18n/index'
import { getConfig, saveConfig } from '@/utils/dataSender'
import { configPaths } from '#/utils/configPaths'
const { t } = useI18n()
const imageProcessDialogVisible = defineModel<boolean>()
const waterMarkPositionMap = new Map([
['north', $T('UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP')],
['northeast', $T('UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP_RIGHT')],
['southeast', $T('UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM_RIGHT')],
['south', $T('UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM')],
['southwest', $T('UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM_LEFT')],
['northwest', $T('UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP_LEFT')],
['west', $T('UPLOAD_PAGE_IMAGE_PROCESS_POSITION_LEFT')],
['east', $T('UPLOAD_PAGE_IMAGE_PROCESS_POSITION_RIGHT')],
['centre', $T('UPLOAD_PAGE_IMAGE_PROCESS_POSITION_CENTER')]
['north', t('UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP')],
['northeast', t('UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP_RIGHT')],
['southeast', t('UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM_RIGHT')],
['south', t('UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM')],
['southwest', t('UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM_LEFT')],
['northwest', t('UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP_LEFT')],
['west', t('UPLOAD_PAGE_IMAGE_PROCESS_POSITION_LEFT')],
['east', t('UPLOAD_PAGE_IMAGE_PROCESS_POSITION_RIGHT')],
['centre', t('UPLOAD_PAGE_IMAGE_PROCESS_POSITION_CENTER')]
])
const imageExtList = ['jpg', 'jpeg', 'png', 'webp', 'bmp', 'tiff', 'tif', 'svg', 'ico', 'avif', 'heif', 'heic']
const availableFormat = [

View File

@@ -1,7 +1,7 @@
<template>
<el-dialog
v-model="showInputBoxVisible"
:title="inputBoxOptions.title || $T('INPUT')"
:title="inputBoxOptions.title || $t('INPUT')"
:modal-append-to-body="false"
append-to-body
>
@@ -14,14 +14,14 @@
round
@click="handleInputBoxCancel"
>
{{ $T('CANCEL') }}
{{ $t('CANCEL') }}
</el-button>
<el-button
type="primary"
round
@click="handleInputBoxConfirm"
>
{{ $T('CONFIRM') }}
{{ $t('CONFIRM') }}
</el-button>
</template>
</el-dialog>
@@ -31,7 +31,6 @@
import type { IpcRendererEvent } from 'electron'
import { onBeforeMount, onBeforeUnmount, reactive, ref } from 'vue'
import { T as $T } from '@/i18n/index'
import $bus from '@/utils/bus'
import { SHOW_INPUT_BOX, SHOW_INPUT_BOX_RESPONSE } from '#/events/constants'
import { IShowInputBoxOption } from '#/types/types'

View File

@@ -1,53 +1,5 @@
import { ILocales, ILocalesKey } from 'root/src/universal/types/i18n'
import { updatePageReloadCount } from '@/utils/global'
import { SET_CURRENT_LANGUAGE } from '#/events/constants'
import { builtinI18nList } from '#/i18n'
import { IRPCActionType } from '#/types/enum'
import { II18nItem, IStringKeyMap } from '#/types/types'
export class I18nManager {
#i18nFileList: II18nItem[] = builtinI18nList
constructor () {
this.#getCurrentLanguage()
this.#getLanguageList()
window.electron.ipcRendererOn(SET_CURRENT_LANGUAGE, (_, lang: string, locales: ILocales) => {
this.#setLocales(lang, locales)
updatePageReloadCount()
})
}
#getLanguageList () {
this.#i18nFileList = window.electron.sendRpcSync(IRPCActionType.GET_LANGUAGE_LIST)
}
#getCurrentLanguage () {
const [lang, locales] = window.electron.sendRpcSync(IRPCActionType.GET_CURRENT_LANGUAGE)
this.#setLocales(lang, locales)
}
#setLocales (lang: string, locales: ILocales) {
window.i18n.setLocales(lang, locales)
}
T (key: ILocalesKey, args: IStringKeyMap = {}): string {
return window.i18n?.translate(key, args) || key
}
setCurrentLanguage (lang: string) {
export function setCurrentLanguage (lang: string) {
window.electron.sendRPC(IRPCActionType.SET_CURRENT_LANGUAGE, lang)
}
get languageList () {
return this.#i18nFileList
}
}
const i18nManager = new I18nManager()
const T = (key: ILocalesKey, args: IStringKeyMap = {}): string => {
return i18nManager.T(key, args)
}
export { i18nManager, T }

View File

@@ -0,0 +1,876 @@
{
"OPEN_MAIN_WINDOW": "Open Main Window",
"OPERATION_SUCCEED": "Operation Succeed",
"QUICK_UPLOAD": "Quick Upload",
"PICBED_QRCODE": "Picbed Qrcode",
"CONFIG_THING": "Config ${c}",
"TOOLBOX_TITLE": "Troubleshoot PicList runtime issues",
"TOOLBOX_SUB_TITLE": "Scan the following items immediately to fix usage issues",
"TOOLBOX_CHECK_CONFIG_FILE_BROKEN": "Check if the configuration file is damaged",
"TOOLBOX_CHECK_GALLERY_FILE_BROKEN": "Check if the album file is damaged",
"TOOLBOX_CHECK_PROBLEM_WITH_CLIPBOARD_PIC_UPLOAD": "Check if there is a problem with clipboard picture upload",
"TOOLBOX_CHECK_PROBLEM_WITH_PROXY": "Check if the proxy settings are normal",
"TOOLBOX_FIX_DONE_NEED_RELOAD": "Repair completed, need to restart to take effect, restart or not",
"TOOLBOX_CANT_AUTO_FIX": "Unable to automatically repair, please repair the following problems yourself",
"TOOLBOX_START_SCAN": "Start scanning",
"TOOLBOX_RE_SCAN": "Re scanning",
"TOOLBOX_START_FIX": "Start fixing",
"TOOLBOX_SUCCESS_TIPS": "Congratulations, no problems were found",
"MANUAL_PAGE_OPEN_TIP": "Please select the way to open the manual",
"MANUAL_PAGE_OPEN_TIP_TITLE": "Tips",
"MANUAL_PAGE_OPEN_BY_BROWSER": "Browser",
"MANUAL_PAGE_OPEN_BY_BUILD_IN": "Built-in Window",
"MANUAL_PAGE_OPEN_SETTING_TIP": "Select the way to open the manual",
"UPLOAD_AREA": "Upload",
"UPLOAD_VIEW_HINT": "Click to open picbeds settings",
"MANAGE_PAGE": "Manage",
"GALLERY": "Gallery",
"REFRESH": "Refresh",
"MANUAL": "Manual",
"PICBEDS_SETTINGS": "Picbeds",
"PICLIST_SETTINGS": "Settings",
"PLUGIN_SETTINGS": "Plugins",
"CHOOSE_PICBED": "Choose Picbed",
"COPY_PICBED_CONFIG": "Copy Picbed Config",
"COPY_PICBED_CONFIG_SUCCEED": "Copy Picbed Config Succeed",
"INPUT": "Input",
"CANCEL": "Cancel",
"CONFIRM": "Confirm",
"RESET_PICBED_CONFIG": "Reset",
"CHOOSE_SHOWED_PICBED": "Choose Showed Picbed",
"CHOOSE_PASTE_FORMAT": "Choose Paste Format",
"COPY": "Copy",
"DELETE": "Delete",
"SELECT_ALL": "Select All",
"CHANGE_IMAGE_URL": "Change Image URL",
"CHANGE_IMAGE_URL_SUCCEED": "Change Image URL Succeed",
"COPY_LINK_SUCCEED": "Copy Link Succeed",
"BATCH_COPY_LINK_SUCCEED": "Batch Copy Link Succeed",
"FILE_RENAME": "File Rename",
"OPEN_FILE_PATH": "Open file path",
"GALLERY_SYNC_DELETE": "Cloud Sync Delete",
"GALLERY_SYNC_DELETE_NOTICE_TITLE": "Notice",
"GALLERY_SYNC_DELETE_NOTICE_SUCCEED": "Cloud Delete Succeed",
"GALLERY_SYNC_DELETE_NOTICE_FAILED": "Cloud Delete Failed",
"GALLERY_CHANGE_URL": "Rename",
"GALLERY_SEARCH_FILENAME": "Search by Filename",
"GALLERY_SEARCH_URL": "Search by URL",
"GALLERY_MATCHED": " Matched: ",
"UPLOAD_PAGE_COPY_UPLOAD_API": "Copy Upload API",
"UPLOAD_PAGE_IMAGE_PROCESS_NAME": "Image Processing",
"UPLOAD_PAGE_IMAGE_PROCESS_DIALOG_TITLE": "Image Processing Settings",
"UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST": "Skip Process Ext List",
"UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST_TIPS": "Enter the file extensions to skip processing, separated by commas (e.g., jpg,png,gif)",
"UPLOAD_PAGE_IMAGE_PROCESS_ISADDWM": "Add Watermark",
"UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE": "Watermark Type",
"UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE_TEXT": "Text",
"UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE_IMAGE": "Image",
"UPLOAD_PAGE_IMAGE_PROCESS_ISFULLSCREEN_WM": "Full-Screen Watermark",
"UPLOAD_PAGE_IMAGE_PROCESS_WMDEGREE": "Watermark Angle",
"UPLOAD_PAGE_IMAGE_PROCESS_WMTEXT": "Watermark Text",
"UPLOAD_PAGE_IMAGE_PROCESS_WMTEXT_FONT_PATH": "Watermark Font Path (download font file for the first time)",
"UPLOAD_PAGE_IMAGE_PROCESS_WMRATIO": "Watermark Size Ratio",
"UPLOAD_PAGE_IMAGE_PROCESS_WMCOLOR": "Watermark Color, Please select from the color picker",
"UPLOAD_PAGE_IMAGE_PROCESS_WMPATH": "Watermark Image Path (leave blank to use default image)",
"UPLOAD_PAGE_IMAGE_PROCESS_WMPOSITION": "Watermark Position",
"UPLOAD_PAGE_IMAGE_PROCESS_ISREMOVEEXIF": "Remove EXIF Info",
"UPLOAD_PAGE_IMAGE_PROCESS_QUALITY": "Compression Quality(1-100)",
"UPLOAD_PAGE_IMAGE_PROCESS_ISCONVERT": "Convert Format",
"UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT": "Destination Format",
"UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT_SPECIFIC": "Specific Format, Please enter in json format, e.g. {\"png\": \"jpg\"}",
"UPLOAD_PAGE_IMAGE_PROCESS_ISFLIP": "Whether to flip vertically",
"UPLOAD_PAGE_IMAGE_PROCESS_ISFLOP": "Whether to flip horizontally",
"UPLOAD_PAGE_IMAGE_PROCESS_ISRESIZE": "Resize to fixed size",
"UPLOAD_PAGE_IMAGE_PROCESS_RESIZEWIDTH": "Width(Set to 0 to scale by height)",
"UPLOAD_PAGE_IMAGE_PROCESS_RESIZEHEIGHT": "Height(Set to 0 to scale by width)",
"UPLOAD_PAGE_IMAGE_PROCESS_SKIPRESIZEOfSMALLIMG_HEIGHT": "Skip resize when image height is smaller than target height",
"UPLOAD_PAGE_IMAGE_PROCESS_SKIPRESIZEOfSMALLIMG_WIDTH": "Skip resize when image width is smaller than target width",
"UPLOAD_PAGE_IMAGE_PROCESS_ISRESIZEBYPERCENT": "Resize by percentage (Higher priority)",
"UPLOAD_PAGE_IMAGE_PROCESS_RESIZEPERCENT": "Resize Percentage, enter 50 for 50%",
"UPLOAD_PAGE_IMAGE_PROCESS_ISROTATE": "Rotate",
"UPLOAD_PAGE_IMAGE_PROCESS_ROTATEDEGREE": "Rotation Angle",
"UPLOAD_PAGE_IMAGE_PROCESS_CONFIRM": "Save",
"UPLOAD_PAGE_IMAGE_PROCESS_CANCEL": "Cancel",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP": "top",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM": "bottom",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_LEFT": "left",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_RIGHT": "right",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP_LEFT": "top left",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP_RIGHT": "top right",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM_LEFT": "bottom left",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM_RIGHT": "bottom right",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_CENTER": "center",
"UPLOAD_SHORT_URL": "Short",
"UPLOAD_NORMAL_URL": "Long",
"SETTINGS": "Settings",
"SETTINGS_OPEN_CONFIG_FILE": "Open Config File",
"SETTINGS_MIGRATE_FROM_PICGO": "Migrate from PicGo",
"SETTINGS_MIGRATE_FROM_PICGO_TITLE": "Notice",
"SETTINGS_MIGRATE_FROM_PICGO_CONTENT": "Migrate from PicGo will overwrite your current settings and gallery, do you want to continue?",
"SETTINGS_MIGRATE_FROM_PICGO_SUCCESS": "Import succeed, please restart PicList",
"SETTINGS_MIGRATE_FROM_PICGO_FAILED": "Import failed",
"SETTINGS_START_MODE": "Default Start Mode",
"SETTINGS_START_MODE_MINI": "Mini Window",
"SETTINGS_START_MODE_MAIN": "Main Window",
"SETTINGS_START_MODE_NO_TRAY": "No Tray",
"SETTINGS_START_MODE_QUIET": "Quiet Mode",
"SETTINGS_CLICK_TO_OPEN": "Click to Open",
"SETTINGS_SET_LOG_FILE": "Set Log File",
"SETTINGS_CLICK_TO_SET": "Click to Set",
"SETTINGS_CLICK_TO_CHECK": "Click to Check",
"SETTINGS_SET_SHORTCUT": "Set Shortcut",
"SETTINGS_CUSTOM_LINK_FORMAT": "Custom Link Format",
"SETTINGS_SET_PROXY_AND_MIRROR": "Set Proxy and Mirror",
"SETTINGS_SET_SERVER": "Set Server",
"SETTINGS_CHECK_UPDATE": "Check Update",
"SETTINGS_OPEN_UPDATE_HELPER": "Open Update Helper",
"SETTINGS_OPEN": "Open",
"SETTINGS_CLOSE": "Close",
"SETTINGS_CLOSE_MINI_WINDOW_SYNC": "Close Mini Window When open Main Window",
"SETTINGS_CLOSE_MAIN_WINDOW_SYNC": "Close Main Window When open Mini Window",
"SETTINGS_LAUNCH_ON_BOOT": "Launch On Boot",
"SETTINGS_RENAME_BEFORE_UPLOAD": "Manual Rename",
"SETTINGS_TIMESTAMP_RENAME": "Timestamp Rename",
"SETTINGS_ADVANCED_RENAME": "Advanced Rename",
"SETTINGS_ADVANCED_RENAME_ENABLE": "Enable Advanced Rename",
"SETTINGS_ADVANCED_RENAME_FORMAT": "Advanced Rename Format",
"SETTINGS_ENABLE_SECOND_PICBED": "Enable Second Picbed",
"SETTINGS_SET_SECOND_PICBED": "Set Second Picbed",
"SETTINGS_OPEN_UPLOAD_TIPS": "Open Upload Tips",
"SETTINGS_OPEN_UPLOAD_RESULT_TIPS": "Open Upload Result Tips",
"SETTINGS_MINI_WINDOW_ON_TOP": "Mini Window On Top",
"SETTINGS_AUTO_COPY_URL_AFTER_UPLOAD": "Auto Copy URL After Upload",
"SETTINGS_TIPS_PLACEHOLDER_URL": "Use $url to represent url position",
"SETTINGS_TIPS_PLACEHOLDER_FILENAME": "Use $fileName to represent file name position",
"SETTINGS_TIPS_PLACEHOLDER_EXTNAME": "Use $extName to represent file's ext position",
"SETTINGS_TIPS_SUCH_AS": "Such as: $url/$fileName",
"SETTINGS_UPLOAD_PROXY": "Upload Proxy",
"SETTINGS_PLUGIN_INSTALL_PROXY": "Proxy for Plugin Install",
"SETTINGS_PLUGIN_INSTALL_MIRROR": "Mirror for Plugin Install",
"SETTINGS_CURRENT_VERSION": "Current Version",
"SETTINGS_NEWEST_VERSION": "Newest Version",
"SETTINGS_GETING": "Getting...",
"SETTINGS_TIPS_HAS_NEW_VERSION": "PicList has a new version, please click confirm to restart",
"SETTINGS_LOG_FILE_PATH": "Log File Path",
"SETTINGS_CONFIG_FILE_PATH": "Config File Path",
"SETTINGS_LOG_FILE": "Log File",
"SETTINGS_GUI_LOG_FILE": "GUI Log File",
"SETTINGS_MANAGE_LOG_FILE": "Manage Log File",
"SETTINGS_LOG_LEVEL": "Log Level",
"SETTINGS_LOG_FILE_SIZE": "Log File Size",
"SETTINGS_SET_PICGO_SERVER": "Set PicGo Server",
"SETTINGS_TIPS_SERVER_NOTICE": "If you don't know what is the server's function, please read the document, or don't modify the configuration.",
"SETTINGS_ENABLE_SERVER": "Enable Server",
"SETTINGS_SET_SERVER_HOST": "Set Server Host",
"SETTINGS_SET_SERVER_PORT": "Set Server Port",
"SETTINGS_SET_SERVER_KEY": "Set Auth Key",
"SETTINGS_SET_WEB_SERVER": "Set Web Server",
"SETTINGS_TIPS_WEB_SERVER_NOTICE": "If you don't know what is the web server's function, please read the document, or don't modify the configuration.",
"SETTINGS_SET_ENABLE_WEB_SERVER": "Enable Web Server",
"SETTINGS_SET_WEB_SERVER_HOST": "Set Web Server Host",
"SETTINGS_SET_WEB_SERVER_PORT": "Set Web Server Port",
"SETTINGS_SET_WEB_SERVER_PATH": "Set Web Server Path",
"SETTINGS_TIP_PLACEHOLDER_WEB_HOST": "Default:127.0.0.1",
"SETTINGS_TIP_PLACEHOLDER_WEB_PORT": "Default:37777",
"SETTINGS_TIP_PLACEHOLDER_HOST": "Default:127.0.0.1",
"SETTINGS_TIP_PLACEHOLDER_PORT": "Default:36677",
"SETTINGS_TIP_PLACEHOLDER_KEY": "This key is used to avoid malicious requests, through urlParams '?key=xxx' to pass",
"SETTINGS_SET_SERVER_AES_KEY": "Set AES Key for server response",
"SETTINGS_LOG_LEVEL_ALL": "All",
"SETTINGS_LOG_LEVEL_SUCCESS": "Success",
"SETTINGS_LOG_LEVEL_ERROR": "Error",
"SETTINGS_LOG_LEVEL_INFO": "Info",
"SETTINGS_LOG_LEVEL_WARN": "Warn",
"SETTINGS_LOG_LEVEL_NONE": "None",
"SETTINGS_RESULT": "Result",
"SETTINGS_DEFAULT_PICBED": "Default Picbed",
"SETTINGS_SET_DEFAULT_PICBED": "Set Default Picbed",
"SETTINGS_NOT_CONFIG_OPTIONS": "Not Config Options",
"SETTINGS_USE_BUILTIN_CLIPBOARD_UPLOAD": "Use Builtin Clipboard to Upload",
"SETTINGS_CHOOSE_LANGUAGE": "Choose Language",
"UPLOADER_CONFIG_NAME": "Configuration Name",
"UPLOADER_CONFIG_PLACEHOLDER": "Please Enter Configuration Name",
"SELECTED_SETTING_HINT": "Selected",
"SETTINGS_MAIN_WINDOW_SIZE": "Default Main Window Size",
"SETTINGS_MAIN_WINDOW_SIZE_WIDTH": "Default Main Window Width",
"SETTINGS_MAIN_WINDOW_WIDTH_HINT": "Default: 1200",
"SETTINGS_MAIN_WINDOW_SIZE_HEIGHT": "Default Main Window Height",
"SETTINGS_MAIN_WINDOW_HEIGHT_HINT": "Default: 800",
"SETTINGS_RAW_PICGO_SIZE": "Raw PicGo Size",
"SETTINGS_CUSTOM_MINI_ICON_PATH": "Custom Mini Window Icon Path",
"SETTINGS_CUSTOM_MINI_ICON": "Custom Mini Window Icon",
"SETTINGS_COMPRESS_AND_WATERMARK": "Compress and Watermark",
"SETTINGS_SYNC_DELETE_CLOUD": "Sync delete from cloud storage of gallery",
"SETTINGS_ISHIDEDOCK": "Hide Dock Icon",
"SETTINGS_ISHIDEDOCK_TIPS": "Not support hide dock and tray at the same time",
"SETTINGS_ENCODE_OUTPUT_URL": "Encode Output(or Copyed) URL",
"SETTINGS_WATCH_CLIPBOARD": "Watch clipboard when software start",
"SETTINGS_SHORT_URL": "Use short url",
"SETTINGS_SHORT_URL_SERVER": "Short url server",
"SETTINGS_SHORT_URL_C1N_TOKEN": "C1N Token",
"SETTINGS_SHORT_URL_YOURLS_DOMAIN": "YOURLS domain",
"SETTINGS_SHORT_URL_YOURLS_SIGNATURE": "YOURLS signature",
"SETTINGS_SHORT_URL_CF_WORKER_HOST": "Cloudflare Worker Host",
"SETTINGS_SHORT_SINK_DOMAIN": "sink domain",
"SETTINGS_SHORT_SINK_TOKEN": "sink token",
"SETTINGS_DELETE_LOCAL_FILE_AFTER_UPLOAD": "Delete local file after upload",
"SETTINGS_SYNC_CONFIG": "Settings Sync Configuration",
"SETTINGS_SYNC_CONFIG_TITLE": "Sync Settings",
"SETTINGS_SYNC_CONFIG_NOTE": "The files to be synchronized are configuration files.",
"SETTINGS_SYNC_CONFIG_SELECT_TYPE": "Select sync method",
"SETTINGS_SYNC_CONFIG_SELECT_FILE": "Select files to sync",
"SETTINGS_SYNC_CONFIG_SELECT_CONFIG": "Configuration files only",
"SETTINGS_SYNC_CONFIG_SELECT_GALLERY": "Gallery files only",
"SETTINGS_SYNC_CONFIG_SELECT_BOTH": "Both configuration and gallery files",
"SETTINGS_SYNC_CONFIG_GITEA_HOST": "Gitea Host",
"SETTINGS_SYNC_CONFIG_GITHUB_USERNAME": "username",
"SETTINGS_SYNC_CONFIG_GITEA_USERNAME": "username",
"SETTINGS_SYNC_CONFIG_GITEE_USERNAME": "username",
"SETTINGS_SYNC_CONFIG_GITHUB_REPO": "repository (private)",
"SETTINGS_SYNC_CONFIG_GITEA_REPO": "repository",
"SETTINGS_SYNC_CONFIG_GITEE_REPO": "repository path",
"SETTINGS_SYNC_CONFIG_GITHUB_BRANCH": "branch",
"SETTINGS_SYNC_CONFIG_GITEA_BRANCH": "branch",
"SETTINGS_SYNC_CONFIG_GITEE_BRANCH": "branch",
"SETTINGS_SYNC_CONFIG_GITHUB_TOKEN": "Token",
"SETTINGS_SYNC_CONFIG_GITEA_TOKEN": "Token",
"SETTINGS_SYNC_CONFIG_GITEE_TOKEN": "Token",
"SETTINGS_SYNC_CONFIG_PROXY": "Proxy",
"SETTINGS_SYNC_CONFIG_GITHUB_USERNAME_PLACEHOLDER": "Please enter GitHub username",
"SETTINGS_SYNC_CONFIG_GITEA_USERNAME_PLACEHOLDER": "Please enter Gitea username",
"SETTINGS_SYNC_CONFIG_GITEE_USERNAME_PLACEHOLDER": "Please enter Gitee username",
"SETTINGS_SYNC_CONFIG_GITHUB_REPO_PLACEHOLDER": "Please enter GitHub repository name",
"SETTINGS_SYNC_CONFIG_GITEA_REPO_PLACEHOLDER": "Please enter Gitea repository name",
"SETTINGS_SYNC_CONFIG_GITEE_REPO_PLACEHOLDER": "Please enter Gitee repository name",
"SETTINGS_SYNC_CONFIG_GITHUB_BRANCH_PLACEHOLDER": "Please enter GitHub branch name",
"SETTINGS_SYNC_CONFIG_GITEE_BRANCH_PLACEHOLDER": "Please enter Gitee branch name",
"SETTINGS_SYNC_CONFIG_GITEA_BRANCH_PLACEHOLDER": "Please enter Gitea branch name",
"SETTINGS_SYNC_CONFIG_GITHUB_TOKEN_PLACEHOLDER": "Please enter GitHub Token",
"SETTINGS_SYNC_CONFIG_GITEA_TOKEN_PLACEHOLDER": "Please enter Gitea Token",
"SETTINGS_SYNC_CONFIG_GITEE_TOKEN_PLACEHOLDER": "Please enter Gitee Token",
"SETTINGS_SYNC_CONFIG_PROXY_PLACEHOLDER": "Please enter proxy",
"SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT": "WebDAV Endpoint",
"SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT_PLACEHOLDER": "Please enter WebDAV endpoint URL",
"SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME": "Username",
"SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME_PLACEHOLDER": "Please enter WebDAV username",
"SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD": "Password",
"SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD_PLACEHOLDER": "Please enter WebDAV password",
"SETTINGS_SYNC_CONFIG_WEBDAV_AUTH_TYPE": "Authentication Type",
"SETTINGS_SYNC_CONFIG_WEBDAV_SSL_ENABLED": "Enable SSL/HTTPS",
"SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH": "Save Path",
"SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH_PLACEHOLDER": "Please select save path for sync files",
"SETTINGS_UP_DOWN_DESC": "Upload and download configuration files",
"SETTINGS_SYNC_UPLOAD": "Upload",
"SETTINGS_SYNC_DOWNLOAD": "Download",
"SETTINGS_SYNC_UPLOAD_ALL": "Upload all",
"SETTINGS_SYNC_DOWNLOAD_ALL": "Download all",
"SETTINGS_SYNC_UPLOAD_SUCCESS": "Successfully uploaded",
"SETTINGS_SYNC_UPLOAD_FAILED": "Upload failed",
"SETTINGS_SYNC_DOWNLOAD_SUCCESS": "Successfully downloaded",
"SETTINGS_SYNC_DOWNLOAD_FAILED": "Download failed",
"SETTINGS_SYNC_COMMON_CONFIG": "Common configuration",
"SETTINGS_SYNC_MANAGE_CONFIG": "Manage configuration",
"SETTINGS_AUTO_IMPORT": "Auto import config in manage page",
"SETTINGS_AUTO_IMPORT_SELECT_PICBED": "Select picbed",
"SETTINGS_TAB_SYSTEM": "System",
"SETTINGS_TAB_SYNC_CONFIG": "Configuration",
"SETTINGS_TAB_UPLOAD": "Upload",
"SETTINGS_TAB_ADVANCED": "Advanced",
"SETTINGS_TAB_UPDATE": "Update",
"BUILTIN_CLIPBOARD_TIPS": "Use builtin clipboard function to upload instead of using scripts",
"SHORTCUT_NAME": "Shortcut Name",
"SHORTCUT_BIND": "Shortcut Binding",
"SHORTCUT_STATUS": "Status",
"SHORTCUT_ENABLED": "Enabled",
"SHORTCUT_DISABLED": "Disabled",
"SHORTCUT_SOURCE": "Source",
"SHORTCUT_HANDLE": "Handle",
"SHORTCUT_ENABLE": "Enable",
"SHORTCUT_DISABLE": "Disable",
"SHORTCUT_EDIT": "Edit",
"SHORTCUT_CHANGE_UPLOAD": "Change Upload Shortcut",
"WAIT_TO_UPLOAD": "Wait to Upload",
"ALREADY_UPLOAD": "Already Uploaded",
"DRAG_FILE_TO_HERE": "Drag file to here, or",
"CLICK_TO_UPLOAD": "click to upload",
"LINK_FORMAT": "Link Format",
"CLIPBOARD_PICTURE": "Clipboard",
"TIPS_DRAG_VALID_PICTURE_OR_URL": "Drag valid picture or url to here",
"TIPS_INPUT_URL": "Input URL",
"TIPS_HTTP_PREFIX": "http:// or https://",
"TIPS_INPUT_VALID_URL": "Input valid URL",
"PLUGIN_SEARCH_PLACEHOLDER": "Search picgo plugins on npm, or click the button to view the awesome plugins list",
"PLUGIN_INSTALL": "Install",
"PLUGIN_INSTALLING": "Installing...",
"PLUGIN_INSTALLED": "Installed",
"PLUGIN_DOING_SOMETHING": "Doing...",
"PLUGIN_LIST": "Plugin List",
"PLUGIN_IMPORT_LOCAL": "Import Local Plugins",
"PLUGIN_UPDATE_ALL": "Update All Plugins",
"TIPS_REMOVE_LINK": "This operation will remove the picture from the album, continue?",
"TIPS_WILL_REMOVE_CHOOSED_IMAGES": "This operation will remove the picture from the album, continue?",
"TIPS_MUST_CONTAINS_URL": "Must contains $url or $fileName or $extName",
"TIPS_NETWORK_ERROR": "Network Error",
"TIPS_NEED_RELOAD": "Need Reload App",
"TIPS_PLEASE_CHOOSE_LOG_LEVEL": "Please choose log level",
"TIPS_SET_SUCCEED": "Set successfully",
"TIPS_RESET_SUCCEED": "Reset successfully",
"TIPS_PLUGIN_NOT_GUI_IMPLEMENT": "This plugin is not optimized for the GUI, continue?",
"MANAGE_SETTING_TITLE": "Manage Setting",
"MANAGE_SETTING_ISAUTOREFRESH_TITLE": "Auto refresh file list when entering new directory",
"MANAGE_SETTING_ISAUTOREFRESH_TIPS": "Only applies to non-paginated mode, data is cached to indexdb to speed up loading speed",
"MANAGE_SETTING_CLEAR_CACHE_TITLE": "Clear file list cache database, currently in use:",
"MANAGE_SETTING_CLEAR_CACHE_FREE_TITLE": "Available:",
"MANAGE_SETTING_CLEAR_CACHE_TIPS": "After clearing, the file list will be reloaded when entering a new directory next time",
"MANAGE_SETTING_CLEAR_CACHE_PROMPT": "Are you sure you want to clear the file list cache database?",
"MANAGE_SETTING_CLEAR_CACHE_BUTTON": "Clear",
"MANAGE_SETTING_ISSHOWTHUMBNAIL_TITLE": "Display the original image instead of format icon (requires public access permissions)",
"MANAGE_SETTING_ISUSEPRESIGNEDURL_TITLE": "Use presigned URL for image display",
"MANAGE_SETTING_ISSHOWLIST_TITLE": "Default display mode for the file list",
"MANAGE_SETTING_ISSHOWLIST_ON": "List",
"MANAGE_SETTING_ISSHOWLIST_OFF": "Card",
"MANAGE_SETTING_ISFORCECUSTOMURLHTTPS_TITLE": "Force custom URL to use HTTPS",
"MANAGE_SETTING_ISFORCECUSTOMURLHTTPS_TIPS": "After enabling, all operations will automatically add the https prefix to custom domains",
"MANAGE_SETTING_ISUPLOADKEEPDIRSTRUCTURE_TITLE": "Preserve directory structure when uploading",
"MANAGE_SETTING_ISUPLOADKEEPDIRSTRUCTURE_TIPS": "After disabling, all files will be expanded to the specified directory",
"MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_A": "Download",
"MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_B": " File ",
"MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_C": "will preserve the directory structure",
"MANAGE_SETTING_ISDOWNLOADFOLDERKEEPDIRSTRUCTURE_TITLE_D": " Folder ",
"MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TIPS": "After enabling, the original directory structure will be preserved",
"MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_TITLE": "Maximum number of files to download simultaneously (1-9999)",
"MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_TIPS": "Not work on Tencent",
"MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_INPUT_TIPS": "Please enter the maximum number of files to download simultaneously",
"MANAGE_SETTING_ISIGNORECASE_TITLE": "Should file search be case-insensitive",
"MANAGE_SETTING_ISIGNORECASE_TIPS": "After enabling, the search will be case-insensitive",
"MANAGE_SETTING_TIMESTAMPRENAME_TITLE": "Rename uploaded files with timestamp - (highest priority)",
"MANAGE_SETTING_TIMESTAMPRENAME_TIPS": "After enabling, the uploaded file will be renamed with the timestamp",
"MANAGE_SETTING_RANDOMSTRINGRENAME_TITLE": "Rename uploaded files with random strings - (medium priority)",
"MANAGE_SETTING_RANDOMSTRINGRENAME_TIPS": "Random string length is 20",
"MANAGE_SETTING_CUSTOMRENAME_TITLE": "Rename uploaded files with custom names - (lowest priority)",
"MANAGE_SETTING_CUSTOMRENAME_TIPS": "After enabling, the uploaded file will be renamed with the custom pattern",
"MANAGE_SETTING_CUSTOM_PATTERN_TITLE": "Custom rename format, placeholders can be freely combined, please refer to the table below",
"MANAGE_SETTING_CUSTOM_PATTERN_TIPS": "Please enter the custom rename format",
"MANAGE_SETTING_CUSTOM_PATTERN_TABLE_TITLE": "Placeholder",
"MANAGE_SETTING_CUSTOM_PATTERN_TABLE_TIPS": "Description",
"MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TITLE": "Presigned URL expiration time (seconds)",
"MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TIPS": "Please enter the presigned URL expiration time",
"MANAGE_SETTING_CHOOSE_COPY_FORMAT_TITLE": "Select default link format for copying",
"MANAGE_SETTING_CHOOSE_COPY_FORMAT_MARKDOWN": "Markdown",
"MANAGE_SETTING_CHOOSE_COPY_FORMAT_MARKDOWN_WITH_LINK": "Markdown with link",
"MANAGE_SETTING_CHOOSE_COPY_FORMAT_RAWURL": "Raw URL",
"MANAGE_SETTING_CHOOSE_COPY_FORMAT_HTML": "HTML",
"MANAGE_SETTING_CHOOSE_COPY_FORMAT_BBCODE": "BBCode",
"MANAGE_SETTING_CHOOSE_COPY_FORMAT_CUSTOM": "Custom",
"MANAGE_SETTING_CUSTOM_COPY_FORMAT_TITLE": "Custom link format($url -> raw url, $fileName -> raw fileName)",
"MANAGE_SETTING_CUSTOM_COPY_FORMAT_TIPS": "Please enter the custom link format",
"MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_TITLE": "Choose default download folder",
"MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_TIPS": "System default download directory",
"MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_BUTTON": "Choose folder",
"MANAGE_SETTING_COPY_MESSAGE": "Copied",
"MANAGE_SETTING_CLEAR_CACHE_SUCCESS": "Cleared successfully",
"MANAGE_SETTING_CLEAR_CACHE_FAILED": "Clear failed",
"MANAGE_SETTING_ISENCODEURL_TITLE": "Encode URL when copy",
"MANAGE_SETTING_ISENCODEURL_TIPS": "After enabling, the URL will be encoded when copying",
"MANAGE_NO_DATA": "No data",
"MANAGE_MAIN_PAGE_NEW_BUCKET": "New Bucket",
"MANAGE_MAIN_PAGE_BACK_TO_HOME": "Home",
"MANAGE_MAIN_PAGE_SWITCH_PICBED": "Switch",
"MANAGE_MAIN_PAGE_SETTING": "Setting",
"MANAGE_MAIN_PAGE_SUBMIT": "Submit",
"MANAGE_MAIN_PAGE_TIPS": "Tips",
"MANAGE_MAIN_PAGE_TIPS_SUCCESS": "Created successfully",
"MANAGE_MAIN_PAGE_TIPS_FAILED": "Create failed",
"MANAGE_MAIN_PAGE_BUCKET": "Bucket",
"MANAGE_MAIN_PAGE_GALLERY": "Album",
"MANAGE_MAIN_PAGE_REPOSITORY": "Repo",
"MANAGE_CONSTANT_BASE_RULE": "Please enter ",
"MANAGE_CONSTANT_ITEMS_PAGE_RULE_MESSAGE_A": "Please enter the number of items displayed per page.",
"MANAGE_CONSTANT_ITEMS_PAGE_RULE_MESSAGE_B": "The number of items displayed per page must be a number.",
"MANAGE_CONSTANT_ITEMS_PAGE_RULE_MESSAGE_C": "The number of items displayed per page must be between 20 and 1000.",
"MANAGE_CONSTANT_ALIAS_RULE_MESSAGE_A": "Please enter the alias, which is the unique identifier for this configuration.",
"MANAGE_CONSTANT_ALIAS_RULE_MESSAGE_B": "The alias can only contain Chinese, English, numbers, underscores, and hyphens.",
"MANAGE_CONSTANT_ALIAS_TOOLTIP": "The alias can only contain Chinese, English, numbers, underscores, and hyphens.",
"MANAGE_CONSTANT_ITEMS_PAGE_TOOLTIP": "The number of items displayed per page must be between 20 and 1000.",
"MANAGE_CONSTANT_PAGING_TOOLTIP": "When paging is turned off, the directory list will use database caching to optimize performance.",
"MANAGE_CONSTANT_BUCKET_NAME_TOOLTIP": "Separated by commas, e.g., bucket1,bucket2,bucket3, and corresponding to the starting directory order one by one.",
"MANAGE_CONSTANT_BASE_DIR_TOOLTIP": "Separated by commas, e.g., /dir1,/dir2,/dir3, corresponding to the storage bucket order one by one.",
"MANAGE_CONSTANT_IS_AUTO_CUSTOM_URL_TOOLTIP": "When turned on, the domainbound to bucket will be automatically obtained. Else, it can be manually filled in.",
"MANAGE_CONSTANT_SMMS_ALIAS_DESC": "Alias - required",
"MANAGE_CONSTANT_SMMS_ALIAS_PLACEHOLDER": "Unique identifier of this configuration",
"MANAGE_CONSTANT_SMMS_TOKEN_DESC": "Token - required",
"MANAGE_CONSTANT_SMMS_TOKEN_PLACEHOLDER": "Please fill in your token",
"MANAGE_CONSTANT_SMMS_PAGING_DESC": "Whether to enable pagination",
"MANAGE_CONSTANT_SMMS_EXPLAIN": "For users in mainland China, please visit the backup domain https://smms.app. Do not upload images in large quantities.",
"MANAGE_CONSTANT_SMMS_REFER_TEXT": "Refer to: ",
"MANAGE_CONSTANT_QINIU_NAME": "Qiniu",
"MANAGE_CONSTANT_QINIU_ALIAS_DESC": "Alias - Required",
"MANAGE_CONSTANT_QINIU_ALIAS_PLACEHOLDER": "Unique identifier for this configuration",
"MANAGE_CONSTANT_QINIU_ACCESS_KEY_DESC": "accessKey - Required",
"MANAGE_CONSTANT_QINIU_ACCESS_KEY_PLACEHOLDER": "Please enter the accessKey",
"MANAGE_CONSTANT_QINIU_SECRET_KEY_DESC": "secretKey - Required",
"MANAGE_CONSTANT_QINIU_SECRET_KEY_PLACEHOLDER": "Please enter the secretKey",
"MANAGE_CONSTANT_QINIU_BUCKET_DESC": "space name - Optional",
"MANAGE_CONSTANT_QINIU_BUCKET_PLACEHOLDER": "English comma separated, for example: bucket1, bucket2",
"MANAGE_CONSTANT_QINIU_BASE_DIR_DESC": "Base directory - Optional",
"MANAGE_CONSTANT_QINIU_BASE_DIR_PLACEHOLDER": "English comma separated, for example: /dir1, /dir2",
"MANAGE_CONSTANT_QINIU_IS_AUTO_CUSTOM_URL_DESC": "Automatically get the bound domain name",
"MANAGE_CONSTANT_QINIU_PAGING_DESC": "Enable pagination",
"MANAGE_CONSTANT_QINIU_ITEMS_PAGE_DESC": "Number of items displayed per page",
"MANAGE_CONSTANT_QINIU_EXPLAIN": "When configuring space name and base directory, they can be set using English comma separation. The order must be consistent and missing or empty items will use the default value.",
"MANAGE_CONSTANT_QINIU_REFER_TEXT": "Refer to: ",
"MANAGE_CONSTANT_GITHUB_ALIAS_DESC": "Alias - Required",
"MANAGE_CONSTANT_GITHUB_ALIAS_PLACEHOLDER": "Unique identifier for this configuration",
"MANAGE_CONSTANT_GITHUB_TOKEN_DESC": "Token - Required",
"MANAGE_CONSTANT_GITHUB_TOKEN_PLACEHOLDER": "Please enter the Token",
"MANAGE_CONSTANT_GITHUB_TOKEN_TIPS": "Please provide a token with full repo permissions",
"MANAGE_CONSTANT_GITHUB_USER_DESC": "Username - Required",
"MANAGE_CONSTANT_GITHUB_USER_PLACEHOLDER": "Please enter the Username",
"MANAGE_CONSTANT_GITHUB_USER_RULE_MESSAGE": "Username",
"MANAGE_CONSTANT_GITHUB_PROXY_DESC": "Proxy address - Optional",
"MANAGE_CONSTANT_GITHUB_PROXY_PLACEHOLDER": "For example: http://127.0.0.1:1080",
"MANAGE_CONSTANT_GITHUB_PROXY_TIPS": "If the access speed is slow, you can try configuring a proxy",
"MANAGE_CONSTANT_GITHUB_PAGING_DESC": "Enable pagination",
"MANAGE_CONSTANT_GITHUB_CUSTOM_URL_DESC": "CDN acceleration domain name - Optional",
"MANAGE_CONSTANT_GITHUB_CUSTOM_URL_PLACEHOLDER": "Support using {username}, {repo}, {branch}, and {path} as replacement placeholders",
"MANAGE_CONSTANT_GITHUB_CUSTOM_URL_TIPS": "For example: https://cdn.staticaly.com/gh/{username}/{repo}@{branch}/{path}",
"MANAGE_CONSTANT_GITHUB_CUSTOM_URL_RULE_MESSAGE_A": "The acceleration domain name must start with http:// or https://",
"MANAGE_CONSTANT_GITHUB_CUSTOM_URL_RULE_MESSAGE_B": "The braces in the acceleration domain name must appear in pairs",
"MANAGE_CONSTANT_GITHUB_EXPLAIN": "There is an hourly limit for API calls, and uploading files larger than 100M is not supported",
"MANAGE_CONSTANT_GITHUB_REFER_TEXT": "Refer to:",
"MANAGE_CONSTANT_ALIYUN_NAME": "Ali Cloud",
"MANAGE_CONSTANT_ALIYUN_ALIAS_DESC": "Alias - required",
"MANAGE_CONSTANT_ALIYUN_ALIAS_PLACEHOLDER": "The unique identifier of this configuration",
"MANAGE_CONSTANT_ALIYUN_ACCESS_KEY_ID_DESC": "AccessKeyId - required",
"MANAGE_CONSTANT_ALIYUN_ACCESS_KEY_SECRET_DESC": "AccessKeySecret - required",
"MANAGE_CONSTANT_ALIYUN_ACCESS_KEY_SECRET_PLACEHOLDER": "Please fill in AccessKeySecret",
"MANAGE_CONSTANT_ALIYUN_BUCKET_DESC": "Bucket name - optional",
"MANAGE_CONSTANT_ALIYUN_BUCKET_PLACEHOLDER": "Separated by commas in English, for example: bucket1, bucket2",
"MANAGE_CONSTANT_ALIYUN_BASE_DIR_DESC": "Base directory - optional",
"MANAGE_CONSTANT_ALIYUN_BASE_DIR_PLACEHOLDER": "Separated by commas in English, for example: /dir1, /dir2",
"MANAGE_CONSTANT_ALIYUN_IS_AUTO_CUSTOM_URL_DESC": "Automatically obtain bound domain name",
"MANAGE_CONSTANT_ALIYUN_PAGING_DESC": "Whether to enable pagination",
"MANAGE_CONSTANT_ALIYUN_ITEMS_PAGE_DESC": "Number of items displayed per page",
"MANAGE_CONSTANT_ALIYUN_EXPLAIN": "When configuring bucket name and base directory, they can be set using English comma separation. The order must be consistent and missing or empty items will use the default value.",
"MANAGE_CONSTANT_ALIYUN_REFER_TEXT": "Refer to: ",
"MANAGE_CONSTANT_TENCENT_NAME": "Tencent",
"MANAGE_CONSTANT_TENCENT_ALIAS_DESC": "Alias - Required",
"MANAGE_CONSTANT_TENCENT_ALIAS_PLACEHOLDER": "Unique identifier for this configuration",
"MANAGE_CONSTANT_TENCENT_SECRET_ID_DESC": "SecretID - Required",
"MANAGE_CONSTANT_TENCENT_SECRET_ID_PLACEHOLDER": "Please fill in the SecretID",
"MANAGE_CONSTANT_TENCENT_SECRET_KEY_DESC": "SecretKey - Required",
"MANAGE_CONSTANT_TENCENT_SECRET_KEY_PLACEHOLDER": "Please fill in the SecretKey",
"MANAGE_CONSTANT_TENCENT_APPID_DESC": "App ID - Required",
"MANAGE_CONSTANT_TENCENT_APPID_PLACEHOLDER": "Please fill in the App ID",
"MANAGE_CONSTANT_TENCENT_APPID_TOOLTIP": "For example: 1250000000",
"MANAGE_CONSTANT_TENCENT_BUCKET_DESC": "Bucket name - Optional (note the App ID must be included)",
"MANAGE_CONSTANT_TENCENT_BUCKET_PLACEHOLDER": "Comma-separated list of bucket names, for example: bucket1-1250000000, bucket2-1250000000",
"MANAGE_CONSTANT_TENCENT_BASE_DIR_DESC": "Starting directory - Optional",
"MANAGE_CONSTANT_TENCENT_BASE_DIR_PLACEHOLDER": "Comma-separated list of directories, for example: /dir1, /dir2",
"MANAGE_CONSTANT_TENCENT_IS_AUTO_CUSTOM_URL_DESC": "Automatically obtain binding domain name",
"MANAGE_CONSTANT_TENCENT_PAGING_DESC": "Enable paging",
"MANAGE_CONSTANT_TENCENT_ITEMS_PAGE_DESC": "Number of items to display per page",
"MANAGE_CONSTANT_TENCENT_EXPLAIN": "When configuring bucket name and base directory, they can be set using English comma separation. The order must be consistent and missing or empty items will use the default value.",
"MANAGE_CONSTANT_TENCENT_REFER_TEXT": "Refer to: ",
"MANAGE_CONSTANT_UPYUN_NAME": "Upyun",
"MANAGE_CONSTANT_UPYUN_ALIAS_DESC": "Alias - required",
"MANAGE_CONSTANT_UPYUN_ALIAS_PLACEHOLDER": "Unique identifier of the configuration",
"MANAGE_CONSTANT_UPYUN_BUCKET_DESC": "Service name - required",
"MANAGE_CONSTANT_UPYUN_BUCKET_PLACEHOLDER": "Name of the storage bucket corresponding to other object storage",
"MANAGE_CONSTANT_UPYUN_OPERATOR_NAME_DESC": "Operator name - required",
"MANAGE_CONSTANT_UPYUN_OPERATOR_NAME_PLACEHOLDER": "It is recommended to use an operator with full read, write, and delete permissions",
"MANAGE_CONSTANT_UPYUN_OPERATOR_NAME_RULE": "Operator",
"MANAGE_CONSTANT_UPYUN_OPERATOR_PWD_DESC": "Operator password - required",
"MANAGE_CONSTANT_UPYUN_OPERATOR_PWD_PLACEHOLDER": "Please enter the password",
"MANAGE_CONSTANT_UPYUN_OPERATOR_PWD_RULE": "Operator password",
"MANAGE_CONSTANT_UPYUN_BASE_DIR_DESC": "Base directory - optional",
"MANAGE_CONSTANT_UPYUN_BASE_DIR_PLACEHOLDER": "Initial directory when reading files",
"MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_DESC": "Acceleration domain name - required",
"MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_PLACEHOLDER": "Please start with http:// or https://",
"MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_RULE_MESSAGE_A": "Acceleration domain name cannot be empty",
"MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_RULE_MESSAGE_B": "Please start the custom domain name with http:// or https://",
"MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_DESC": "Anti-leech key - optional",
"MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_PLACEHOLDER": "Please enter the anti-leech key",
"MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_TOOLTIP": "If you do not need to use anti-leech, please leave it blank",
"MANAGE_CONSTANT_UPYUN_EXPIRE_TIME_DESC": "Expiration time(s) - optional",
"MANAGE_CONSTANT_UPYUN_PAGING": "Whether to enable pagination",
"MANAGE_CONSTANT_UPYUN_ITEMS_PAGE": "Number of items displayed per page",
"MANAGE_CONSTANT_UPYUN_EXPLAIN": "It is necessary to fill in the acceleration domain name of Upyun image bed, otherwise it cannot be used normally.",
"MANAGE_CONSTANT_UPYUN_REFER_TEXT": "Refer to: ",
"MANAGE_CONSTANT_IMGUR_NAME": "Imgur",
"MANAGE_CONSTANT_IMGUR_ALIAS_DESC": "Alias - required",
"MANAGE_CONSTANT_IMGUR_ALIAS_PLACEHOLDER": "Unique identifier of the configuration",
"MANAGE_CONSTANT_IMGUR_USERNAME_DESC": "Imgur username - required",
"MANAGE_CONSTANT_IMGUR_USERNAME_PLACEHOLDER": "Please enter the Imgur username",
"MANAGE_CONSTANT_IMGUR_ACCESS_TOKEN_DESC": "Access token - required",
"MANAGE_CONSTANT_IMGUR_ACCESS_TOKEN_PLACEHOLDER": "Please enter the access token",
"MANAGE_CONSTANT_IMGUR_ACCESS_TOKEN_TOOLTIP": "Not the client ID, please refer to the configuration tutorial",
"MANAGE_CONSTANT_IMGUR_PROXY_DESC": "Proxy - optional",
"MANAGE_CONSTANT_IMGUR_PROXY_PLACEHOLDER": "For example: http://127.0.0.1:1080",
"MANAGE_CONSTANT_IMGUR_PROXY_TOOLTIP": "Please use a proxy in mainland China, otherwise it cannot be used normally",
"MANAGE_CONSTANT_IMGUR_EXPLAIN": "Please use a proxy in mainland China, API calls have restrictions, please pay attention to usage frequency",
"MANAGE_CONSTANT_IMGUR_REFER_TEXT": "Refer to: ",
"MANAGE_CONSTANT_S3_NAME": "S3-Compatible",
"MANAGE_CONSTANT_S3_ALIAS_DESC": "Alias - Required",
"MANAGE_CONSTANT_S3_ALIAS_PLACEHOLDER": "Unique identifier for this configuration",
"MANAGE_CONSTANT_S3_ACCESS_KEY_ID_DESC": "Access Key ID - Required",
"MANAGE_CONSTANT_S3_ACCESS_KEY_ID_PLACEHOLDER": "Please enter Access Key ID",
"MANAGE_CONSTANT_S3_SECRET_ACCESS_KEY_DESC": "Secret Access Key - Required",
"MANAGE_CONSTANT_S3_SECRET_ACCESS_KEY_PLACEHOLDER": "Please enter Secret Access Key",
"MANAGE_CONSTANT_S3_ENDPOINT_DESC": "Endpoint - Optional",
"MANAGE_CONSTANT_S3_ENDPOINT_PLACEHOLDER": "e.g. s3.us-east-1.amazonaws.com",
"MANAGE_CONSTANT_S3_ENDPOINT_TOOLTIP": "If left blank, AWS S3 is accessed by default. Provide the root API endpoint",
"MANAGE_CONSTANT_S3_SSLENABLED_DESC": "Use HTTPS connection",
"MANAGE_CONSTANT_S3_SSLENABLED_TOOLTIP": "Disable this option if not supported by your platform.",
"MANAGE_CONSTANT_S3_FORCE_PATH_STYLE_DESC": "Enable S3 Path style",
"MANAGE_CONSTANT_S3_FORCE_PATH_STYLE_TOOLTIP": "Required when using Minio, for example.",
"MANAGE_CONSTANT_S3_PROXY_DESC": "Proxy - Optional",
"MANAGE_CONSTANT_S3_PROXY_PLACEHOLDER": "e.g. http://127.0.0.1:1080",
"MANAGE_CONSTANT_S3_PROXY_TOOLTIP": "Use proxy if unable to access in some parts of Mainland China",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_DESC": "Permission for uploaded files",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_PRIVATE": "Private",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_PUBLIC_READ": "Public read",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_PUBLIC_READ_WRITE": "Public read and write",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_AUTHENTICATED_READ": "Authenticated read",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_BUCKET_OWNER_READ": "Bucket owner read",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_BUCKET_OWNER_FULL_CONTROL": "Bucket owner full control",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_AWS_EXEC_READ": "AWS execution read",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_TOOLTIP": "Permission options for uploaded files",
"MANAGE_CONSTANT_S3_BUCKET_DESC": "Bucket name - Optional",
"MANAGE_CONSTANT_S3_BUCKET_PLACEHOLDER": "English comma-separated list, e.g. bucket1,bucket2",
"MANAGE_CONSTANT_S3_BASE_DIR_DESC": "Base directory - Optional",
"MANAGE_CONSTANT_S3_BASE_DIR_PLACEHOLDER": "English comma-separated list, e.g. /dir1,/dir2",
"MANAGE_CONSTANT_S3_DOGE_CLOUD_SUPPORT_DESC": "Enable Doge Cloud API",
"MANAGE_CONSTANT_S3_DOGE_CLOUD_SUPPORT_TOOLTIP": "Support Doge Cloud API",
"MANAGE_CONSTANT_S3_PAGING_DESC": "Enable pagination",
"MANAGE_CONSTANT_S3_ITEMS_PAGE_DESC": "Items per page",
"MANAGE_CONSTANT_S3_EXPLAIN": "When configuring bucket name and base directory, they can be set using English comma separation. The order must be consistent and missing or empty items will use the default value.",
"MANAGE_CONSTANT_S3_REFER_TEXT": "Refer to: ",
"MANAGE_CONSTANT_WEBDAV_ALIAS_DESC": "Alias - Required",
"MANAGE_CONSTANT_WEBDAV_ALIAS_PLACEHOLDER": "Unique identifier for this configuration",
"MANAGE_CONSTANT_WEBDAV_HOST_DESC": "Address - Required",
"MANAGE_CONSTANT_WEBDAV_HOST_PLACEHOLDER": "e.g. https://example.com/dav",
"MANAGE_CONSTANT_WEBDAV_HOST_TOOLTIP": "Please enter the complete WebDAV address",
"MANAGE_CONSTANT_WEBDAV_USERNAME_DESC": "Username - Required",
"MANAGE_CONSTANT_WEBDAV_USERNAME_PLACEHOLDER": "Please enter your username",
"MANAGE_CONSTANT_WEBDAV_BUCKET_DESC": "Special Configuration",
"MANAGE_CONSTANT_WEBDAV_BUCKET_PLACEHOLDER": "e.g. bucket1",
"MANAGE_CONSTANT_WEBDAV_BUCKET_TOOLTIP": "This cannot be modified, only for software compatibility consideration",
"MANAGE_CONSTANT_WEBDAV_PASSWORD_DESC": "Password - Required",
"MANAGE_CONSTANT_WEBDAV_PASSWORD_PLACEHOLDER": "Please enter your password",
"MANAGE_CONSTANT_WEBDAV_BASE_DIR_DESC": "Base Directory - Optional",
"MANAGE_CONSTANT_WEBDAV_BASE_DIR_PLACEHOLDER": "e.g. /dir1",
"MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_DESC": "Custom Domain - Optional",
"MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_PLACEHOLDER": "e.g. https://example.com",
"MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_TOOLTIP": "If your WebDAV server supports custom domains, please fill in",
"MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_RULE_MESSAGE": "Custom domain should start with http:// or https://",
"MANAGE_CONSTANT_WEBDAV_WEB_PATH": "Web Path - Optional",
"MANAGE_CONSTANT_WEBDAV_WEB_PATH_PLACEHOLDER": "e.g. test/ttc",
"MANAGE_CONSTANT_WEBDAV_WEB_PATH_TOOLTIP": "Used to generate URL",
"MANAGE_CONSTANT_WEBDAV_PROXY_DESC": "Proxy - Optional",
"MANAGE_CONSTANT_WEBDAV_PROXY_PLACEHOLDER": "e.g. http://127.0.0.1:1080",
"MANAGE_CONSTANT_WEBDAV_PROXY_TOOLTIP": "If special network environment is required to access, please use proxy",
"MANAGE_CONSTANT_WEBDAV_SSL_DESC": "Use HTTPS Connection",
"MANAGE_CONSTANT_WEBDAV_SSL_TOOLTIP": "Depending on the configuration of your WebDAV server, if your server does not support HTTPS, please turn off this option",
"MANAGE_CONSTANT_WEBDAV_AUTH_TYPE_DESC": "Authentication Type",
"MANAGE_CONSTANT_WEBDAV_EXPLAIN": "WebDAV Configuration",
"MANAGE_CONSTANT_WEBDAV_REFER_TEXT": "Refer to:",
"MANAGE_CONSTANT_LOCAL_NAME": "Local",
"MANAGE_CONSTANT_LOCAL_ALIAS_DESC": "Alias - Required",
"MANAGE_CONSTANT_LOCAL_ALIAS_PLACEHOLDER": "Unique identifier for this configuration",
"MANAGE_CONSTANT_LOCAL_BASE_DIR_DESC": "Base directory - Required",
"MANAGE_CONSTANT_LOCAL_BASE_DIR_PLACEHOLDER": "e.g. /dir1",
"MANAGE_CONSTANT_LOCAL_CUSTOM_URL_DESC": "Custom Domain - Optional",
"MANAGE_CONSTANT_LOCAL_CUSTOM_URL_PLACEHOLDER": "e.g. https://example.com",
"MANAGE_CONSTANT_LOCAL_CUSTOM_URL_TOOLTIP": "If your local path supports custom domains, please fill in",
"MANAGE_CONSTANT_LOCAL_WEB_PATH": "Web Path - Optional",
"MANAGE_CONSTANT_LOCAL_WEB_PATH_PLACEHOLDER": "e.g. test/ttc",
"MANAGE_CONSTANT_LOCAL_WEB_PATH_TOOLTIP": "Used to generate URL",
"MANAGE_CONSTANT_LOCAL_EXPLAIN": "Local Configuration",
"MANAGE_CONSTANT_LOCAL_REFER_TEXT": "Refer to:",
"MANAGE_CONSTANT_LOCAL_BASE_DIR_RULE_MESSAGE": "baseDir cannot be empty",
"MANAGE_CONSTANT_LOCAL_BUCKET_DESC": "Special Configuration",
"MANAGE_CONSTANT_LOCAL_BUCKET_PLACEHOLDER": "bucket1",
"MANAGE_CONSTANT_LOCAL_BUCKET_TOOLTIP": "This cannot be modified, only for software compatibility consideration",
"MANAGE_CONSTANT_SFTP_NAME": "SFTP",
"MANAGE_CONSTANT_SFTP_ALIAS_DESC": "Alias - Required",
"MANAGE_CONSTANT_SFTP_ALIAS_PLACEHOLDER": "Unique identifier for this configuration",
"MANAGE_CONSTANT_SFTP_HOST_DESC": "SSH Host - Required",
"MANAGE_CONSTANT_SFTP_HOST_PLACEHOLDER": "e.g. 233.233.233.233",
"MANAGE_CONSTANT_SFTP_PORT_DESC": "SSH Port - Required",
"MANAGE_CONSTANT_SFTP_PORT_PLACEHOLDER": "e.g. 22",
"MANAGE_CONSTANT_SFTP_USERNAME_DESC": "Username",
"MANAGE_CONSTANT_SFTP_USERNAME_PLACEHOLDER": "Please enter your username",
"MANAGE_CONSTANT_SFTP_PASSWORD_DESC": "Password",
"MANAGE_CONSTANT_SFTP_PASSWORD_PLACEHOLDER": "Please enter your password",
"MANAGE_CONSTANT_SFTP_PRIVATE_KEY_DESC": "Private Key",
"MANAGE_CONSTANT_SFTP_PRIVATE_KEY_PLACEHOLDER": "Please enter your private key",
"MANAGE_CONSTANT_SFTP_PASSPHRASE_DESC": "Private Key Password",
"MANAGE_CONSTANT_SFTP_PASSPHRASE_PLACEHOLDER": "Please enter your private key password",
"MANAGE_CONSTANT_SFTP_BASE_DIR_DESC": "Base Directory",
"MANAGE_CONSTANT_SFTP_BASE_DIR_PLACEHOLDER": "e.g. /dir1",
"MANAGE_CONSTANT_SFTP_CUSTOM_URL_DESC": "Custom Domain",
"MANAGE_CONSTANT_SFTP_CUSTOM_URL_PLACEHOLDER": "e.g. https://example.com",
"MANAGE_CONSTANT_SFTP_CUSTOM_URL_TOOLTIP": "If your SFTP server supports custom domains, please fill in",
"MANAGE_CONSTANT_SFTP_WEB_PATH": "Web Path",
"MANAGE_CONSTANT_SFTP_WEB_PATH_PLACEHOLDER": "e.g. test/ttc",
"MANAGE_CONSTANT_SFTP_WEB_PATH_TOOLTIP": "Used to generate URL",
"MANAGE_CONSTANT_SFTP_FILE_PERMISSIONS_DESC": "File mode",
"MANAGE_CONSTANT_SFTP_FILE_PERMISSIONS_PLACEHOLDER": "e.g. 0644",
"MANAGE_CONSTANT_SFTP_DIR_PERMISSIONS_DESC": "Directory mode",
"MANAGE_CONSTANT_SFTP_DIR_PERMISSIONS_PLACEHOLDER": "e.g. 0755",
"MANAGE_CONSTANT_SFTP_EXPLAIN": "SFTP Configuration",
"MANAGE_CONSTANT_SFTP_REFER_TEXT": "Refer to:",
"MANAGE_CONSTANT_SFTP_BASE_DIR_RULE_MESSAGE": "baseDir cannot be empty",
"MANAGE_CONSTANT_SFTP_BUCKET_DESC": "Special Configuration",
"MANAGE_CONSTANT_SFTP_BUCKET_PLACEHOLDER": "e.g. bucket1",
"MANAGE_CONSTANT_SFTP_BUCKET_TOOLTIP": "This cannot be modified, only for software compatibility consideration",
"MANAGE_LOGIN_PAGE_PANE_NAME": "Saved Config",
"MANAGE_LOGIN_PAGE_PANE_KEY_NAME": "Configuration",
"MANAGE_LOGIN_PAGE_PANE_KEY_VALUE": "Value",
"MANAGE_LOGIN_PAGE_PANE_ENTER": "Enter",
"MANAGE_LOGIN_PAGE_PANE_DELETE": "Delete",
"MANAGE_LOGIN_PAGE_PANE_SELECT_PLACEHOLDER": "Please select",
"MANAGE_LOGIN_PAGE_PANE_IMPORT": "Import",
"MANAGE_LOGIN_PAGE_PANE_SAVE": "Save",
"MANAGE_LOGIN_PAGE_PANE_RESET": "Reset",
"MANAGE_LOGIN_PAGE_PANE_TABLE_TITLE": "Existing configurations, click to copy corresponding cell data",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_MESSAGE_A": "Please fill in",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_ALIAS_MESSAGE": "The alias can only contain Chinese, English, numbers, underscores, and hyphens",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_ITEMS_PER_PAGE_MESSAGE": "The number of items per page must be between 20-1000",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_CUSTOM_URL_MESSAGE": "Custom domain name should start with http:// or https://",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_NAME": "Notice",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE": "Alias overwritten: ",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_B": "Alias saved: ",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_C": "Alias deleted: ",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_D": "Configuration with alias: ",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_E": " failed to delete",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_COPY_SUCCESS": "Copied ",
"MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_TITLE": "Are you sure to delete this?",
"MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_TIP": "Tip",
"MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_CONFIRM": "Confirm",
"MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_CANCEL": "Cancel",
"MANAGE_BUCKET_PAGE_LOADING_TEXT": "Loading...",
"MANAGE_BUCKET_PAGE_CUSTOM_URL_SELECT_PLACEHOLDER": "Please select a custom domain",
"MANAGE_BUCKET_PAGE_CUSTOM_URL_INPUT_PLACEHOLDER": "Please enter a custom domain",
"MANAGE_BUCKET_PAGE_UPLOAD_FILES_TOOLTIP": "Upload files",
"MANAGE_BUCKET_PAGE_UPLOAD_FROM_URL_TOOLTIP": "Upload from URL",
"MANAGE_BUCKET_PAGE_CREATE_FOLDER_TOOLTIP": "Create folder",
"MANAGE_BUCKET_PAGE_DOWNLOAD_TOOLTIP": "Download page",
"MANAGE_BUCKET_PAGE_BATCH_RENAME_TOOLTIP": "Batch rename",
"MANAGE_BUCKET_PAGE_BATCH_COPY_URL_TOOLTIP": "Batch copy URL",
"MANAGE_BUCKET_PAGE_COPY_FILE_INFO_TOOLTIP": "Copy file information",
"MANAGE_BUCKET_PAGE_FORCE_REFRESH_TOOLTIP": "Force refresh file list",
"MANAGE_BUCKET_PAGE_SEARCH_PLACEHOLDER": "Search files",
"MANAGE_BUCKET_PAGE_ROOT_FOLDER": "Root folder",
"MANAGE_BUCKET_PAGE_FILE_NUMBER": "Number of files: ",
"MANAGE_BUCKET_PAGE_FILE_SIZE": "Total size: ",
"MANAGE_BUCKET_PAGE_SELECT_ALL": "Select all",
"MANAGE_BUCKET_PAGE_SELECT_NONE": "Deselect all",
"MANAGE_BUCKET_PAGE_SELECT_INVERT": "Invert selection",
"MANAGE_BUCKET_DOWNLOAD_BTN": "Download",
"MANAGE_BUCKET_DELETE_BTN": "Delete",
"MANAGE_BUCKET_SORT_TITLE": "Sort",
"MANAGE_BUCKET_SORT_NAME": "Name",
"MANAGE_BUCKET_SORT_SIZE": "Size",
"MANAGE_BUCKET_SORT_EXT": "Type",
"MANAGE_BUCKET_SORT_TIME": "Time",
"MANAGE_BUCKET_SORT_CHECK": "Selected status",
"MANAGE_BUCKET_SORT_INIT": "Init",
"MANAGE_BUCKET_URL_UPLOAD_DIALOG_TITLE": "Please enter URL(s), support multiple URLs separated by line breaks",
"MANAGE_BUCKET_URL_UPLOAD_DIALOG_CONFIRM": "Confirm",
"MANAGE_BUCKET_URL_UPLOAD_DIALOG_CANCEL": "Cancel",
"MANAGE_BUCKET_URL_FORMAT_MARKDOWN": "Markdown",
"MANAGE_BUCKET_URL_FORMAT_MARKDOWN_WITH_LINK": "Markdown-link",
"MANAGE_BUCKET_URL_FORMAT_URL": "Url",
"MANAGE_BUCKET_URL_FORMAT_HTML": "Html",
"MANAGE_BUCKET_URL_FORMAT_BBCODE": "BBCode",
"MANAGE_BUCKET_URL_FORMAT_CUSTOM": "Custom",
"MANAGE_BUCKET_URL_FORMAT_PRESIGN": "Presigned link",
"MANAGE_BUCKET_FILE_INFO_TITLE": "File information",
"MANAGE_BUCKET_FILE_INFO_COPY_TIPS": "Copy in JSON format",
"MANAGE_BUCKET_FILE_LIST_LOADING": "Loading, click to cancel",
"MANAGE_BUCKET_FILE_LIST_DOWNLOAD_PRE": "Preparing to download, click to cancel",
"MANAGE_BUCKET_KEEP_FOLDER_STRUCTURE": "Keep folder structure",
"MANAGE_BUCKET_NOT_KEEP_FOLDER_STRUCTURE": "Do not keep folder structure",
"MANAGE_BUCKET_UPLOAD_AREA_TITLE": "Drag and drop to upload, support recursive upload of folders",
"MANAGE_BUCKET_UPLOAD_AREA_TEXT": "Or: click to select file (folders are not supported)",
"MANAGE_BUCKET_UPLOAD_AREA_BTN_LOADING": "Loading files",
"MANAGE_BUCKET_UPLOAD_AREA_BTN": "Upload",
"MANAGE_BUCKET_UPLOAD_AREA_CLEAR": "Clear",
"MANAGE_BUCKET_UPLOAD_AREA_STATUS_UPLOADING": "Uploading",
"MANAGE_BUCKET_UPLOAD_AREA_COPY_TASK": "Copy upload task information",
"MANAGE_BUCKET_UPLOAD_AREA_CLEAR_UPLOADED_TASK": "Clear completed tasks",
"MANAGE_BUCKET_UPLOAD_AREA_CLEAR_ALL_TASK": "Clear all tasks",
"MANAGE_BUCKET_UPLOAD_AREA_SUCCESS": "Success",
"MANAGE_BUCKET_UPLOAD_AREA_FAILED": "Failed",
"MANAGE_BUCKET_DOWNLOAD_PAGE_TITLE": "Download page",
"MANAGE_BUCKET_DOWNLOADING": "Downloading",
"MANAGE_BUCKET_DOWNLOAD_COPY_TASK": "Copy download task information",
"MANAGE_BUCKET_DOWNLOAD_CLEAR_DOWNLOADED_TASK": "Clear completed tasks",
"MANAGE_BUCKET_DOWNLOAD_CLEAR_ALL_TASK": "Clear all tasks",
"MANAGE_BUCKET_DOWNLOAD_OPEN_FOLDER": "Open download folder",
"MANAGE_BUCKET_DOWNLOAD_SUCCESS": "Success",
"MANAGE_BUCKET_DOWNLOAD_FAILED": "Failed",
"MANAGE_BUCKET_MARKDOWN_PREVIEW": "Preview",
"MANAGE_BUCKET_PLAY": "Play",
"MANAGE_BUCKET_RENAME_FILE": "Rename file",
"MANAGE_BUCKET_RENAME_FILE_INPUT_A": "String or JS regular expression for matching during replacement",
"MANAGE_BUCKET_RENAME_FILE_INPUT_A_TIPS": "Directly enter the regular expression, no need to add /",
"MANAGE_BUCKET_RENAME_FILE_INPUT_A_PLACEHOLDER": "For example: ^\\d{4}-\\d{2}-\\d{2} ",
"MANAGE_BUCKET_RENAME_FILE_INPUT_B": "String for replacement, placeholders from custom",
"MANAGE_BUCKET_RENAME_FILE_TABLE_IID": "Auto-incrementing number",
"MANAGE_BUCKET_RENAME_FILE_EXT": "Replace extension if it matches",
"MANAGE_BUCKET_RENAME_FILE_EXT_TIPS": "Check this option if you want to modify the extension",
"MANAGE_BUCKET_RENAME_FILE_EXT_YES": "Yes",
"MANAGE_BUCKET_RENAME_FILE_EXT_NO": "No",
"MANAGE_BUCKET_RENAME_FILE_CANCEL": "Cancel",
"MANAGE_BUCKET_RENAME_FILE_CONFIRM": "Confirm",
"MANAGE_BUCKET_COPY_SUCCESS": "Copy success",
"MANAGE_BUCKET_START_LOADING_MESSAGE": "Start getting files",
"MANAGE_BUCKET_END_LOADING_MESSAGE_FAIL": "Failed to get file content",
"MANAGE_BUCKET_LAST_PAGE_TITLE": "Tip",
"MANAGE_BUCKET_LAST_PAGE_MSG": "This is the last page",
"MANAGE_BUCKET_GET_LIST_FAIL_TITLE": "Tip",
"MANAGE_BUCKET_GET_LIST_FAIL_MSG": "Failed to get file list",
"MANAGE_BUCKET_GET_LIST_FAIL_MSG2": "Getting file list in the background, please do not switch pages",
"MANAGE_BUCKET_GET_LIST_FAIL_MSG3": "Loading file list, please try again later",
"MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_TITLE": "Are you sure you want to download this folder?",
"MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_TIP": "Tip",
"MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_CONFIRM": "Confirm",
"MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_CANCEL": "Cancel",
"MANAGE_BUCKET_DOWNLOAD_FOLDER_SUCCESS": "Successfully obtained download list",
"MANAGE_BUCKET_DOWNLOAD_FOLDER_FAIL": "Failed to obtain download list",
"MANAGE_BUCKET_DOWNLOAD_FOLDER_CANCEL": "Canceled",
"MANAGE_BUCKET_CREATE_FOLDER_BOX_TITLE": "Please enter the folder name",
"MANAGE_BUCKET_CREATE_FOLDER_BOX_TIP": "Create folder",
"MANAGE_BUCKET_CREATE_FOLDER_BOX_CONFIRM": "Confirm",
"MANAGE_BUCKET_CREATE_FOLDER_BOX_CANCEL": "Cancel",
"MANAGE_BUCKET_CREATE_FOLDER_ERROR_MSG": "Folder name can only contain Chinese, English, numbers, underscores, and slashes",
"MANAGE_BUCKET_CREATE_FOLDER_SUCCESS": "Successfully created, please refresh",
"MANAGE_BUCKET_CREATE_FOLDER_FAIL": "Failed to create",
"MANAGE_BUCKET_UPLOAD_URL_ERROR_MSQ": "Please enter a valid URL",
"MANAGE_BUCKET_UPLOAD_URL_NOT_TITLE": "Tip",
"MANAGE_BUCKET_UPLOAD_URL_NOT_MSG": "Starting background download, automatic upload after success",
"MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG": "Please enter the matching string",
"MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG2": "No matching files found",
"MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG3": "No files need to be renamed",
"MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_A": "Detected",
"MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_B": "files are duplicated. Do you want to continue?",
"MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_C": "Tip",
"MANAGE_BUCKET_BATCH_RENAME_REPEATED_CONFIRM": "Confirm",
"MANAGE_BUCKET_BATCH_RENAME_REPEATED_CANCEL": "Cancel",
"MANAGE_BUCKET_BATCH_RENAME_RESULT_MSG_A": "Rename successful",
"MANAGE_BUCKET_BATCH_RENAME_RESULT_MSG_B": "Failed",
"MANAGE_BUCKET_BATCH_RENAME_CANCEL": "Canceled",
"MANAGE_BUCKET_BATCH_COPY_INFO_ERROR_MSG": "Please select the file first",
"MANAGE_BUCKET_BATCH_COPY_INFO_MSG_A": "Copied",
"MANAGE_BUCKET_BATCH_COPY_INFO_MSG_B": "file(s) information",
"MANAGE_BUCKET_BATCH_COPY_URL_ERROR_MSG": "Please select the file first",
"MANAGE_BUCKET_BATCH_COPY_URL_MSG_A": "Copied",
"MANAGE_BUCKET_BATCH_COPY_URL_MSG_B": "file(s) link",
"MANAGE_BUCKET_CANCEL_LOADING_TITLE": "Stop getting file list?",
"MANAGE_BUCKET_CANCEL_LOADING_MSG": "Tip",
"MANAGE_BUCKET_CANCEL_LOADING_CONFIRM": "Confirm",
"MANAGE_BUCKET_CANCEL_LOADING_CANCEL": "Cancel",
"MANAGE_BUCKET_CANCEL_LOADING_SUCCESS": "File list retrieval has been stopped",
"MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_TITLE": "Stop downloading file retrieval?",
"MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_MSG": "Prompt",
"MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_CONFIRM": "Confirm",
"MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_CANCEL": "Cancel",
"MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_SUCCESS": "Download file retrieval has been stopped",
"MANAGE_BUCKET_GET_FILE_BS_NOT_TITLE": "Prompt",
"MANAGE_BUCKET_GET_FILE_BS_NOT_MSG": "Successfully retrieved file list",
"MANAGE_BUCKET_GET_FILE_BS_NOT_MSG2": "Some files failed to retrieve",
"MANAGE_BUCKET_BATCH_DELETE_CONFIRM_TITLE_A": "Permanently delete",
"MANAGE_BUCKET_BATCH_DELETE_CONFIRM_TITLE_B": "files, continue?",
"MANAGE_BUCKET_BATCH_DELETE_CONFIRM_MSG": "Prompt",
"MANAGE_BUCKET_BATCH_DELETE_CONFIRM_CONFIRM": "Confirm",
"MANAGE_BUCKET_BATCH_DELETE_CONFIRM_CANCEL": "Cancel",
"MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_TITLE": "Prompt",
"MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_MSG": "Deletion failed",
"MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_MSG2": "Deletion successful",
"MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_MSG3": "Failed",
"MANAGE_BUCKET_BATCH_DELETE_CANCEL": "Deletion has been cancelled",
"MANAGE_BUCKET_DELETE_CONFIRM_TITLE": "Permanently delete",
"MANAGE_BUCKET_DELETE_CONFIRM_TITLE_FOLDER": "folder",
"MANAGE_BUCKET_DELETE_CONFIRM_TITLE_FOLDER_A": "and all files in this directory",
"MANAGE_BUCKET_DELETE_CONFIRM_TITLE_FILE": "file",
"MANAGE_BUCKET_DELETE_CONFIRM_TITLE_C": "Continue?",
"MANAGE_BUCKET_DELETE_CONFIRM_MSG": "Prompt",
"MANAGE_BUCKET_DELETE_CONFIRM_CONFIRM": "Confirm",
"MANAGE_BUCKET_DELETE_CONFIRM_CANCEL": "Cancel",
"MANAGE_BUCKET_DELETE_ERROR_MSG_TITLE": "Prompt",
"MANAGE_BUCKET_DELETE_ERROR_MSG_MSG": "Deleting a folder may take some time, please be patient",
"MANAGE_BUCKET_DELETE_SUCCESS": "Deletion successful",
"MANAGE_BUCKET_DELETE_FAIL": "Deletion failed",
"MANAGE_BUCKET_DELETE_CANCEL": "Deletion has been cancelled",
"MANAGE_BUCKET_RENAME_INFO_MSG": "The new file name is the same as the original file name, no need to rename",
"MANAGE_BUCKET_RENAME_SUCCESS": "Rename successful",
"MANAGE_BUCKET_RENAME_ERROR_MSG": "Rename failed",
"MANAGE_BUCKET_DOWNLOAD_COLUMN_FILENAME": "File name",
"MANAGE_BUCKET_DOWNLOAD_COLUMN_FINISHTIME": "Completion time",
"MANAGE_BUCKET_DOWNLOAD_COLUMN_STATUS": "Status",
"MANAGE_BUCKET_DOWNLOAD_COLUMN_STATUS_SUCCESS": "Success",
"MANAGE_BUCKET_DOWNLOAD_COLUMN_STATUS_FAIL": "Failed",
"MANAGE_BUCKET_UPLOAD_COLUMN_FILENAME": "File name",
"MANAGE_BUCKET_UPLOAD_COLUMN_TARGETFILEPATH": "Upload path",
"MANAGE_BUCKET_UPLOAD_COLUMN_FINISHTIME": "Completion time",
"MANAGE_BUCKET_UPLOAD_COLUMN_STATUS": "Status",
"MANAGE_BUCKET_UPLOAD_COLUMN_STATUS_SUCCESS": "Success",
"MANAGE_BUCKET_UPLOAD_COLUMN_STATUS_FAIL": "Failed",
"MANAGE_BUCKET_DOWNLOADING_COLUMN_FILENAME": "File name",
"MANAGE_BUCKET_DOWNLOADING_COLUMN_PROGRESS": "Progress",
"MANAGE_BUCKET_UPLOADING_COLUMN_FILENAME": "File name",
"MANAGE_BUCKET_UPLOADING_COLUMN_PROGRESS": "Progress",
"MANAGE_BUCKET_UPLOADED_COLUMN_FILENAME": "File name",
"MANAGE_BUCKET_UPLOADED_COLUMN_FILESIZE": "Size",
"MANAGE_BUCKET_UPLOADED_COLUMN_FILENUM": "Number of files",
"MANAGE_BUCKET_FILE_COLUMN_FILENAME": "FileName",
"MANAGE_BUCKET_FILE_COLUMN_COPY_URL": "Copy link",
"MANAGE_BUCKET_FILE_COLUMN_INFO": "File Info",
"MANAGE_BUCKET_FILE_COLUMN_FILESIZE": "Size",
"MANAGE_BUCKET_FILE_COLUMN_TIME": "Time",
"MANAGE_NEW_BUCKET_TCYUN_NAME": "Tencent Cloud",
"MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_DESC": "Bucket Name",
"MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_PLACEHOLDER": "Please enter the Bucket name",
"MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_A": "Bucket name can't be empty",
"MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_B": "Bucket name length cannot exceed 23 characters",
"MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_C": "Bucket name can only contain lowercase letters, numbers, and hyphens, and cannot begin or end with a hyphen",
"MANAGE_NEW_BUCKET_TCYUN_REGION": "Region",
"MANAGE_NEW_BUCKET_TCYUN_ACL_DESC": "Access Control",
"MANAGE_NEW_BUCKET_TCYUN_ACL_PUBLIC_RW": "Public Read and Write",
"MANAGE_NEW_BUCKET_TCYUN_ACL_PUBLIC_R": "Public Read",
"MANAGE_NEW_BUCKET_TCYUN_ACL_PRIVATE": "Private",
"MANAGE_NEW_BUCKET_ALIYUN_NAME": "Alibaba Cloud",
"MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_DESC": "Bucket Name",
"MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_PLACEHOLDER": "Please enter the Bucket name",
"MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_A": "Bucket name can't be empty",
"MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_B": "Bucket name length cannot exceed 63 characters",
"MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_C": "Bucket name can only contain lowercase letters, numbers, and hyphens, and cannot begin or end with a hyphen",
"MANAGE_NEW_BUCKET_ALIYUN_REGION": "Region",
"MANAGE_NEW_BUCKET_ALIYUN_ACL_DESC": "Access Control",
"MANAGE_NEW_BUCKET_ALIYUN_ACL_PUBLIC_RW": "Public Read and Write",
"MANAGE_NEW_BUCKET_ALIYUN_ACL_PUBLIC_R": "Public Read",
"MANAGE_NEW_BUCKET_ALIYUN_ACL_PRIVATE": "Private",
"MANAGE_NEW_BUCKET_QINIU_NAME": "Qiniu Cloud",
"MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_DESC": "Bucket Name",
"MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_PLACEHOLDER": "Please enter the Bucket name",
"MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_A": "Bucket name can't be empty",
"MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_B": "Bucket name length cannot exceed 63 characters",
"MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_C": "Bucket names can only contain lowercase letters, numbers, and hyphens, and cannot start or end with a hyphen.",
"MANAGE_NEW_BUCKET_QINIU_REGION": "Region",
"MANAGE_NEW_BUCKET_QINIU_ACL_DESC": "Public Access",
"MANAGE_NEW_BUCKET_S3PLIST_NAME": "S3-Compatible",
"MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_DESC": "Bucket Name",
"MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_PLACEHOLDER": "Please enter the Bucket name",
"MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_RULE_MSG_A": "Bucket name can't be empty",
"MANAGE_NEW_BUCKET_S3PLIST_REGION": "Region",
"MANAGE_NEW_BUCKET_S3PLIST_ACL_DESC": "Access Control",
"MANAGE_NEW_BUCKET_S3PLIST_ACL_PUBLIC_RW": "Public Read and Write",
"MANAGE_NEW_BUCKET_S3PLIST_ACL_PUBLIC_R": "Public Read",
"MANAGE_NEW_BUCKET_S3PLIST_ACL_PRIVATE": "Private",
"MANAGE_NEW_BUCKET_S3PLIST_ACL_AUTHENTICATED_READ": "Authenticated Read",
"PLUGIN_UPDATE_SUCCEED": "Plugin update succeed",
"TIPS_NOTICE": "Tips"
}

View File

@@ -0,0 +1,876 @@
{
"OPEN_MAIN_WINDOW": "打开主窗口",
"OPERATION_SUCCEED": "操作成功",
"QUICK_UPLOAD": "快捷上传",
"PICBED_QRCODE": "图床配置二维码",
"CONFIG_THING": "配置${c}",
"TOOLBOX_TITLE": "排查 PicList 运行时问题",
"TOOLBOX_SUB_TITLE": "立即扫描以下项目,修复使用问题",
"TOOLBOX_CHECK_CONFIG_FILE_BROKEN": "检查配置文件是否损坏",
"TOOLBOX_CHECK_GALLERY_FILE_BROKEN": "检查相册文件是否损坏",
"TOOLBOX_CHECK_PROBLEM_WITH_CLIPBOARD_PIC_UPLOAD": "检查剪贴板图片上传是否存在问题",
"TOOLBOX_CHECK_PROBLEM_WITH_PROXY": "检查代理设置是否正常",
"TOOLBOX_FIX_DONE_NEED_RELOAD": "修复完成,需要重启生效,是否重启",
"TOOLBOX_CANT_AUTO_FIX": "无法自动修复,请自行修复以下问题",
"TOOLBOX_START_SCAN": "开始扫描",
"TOOLBOX_RE_SCAN": "重新扫描",
"TOOLBOX_START_FIX": "开始修复",
"TOOLBOX_SUCCESS_TIPS": "恭喜你,没有检查出问题",
"MANUAL_PAGE_OPEN_TIP": "请选择打开方式",
"MANUAL_PAGE_OPEN_TIP_TITLE": "Tips",
"MANUAL_PAGE_OPEN_BY_BROWSER": "浏览器",
"MANUAL_PAGE_OPEN_BY_BUILD_IN": "内置窗口",
"MANUAL_PAGE_OPEN_SETTING_TIP": "选择手册打开方式",
"UPLOAD_AREA": "上传",
"UPLOAD_VIEW_HINT": "点击打开图床设置",
"MANAGE_PAGE": "管理",
"GALLERY": "相册",
"REFRESH": "刷新",
"MANUAL": "手册",
"PICBEDS_SETTINGS": "图床",
"PICLIST_SETTINGS": "设置",
"PLUGIN_SETTINGS": "插件",
"CHOOSE_PICBED": "选择图床",
"COPY_PICBED_CONFIG": "复制图床配置",
"COPY_PICBED_CONFIG_SUCCEED": "复制图床配置成功",
"INPUT": "输入框",
"CANCEL": "取消",
"CONFIRM": "确定",
"RESET_PICBED_CONFIG": "重置",
"CHOOSE_SHOWED_PICBED": "请选择显示的图床",
"CHOOSE_PASTE_FORMAT": "请选择粘贴的格式",
"COPY": "复制",
"DELETE": "删除",
"SELECT_ALL": "全选",
"CHANGE_IMAGE_URL": "修改图片URL",
"CHANGE_IMAGE_URL_SUCCEED": "修改图片URL成功",
"COPY_LINK_SUCCEED": "复制链接成功",
"BATCH_COPY_LINK_SUCCEED": "批量复制链接成功",
"FILE_RENAME": "文件改名",
"OPEN_FILE_PATH": "打开文件路径",
"GALLERY_SYNC_DELETE": "删除云端",
"GALLERY_SYNC_DELETE_NOTICE_TITLE": "通知",
"GALLERY_SYNC_DELETE_NOTICE_SUCCEED": "云端删除成功",
"GALLERY_SYNC_DELETE_NOTICE_FAILED": "云端删除失败",
"GALLERY_CHANGE_URL": "修改",
"GALLERY_SEARCH_FILENAME": "搜索文件名",
"GALLERY_SEARCH_URL": "搜索URL",
"GALLERY_MATCHED": " 匹配到: ",
"UPLOAD_PAGE_COPY_UPLOAD_API": "复制上传API",
"UPLOAD_PAGE_IMAGE_PROCESS_NAME": "图片处理",
"UPLOAD_PAGE_IMAGE_PROCESS_DIALOG_TITLE": "图片处理设置",
"UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST": "跳过处理的文件扩展名列表",
"UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST_TIPS": "请填写需要跳过处理的文件扩展名列表, 以英文逗号分隔, 如: jpg,png,gif",
"UPLOAD_PAGE_IMAGE_PROCESS_ISADDWM": "是否添加水印",
"UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE": "水印类型",
"UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE_TEXT": "文字",
"UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE_IMAGE": "图片",
"UPLOAD_PAGE_IMAGE_PROCESS_ISFULLSCREEN_WM": "是否全屏水印",
"UPLOAD_PAGE_IMAGE_PROCESS_WMDEGREE": "水印角度",
"UPLOAD_PAGE_IMAGE_PROCESS_WMTEXT": "水印文字",
"UPLOAD_PAGE_IMAGE_PROCESS_WMTEXT_FONT_PATH": "水印字体路径(第一次需下载字体文件)",
"UPLOAD_PAGE_IMAGE_PROCESS_WMRATIO": "水印占原图比例",
"UPLOAD_PAGE_IMAGE_PROCESS_WMCOLOR": "水印颜色,请从取色器中选择",
"UPLOAD_PAGE_IMAGE_PROCESS_WMPATH": "水印图片路径(留空使用默认图片)",
"UPLOAD_PAGE_IMAGE_PROCESS_WMPOSITION": "水印位置",
"UPLOAD_PAGE_IMAGE_PROCESS_ISREMOVEEXIF": "是否移除EXIF信息",
"UPLOAD_PAGE_IMAGE_PROCESS_QUALITY": "压缩质量(1-100)",
"UPLOAD_PAGE_IMAGE_PROCESS_ISCONVERT": "是否转换格式",
"UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT": "转换目的格式",
"UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT_SPECIFIC": "精细化转换格式, 请输入JSON格式如: {\"png\": \"jpg\"}",
"UPLOAD_PAGE_IMAGE_PROCESS_ISFLIP": "是否进行垂直翻转",
"UPLOAD_PAGE_IMAGE_PROCESS_ISFLOP": "是否进行水平翻转",
"UPLOAD_PAGE_IMAGE_PROCESS_ISRESIZE": "是否按固定尺寸调整图片",
"UPLOAD_PAGE_IMAGE_PROCESS_RESIZEWIDTH": "调整尺寸宽度(设为0则按高度等比缩放)",
"UPLOAD_PAGE_IMAGE_PROCESS_RESIZEHEIGHT": "调整尺寸高度(设为0则按宽度等比缩放)",
"UPLOAD_PAGE_IMAGE_PROCESS_SKIPRESIZEOfSMALLIMG_HEIGHT": "当图片高度小于设定高度时跳过缩放",
"UPLOAD_PAGE_IMAGE_PROCESS_SKIPRESIZEOfSMALLIMG_WIDTH": "当图片宽度小于设定宽度时跳过缩放",
"UPLOAD_PAGE_IMAGE_PROCESS_ISRESIZEBYPERCENT": "是否按比例调整尺寸,优先级更高",
"UPLOAD_PAGE_IMAGE_PROCESS_RESIZEPERCENT": "调整尺寸比例, 输入50表示50%",
"UPLOAD_PAGE_IMAGE_PROCESS_ISROTATE": "是否旋转",
"UPLOAD_PAGE_IMAGE_PROCESS_ROTATEDEGREE": "旋转角度",
"UPLOAD_PAGE_IMAGE_PROCESS_CONFIRM": "保存",
"UPLOAD_PAGE_IMAGE_PROCESS_CANCEL": "取消",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP": "上",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM": "下",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_LEFT": "左",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_RIGHT": "右",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP_LEFT": "左上",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP_RIGHT": "右上",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM_LEFT": "左下",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM_RIGHT": "右下",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_CENTER": "中",
"UPLOAD_SHORT_URL": "短链接",
"UPLOAD_NORMAL_URL": "长链接",
"SETTINGS": "设置",
"SETTINGS_OPEN_CONFIG_FILE": "打开配置文件",
"SETTINGS_MIGRATE_FROM_PICGO": "从PicGo迁移",
"SETTINGS_MIGRATE_FROM_PICGO_TITLE": "通知",
"SETTINGS_MIGRATE_FROM_PICGO_CONTENT": "即将导入PicGo的配置文件和相册, 这将覆盖当前的配置文件和相册, 是否继续?",
"SETTINGS_MIGRATE_FROM_PICGO_SUCCESS": "导入成功, 请重启PicList生效",
"SETTINGS_MIGRATE_FROM_PICGO_FAILED": "导入失败",
"SETTINGS_START_MODE": "启动模式",
"SETTINGS_START_MODE_MINI": "mini窗口",
"SETTINGS_START_MODE_MAIN": "主窗口",
"SETTINGS_START_MODE_NO_TRAY": "隐藏托盘",
"SETTINGS_START_MODE_QUIET": "静默启动",
"SETTINGS_CLICK_TO_OPEN": "点击打开",
"SETTINGS_SET_LOG_FILE": "设置日志文件",
"SETTINGS_CLICK_TO_SET": "点击设置",
"SETTINGS_CLICK_TO_CHECK": "点击检查",
"SETTINGS_SET_SHORTCUT": "设置快捷键",
"SETTINGS_CUSTOM_LINK_FORMAT": "自定义链接格式",
"SETTINGS_SET_PROXY_AND_MIRROR": "设置代理和镜像地址",
"SETTINGS_SET_SERVER": "设置Server",
"SETTINGS_CHECK_UPDATE": "检查更新",
"SETTINGS_OPEN_UPDATE_HELPER": "打开更新助手",
"SETTINGS_OPEN": "开",
"SETTINGS_CLOSE": "关",
"SETTINGS_CLOSE_MINI_WINDOW_SYNC": "打开主窗口时关闭mini窗口",
"SETTINGS_CLOSE_MAIN_WINDOW_SYNC": "打开mini窗口时关闭主窗口",
"SETTINGS_LAUNCH_ON_BOOT": "开机自启",
"SETTINGS_RENAME_BEFORE_UPLOAD": "手动重命名",
"SETTINGS_TIMESTAMP_RENAME": "时间戳重命名",
"SETTINGS_ADVANCED_RENAME": "高级重命名",
"SETTINGS_ADVANCED_RENAME_ENABLE": "开启高级重命名",
"SETTINGS_ADVANCED_RENAME_FORMAT": "重命名格式",
"SETTINGS_ENABLE_SECOND_PICBED": "启用第二图床同步上传",
"SETTINGS_SET_SECOND_PICBED": "设置第二图床",
"SETTINGS_OPEN_UPLOAD_TIPS": "开启上传进度提示",
"SETTINGS_OPEN_UPLOAD_RESULT_TIPS": "开启上传结果提示",
"SETTINGS_MINI_WINDOW_ON_TOP": "Mini窗口置顶",
"SETTINGS_AUTO_COPY_URL_AFTER_UPLOAD": "上传后自动复制URL",
"SETTINGS_TIPS_PLACEHOLDER_URL": "用占位符 $url 来表示url的位置",
"SETTINGS_TIPS_PLACEHOLDER_FILENAME": "用占位符 $fileName 来表示文件名的位置",
"SETTINGS_TIPS_PLACEHOLDER_EXTNAME": "用占位符 $extName 来表示文件格式的位置",
"SETTINGS_TIPS_SUCH_AS": "如",
"SETTINGS_UPLOAD_PROXY": "上传代理",
"SETTINGS_PLUGIN_INSTALL_PROXY": "插件安装代理",
"SETTINGS_PLUGIN_INSTALL_MIRROR": "插件安装镜像",
"SETTINGS_CURRENT_VERSION": "当前版本",
"SETTINGS_NEWEST_VERSION": "最新版本",
"SETTINGS_GETING": "正在获取中",
"SETTINGS_TIPS_HAS_NEW_VERSION": "PicList更新啦请点击确定重启触发更新",
"SETTINGS_LOG_FILE_PATH": "日志文件路径",
"SETTINGS_CONFIG_FILE_PATH": "配置文件路径",
"SETTINGS_LOG_FILE": "常规日志文件",
"SETTINGS_GUI_LOG_FILE": "GUI日志文件",
"SETTINGS_MANAGE_LOG_FILE": "管理日志文件",
"SETTINGS_LOG_LEVEL": "日志记录等级",
"SETTINGS_LOG_FILE_SIZE": "日志文件大小",
"SETTINGS_SET_PICGO_SERVER": "设置PicGo-Server",
"SETTINGS_TIPS_SERVER_NOTICE": "如果你不知道Server的作用请阅读文档或者不用修改配置。",
"SETTINGS_ENABLE_SERVER": "是否开启Server",
"SETTINGS_SET_SERVER_HOST": "设置监听地址",
"SETTINGS_SET_SERVER_PORT": "设置监听端口",
"SETTINGS_SET_SERVER_KEY": "设置鉴权密钥",
"SETTINGS_SET_WEB_SERVER": "设置Web服务",
"SETTINGS_TIPS_WEB_SERVER_NOTICE": "如果你不知道Web服务的作用请阅读文档或者不用修改配置。",
"SETTINGS_SET_ENABLE_WEB_SERVER": "是否开启Web服务",
"SETTINGS_SET_WEB_SERVER_HOST": "设置Web服务监听地址",
"SETTINGS_SET_WEB_SERVER_PORT": "设置Web服务监听端口",
"SETTINGS_SET_WEB_SERVER_PATH": "设置Web服务路径",
"SETTINGS_TIP_PLACEHOLDER_WEB_HOST": "推荐默认地址:127.0.0.1",
"SETTINGS_TIP_PLACEHOLDER_WEB_PORT": "推荐默认端口:37777",
"SETTINGS_TIP_PLACEHOLDER_HOST": "推荐默认地址:127.0.0.1",
"SETTINGS_TIP_PLACEHOLDER_PORT": "推荐默认端口:36677",
"SETTINGS_TIP_PLACEHOLDER_KEY": "用于接口鉴权, 通过url参数添加'?key=xxx'",
"SETTINGS_SET_SERVER_AES_KEY": "设置接口数据加密密钥",
"SETTINGS_LOG_LEVEL_ALL": "全部-All",
"SETTINGS_LOG_LEVEL_SUCCESS": "成功-Success",
"SETTINGS_LOG_LEVEL_ERROR": "错误-Error",
"SETTINGS_LOG_LEVEL_INFO": "普通-Info",
"SETTINGS_LOG_LEVEL_WARN": "提醒-Warn",
"SETTINGS_LOG_LEVEL_NONE": "不记录日志-None",
"SETTINGS_RESULT": "设置结果",
"SETTINGS_DEFAULT_PICBED": "设置默认图床",
"SETTINGS_SET_DEFAULT_PICBED": "设为默认图床",
"SETTINGS_NOT_CONFIG_OPTIONS": "暂无配置项",
"SETTINGS_USE_BUILTIN_CLIPBOARD_UPLOAD": "使用内置剪贴板上传",
"SETTINGS_CHOOSE_LANGUAGE": "选择语言",
"BUILTIN_CLIPBOARD_TIPS": "使用内置剪贴板函数而不是调用脚本获取剪贴板图片",
"UPLOADER_CONFIG_NAME": "图床配置名",
"UPLOADER_CONFIG_PLACEHOLDER": "请输入配置名称",
"SELECTED_SETTING_HINT": "已选中",
"SETTINGS_MAIN_WINDOW_SIZE": "默认主窗口大小(需重启)",
"SETTINGS_MAIN_WINDOW_SIZE_WIDTH": "默认主窗口宽度",
"SETTINGS_MAIN_WINDOW_WIDTH_HINT": "默认宽度: 1200",
"SETTINGS_MAIN_WINDOW_SIZE_HEIGHT": "默认主窗口高度",
"SETTINGS_MAIN_WINDOW_HEIGHT_HINT": "默认高度: 800",
"SETTINGS_RAW_PICGO_SIZE": "原PicGo大小",
"SETTINGS_CUSTOM_MINI_ICON_PATH": "自定义Mini窗口图标路径",
"SETTINGS_CUSTOM_MINI_ICON": "是否自定义Mini窗口图标",
"SETTINGS_COMPRESS_AND_WATERMARK": "设置图片水印和压缩-格式转换等参数",
"SETTINGS_SYNC_DELETE_CLOUD": "相册内删除时同步删除云端文件",
"SETTINGS_ISHIDEDOCK": "是否隐藏dock图标",
"SETTINGS_ISHIDEDOCK_TIPS": "不支持同时隐藏dock和托盘",
"SETTINGS_ENCODE_OUTPUT_URL": "输出(复制) URL 时进行转义",
"SETTINGS_WATCH_CLIPBOARD": "软件启动时自动监听剪贴板上传",
"SETTINGS_SHORT_URL": "使用短链接",
"SETTINGS_SHORT_URL_SERVER": "短链接服务",
"SETTINGS_SHORT_URL_C1N_TOKEN": "C1N Token",
"SETTINGS_SHORT_URL_YOURLS_DOMAIN": "YOURLS域名",
"SETTINGS_SHORT_URL_YOURLS_SIGNATURE": "YOURLS signature",
"SETTINGS_SHORT_URL_CF_WORKER_HOST": "Cloudflare Worker域名",
"SETTINGS_SHORT_SINK_DOMAIN": "sink域名",
"SETTINGS_SHORT_SINK_TOKEN": "sink token",
"SETTINGS_DELETE_LOCAL_FILE_AFTER_UPLOAD": "上传后删除本地文件",
"SETTINGS_SYNC_CONFIG": "设置配置同步",
"SETTINGS_SYNC_CONFIG_TITLE": "同步设置",
"SETTINGS_SYNC_CONFIG_NOTE": "同步的文件为配置文件",
"SETTINGS_SYNC_CONFIG_SELECT_TYPE": "选择同步方式",
"SETTINGS_SYNC_CONFIG_SELECT_FILE": "选择同步文件",
"SETTINGS_SYNC_CONFIG_SELECT_CONFIG": "仅配置文件",
"SETTINGS_SYNC_CONFIG_SELECT_GALLERY": "仅相册文件",
"SETTINGS_SYNC_CONFIG_SELECT_BOTH": "配置文件和相册文件",
"SETTINGS_SYNC_CONFIG_GITEA_HOST": "Gitea 网址",
"SETTINGS_SYNC_CONFIG_GITHUB_USERNAME": "GitHub用户名",
"SETTINGS_SYNC_CONFIG_GITEA_USERNAME": "Gitea用户名",
"SETTINGS_SYNC_CONFIG_GITEE_USERNAME": "Gitee用户名",
"SETTINGS_SYNC_CONFIG_GITHUB_REPO": "仓库(私有)",
"SETTINGS_SYNC_CONFIG_GITEA_REPO": "仓库",
"SETTINGS_SYNC_CONFIG_GITEE_REPO": "仓库路径名",
"SETTINGS_SYNC_CONFIG_GITHUB_BRANCH": "GitHub分支",
"SETTINGS_SYNC_CONFIG_GITEA_BRANCH": "Gitea分支",
"SETTINGS_SYNC_CONFIG_GITEE_BRANCH": "Gitee分支",
"SETTINGS_SYNC_CONFIG_GITHUB_TOKEN": "GitHub Token",
"SETTINGS_SYNC_CONFIG_GITEA_TOKEN": "Gitea Token",
"SETTINGS_SYNC_CONFIG_GITEE_TOKEN": "Gitee Token",
"SETTINGS_SYNC_CONFIG_PROXY": "代理",
"SETTINGS_SYNC_CONFIG_GITHUB_USERNAME_PLACEHOLDER": "请输入GitHub用户名",
"SETTINGS_SYNC_CONFIG_GITEA_USERNAME_PLACEHOLDER": "请输入Gitea用户名",
"SETTINGS_SYNC_CONFIG_GITEE_USERNAME_PLACEHOLDER": "请输入Gitee用户名",
"SETTINGS_SYNC_CONFIG_GITHUB_REPO_PLACEHOLDER": "请输入GitHub仓库名",
"SETTINGS_SYNC_CONFIG_GITEA_REPO_PLACEHOLDER": "请输入Gitea仓库名",
"SETTINGS_SYNC_CONFIG_GITEE_REPO_PLACEHOLDER": "请输入Gitee仓库名",
"SETTINGS_SYNC_CONFIG_GITHUB_BRANCH_PLACEHOLDER": "请输入GitHub分支名",
"SETTINGS_SYNC_CONFIG_GITEA_BRANCH_PLACEHOLDER": "请输入Gitea分支名",
"SETTINGS_SYNC_CONFIG_GITEE_BRANCH_PLACEHOLDER": "请输入Gitee分支名",
"SETTINGS_SYNC_CONFIG_GITHUB_TOKEN_PLACEHOLDER": "请输入GitHub Token",
"SETTINGS_SYNC_CONFIG_GITEA_TOKEN_PLACEHOLDER": "请输入Gitea Token",
"SETTINGS_SYNC_CONFIG_GITEE_TOKEN_PLACEHOLDER": "请输入Gitee Token",
"SETTINGS_SYNC_CONFIG_PROXY_PLACEHOLDER": "请输入代理地址",
"SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT": "WebDAV端点",
"SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT_PLACEHOLDER": "请输入WebDAV端点URL",
"SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME": "用户名",
"SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME_PLACEHOLDER": "请输入WebDAV用户名",
"SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD": "密码",
"SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD_PLACEHOLDER": "请输入WebDAV密码",
"SETTINGS_SYNC_CONFIG_WEBDAV_AUTH_TYPE": "认证类型",
"SETTINGS_SYNC_CONFIG_WEBDAV_SSL_ENABLED": "启用SSL/HTTPS",
"SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH": "保存路径",
"SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH_PLACEHOLDER": "请选择同步文件的保存路径",
"SETTINGS_UP_DOWN_DESC": "上传下载配置文件",
"SETTINGS_SYNC_UPLOAD": "上传",
"SETTINGS_SYNC_DOWNLOAD": "下载",
"SETTINGS_SYNC_UPLOAD_ALL": "上传所有",
"SETTINGS_SYNC_DOWNLOAD_ALL": "下载所有",
"SETTINGS_SYNC_UPLOAD_SUCCESS": "上传成功",
"SETTINGS_SYNC_UPLOAD_FAILED": "上传失败",
"SETTINGS_SYNC_DOWNLOAD_SUCCESS": "下载成功",
"SETTINGS_SYNC_DOWNLOAD_FAILED": "下载失败",
"SETTINGS_SYNC_COMMON_CONFIG": "通用配置",
"SETTINGS_SYNC_MANAGE_CONFIG": "管理配置",
"SETTINGS_AUTO_IMPORT": "管理页面自动导入配置",
"SETTINGS_AUTO_IMPORT_SELECT_PICBED": "选择需要开启自动导入的图床",
"SETTINGS_TAB_SYSTEM": "系统设置",
"SETTINGS_TAB_SYNC_CONFIG": "同步与配置",
"SETTINGS_TAB_UPLOAD": "上传设置",
"SETTINGS_TAB_ADVANCED": "高级设置",
"SETTINGS_TAB_UPDATE": "更新",
"SHORTCUT_NAME": "快捷键名称",
"SHORTCUT_BIND": "快捷键绑定",
"SHORTCUT_STATUS": "状态",
"SHORTCUT_ENABLED": "已启用",
"SHORTCUT_DISABLED": "已禁用",
"SHORTCUT_SOURCE": "来源",
"SHORTCUT_HANDLE": "操作",
"SHORTCUT_ENABLE": "启用",
"SHORTCUT_DISABLE": "禁用",
"SHORTCUT_EDIT": "编辑",
"SHORTCUT_CHANGE_UPLOAD": "修改上传快捷键",
"WAIT_TO_UPLOAD": "等待上传",
"ALREADY_UPLOAD": "已上传",
"DRAG_FILE_TO_HERE": "将文件拖拽到此处,或",
"CLICK_TO_UPLOAD": "点击上传",
"LINK_FORMAT": "链接格式",
"CLIPBOARD_PICTURE": "剪贴板",
"TIPS_DRAG_VALID_PICTURE_OR_URL": "请拖入合法的图片文件或者图片URL地址",
"TIPS_INPUT_URL": "请输入URL",
"TIPS_HTTP_PREFIX": "http://或者https://开头",
"TIPS_INPUT_VALID_URL": "请输入合法的URL",
"PLUGIN_SEARCH_PLACEHOLDER": "搜索npm上的PicGo插件或者点击上方按钮查看优秀插件列表",
"PLUGIN_INSTALL": "安装",
"PLUGIN_INSTALLING": "安装中",
"PLUGIN_INSTALLED": "已安装",
"PLUGIN_DOING_SOMETHING": "进行中",
"PLUGIN_LIST": "插件列表",
"PLUGIN_IMPORT_LOCAL": "导入本地插件",
"PLUGIN_UPDATE_ALL": "更新全部插件",
"TIPS_REMOVE_LINK": "此操作将把该图片移出相册, 是否继续?",
"TIPS_WILL_REMOVE_CHOOSED_IMAGES": "将在相册中移除刚才选中的 ${m} 张图片,是否继续?",
"TIPS_MUST_CONTAINS_URL": "必须含有$url 或 $fileName 或 $extName",
"TIPS_NETWORK_ERROR": "网络错误暂时无法获取",
"TIPS_NEED_RELOAD": "需要重启生效",
"TIPS_PLEASE_CHOOSE_LOG_LEVEL": "请选择日志记录等级",
"TIPS_SET_SUCCEED": "设置成功",
"TIPS_RESET_SUCCEED": "重置成功",
"TIPS_PLUGIN_NOT_GUI_IMPLEMENT": "该插件未对可视化界面进行优化, 是否继续安装?",
"MANAGE_SETTING_TITLE": "管理页面设置",
"MANAGE_SETTING_ISAUTOREFRESH_TITLE": "每次进入新目录时,是否自动刷新文件列表",
"MANAGE_SETTING_ISAUTOREFRESH_TIPS": "仅对不分页模式有效,默认在加载过一次后自动缓存到数据库来加快下次加载速度",
"MANAGE_SETTING_CLEAR_CACHE_TITLE": "清空文件列表缓存数据库 已占用:",
"MANAGE_SETTING_CLEAR_CACHE_FREE_TITLE": "剩余可用:",
"MANAGE_SETTING_CLEAR_CACHE_TIPS": "清空后下次进入新目录时将会重新加载文件列表",
"MANAGE_SETTING_CLEAR_CACHE_PROMPT": "确定要清空文件列表缓存数据库吗?",
"MANAGE_SETTING_CLEAR_CACHE_BUTTON": "清空",
"MANAGE_SETTING_ISSHOWTHUMBNAIL_TITLE": "图片显示为原图而非默认文件格式图标(需要存储桶可公开访问)",
"MANAGE_SETTING_ISUSEPRESIGNEDURL_TITLE": "使用预签名URL预览图片",
"MANAGE_SETTING_ISSHOWLIST_TITLE": "文件列表默认显示方式",
"MANAGE_SETTING_ISSHOWLIST_ON": "列表",
"MANAGE_SETTING_ISSHOWLIST_OFF": "卡片",
"MANAGE_SETTING_ISFORCECUSTOMURLHTTPS_TITLE": "为自定义域名开启强制HTTPS",
"MANAGE_SETTING_ISFORCECUSTOMURLHTTPS_TIPS": "开启后, 复制链接等操作将会自动为自定义域名添加https前缀",
"MANAGE_SETTING_ISUPLOADKEEPDIRSTRUCTURE_TITLE": "上传时保留目录结构",
"MANAGE_SETTING_ISUPLOADKEEPDIRSTRUCTURE_TIPS": "关闭后会将所有文件展开到指定目录下",
"MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_A": "下载",
"MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_B": "文件",
"MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_C": "时保留目录结构",
"MANAGE_SETTING_ISDOWNLOADFOLDERKEEPDIRSTRUCTURE_TITLE_D": "文件夹",
"MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TIPS": "开启后,下载时会保留原始目录结构",
"MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_TITLE": "最大同时下载文件数(1-9999)",
"MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_TIPS": "腾讯云由于后端实现不同,该设置不生效",
"MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_INPUT_TIPS": "请输入最大同时下载文件数",
"MANAGE_SETTING_ISIGNORECASE_TITLE": "文件搜索时,是否忽略大小写",
"MANAGE_SETTING_ISIGNORECASE_TIPS": "开启后,搜索时会忽略大小写",
"MANAGE_SETTING_TIMESTAMPRENAME_TITLE": "上传文件时间戳重命名--(优先级最高)",
"MANAGE_SETTING_TIMESTAMPRENAME_TIPS": "开启后,上传文件时会自动重命名为时间戳",
"MANAGE_SETTING_RANDOMSTRINGRENAME_TITLE": "上传文件随机字符串重命名--(优先级中)",
"MANAGE_SETTING_RANDOMSTRINGRENAME_TIPS": "随机字符串长度为20",
"MANAGE_SETTING_CUSTOMRENAME_TITLE": "上传文件自定义重命名--(优先级最低)",
"MANAGE_SETTING_CUSTOMRENAME_TIPS": "请填写自定义重命名格式",
"MANAGE_SETTING_CUSTOM_PATTERN_TITLE": "自定义重命名格式,占位符请参考下表,可自由组合",
"MANAGE_SETTING_CUSTOM_PATTERN_TIPS": "请填写自定义重命名格式",
"MANAGE_SETTING_CUSTOM_PATTERN_TABLE_TITLE": "占位符",
"MANAGE_SETTING_CUSTOM_PATTERN_TABLE_TIPS": "描述",
"MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TITLE": "预签名URL过期时间(单位:秒)",
"MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TIPS": "请填写预签名URL过期时间",
"MANAGE_SETTING_CHOOSE_COPY_FORMAT_TITLE": "选择默认复制的链接格式",
"MANAGE_SETTING_CHOOSE_COPY_FORMAT_MARKDOWN": "Markdown",
"MANAGE_SETTING_CHOOSE_COPY_FORMAT_MARKDOWN_WITH_LINK": "Markdown(带链接)",
"MANAGE_SETTING_CHOOSE_COPY_FORMAT_RAWURL": "原始链接",
"MANAGE_SETTING_CHOOSE_COPY_FORMAT_HTML": "HTML格式",
"MANAGE_SETTING_CHOOSE_COPY_FORMAT_BBCODE": "BBCode格式",
"MANAGE_SETTING_CHOOSE_COPY_FORMAT_CUSTOM": "自定义格式",
"MANAGE_SETTING_CUSTOM_COPY_FORMAT_TITLE": "自定义链接格式($url为链接,$fileName为文件名)",
"MANAGE_SETTING_CUSTOM_COPY_FORMAT_TIPS": "请填写自定义链接格式",
"MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_TITLE": "选择下载目录",
"MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_TIPS": "系统默认下载目录",
"MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_BUTTON": "选择目录",
"MANAGE_SETTING_COPY_MESSAGE": "已复制",
"MANAGE_SETTING_CLEAR_CACHE_SUCCESS": "清除成功",
"MANAGE_SETTING_CLEAR_CACHE_FAILED": "清除失败",
"MANAGE_SETTING_ISENCODEURL_TITLE": "复制链接时进行URL编码",
"MANAGE_SETTING_ISENCODEURL_TIPS": "根据平台选择是否开启",
"MANAGE_NO_DATA": "暂无数据",
"MANAGE_MAIN_PAGE_NEW_BUCKET": "新建存储桶",
"MANAGE_MAIN_PAGE_BACK_TO_HOME": "返回首页",
"MANAGE_MAIN_PAGE_SWITCH_PICBED": "切换图床",
"MANAGE_MAIN_PAGE_SETTING": "设置",
"MANAGE_MAIN_PAGE_SUBMIT": "提交",
"MANAGE_MAIN_PAGE_TIPS": "提示",
"MANAGE_MAIN_PAGE_TIPS_SUCCESS": "创建成功",
"MANAGE_MAIN_PAGE_TIPS_FAILED": "创建失败",
"MANAGE_MAIN_PAGE_BUCKET": "存储桶",
"MANAGE_MAIN_PAGE_GALLERY": "相册",
"MANAGE_MAIN_PAGE_REPOSITORY": "仓库",
"MANAGE_CONSTANT_BASE_RULE": "请输入",
"MANAGE_CONSTANT_ITEMS_PAGE_RULE_MESSAGE_A": "请输入每页显示数量",
"MANAGE_CONSTANT_ITEMS_PAGE_RULE_MESSAGE_B": "每页显示数量必须为数字",
"MANAGE_CONSTANT_ITEMS_PAGE_RULE_MESSAGE_C": "每页显示数量必须在20-1000之间",
"MANAGE_CONSTANT_ALIAS_RULE_MESSAGE_A": "请输入别名, 该配置的唯一标识",
"MANAGE_CONSTANT_ALIAS_RULE_MESSAGE_B": "别名只能包含中文、英文、数字、下划线和中划线",
"MANAGE_CONSTANT_ALIAS_TOOLTIP": "别名只能包含中文、英文、数字、下划线和中划线",
"MANAGE_CONSTANT_ITEMS_PAGE_TOOLTIP": "每页显示数量必须在20-1000之间",
"MANAGE_CONSTANT_PAGING_TOOLTIP": "关闭分页时,目录列表将使用数据库缓存以优化性能",
"MANAGE_CONSTANT_BUCKET_NAME_TOOLTIP": "英文逗号分隔bucket1,bucket2,bucket3和起始目录顺序一一对应",
"MANAGE_CONSTANT_BASE_DIR_TOOLTIP": "英文逗号分隔,如:/dir1,/dir2,/dir3, 和存储桶顺序一一对应",
"MANAGE_CONSTANT_IS_AUTO_CUSTOM_URL_TOOLTIP": "开启时,将自动获取存储桶绑定的域名,关闭时可手动填写",
"MANAGE_CONSTANT_SMMS_ALIAS_DESC": "配置别名-必需",
"MANAGE_CONSTANT_SMMS_ALIAS_PLACEHOLDER": "该配置的唯一标识",
"MANAGE_CONSTANT_SMMS_TOKEN_DESC": "Token-必需",
"MANAGE_CONSTANT_SMMS_TOKEN_PLACEHOLDER": "请填写Token",
"MANAGE_CONSTANT_SMMS_PAGING_DESC": "是否开启分页",
"MANAGE_CONSTANT_SMMS_EXPLAIN": "大陆地区请访问备用域名https://smms.app, 请勿大批量上传图片否则API接口会被限制",
"MANAGE_CONSTANT_SMMS_REFER_TEXT": "配置教程请参考: ",
"MANAGE_CONSTANT_QINIU_NAME": "七牛云",
"MANAGE_CONSTANT_QINIU_ALIAS_DESC": "配置别名-必需",
"MANAGE_CONSTANT_QINIU_ALIAS_PLACEHOLDER": "该配置的唯一标识",
"MANAGE_CONSTANT_QINIU_ACCESS_KEY_DESC": "accessKey-必需",
"MANAGE_CONSTANT_QINIU_ACCESS_KEY_PLACEHOLDER": "请填写accessKey",
"MANAGE_CONSTANT_QINIU_SECRET_KEY_DESC": "secretKey-必需",
"MANAGE_CONSTANT_QINIU_SECRET_KEY_PLACEHOLDER": "请填写secretKey",
"MANAGE_CONSTANT_QINIU_BUCKET_DESC": "空间名-可选",
"MANAGE_CONSTANT_QINIU_BUCKET_PLACEHOLDER": "英文逗号分隔例如bucket1,bucket2",
"MANAGE_CONSTANT_QINIU_BASE_DIR_DESC": "起始目录-可选",
"MANAGE_CONSTANT_QINIU_BASE_DIR_PLACEHOLDER": "英文逗号分隔,例如:/dir1,/dir2",
"MANAGE_CONSTANT_QINIU_IS_AUTO_CUSTOM_URL_DESC": "是否自动获取绑定域名",
"MANAGE_CONSTANT_QINIU_PAGING_DESC": "是否开启分页",
"MANAGE_CONSTANT_QINIU_ITEMS_PAGE_DESC": "每页显示数量",
"MANAGE_CONSTANT_QINIU_EXPLAIN": "空间名和起始目录配置时可通过英文逗号分隔设置,顺序必须一致,逗号间留空或缺失项使用默认值",
"MANAGE_CONSTANT_QINIU_REFER_TEXT": "配置教程请参考: ",
"MANAGE_CONSTANT_GITHUB_ALIAS_DESC": "配置别名-必需",
"MANAGE_CONSTANT_GITHUB_ALIAS_PLACEHOLDER": "该配置的唯一标识",
"MANAGE_CONSTANT_GITHUB_TOKEN_DESC": "Token-必需",
"MANAGE_CONSTANT_GITHUB_TOKEN_PLACEHOLDER": "请填写Token",
"MANAGE_CONSTANT_GITHUB_TOKEN_TIPS": "请提供具有完整repo权限的token否则部分功能可能无法使用",
"MANAGE_CONSTANT_GITHUB_USER_DESC": "用户名-必需",
"MANAGE_CONSTANT_GITHUB_USER_PLACEHOLDER": "请填写用户名",
"MANAGE_CONSTANT_GITHUB_USER_RULE_MESSAGE": "用户名",
"MANAGE_CONSTANT_GITHUB_PROXY_DESC": "代理地址-可选",
"MANAGE_CONSTANT_GITHUB_PROXY_PLACEHOLDER": "例如http://127.0.0.1:1080",
"MANAGE_CONSTANT_GITHUB_PROXY_TIPS": "如果访问速度较慢,可以尝试配置代理",
"MANAGE_CONSTANT_GITHUB_PAGING_DESC": "是否开启分页",
"MANAGE_CONSTANT_GITHUB_CUSTOM_URL_DESC": "CDN加速域名-可选",
"MANAGE_CONSTANT_GITHUB_CUSTOM_URL_PLACEHOLDER": "支持使用{username}、{repo}、{branch}和{path}作为替换占位符,用于适配不同仓库和分支",
"MANAGE_CONSTANT_GITHUB_CUSTOM_URL_TIPS": "例如: https://cdn.staticaly.com/gh/{username}/{repo}@{branch}/{path}",
"MANAGE_CONSTANT_GITHUB_CUSTOM_URL_RULE_MESSAGE_A": "加速域名请以http://或https://开头",
"MANAGE_CONSTANT_GITHUB_CUSTOM_URL_RULE_MESSAGE_B": "加速域名中的大括号必须成对出现",
"MANAGE_CONSTANT_GITHUB_EXPLAIN": "API调用有每小时上限此外不支持上传超过100M的文件",
"MANAGE_CONSTANT_GITHUB_REFER_TEXT": "配置教程请参考: ",
"MANAGE_CONSTANT_ALIYUN_NAME": "阿里云",
"MANAGE_CONSTANT_ALIYUN_ALIAS_DESC": "配置别名-必需",
"MANAGE_CONSTANT_ALIYUN_ALIAS_PLACEHOLDER": "该配置的唯一标识",
"MANAGE_CONSTANT_ALIYUN_ACCESS_KEY_ID_DESC": "accessKeyId-必需",
"MANAGE_CONSTANT_ALIYUN_ACCESS_KEY_SECRET_DESC": "accessKeySecret-必需",
"MANAGE_CONSTANT_ALIYUN_ACCESS_KEY_SECRET_PLACEHOLDER": "请填写accessKeySecret",
"MANAGE_CONSTANT_ALIYUN_BUCKET_DESC": "存储桶名-可选",
"MANAGE_CONSTANT_ALIYUN_BUCKET_PLACEHOLDER": "英文逗号分隔例如bucket1,bucket2",
"MANAGE_CONSTANT_ALIYUN_BASE_DIR_DESC": "起始目录-可选",
"MANAGE_CONSTANT_ALIYUN_BASE_DIR_PLACEHOLDER": "英文逗号分隔,例如:/dir1,/dir2",
"MANAGE_CONSTANT_ALIYUN_IS_AUTO_CUSTOM_URL_DESC": "是否自动获取绑定域名",
"MANAGE_CONSTANT_ALIYUN_PAGING_DESC": "是否开启分页",
"MANAGE_CONSTANT_ALIYUN_ITEMS_PAGE_DESC": "每页显示数量",
"MANAGE_CONSTANT_ALIYUN_EXPLAIN": "存储桶名和起始目录配置时可通过英文逗号分隔不同存储桶的设置,顺序必须一致,逗号间留空或缺失项使用默认值",
"MANAGE_CONSTANT_ALIYUN_REFER_TEXT": "配置教程请参考: ",
"MANAGE_CONSTANT_TENCENT_NAME": "腾讯云",
"MANAGE_CONSTANT_TENCENT_ALIAS_DESC": "配置别名-必需",
"MANAGE_CONSTANT_TENCENT_ALIAS_PLACEHOLDER": "该配置的唯一标识",
"MANAGE_CONSTANT_TENCENT_SECRET_ID_DESC": "secretId-必需",
"MANAGE_CONSTANT_TENCENT_SECRET_ID_PLACEHOLDER": "请填写secretId",
"MANAGE_CONSTANT_TENCENT_SECRET_KEY_DESC": "secretKey-必需",
"MANAGE_CONSTANT_TENCENT_SECRET_KEY_PLACEHOLDER": "请填写secretKey",
"MANAGE_CONSTANT_TENCENT_APPID_DESC": "appId-必需",
"MANAGE_CONSTANT_TENCENT_APPID_PLACEHOLDER": "请填写appId",
"MANAGE_CONSTANT_TENCENT_APPID_TOOLTIP": "例如1250000000",
"MANAGE_CONSTANT_TENCENT_BUCKET_DESC": "存储桶名-可选(注意包含AppId)",
"MANAGE_CONSTANT_TENCENT_BUCKET_PLACEHOLDER": "英文逗号分隔例如bucket1-1250000000,bucket2-1250000000",
"MANAGE_CONSTANT_TENCENT_BASE_DIR_DESC": "起始目录-可选",
"MANAGE_CONSTANT_TENCENT_BASE_DIR_PLACEHOLDER": "英文逗号分隔,例如:/dir1,/dir2",
"MANAGE_CONSTANT_TENCENT_IS_AUTO_CUSTOM_URL_DESC": "是否自动获取绑定域名",
"MANAGE_CONSTANT_TENCENT_PAGING_DESC": "是否开启分页",
"MANAGE_CONSTANT_TENCENT_ITEMS_PAGE_DESC": "每页显示数量",
"MANAGE_CONSTANT_TENCENT_EXPLAIN": "存储桶名和起始目录配置时可通过英文逗号分隔不同存储桶的设置,顺序必须一致,逗号间留空或缺失项使用默认值",
"MANAGE_CONSTANT_TENCENT_REFER_TEXT": "配置教程请参考: ",
"MANAGE_CONSTANT_UPYUN_NAME": "又拍云",
"MANAGE_CONSTANT_UPYUN_ALIAS_DESC": "配置别名-必需",
"MANAGE_CONSTANT_UPYUN_ALIAS_PLACEHOLDER": "该配置的唯一标识",
"MANAGE_CONSTANT_UPYUN_BUCKET_DESC": "服务名-必需",
"MANAGE_CONSTANT_UPYUN_BUCKET_PLACEHOLDER": "对应其它对象存储的存储桶名",
"MANAGE_CONSTANT_UPYUN_OPERATOR_NAME_DESC": "操作员名-必需",
"MANAGE_CONSTANT_UPYUN_OPERATOR_NAME_PLACEHOLDER": "推荐使用具有读取、写入和删除完整权限的操作员",
"MANAGE_CONSTANT_UPYUN_OPERATOR_NAME_RULE": "操作员",
"MANAGE_CONSTANT_UPYUN_OPERATOR_PWD_DESC": "操作员密码-必需",
"MANAGE_CONSTANT_UPYUN_OPERATOR_PWD_PLACEHOLDER": "请填写密码",
"MANAGE_CONSTANT_UPYUN_OPERATOR_PWD_RULE": "操作员密码",
"MANAGE_CONSTANT_UPYUN_BASE_DIR_DESC": "起始目录-可选",
"MANAGE_CONSTANT_UPYUN_BASE_DIR_PLACEHOLDER": "读取文件时的初始目录",
"MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_DESC": "加速域名-必需",
"MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_PLACEHOLDER": "请以http://或https://开头",
"MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_RULE_MESSAGE_A": "加速域名不能为空",
"MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_RULE_MESSAGE_B": "自定义域名请以http://或https://开头",
"MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_DESC": "防盗链密钥-可选",
"MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_PLACEHOLDER": "请填写防盗链密钥",
"MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_TOOLTIP": "如果不填写,默认不启用防盗链",
"MANAGE_CONSTANT_UPYUN_EXPIRE_TIME_DESC": "防盗链过期时间(秒)-可选",
"MANAGE_CONSTANT_UPYUN_PAGING": "是否开启分页",
"MANAGE_CONSTANT_UPYUN_ITEMS_PAGE": "每页显示数量",
"MANAGE_CONSTANT_UPYUN_EXPLAIN": "又拍云图床务必填写加速域名,否则无法正常使用",
"MANAGE_CONSTANT_UPYUN_REFER_TEXT": "配置教程请参考: ",
"MANAGE_CONSTANT_IMGUR_NAME": "Imgur",
"MANAGE_CONSTANT_IMGUR_ALIAS_DESC": "配置别名-必需",
"MANAGE_CONSTANT_IMGUR_ALIAS_PLACEHOLDER": "该配置的唯一标识",
"MANAGE_CONSTANT_IMGUR_USERNAME_DESC": "imgur用户名-必需",
"MANAGE_CONSTANT_IMGUR_USERNAME_PLACEHOLDER": "请填写imgur用户名",
"MANAGE_CONSTANT_IMGUR_ACCESS_TOKEN_DESC": "access token-必需",
"MANAGE_CONSTANT_IMGUR_ACCESS_TOKEN_PLACEHOLDER": "请填写access token",
"MANAGE_CONSTANT_IMGUR_ACCESS_TOKEN_TOOLTIP": "不是clientID,请参考配置教程",
"MANAGE_CONSTANT_IMGUR_PROXY_DESC": "代理-可选",
"MANAGE_CONSTANT_IMGUR_PROXY_PLACEHOLDER": "例如http://127.0.0.1:1080",
"MANAGE_CONSTANT_IMGUR_PROXY_TOOLTIP": "大陆地区请使用代理,否则无法正常使用",
"MANAGE_CONSTANT_IMGUR_EXPLAIN": "大陆地区请使用代理API调用存在限制请注意使用频率",
"MANAGE_CONSTANT_IMGUR_REFER_TEXT": "配置教程请参考: ",
"MANAGE_CONSTANT_S3_NAME": "S3兼容云",
"MANAGE_CONSTANT_S3_ALIAS_DESC": "配置别名-必需",
"MANAGE_CONSTANT_S3_ALIAS_PLACEHOLDER": "该配置的唯一标识",
"MANAGE_CONSTANT_S3_ACCESS_KEY_ID_DESC": "accessKeyId-必需",
"MANAGE_CONSTANT_S3_ACCESS_KEY_ID_PLACEHOLDER": "请填写accessKeyId",
"MANAGE_CONSTANT_S3_SECRET_ACCESS_KEY_DESC": "secretAccessKey-必需",
"MANAGE_CONSTANT_S3_SECRET_ACCESS_KEY_PLACEHOLDER": "请填写secretAccessKey",
"MANAGE_CONSTANT_S3_ENDPOINT_DESC": "endpoint-可选",
"MANAGE_CONSTANT_S3_ENDPOINT_PLACEHOLDER": "例如s3.us-east-1.amazonaws.com",
"MANAGE_CONSTANT_S3_ENDPOINT_TOOLTIP": "如果不填写,默认访问 AWS S3请提供根API endpoint",
"MANAGE_CONSTANT_S3_SSLENABLED_DESC": "使用HTTPS连接",
"MANAGE_CONSTANT_S3_SSLENABLED_TOOLTIP": "如果您的平台不支持,请关闭该选项",
"MANAGE_CONSTANT_S3_FORCE_PATH_STYLE_DESC": "启用 S3 Path style",
"MANAGE_CONSTANT_S3_FORCE_PATH_STYLE_TOOLTIP": "例如使用 minio 时需要启用",
"MANAGE_CONSTANT_S3_PROXY_DESC": "代理-可选",
"MANAGE_CONSTANT_S3_PROXY_PLACEHOLDER": "例如http://127.0.0.1:1080",
"MANAGE_CONSTANT_S3_PROXY_TOOLTIP": "如果部分平台大陆地区无法访问,请使用代理",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_DESC": "上传文件的权限",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_PRIVATE": "私有",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_PUBLIC_READ": "公共读",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_PUBLIC_READ_WRITE": "公共读写",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_AUTHENTICATED_READ": "授权读",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_BUCKET_OWNER_READ": "桶所有者读",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_BUCKET_OWNER_FULL_CONTROL": "桶所有者完全控制",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_AWS_EXEC_READ": "AWS执行读",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_TOOLTIP": "上传文件的权限可选值private、public-read、public-read-write、authenticated-read、bucket-owner-read、bucket-owner-full-control、aws-exec-read",
"MANAGE_CONSTANT_S3_BUCKET_DESC": "存储桶名-可选",
"MANAGE_CONSTANT_S3_BUCKET_PLACEHOLDER": "英文逗号分隔例如bucket1,bucket2",
"MANAGE_CONSTANT_S3_BASE_DIR_DESC": "起始目录-可选",
"MANAGE_CONSTANT_S3_BASE_DIR_PLACEHOLDER": "英文逗号分隔,例如:/dir1,/dir2",
"MANAGE_CONSTANT_S3_DOGE_CLOUD_SUPPORT_DESC": "是否使用Doge Cloud",
"MANAGE_CONSTANT_S3_DOGE_CLOUD_SUPPORT_TOOLTIP": "开启后将使用Doge Cloud的API",
"MANAGE_CONSTANT_S3_PAGING_DESC": "是否开启分页",
"MANAGE_CONSTANT_S3_ITEMS_PAGE_DESC": "每页显示数量",
"MANAGE_CONSTANT_S3_EXPLAIN": "存储桶名和起始目录配置时可通过英文逗号分隔不同存储桶的设置,顺序必须一致,逗号间留空或缺失项使用默认值",
"MANAGE_CONSTANT_S3_REFER_TEXT": "配置教程请参考: ",
"MANAGE_CONSTANT_WEBDAV_ALIAS_DESC": "配置别名-必需",
"MANAGE_CONSTANT_WEBDAV_ALIAS_PLACEHOLDER": "该配置的唯一标识",
"MANAGE_CONSTANT_WEBDAV_HOST_DESC": "地址-必需",
"MANAGE_CONSTANT_WEBDAV_HOST_PLACEHOLDER": "例如https://example.com/dav",
"MANAGE_CONSTANT_WEBDAV_HOST_TOOLTIP": "请填写完整的WebDAV地址",
"MANAGE_CONSTANT_WEBDAV_USERNAME_DESC": "用户名-必需",
"MANAGE_CONSTANT_WEBDAV_USERNAME_PLACEHOLDER": "请填写用户名",
"MANAGE_CONSTANT_WEBDAV_BUCKET_DESC": "特殊配置",
"MANAGE_CONSTANT_WEBDAV_BUCKET_PLACEHOLDER": "例如bucket1",
"MANAGE_CONSTANT_WEBDAV_BUCKET_TOOLTIP": "此处不可修改,仅为软件兼容性考虑",
"MANAGE_CONSTANT_WEBDAV_PASSWORD_DESC": "密码-必需",
"MANAGE_CONSTANT_WEBDAV_PASSWORD_PLACEHOLDER": "请填写密码",
"MANAGE_CONSTANT_WEBDAV_BASE_DIR_DESC": "起始目录-可选",
"MANAGE_CONSTANT_WEBDAV_BASE_DIR_PLACEHOLDER": "例如:/dir1",
"MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_DESC": "自定义域名-可选",
"MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_PLACEHOLDER": "例如https://example.com",
"MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_TOOLTIP": "如果您的WebDAV服务器支持自定义域名请填写",
"MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_RULE_MESSAGE": "自定义域名请以http://或https://开头",
"MANAGE_CONSTANT_WEBDAV_WEB_PATH": "网址拼接用起始路径",
"MANAGE_CONSTANT_WEBDAV_WEB_PATH_PLACEHOLDER": "例如test/ttc",
"MANAGE_CONSTANT_WEBDAV_WEB_PATH_TOOLTIP": "用于拼接网址",
"MANAGE_CONSTANT_WEBDAV_PROXY_DESC": "代理-可选",
"MANAGE_CONSTANT_WEBDAV_PROXY_PLACEHOLDER": "例如http://127.0.0.1:1080",
"MANAGE_CONSTANT_WEBDAV_PROXY_TOOLTIP": "如果需要特殊网络环境才能访问,请使用代理",
"MANAGE_CONSTANT_WEBDAV_SSL_DESC": "使用HTTPS连接",
"MANAGE_CONSTANT_WEBDAV_SSL_TOOLTIP": "根据WebDAV服务器的配置如果您的服务器不支持HTTPS请关闭该选项",
"MANAGE_CONSTANT_WEBDAV_AUTH_TYPE_DESC": "认证类型",
"MANAGE_CONSTANT_WEBDAV_EXPLAIN": "WebDAV配置",
"MANAGE_CONSTANT_WEBDAV_REFER_TEXT": "配置教程请参考: ",
"MANAGE_CONSTANT_LOCAL_NAME": "本地存储",
"MANAGE_CONSTANT_LOCAL_ALIAS_DESC": "配置别名-必需",
"MANAGE_CONSTANT_LOCAL_ALIAS_PLACEHOLDER": "该配置的唯一标识",
"MANAGE_CONSTANT_LOCAL_BASE_DIR_DESC": "起始目录-必需",
"MANAGE_CONSTANT_LOCAL_BASE_DIR_PLACEHOLDER": "请填写起始目录",
"MANAGE_CONSTANT_LOCAL_CUSTOM_URL_DESC": "自定义域名-可选",
"MANAGE_CONSTANT_LOCAL_CUSTOM_URL_PLACEHOLDER": "例如https://example.com",
"MANAGE_CONSTANT_LOCAL_CUSTOM_URL_TOOLTIP": "如果您的本地存储支持自定义域名,请填写",
"MANAGE_CONSTANT_LOCAL_WEB_PATH": "网址拼接用起始路径",
"MANAGE_CONSTANT_LOCAL_WEB_PATH_PLACEHOLDER": "例如test/ttc",
"MANAGE_CONSTANT_LOCAL_WEB_PATH_TOOLTIP": "用于拼接网址",
"MANAGE_CONSTANT_LOCAL_EXPLAIN": "本地存储配置",
"MANAGE_CONSTANT_LOCAL_REFER_TEXT": "配置教程请参考: ",
"MANAGE_CONSTANT_LOCAL_BASE_DIR_RULE_MESSAGE": "起始目录不能为空",
"MANAGE_CONSTANT_LOCAL_BUCKET_DESC": "特殊配置",
"MANAGE_CONSTANT_LOCAL_BUCKET_PLACEHOLDER": "例如bucket1",
"MANAGE_CONSTANT_LOCAL_BUCKET_TOOLTIP": "此处不可修改,仅为软件兼容性考虑",
"MANAGE_CONSTANT_SFTP_NAME": "SFTP",
"MANAGE_CONSTANT_SFTP_ALIAS_DESC": "配置别名-必需",
"MANAGE_CONSTANT_SFTP_ALIAS_PLACEHOLDER": "该配置的唯一标识",
"MANAGE_CONSTANT_SFTP_HOST_DESC": "SSH地址-必需",
"MANAGE_CONSTANT_SFTP_HOST_PLACEHOLDER": "例如233.233.233.233",
"MANAGE_CONSTANT_SFTP_PORT_DESC": "SSH端口-必需",
"MANAGE_CONSTANT_SFTP_PORT_PLACEHOLDER": "例如22",
"MANAGE_CONSTANT_SFTP_USERNAME_DESC": "用户名",
"MANAGE_CONSTANT_SFTP_USERNAME_PLACEHOLDER": "请填写用户名",
"MANAGE_CONSTANT_SFTP_PASSWORD_DESC": "密码",
"MANAGE_CONSTANT_SFTP_PASSWORD_PLACEHOLDER": "请填写密码",
"MANAGE_CONSTANT_SFTP_PRIVATE_KEY_DESC": "私钥地址",
"MANAGE_CONSTANT_SFTP_PRIVATE_KEY_PLACEHOLDER": "请填写私钥地址",
"MANAGE_CONSTANT_SFTP_PASSPHRASE_DESC": "私钥密码",
"MANAGE_CONSTANT_SFTP_PASSPHRASE_PLACEHOLDER": "请填写私钥密码",
"MANAGE_CONSTANT_SFTP_BASE_DIR_DESC": "起始目录-可选",
"MANAGE_CONSTANT_SFTP_BASE_DIR_PLACEHOLDER": "例如:/dir1",
"MANAGE_CONSTANT_SFTP_CUSTOM_URL_DESC": "自定义域名-可选",
"MANAGE_CONSTANT_SFTP_CUSTOM_URL_PLACEHOLDER": "例如https://example.com",
"MANAGE_CONSTANT_SFTP_CUSTOM_URL_TOOLTIP": "如果您的对应路径支持域名访问,请填写",
"MANAGE_CONSTANT_SFTP_WEB_PATH": "网址拼接用起始路径",
"MANAGE_CONSTANT_SFTP_WEB_PATH_PLACEHOLDER": "例如test/ttc",
"MANAGE_CONSTANT_SFTP_WEB_PATH_TOOLTIP": "用于拼接网址",
"MANAGE_CONSTANT_SFTP_FILE_PERMISSIONS_DESC": "文件权限",
"MANAGE_CONSTANT_SFTP_FILE_PERMISSIONS_PLACEHOLDER": "例如0644",
"MANAGE_CONSTANT_SFTP_DIR_PERMISSIONS_DESC": "目录权限",
"MANAGE_CONSTANT_SFTP_DIR_PERMISSIONS_PLACEHOLDER": "例如0755",
"MANAGE_CONSTANT_SFTP_EXPLAIN": "SFTP配置",
"MANAGE_CONSTANT_SFTP_REFER_TEXT": "配置教程请参考: ",
"MANAGE_CONSTANT_SFTP_BASE_DIR_RULE_MESSAGE": "起始目录不能为空",
"MANAGE_CONSTANT_SFTP_BUCKET_DESC": "特殊配置",
"MANAGE_CONSTANT_SFTP_BUCKET_PLACEHOLDER": "例如bucket1",
"MANAGE_CONSTANT_SFTP_BUCKET_TOOLTIP": "此处不可修改,仅为软件兼容性考虑",
"MANAGE_LOGIN_PAGE_PANE_NAME": "已保存配置",
"MANAGE_LOGIN_PAGE_PANE_KEY_NAME": "配置项",
"MANAGE_LOGIN_PAGE_PANE_KEY_VALUE": "值",
"MANAGE_LOGIN_PAGE_PANE_ENTER": "进入",
"MANAGE_LOGIN_PAGE_PANE_DELETE": "删除",
"MANAGE_LOGIN_PAGE_PANE_SELECT_PLACEHOLDER": "请选择",
"MANAGE_LOGIN_PAGE_PANE_IMPORT": "导入",
"MANAGE_LOGIN_PAGE_PANE_SAVE": "保存",
"MANAGE_LOGIN_PAGE_PANE_RESET": "重置",
"MANAGE_LOGIN_PAGE_PANE_TABLE_TITLE": "已有配置,单击可复制对应单元格数据",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_MESSAGE_A": "请填写",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_ALIAS_MESSAGE": "别名只能包含中文、英文、数字、下划线和中划线",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_ITEMS_PER_PAGE_MESSAGE": "每页数量必须在20-1000之间",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_CUSTOM_URL_MESSAGE": "自定义域名请以http://或https://开头",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_NAME": "通知",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE": "已覆盖别名",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_B": "已保存别名",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_C": "已删除别名",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_D": "删除别名为",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_E": "的配置失败",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_COPY_SUCCESS": "已复制",
"MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_TITLE": "确定要删除配置么?",
"MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_TIP": "提示",
"MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_CONFIRM": "确定",
"MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_CANCEL": "取消",
"MANAGE_BUCKET_PAGE_LOADING_TEXT": "加载文件中...",
"MANAGE_BUCKET_PAGE_CUSTOM_URL_SELECT_PLACEHOLDER": "请选择自定义域名",
"MANAGE_BUCKET_PAGE_CUSTOM_URL_INPUT_PLACEHOLDER": "请输入自定义域名",
"MANAGE_BUCKET_PAGE_UPLOAD_FILES_TOOLTIP": "文件上传(支持多选)",
"MANAGE_BUCKET_PAGE_UPLOAD_FROM_URL_TOOLTIP": "从URL上传",
"MANAGE_BUCKET_PAGE_CREATE_FOLDER_TOOLTIP": "创建文件夹",
"MANAGE_BUCKET_PAGE_DOWNLOAD_TOOLTIP": "下载页面",
"MANAGE_BUCKET_PAGE_BATCH_RENAME_TOOLTIP": "批量重命名",
"MANAGE_BUCKET_PAGE_BATCH_COPY_URL_TOOLTIP": "批量复制URL",
"MANAGE_BUCKET_PAGE_COPY_FILE_INFO_TOOLTIP": "复制文件信息",
"MANAGE_BUCKET_PAGE_FORCE_REFRESH_TOOLTIP": "强制刷新文件列表",
"MANAGE_BUCKET_PAGE_SEARCH_PLACEHOLDER": "搜索文件",
"MANAGE_BUCKET_PAGE_ROOT_FOLDER": "根目录",
"MANAGE_BUCKET_PAGE_FILE_NUMBER": "文件数: ",
"MANAGE_BUCKET_PAGE_FILE_SIZE": "总大小: ",
"MANAGE_BUCKET_PAGE_SELECT_ALL": "全选",
"MANAGE_BUCKET_PAGE_SELECT_NONE": "取消",
"MANAGE_BUCKET_PAGE_SELECT_INVERT": "反选",
"MANAGE_BUCKET_DOWNLOAD_BTN": "下载",
"MANAGE_BUCKET_DELETE_BTN": "删除",
"MANAGE_BUCKET_SORT_TITLE": "排序",
"MANAGE_BUCKET_SORT_NAME": "文件名",
"MANAGE_BUCKET_SORT_SIZE": "大小",
"MANAGE_BUCKET_SORT_EXT": "类型",
"MANAGE_BUCKET_SORT_TIME": "时间",
"MANAGE_BUCKET_SORT_CHECK": "选中状态",
"MANAGE_BUCKET_SORT_INIT": "初始化",
"MANAGE_BUCKET_URL_UPLOAD_DIALOG_TITLE": "请输入URL支持多个URL以换行分隔",
"MANAGE_BUCKET_URL_UPLOAD_DIALOG_CONFIRM": "确定",
"MANAGE_BUCKET_URL_UPLOAD_DIALOG_CANCEL": "取消",
"MANAGE_BUCKET_URL_FORMAT_MARKDOWN": "Markdown",
"MANAGE_BUCKET_URL_FORMAT_MARKDOWN_WITH_LINK": "Markdown-link",
"MANAGE_BUCKET_URL_FORMAT_URL": "Url",
"MANAGE_BUCKET_URL_FORMAT_HTML": "Html",
"MANAGE_BUCKET_URL_FORMAT_BBCODE": "BBCode",
"MANAGE_BUCKET_URL_FORMAT_CUSTOM": "自定义",
"MANAGE_BUCKET_URL_FORMAT_PRESIGN": "预签名链接",
"MANAGE_BUCKET_FILE_INFO_TITLE": "文件信息",
"MANAGE_BUCKET_FILE_INFO_COPY_TIPS": "复制JSON格式信息",
"MANAGE_BUCKET_FILE_LIST_LOADING": "加载中,点击取消",
"MANAGE_BUCKET_FILE_LIST_DOWNLOAD_PRE": "准备下载中,点击取消",
"MANAGE_BUCKET_KEEP_FOLDER_STRUCTURE": "保持目录结构",
"MANAGE_BUCKET_NOT_KEEP_FOLDER_STRUCTURE": "不保持目录结构",
"MANAGE_BUCKET_UPLOAD_AREA_TITLE": "拖放上传支持递归上传文件夹",
"MANAGE_BUCKET_UPLOAD_AREA_TEXT": "或:点击选择文件(不支持文件夹)",
"MANAGE_BUCKET_UPLOAD_AREA_BTN_LOADING": "读取文件中",
"MANAGE_BUCKET_UPLOAD_AREA_BTN": "上传",
"MANAGE_BUCKET_UPLOAD_AREA_CLEAR": "清空",
"MANAGE_BUCKET_UPLOAD_AREA_STATUS_UPLOADING": "上传中",
"MANAGE_BUCKET_UPLOAD_AREA_COPY_TASK": "复制上传任务信息",
"MANAGE_BUCKET_UPLOAD_AREA_CLEAR_UPLOADED_TASK": "清空已完成任务",
"MANAGE_BUCKET_UPLOAD_AREA_CLEAR_ALL_TASK": "清空所有任务",
"MANAGE_BUCKET_UPLOAD_AREA_SUCCESS": "成功",
"MANAGE_BUCKET_UPLOAD_AREA_FAILED": "失败",
"MANAGE_BUCKET_DOWNLOAD_PAGE_TITLE": "下载页面",
"MANAGE_BUCKET_DOWNLOADING": "下载中",
"MANAGE_BUCKET_DOWNLOAD_COPY_TASK": "复制下载任务信息",
"MANAGE_BUCKET_DOWNLOAD_CLEAR_DOWNLOADED_TASK": "清空已完成任务",
"MANAGE_BUCKET_DOWNLOAD_CLEAR_ALL_TASK": "清空所有任务",
"MANAGE_BUCKET_DOWNLOAD_OPEN_FOLDER": "打开下载目录",
"MANAGE_BUCKET_DOWNLOAD_SUCCESS": "成功",
"MANAGE_BUCKET_DOWNLOAD_FAILED": "失败",
"MANAGE_BUCKET_MARKDOWN_PREVIEW": "预览",
"MANAGE_BUCKET_PLAY": "播放",
"MANAGE_BUCKET_RENAME_FILE": "文件重命名",
"MANAGE_BUCKET_RENAME_FILE_INPUT_A": "进行替换时匹配的字符串或js正则表达式",
"MANAGE_BUCKET_RENAME_FILE_INPUT_A_TIPS": "正则表达式请直接输入,不需要加上/",
"MANAGE_BUCKET_RENAME_FILE_INPUT_A_PLACEHOLDER": "例如:^\\d{4}-\\d{2}-\\d{2} ",
"MANAGE_BUCKET_RENAME_FILE_INPUT_B": "需要替换的字符串,可使用自定义重命名规则中的占位符",
"MANAGE_BUCKET_RENAME_FILE_TABLE_IID": "自增数字",
"MANAGE_BUCKET_RENAME_FILE_EXT": "是否匹配扩展名进行替换",
"MANAGE_BUCKET_RENAME_FILE_EXT_TIPS": "如果希望修改扩展名,请勾选此项",
"MANAGE_BUCKET_RENAME_FILE_EXT_YES": "是",
"MANAGE_BUCKET_RENAME_FILE_EXT_NO": "否",
"MANAGE_BUCKET_RENAME_FILE_CANCEL": "取消",
"MANAGE_BUCKET_RENAME_FILE_CONFIRM": "确定",
"MANAGE_BUCKET_COPY_SUCCESS": "复制成功",
"MANAGE_BUCKET_START_LOADING_MESSAGE": "开始获取文件",
"MANAGE_BUCKET_END_LOADING_MESSAGE_FAIL": "获取文件内容失败",
"MANAGE_BUCKET_LAST_PAGE_TITLE": "提示",
"MANAGE_BUCKET_LAST_PAGE_MSG": "已经是最后一页了",
"MANAGE_BUCKET_GET_LIST_FAIL_TITLE": "提示",
"MANAGE_BUCKET_GET_LIST_FAIL_MSG": "获取文件列表失败",
"MANAGE_BUCKET_GET_LIST_FAIL_MSG2": "正在后台获取文件列表,请不要切换页面",
"MANAGE_BUCKET_GET_LIST_FAIL_MSG3": "正在加载文件列表,请稍后再试",
"MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_TITLE": "确定要下载该文件夹吗?",
"MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_TIP": "提示",
"MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_CONFIRM": "确定",
"MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_CANCEL": "取消",
"MANAGE_BUCKET_DOWNLOAD_FOLDER_SUCCESS": "获取下载列表成功",
"MANAGE_BUCKET_DOWNLOAD_FOLDER_FAIL": "获取失败",
"MANAGE_BUCKET_DOWNLOAD_FOLDER_CANCEL": "已取消",
"MANAGE_BUCKET_CREATE_FOLDER_BOX_TITLE": "请输入文件夹名称",
"MANAGE_BUCKET_CREATE_FOLDER_BOX_TIP": "新建文件夹",
"MANAGE_BUCKET_CREATE_FOLDER_BOX_CONFIRM": "确定",
"MANAGE_BUCKET_CREATE_FOLDER_BOX_CANCEL": "取消",
"MANAGE_BUCKET_CREATE_FOLDER_ERROR_MSG": "文件夹名称只能包含中文、英文、数字、下划线和斜杠",
"MANAGE_BUCKET_CREATE_FOLDER_SUCCESS": "创建成功, 请刷新",
"MANAGE_BUCKET_CREATE_FOLDER_FAIL": "创建失败",
"MANAGE_BUCKET_UPLOAD_URL_ERROR_MSQ": "请输入有效的URL",
"MANAGE_BUCKET_UPLOAD_URL_NOT_TITLE": "提示",
"MANAGE_BUCKET_UPLOAD_URL_NOT_MSG": "开始后台下载,成功后自动上传",
"MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG": "请输入匹配字符串",
"MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG2": "没有匹配到文件",
"MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG3": "没有需要重命名的文件",
"MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_A": "检测到有",
"MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_B": "个文件重复,是否继续",
"MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_C": "提示",
"MANAGE_BUCKET_BATCH_RENAME_REPEATED_CONFIRM": "确定",
"MANAGE_BUCKET_BATCH_RENAME_REPEATED_CANCEL": "取消",
"MANAGE_BUCKET_BATCH_RENAME_RESULT_MSG_A": "重命名成功",
"MANAGE_BUCKET_BATCH_RENAME_RESULT_MSG_B": "失败",
"MANAGE_BUCKET_BATCH_RENAME_CANCEL": "已取消",
"MANAGE_BUCKET_BATCH_COPY_INFO_ERROR_MSG": "请先选择文件",
"MANAGE_BUCKET_BATCH_COPY_INFO_MSG_A": "已复制",
"MANAGE_BUCKET_BATCH_COPY_INFO_MSG_B": "个文件信息",
"MANAGE_BUCKET_BATCH_COPY_URL_ERROR_MSG": "请先选择文件",
"MANAGE_BUCKET_BATCH_COPY_URL_MSG_A": "已复制",
"MANAGE_BUCKET_BATCH_COPY_URL_MSG_B": "个链接",
"MANAGE_BUCKET_CANCEL_LOADING_TITLE": "是否停止获取文件列表?",
"MANAGE_BUCKET_CANCEL_LOADING_MSG": "提示",
"MANAGE_BUCKET_CANCEL_LOADING_CONFIRM": "确定",
"MANAGE_BUCKET_CANCEL_LOADING_CANCEL": "取消",
"MANAGE_BUCKET_CANCEL_LOADING_SUCCESS": "文件列表获取已停止",
"MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_TITLE": "是否停止下载文件获取?",
"MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_MSG": "提示",
"MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_CONFIRM": "确定",
"MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_CANCEL": "取消",
"MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_SUCCESS": "下载文件获取已停止",
"MANAGE_BUCKET_GET_FILE_BS_NOT_TITLE": "提示",
"MANAGE_BUCKET_GET_FILE_BS_NOT_MSG": "获取文件列表成功",
"MANAGE_BUCKET_GET_FILE_BS_NOT_MSG2": "部分文件获取失败",
"MANAGE_BUCKET_BATCH_DELETE_CONFIRM_TITLE_A": "将永久删除",
"MANAGE_BUCKET_BATCH_DELETE_CONFIRM_TITLE_B": "个文件,是否继续?",
"MANAGE_BUCKET_BATCH_DELETE_CONFIRM_MSG": "提示",
"MANAGE_BUCKET_BATCH_DELETE_CONFIRM_CONFIRM": "确定",
"MANAGE_BUCKET_BATCH_DELETE_CONFIRM_CANCEL": "取消",
"MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_TITLE": "提示",
"MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_MSG": "删除失败",
"MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_MSG2": "删除成功",
"MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_MSG3": "失败",
"MANAGE_BUCKET_BATCH_DELETE_CANCEL": "已取消删除",
"MANAGE_BUCKET_DELETE_CONFIRM_TITLE": "将永久删除",
"MANAGE_BUCKET_DELETE_CONFIRM_TITLE_FOLDER": "文件夹",
"MANAGE_BUCKET_DELETE_CONFIRM_TITLE_FOLDER_A": "和该目录下的所有文件",
"MANAGE_BUCKET_DELETE_CONFIRM_TITLE_FILE": "文件",
"MANAGE_BUCKET_DELETE_CONFIRM_TITLE_C": "是否继续",
"MANAGE_BUCKET_DELETE_CONFIRM_MSG": "提示",
"MANAGE_BUCKET_DELETE_CONFIRM_CONFIRM": "确定",
"MANAGE_BUCKET_DELETE_CONFIRM_CANCEL": "取消",
"MANAGE_BUCKET_DELETE_ERROR_MSG_TITLE": "提示",
"MANAGE_BUCKET_DELETE_ERROR_MSG_MSG": "删除文件夹可能需要一段时间,请耐心等待",
"MANAGE_BUCKET_DELETE_SUCCESS": "删除成功",
"MANAGE_BUCKET_DELETE_FAIL": "删除失败",
"MANAGE_BUCKET_DELETE_CANCEL": "已取消删除",
"MANAGE_BUCKET_RENAME_INFO_MSG": "新文件名与原文件名相同,无需重命名",
"MANAGE_BUCKET_RENAME_SUCCESS": "重命名成功",
"MANAGE_BUCKET_RENAME_ERROR_MSG": "重命名失败",
"MANAGE_BUCKET_DOWNLOAD_COLUMN_FILENAME": "文件名",
"MANAGE_BUCKET_DOWNLOAD_COLUMN_FINISHTIME": "完成时间",
"MANAGE_BUCKET_DOWNLOAD_COLUMN_STATUS": "状态",
"MANAGE_BUCKET_DOWNLOAD_COLUMN_STATUS_SUCCESS": "成功",
"MANAGE_BUCKET_DOWNLOAD_COLUMN_STATUS_FAIL": "失败",
"MANAGE_BUCKET_UPLOAD_COLUMN_FILENAME": "文件名",
"MANAGE_BUCKET_UPLOAD_COLUMN_TARGETFILEPATH": "上传路径",
"MANAGE_BUCKET_UPLOAD_COLUMN_FINISHTIME": "完成时间",
"MANAGE_BUCKET_UPLOAD_COLUMN_STATUS": "状态",
"MANAGE_BUCKET_UPLOAD_COLUMN_STATUS_SUCCESS": "成功",
"MANAGE_BUCKET_UPLOAD_COLUMN_STATUS_FAIL": "失败",
"MANAGE_BUCKET_DOWNLOADING_COLUMN_FILENAME": "文件名",
"MANAGE_BUCKET_DOWNLOADING_COLUMN_PROGRESS": "进度",
"MANAGE_BUCKET_UPLOADING_COLUMN_FILENAME": "文件名",
"MANAGE_BUCKET_UPLOADING_COLUMN_PROGRESS": "进度",
"MANAGE_BUCKET_UPLOADED_COLUMN_FILENAME": "文件名",
"MANAGE_BUCKET_UPLOADED_COLUMN_FILESIZE": "大小",
"MANAGE_BUCKET_UPLOADED_COLUMN_FILENUM": "文件数",
"MANAGE_BUCKET_FILE_COLUMN_FILENAME": "文件名",
"MANAGE_BUCKET_FILE_COLUMN_COPY_URL": "复制链接",
"MANAGE_BUCKET_FILE_COLUMN_INFO": "文件信息",
"MANAGE_BUCKET_FILE_COLUMN_FILESIZE": "大小",
"MANAGE_BUCKET_FILE_COLUMN_TIME": "修改时间",
"MANAGE_NEW_BUCKET_TCYUN_NAME": "腾讯云",
"MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_DESC": "Bucket名",
"MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_PLACEHOLDER": "请输入Bucket名",
"MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_A": "Bucket名不能为空",
"MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_B": "Bucket名称长度不能超过23个字符",
"MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_C": "Bucket名称只能包含小写字母、数字和中划线且不能以中划线开头和结尾",
"MANAGE_NEW_BUCKET_TCYUN_REGION": "区域",
"MANAGE_NEW_BUCKET_TCYUN_ACL_DESC": "访问权限",
"MANAGE_NEW_BUCKET_TCYUN_ACL_PUBLIC_RW": "公共读写",
"MANAGE_NEW_BUCKET_TCYUN_ACL_PUBLIC_R": "公共读",
"MANAGE_NEW_BUCKET_TCYUN_ACL_PRIVATE": "私有",
"MANAGE_NEW_BUCKET_ALIYUN_NAME": "阿里云",
"MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_DESC": "Bucket名",
"MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_PLACEHOLDER": "请输入Bucket名",
"MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_A": "Bucket名不能为空",
"MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_B": "Bucket名称长度不能超过63个字符",
"MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_C": "Bucket名称只能包含小写字母、数字和中划线且不能以中划线开头和结尾",
"MANAGE_NEW_BUCKET_ALIYUN_REGION": "区域",
"MANAGE_NEW_BUCKET_ALIYUN_ACL_DESC": "访问权限",
"MANAGE_NEW_BUCKET_ALIYUN_ACL_PUBLIC_RW": "公共读写",
"MANAGE_NEW_BUCKET_ALIYUN_ACL_PUBLIC_R": "公共读",
"MANAGE_NEW_BUCKET_ALIYUN_ACL_PRIVATE": "私有",
"MANAGE_NEW_BUCKET_QINIU_NAME": "七牛云",
"MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_DESC": "Bucket名",
"MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_PLACEHOLDER": "请输入Bucket名",
"MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_A": "Bucket名不能为空",
"MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_B": "Bucket名称长度不能超过63个字符",
"MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_C": "Bucket名称只能包含小写字母、数字和中划线且不能以中划线开头和结尾",
"MANAGE_NEW_BUCKET_QINIU_REGION": "区域",
"MANAGE_NEW_BUCKET_QINIU_ACL_DESC": "公开访问",
"MANAGE_NEW_BUCKET_S3PLIST_NAME": "S3兼容云",
"MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_DESC": "Bucket名",
"MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_PLACEHOLDER": "请输入Bucket名",
"MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_RULE_MSG_A": "Bucket名不能为空",
"MANAGE_NEW_BUCKET_S3PLIST_REGION": "区域",
"MANAGE_NEW_BUCKET_S3PLIST_ACL_DESC": "访问权限",
"MANAGE_NEW_BUCKET_S3PLIST_ACL_PUBLIC_RW": "公共读写",
"MANAGE_NEW_BUCKET_S3PLIST_ACL_PUBLIC_R": "公共读",
"MANAGE_NEW_BUCKET_S3PLIST_ACL_PRIVATE": "私有",
"MANAGE_NEW_BUCKET_S3PLIST_ACL_AUTHENTICATED_READ": "授权读",
"PLUGIN_UPDATE_SUCCEED": "插件更新成功",
"TIPS_NOTICE": "注意"
}

View File

@@ -0,0 +1,876 @@
{
"OPEN_MAIN_WINDOW": "打開主視窗",
"OPERATION_SUCCEED": "操作成功",
"QUICK_UPLOAD": "快速上傳",
"PICBED_QRCODE": "圖床配置 QRCODE",
"CONFIG_THING": "設定${c}",
"TOOLBOX_TITLE": "排查 PicList 執行時問題",
"TOOLBOX_SUB_TITLE": "立即掃描以下項目,修復使用問題",
"TOOLBOX_CHECK_CONFIG_FILE_BROKEN": "檢查配置文件是否損壞",
"TOOLBOX_CHECK_GALLERY_FILE_BROKEN": "檢查相冊文件是否損壞",
"TOOLBOX_CHECK_PROBLEM_WITH_CLIPBOARD_PIC_UPLOAD": "檢查剪貼板圖片上傳是否存在問題",
"TOOLBOX_CHECK_PROBLEM_WITH_PROXY": "檢查代理設置是否正常",
"TOOLBOX_FIX_DONE_NEED_RELOAD": "修復完成,需要重啓生效,是否重啓",
"TOOLBOX_CANT_AUTO_FIX": "無法自動修復,請自行修復以下問題",
"TOOLBOX_START_SCAN": "開始掃描",
"TOOLBOX_RE_SCAN": "重新掃描",
"TOOLBOX_START_FIX": "開始修復",
"TOOLBOX_SUCCESS_TIPS": "恭喜你,沒有檢查出問題",
"MANUAL_PAGE_OPEN_TIP": "請選擇打開方式",
"MANUAL_PAGE_OPEN_TIP_TITLE": "Tips",
"MANUAL_PAGE_OPEN_BY_BROWSER": "瀏覽器",
"MANUAL_PAGE_OPEN_BY_BUILD_IN": "內置窗口",
"MANUAL_PAGE_OPEN_SETTING_TIP": "選擇打開手冊方式",
"UPLOAD_AREA": "上傳",
"UPLOAD_VIEW_HINT": "點擊打開圖床設定",
"MANAGE_PAGE": "管理",
"GALLERY": "相簿",
"REFRESH": "刷新",
"MANUAL": "手冊",
"PICBEDS_SETTINGS": "圖床",
"PICLIST_SETTINGS": "設定",
"PLUGIN_SETTINGS": "插件",
"CHOOSE_PICBED": "選擇圖床",
"COPY_PICBED_CONFIG": "複製圖床設定",
"COPY_PICBED_CONFIG_SUCCEED": "複製圖床設定成功",
"INPUT": "輸入框",
"CANCEL": "取消",
"CONFIRM": "確定",
"RESET_PICBED_CONFIG": "重置",
"CHOOSE_SHOWED_PICBED": "請選擇顯示的圖床",
"CHOOSE_PASTE_FORMAT": "請選擇貼上的格式",
"COPY": "複製",
"DELETE": "刪除",
"SELECT_ALL": "全選",
"CHANGE_IMAGE_URL": "修改圖片URL",
"CHANGE_IMAGE_URL_SUCCEED": "修改圖片URL成功",
"COPY_LINK_SUCCEED": "複製連結成功",
"BATCH_COPY_LINK_SUCCEED": "批量複製連結成功",
"FILE_RENAME": "檔案改名",
"OPEN_FILE_PATH": "打開檔案路徑",
"GALLERY_SYNC_DELETE": "刪除雲端",
"GALLERY_SYNC_DELETE_NOTICE_TITLE": "通知",
"GALLERY_SYNC_DELETE_NOTICE_SUCCEED": "雲端刪除成功",
"GALLERY_SYNC_DELETE_NOTICE_FAILED": "雲端刪除失敗",
"GALLERY_CHANGE_URL": "修改",
"GALLERY_SEARCH_FILENAME": "搜尋文件名",
"GALLERY_SEARCH_URL": "搜尋URL",
"GALLERY_MATCHED": " 匹配到: ",
"UPLOAD_PAGE_COPY_UPLOAD_API": "複製上傳API",
"UPLOAD_PAGE_IMAGE_PROCESS_NAME": "圖片處理",
"UPLOAD_PAGE_IMAGE_PROCESS_DIALOG_TITLE": "圖片處理設置",
"UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST": "跳過處理的文件擴展名列表",
"UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST_TIPS": "請填寫需要跳過處理的文件擴展名列表, 以英文逗號分隔, 如: jpg,png,gif",
"UPLOAD_PAGE_IMAGE_PROCESS_ISADDWM": "是否添加水印",
"UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE": "水印類型",
"UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE_TEXT": "文字",
"UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE_IMAGE": "圖片",
"UPLOAD_PAGE_IMAGE_PROCESS_ISFULLSCREEN_WM": "是否全屏水印",
"UPLOAD_PAGE_IMAGE_PROCESS_WMDEGREE": "水印角度",
"UPLOAD_PAGE_IMAGE_PROCESS_WMTEXT": "水印文字",
"UPLOAD_PAGE_IMAGE_PROCESS_WMTEXT_FONT_PATH": "水印字體路徑(第一次需下載字體文件)",
"UPLOAD_PAGE_IMAGE_PROCESS_WMRATIO": "水印占原圖比例",
"UPLOAD_PAGE_IMAGE_PROCESS_WMCOLOR": "水印顏色,請從取色器中選擇",
"UPLOAD_PAGE_IMAGE_PROCESS_WMPATH": "水印圖片路徑(留空使用預設圖片)",
"UPLOAD_PAGE_IMAGE_PROCESS_WMPOSITION": "水印位置",
"UPLOAD_PAGE_IMAGE_PROCESS_ISREMOVEEXIF": "是否移除EXIF信息",
"UPLOAD_PAGE_IMAGE_PROCESS_QUALITY": "壓縮質量(1-100)",
"UPLOAD_PAGE_IMAGE_PROCESS_ISCONVERT": "是否轉換格式",
"UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT": "轉換目的格式",
"UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT_SPECIFIC": "指定格式, 请输入JSON格式配置如{\"jpg\":\"png\"}",
"UPLOAD_PAGE_IMAGE_PROCESS_ISFLIP": "是否進行垂直翻轉",
"UPLOAD_PAGE_IMAGE_PROCESS_ISFLOP": "是否進行水平翻轉",
"UPLOAD_PAGE_IMAGE_PROCESS_ISRESIZE": "是否按固定尺寸調整圖片",
"UPLOAD_PAGE_IMAGE_PROCESS_RESIZEWIDTH": "調整尺寸寬度(設為0則按高度等比縮放)",
"UPLOAD_PAGE_IMAGE_PROCESS_RESIZEHEIGHT": "調整尺寸高度(設為0則按寬度等比縮放)",
"UPLOAD_PAGE_IMAGE_PROCESS_SKIPRESIZEOfSMALLIMG_HEIGHT": "當圖片高度小於設定高度時跳過縮放",
"UPLOAD_PAGE_IMAGE_PROCESS_SKIPRESIZEOfSMALLIMG_WIDTH": "當圖片寬度小於設定寬度時跳過縮放",
"UPLOAD_PAGE_IMAGE_PROCESS_ISRESIZEBYPERCENT": "是否按比例調整尺寸,優先級更高",
"UPLOAD_PAGE_IMAGE_PROCESS_RESIZEPERCENT": "調整尺寸比例輸入50表示50%",
"UPLOAD_PAGE_IMAGE_PROCESS_ISROTATE": "是否旋轉",
"UPLOAD_PAGE_IMAGE_PROCESS_ROTATEDEGREE": "旋轉角度",
"UPLOAD_PAGE_IMAGE_PROCESS_CONFIRM": "儲存",
"UPLOAD_PAGE_IMAGE_PROCESS_CANCEL": "取消",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP": "上",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM": "下",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_LEFT": "左",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_RIGHT": "右",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP_LEFT": "左上",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP_RIGHT": "右上",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM_LEFT": "左下",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM_RIGHT": "右下",
"UPLOAD_PAGE_IMAGE_PROCESS_POSITION_CENTER": "中",
"UPLOAD_SHORT_URL": "短連結",
"UPLOAD_NORMAL_URL": "长連結",
"SETTINGS": "設定",
"SETTINGS_OPEN_CONFIG_FILE": "打開設定檔案",
"SETTINGS_MIGRATE_FROM_PICGO": "從PicGo導入設定",
"SETTINGS_MIGRATE_FROM_PICGO_TITLE": "通知",
"SETTINGS_MIGRATE_FROM_PICGO_CONTENT": "即將導入PicGo的設定文件和相冊, 這將會覆蓋當前的設定, 是否繼續?",
"SETTINGS_MIGRATE_FROM_PICGO_SUCCESS": "導入成功, 請重啟應用",
"SETTINGS_MIGRATE_FROM_PICGO_FAILED": "導入失敗",
"SETTINGS_START_MODE": "啟動模式",
"SETTINGS_START_MODE_MINI": "mini視窗",
"SETTINGS_START_MODE_MAIN": "主視窗",
"SETTINGS_START_MODE_QUIET": "靜默啟動",
"SETTINGS_START_MODE_NO_TRAY": "隐藏托盘",
"SETTINGS_CLICK_TO_OPEN": "點擊打開",
"SETTINGS_SET_LOG_FILE": "設定記錄檔案",
"SETTINGS_CLICK_TO_SET": "點擊設定",
"SETTINGS_CLICK_TO_CHECK": "點擊檢查",
"SETTINGS_SET_SHORTCUT": "設定快捷鍵",
"SETTINGS_CUSTOM_LINK_FORMAT": "自訂連結格式",
"SETTINGS_SET_PROXY_AND_MIRROR": "設定PROXY和鏡像地址",
"SETTINGS_SET_SERVER": "設定Server",
"SETTINGS_CHECK_UPDATE": "檢查更新",
"SETTINGS_OPEN_UPDATE_HELPER": "打開更新助手",
"SETTINGS_OPEN": "開",
"SETTINGS_CLOSE": "關",
"SETTINGS_CLOSE_MINI_WINDOW_SYNC": "開主窗口同步關閉mini窗口",
"SETTINGS_CLOSE_MAIN_WINDOW_SYNC": "關mini窗口同步關閉主窗口",
"SETTINGS_LAUNCH_ON_BOOT": "開機時啟動",
"SETTINGS_RENAME_BEFORE_UPLOAD": "手動重新命名",
"SETTINGS_TIMESTAMP_RENAME": "以時間戳命名",
"SETTINGS_ADVANCED_RENAME": "高級命名",
"SETTINGS_ADVANCED_RENAME_ENABLE": "啟用高級命名",
"SETTINGS_ADVANCED_RENAME_FORMAT": "高級命名格式",
"SETTINGS_ENABLE_SECOND_PICBED": "啟用第二圖床同步上傳",
"SETTINGS_SET_SECOND_PICBED": "設定第二圖床",
"SETTINGS_OPEN_UPLOAD_TIPS": "開啟上傳提示",
"SETTINGS_OPEN_UPLOAD_RESULT_TIPS": "開啟上傳結果提示",
"SETTINGS_MINI_WINDOW_ON_TOP": "Mini視窗置頂",
"SETTINGS_AUTO_COPY_URL_AFTER_UPLOAD": "上傳後自動複製URL",
"SETTINGS_TIPS_PLACEHOLDER_URL": "用佔位符 $url 來表示URL的位置",
"SETTINGS_TIPS_PLACEHOLDER_FILENAME": "用佔位符 $fileName 來表示檔案名稱的位置",
"SETTINGS_TIPS_PLACEHOLDER_EXTNAME": "用佔位符 $extName 來表示檔案格式的位置",
"SETTINGS_TIPS_SUCH_AS": "如",
"SETTINGS_UPLOAD_PROXY": "上傳PROXY",
"SETTINGS_PLUGIN_INSTALL_PROXY": "插件安裝PROXY",
"SETTINGS_PLUGIN_INSTALL_MIRROR": "插件安裝鏡像",
"SETTINGS_CURRENT_VERSION": "當前版本",
"SETTINGS_NEWEST_VERSION": "最新版本",
"SETTINGS_GETING": "正在取得中",
"SETTINGS_TIPS_HAS_NEW_VERSION": "PicList更新啦請點擊確定重启應用",
"SETTINGS_LOG_FILE_PATH": "記錄檔案路徑",
"SETTINGS_CONFIG_FILE_PATH": "設定檔案路徑",
"SETTINGS_LOG_FILE": "記錄檔案",
"SETTINGS_GUI_LOG_FILE": "GUI記錄檔案",
"SETTINGS_MANAGE_LOG_FILE": "管理記錄檔案",
"SETTINGS_LOG_LEVEL": "記錄等级",
"SETTINGS_LOG_FILE_SIZE": "記錄檔案大小",
"SETTINGS_SET_PICGO_SERVER": "設定PicGo-Server",
"SETTINGS_TIPS_SERVER_NOTICE": "如果你不知道Server的作用請閱讀文檔或者不用修改設定。",
"SETTINGS_ENABLE_SERVER": "是否開啟Server",
"SETTINGS_SET_SERVER_HOST": "設定監聽地址",
"SETTINGS_SET_SERVER_PORT": "設定監聽端口",
"SETTINGS_SET_SERVER_KEY": "設定鑒權密鑰",
"SETTINGS_SET_WEB_SERVER": "設定Web服務",
"SETTINGS_TIPS_WEB_SERVER_NOTICE": "如果你不知道Web服務的作用請閱讀文檔或者不用修改設定。",
"SETTINGS_SET_ENABLE_WEB_SERVER": "是否開啟Web服務",
"SETTINGS_SET_WEB_SERVER_HOST": "設定Web服務地",
"SETTINGS_SET_WEB_SERVER_PORT": "設定Web服務端口",
"SETTINGS_SET_WEB_SERVER_PATH": "設定Web服務路徑",
"SETTINGS_TIP_PLACEHOLDER_WEB_HOST": "推薦預設地址:127.0.0.1",
"SETTINGS_TIP_PLACEHOLDER_WEB_PORT": "推薦預設端口:37777",
"SETTINGS_TIP_PLACEHOLDER_HOST": "推薦預設地址:127.0.0.1",
"SETTINGS_TIP_PLACEHOLDER_PORT": "推薦預設端口:36677",
"SETTINGS_TIP_PLACEHOLDER_KEY": "用於接口鑒權, 通過url參數添加'?key=xxx'",
"SETTINGS_SET_SERVER_AES_KEY": "設定AES加密密鑰",
"SETTINGS_LOG_LEVEL_ALL": "全部-All",
"SETTINGS_LOG_LEVEL_SUCCESS": "成功-Success",
"SETTINGS_LOG_LEVEL_ERROR": "錯誤-Error",
"SETTINGS_LOG_LEVEL_INFO": "普通-Info",
"SETTINGS_LOG_LEVEL_WARN": "提醒-Warn",
"SETTINGS_LOG_LEVEL_NONE": "不記錄-None",
"SETTINGS_RESULT": "設定結果",
"SETTINGS_DEFAULT_PICBED": "設定預設圖床",
"SETTINGS_SET_DEFAULT_PICBED": "設為預設圖床",
"SETTINGS_NOT_CONFIG_OPTIONS": "暫無設定選項",
"SETTINGS_USE_BUILTIN_CLIPBOARD_UPLOAD": "使用內建剪貼簿上傳",
"SETTINGS_CHOOSE_LANGUAGE": "選擇語言",
"BUILTIN_CLIPBOARD_TIPS": "使用內建剪貼簿函數而不是調用腳本取得剪貼簿內的照片",
"UPLOADER_CONFIG_NAME": "圖床配置名",
"UPLOADER_CONFIG_PLACEHOLDER": "請輸入配置名稱",
"SELECTED_SETTING_HINT": "已選中",
"SETTINGS_MAIN_WINDOW_SIZE": "默認主視窗大小",
"SETTINGS_MAIN_WINDOW_SIZE_WIDTH": "默認主視窗寬度",
"SETTINGS_MAIN_WINDOW_WIDTH_HINT": "默認: 1200",
"SETTINGS_MAIN_WINDOW_SIZE_HEIGHT": "默認主視窗高度",
"SETTINGS_MAIN_WINDOW_HEIGHT_HINT": "默認: 800",
"SETTINGS_RAW_PICGO_SIZE": "原PicGo大小",
"SETTINGS_CUSTOM_MINI_ICON_PATH": "自訂Mini視窗圖示路徑",
"SETTINGS_CUSTOM_MINI_ICON": "自訂Mini視窗圖示",
"SETTINGS_COMPRESS_AND_WATERMARK": "設置圖片浮水印和壓縮-格式轉換等參數",
"SETTINGS_SYNC_DELETE_CLOUD": "從相簿中刪除並同步從雲端刪除",
"SETTINGS_ISHIDEDOCK": "是否隱藏dock圖示",
"SETTINGS_ISHIDEDOCK_TIPS": "不支持同時隱藏dock和托盘",
"SETTINGS_ENCODE_OUTPUT_URL": "輸出(複製) URL 時進行轉義",
"SETTINGS_WATCH_CLIPBOARD": "軟體啟動時自動監聽剪貼簿上傳",
"SETTINGS_SHORT_URL": "使用短網址",
"SETTINGS_SHORT_URL_SERVER": "短網址服務",
"SETTINGS_SHORT_URL_C1N_TOKEN": "C1N Token",
"SETTINGS_SHORT_URL_YOURLS_DOMAIN": "YOURLS域名",
"SETTINGS_SHORT_URL_YOURLS_SIGNATURE": "YOURLS signature",
"SETTINGS_SHORT_URL_CF_WORKER_HOST": "Cloudflare Worker Host",
"SETTINGS_SHORT_SINK_DOMAIN": "sink域名",
"SETTINGS_SHORT_SINK_TOKEN": "sink token",
"SETTINGS_DELETE_LOCAL_FILE_AFTER_UPLOAD": "上傳後刪除本地檔案",
"SETTINGS_SYNC_CONFIG": "設置同步配置",
"SETTINGS_SYNC_CONFIG_TITLE": "同步設置",
"SETTINGS_SYNC_CONFIG_NOTE": "同步的檔案为配置檔案",
"SETTINGS_SYNC_CONFIG_SELECT_TYPE": "選擇同步方式",
"SETTINGS_SYNC_CONFIG_SELECT_FILE": "選擇同步檔案",
"SETTINGS_SYNC_CONFIG_SELECT_CONFIG": "僅配置檔案",
"SETTINGS_SYNC_CONFIG_SELECT_GALLERY": "僅相簿檔案",
"SETTINGS_SYNC_CONFIG_SELECT_BOTH": "配置檔案和相簿檔案",
"SETTINGS_SYNC_CONFIG_GITEA_HOST": "Gitea Host",
"SETTINGS_SYNC_CONFIG_GITHUB_USERNAME": "用戶名",
"SETTINGS_SYNC_CONFIG_GITEA_USERNAME": "用戶名",
"SETTINGS_SYNC_CONFIG_GITEE_USERNAME": "用戶名",
"SETTINGS_SYNC_CONFIG_GITHUB_REPO": "儲存庫(私有)",
"SETTINGS_SYNC_CONFIG_GITEA_REPO": "儲存庫",
"SETTINGS_SYNC_CONFIG_GITEE_REPO": "儲存庫路径",
"SETTINGS_SYNC_CONFIG_GITHUB_BRANCH": "GitHub 分支",
"SETTINGS_SYNC_CONFIG_GITEA_BRANCH": "Gitea 分支",
"SETTINGS_SYNC_CONFIG_GITEE_BRANCH": "Gitee 分支",
"SETTINGS_SYNC_CONFIG_GITHUB_TOKEN": "GitHub Token",
"SETTINGS_SYNC_CONFIG_GITEA_TOKEN": "Gitea Token",
"SETTINGS_SYNC_CONFIG_GITEE_TOKEN": "Gitee Token",
"SETTINGS_SYNC_CONFIG_PROXY": "代理",
"SETTINGS_SYNC_CONFIG_GITHUB_USERNAME_PLACEHOLDER": "請輸入 GitHub 用戶名",
"SETTINGS_SYNC_CONFIG_GITEA_USERNAME_PLACEHOLDER": "請輸入 Gitea 用戶名",
"SETTINGS_SYNC_CONFIG_GITEE_USERNAME_PLACEHOLDER": "請輸入 Gitee 用戶名",
"SETTINGS_SYNC_CONFIG_GITHUB_REPO_PLACEHOLDER": "請輸入 GitHub 儲存庫名稱",
"SETTINGS_SYNC_CONFIG_GITEA_REPO_PLACEHOLDER": "請輸入 Gitea 儲存庫名稱",
"SETTINGS_SYNC_CONFIG_GITEE_REPO_PLACEHOLDER": "請輸入 Gitee 儲存庫名稱",
"SETTINGS_SYNC_CONFIG_GITHUB_BRANCH_PLACEHOLDER": "請輸入 GitHub 分支名稱",
"SETTINGS_SYNC_CONFIG_GITEA_BRANCH_PLACEHOLDER": "請輸入 Gitea 分支名稱",
"SETTINGS_SYNC_CONFIG_GITEE_BRANCH_PLACEHOLDER": "請輸入 Gitee 分支名稱",
"SETTINGS_SYNC_CONFIG_GITHUB_TOKEN_PLACEHOLDER": "請輸入 GitHub Token",
"SETTINGS_SYNC_CONFIG_GITEA_TOKEN_PLACEHOLDER": "請輸入 Gitea Token",
"SETTINGS_SYNC_CONFIG_GITEE_TOKEN_PLACEHOLDER": "請輸入 Gitee Token",
"SETTINGS_SYNC_CONFIG_PROXY_PLACEHOLDER": "請輸入代理地址",
"SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT": "WebDAV端點",
"SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT_PLACEHOLDER": "請輸入WebDAV端點URL",
"SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME": "用戶名",
"SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME_PLACEHOLDER": "請輸入WebDAV用戶名",
"SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD": "密碼",
"SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD_PLACEHOLDER": "請輸入WebDAV密碼",
"SETTINGS_SYNC_CONFIG_WEBDAV_AUTH_TYPE": "認證類型",
"SETTINGS_SYNC_CONFIG_WEBDAV_SSL_ENABLED": "啟用SSL/HTTPS",
"SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH": "保存路徑",
"SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH_PLACEHOLDER": "請選擇同步檔案的保存路徑",
"SETTINGS_UP_DOWN_DESC": "上傳和下載配置檔案",
"SETTINGS_SYNC_UPLOAD": "上傳",
"SETTINGS_SYNC_DOWNLOAD": "下載",
"SETTINGS_SYNC_UPLOAD_ALL": "上傳全部",
"SETTINGS_SYNC_DOWNLOAD_ALL": "下載全部",
"SETTINGS_SYNC_UPLOAD_SUCCESS": "上傳成功",
"SETTINGS_SYNC_UPLOAD_FAILED": "上傳失敗",
"SETTINGS_SYNC_DOWNLOAD_SUCCESS": "下載成功",
"SETTINGS_SYNC_DOWNLOAD_FAILED": "下載失敗",
"SETTINGS_SYNC_COMMON_CONFIG": "通用配置",
"SETTINGS_SYNC_MANAGE_CONFIG": "管理配置",
"SETTINGS_AUTO_IMPORT": "管理頁面自動導入配置",
"SETTINGS_AUTO_IMPORT_SELECT_PICBED": "選擇需要開啟自動導入的圖床",
"SETTINGS_TAB_SYSTEM": "系統設置",
"SETTINGS_TAB_SYNC_CONFIG": "同步與配置",
"SETTINGS_TAB_UPLOAD": "上傳設置",
"SETTINGS_TAB_ADVANCED": "高級設置",
"SETTINGS_TAB_UPDATE": "更新",
"SHORTCUT_NAME": "快捷鍵名稱",
"SHORTCUT_BIND": "快捷鍵綁定",
"SHORTCUT_STATUS": "狀態",
"SHORTCUT_ENABLED": "已啟用",
"SHORTCUT_DISABLED": "已禁用",
"SHORTCUT_SOURCE": "來源",
"SHORTCUT_HANDLE": "操作",
"SHORTCUT_ENABLE": "啟用",
"SHORTCUT_DISABLE": "禁用",
"SHORTCUT_EDIT": "編輯",
"SHORTCUT_CHANGE_UPLOAD": "修改上傳快捷鍵",
"WAIT_TO_UPLOAD": "等待上傳",
"ALREADY_UPLOAD": "已上傳",
"DRAG_FILE_TO_HERE": "將檔案拖曳到此處,或",
"CLICK_TO_UPLOAD": "點擊上傳",
"LINK_FORMAT": "連結格式",
"CLIPBOARD_PICTURE": "剪貼簿",
"TIPS_DRAG_VALID_PICTURE_OR_URL": "請拖入合法的圖片檔案或者圖片URL地址",
"TIPS_INPUT_URL": "請輸入URL",
"TIPS_HTTP_PREFIX": "http://或者https://開頭",
"TIPS_INPUT_VALID_URL": "請輸入合法的URL",
"PLUGIN_SEARCH_PLACEHOLDER": "搜尋npm上的PicGo插件或者點擊上方按鈕查看優秀插件列表",
"PLUGIN_INSTALL": "安裝",
"PLUGIN_INSTALLING": "安裝中",
"PLUGIN_INSTALLED": "已安裝",
"PLUGIN_DOING_SOMETHING": "進行中",
"PLUGIN_LIST": "插件列表",
"PLUGIN_IMPORT_LOCAL": "導入本地插件",
"PLUGIN_UPDATE_ALL": "更新全部插件",
"TIPS_REMOVE_LINK": "此操作將在相簿中移除該圖片,是否繼續?",
"TIPS_WILL_REMOVE_CHOOSED_IMAGES": "將在相簿中移除剛才選中的 ${m} 張圖片,是否繼續?",
"TIPS_MUST_CONTAINS_URL": "必須含有$url 或 $fileName 或 $extName",
"TIPS_NETWORK_ERROR": "網路錯誤,暫時無法取得",
"TIPS_NEED_RELOAD": "需要重新啟動生效",
"TIPS_PLEASE_CHOOSE_LOG_LEVEL": "請選擇記錄等級",
"TIPS_SET_SUCCEED": "設定成功",
"TIPS_RESET_SUCCEED": "重置成功",
"TIPS_PLUGIN_NOT_GUI_IMPLEMENT": "該插件未對GUI進行優化是否繼續安裝",
"MANAGE_SETTING_TITLE": "管理設定",
"MANAGE_SETTING_ISAUTOREFRESH_TITLE": "每次進入新目錄時,是否自動重新整理檔案列表",
"MANAGE_SETTING_ISAUTOREFRESH_TIPS": "僅對不分頁模式有效,預設會在載入後自動快取至資料庫以提升下次載入速度",
"MANAGE_SETTING_CLEAR_CACHE_TITLE": "清空檔案列表快取資料庫 已佔用:",
"MANAGE_SETTING_CLEAR_CACHE_FREE_TITLE": "剩餘可用:",
"MANAGE_SETTING_CLEAR_CACHE_TIPS": "清空後下次進入新目錄時將會重新載入檔案列表",
"MANAGE_SETTING_CLEAR_CACHE_PROMPT": "確定要清空檔案列表快取資料庫嗎?",
"MANAGE_SETTING_CLEAR_CACHE_BUTTON": "清空",
"MANAGE_SETTING_ISSHOWTHUMBNAIL_TITLE": "顯示圖片的原始圖像而非預設的檔案格式圖示(需要存儲桶公開訪問權限)",
"MANAGE_SETTING_ISUSEPRESIGNEDURL_TITLE": "使用預簽名URL预览圖片",
"MANAGE_SETTING_ISSHOWLIST_TITLE": "檔案列表預設顯示方式",
"MANAGE_SETTING_ISSHOWLIST_ON": "列表",
"MANAGE_SETTING_ISSHOWLIST_OFF": "卡片",
"MANAGE_SETTING_ISFORCECUSTOMURLHTTPS_TITLE": "自定義域名啟用強制 HTTPS",
"MANAGE_SETTING_ISFORCECUSTOMURLHTTPS_TIPS": "開啟後,複製鏈結等操作將會自動為自定義域名添加 HTTPS 前綴",
"MANAGE_SETTING_ISUPLOADKEEPDIRSTRUCTURE_TITLE": "保留上傳時的目錄結構",
"MANAGE_SETTING_ISUPLOADKEEPDIRSTRUCTURE_TIPS": "停用後,所有文件將會展開到指定目錄下",
"MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_A": "下載",
"MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_B": "文件",
"MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_C": "時保留目錄結構",
"MANAGE_SETTING_ISDOWNLOADFOLDERKEEPDIRSTRUCTURE_TITLE_D": "目錄",
"MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TIPS": "啟用後,下載時會保留原始目錄結構",
"MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_TITLE": "最大同時下載檔案數量(1-9999)",
"MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_TIPS": "由於後端實現方式不同,此設定在腾讯云上不生效",
"MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_INPUT_TIPS": "請輸入最大同時下載檔案數量",
"MANAGE_SETTING_ISIGNORECASE_TITLE": "搜尋檔案時,是否忽略大小寫",
"MANAGE_SETTING_ISIGNORECASE_TIPS": "啟用後,搜尋時將會忽略大小寫",
"MANAGE_SETTING_TIMESTAMPRENAME_TITLE": "上傳檔案時間戳重新命名--(最高優先級)",
"MANAGE_SETTING_TIMESTAMPRENAME_TIPS": "啟用後,上傳檔案時將會使用時間戳重新命名",
"MANAGE_SETTING_RANDOMSTRINGRENAME_TITLE": "上傳檔案隨機字符串重新命名--(中優先級)",
"MANAGE_SETTING_RANDOMSTRINGRENAME_TIPS": "隨機字符串長度為20",
"MANAGE_SETTING_CUSTOMRENAME_TITLE": "上傳檔案自定義重新命名--(最低優先級)",
"MANAGE_SETTING_CUSTOMRENAME_TIPS": "啟用後,上傳檔案時將會使用自定義重新命名",
"MANAGE_SETTING_CUSTOM_PATTERN_TITLE": "自訂重新命名格式,占位符請參考下表,可自由組合",
"MANAGE_SETTING_CUSTOM_PATTERN_TIPS": "請輸入自訂重新命名格式",
"MANAGE_SETTING_CUSTOM_PATTERN_TABLE_TITLE": "占位符",
"MANAGE_SETTING_CUSTOM_PATTERN_TABLE_TIPS": "說明",
"MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TITLE": "預設下載鏈結有效期(秒)",
"MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TIPS": "請輸入下載鏈結有效期",
"MANAGE_SETTING_CHOOSE_COPY_FORMAT_TITLE": "選擇預設複製的連結格式",
"MANAGE_SETTING_CHOOSE_COPY_FORMAT_MARKDOWN": "Markdown",
"MANAGE_SETTING_CHOOSE_COPY_FORMAT_MARKDOWN_WITH_LINK": "Markdown(帶連結)",
"MANAGE_SETTING_CHOOSE_COPY_FORMAT_RAWURL": "原始鏈結",
"MANAGE_SETTING_CHOOSE_COPY_FORMAT_HTML": "HTML格式",
"MANAGE_SETTING_CHOOSE_COPY_FORMAT_BBCODE": "BBCode格式",
"MANAGE_SETTING_CHOOSE_COPY_FORMAT_CUSTOM": "自定義格式",
"MANAGE_SETTING_CUSTOM_COPY_FORMAT_TITLE": "自定義鏈結格式($url為原始鏈結,$fileName為檔案名稱)",
"MANAGE_SETTING_CUSTOM_COPY_FORMAT_TIPS": "請輸入自定義鏈結格式",
"MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_TITLE": "選擇下載目錄",
"MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_TIPS": "系統預設下載目錄",
"MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_BUTTON": "選擇目錄",
"MANAGE_SETTING_COPY_MESSAGE": "已複製",
"MANAGE_SETTING_CLEAR_CACHE_SUCCESS": "清除成功",
"MANAGE_SETTING_CLEAR_CACHE_FAILED": "清除失敗",
"MANAGE_SETTING_ISENCODEURL_TITLE": "複製鏈結時編碼",
"MANAGE_SETTING_ISENCODEURL_TIPS": "啟用後,複製鏈結時將會編碼",
"MANAGE_NO_DATA": "暫無數據",
"MANAGE_MAIN_PAGE_NEW_BUCKET": "新建存儲桶",
"MANAGE_MAIN_PAGE_BACK_TO_HOME": "返回首頁",
"MANAGE_MAIN_PAGE_SWITCH_PICBED": "切換圖床",
"MANAGE_MAIN_PAGE_SETTING": "設定",
"MANAGE_MAIN_PAGE_SUBMIT": "提交",
"MANAGE_MAIN_PAGE_TIPS": "提示",
"MANAGE_MAIN_PAGE_TIPS_SUCCESS": "創建成功",
"MANAGE_MAIN_PAGE_TIPS_FAILED": "創建失敗",
"MANAGE_MAIN_PAGE_BUCKET": "存儲桶",
"MANAGE_MAIN_PAGE_GALLERY": "圖庫",
"MANAGE_MAIN_PAGE_REPOSITORY": "倉庫",
"MANAGE_CONSTANT_BASE_RULE": "請輸入",
"MANAGE_CONSTANT_ITEMS_PAGE_RULE_MESSAGE_A": "請輸入每頁顯示數量",
"MANAGE_CONSTANT_ITEMS_PAGE_RULE_MESSAGE_B": "每頁顯示數量必須為數字",
"MANAGE_CONSTANT_ITEMS_PAGE_RULE_MESSAGE_C": "每頁顯示數量必須在20-1000之間",
"MANAGE_CONSTANT_ALIAS_RULE_MESSAGE_A": "請輸入別名,該配置的唯一標識",
"MANAGE_CONSTANT_ALIAS_RULE_MESSAGE_B": "別名只能包含中文、英文、數字、下劃線和中劃線",
"MANAGE_CONSTANT_ALIAS_TOOLTIP": "別名只能包含中文、英文、數字、下劃線和中劃線",
"MANAGE_CONSTANT_ITEMS_PAGE_TOOLTIP": "每頁顯示數量必須在20-1000之間",
"MANAGE_CONSTANT_PAGING_TOOLTIP": "關閉分頁時,目錄列表將使用數據庫緩存以優化性能",
"MANAGE_CONSTANT_BUCKET_NAME_TOOLTIP": "英文逗號分隔bucket1,bucket2,bucket3和起始目錄順序一一對應",
"MANAGE_CONSTANT_BASE_DIR_TOOLTIP": "英文逗號分隔,如:/dir1,/dir2,/dir3, 和存儲桶順序一一對應",
"MANAGE_CONSTANT_IS_AUTO_CUSTOM_URL_TOOLTIP": "開啟時,將自動獲取存儲桶綁定的域名,關閉時可手動填寫",
"MANAGE_CONSTANT_SMMS_ALIAS_DESC": "配置別名-必需",
"MANAGE_CONSTANT_SMMS_ALIAS_PLACEHOLDER": "該配置的唯一標識",
"MANAGE_CONSTANT_SMMS_TOKEN_DESC": "Token-必需",
"MANAGE_CONSTANT_SMMS_TOKEN_PLACEHOLDER": "請填寫Token",
"MANAGE_CONSTANT_SMMS_PAGING_DESC": "是否開啟分頁",
"MANAGE_CONSTANT_SMMS_EXPLAIN": "大陸地區請訪問備用域名https://smms.app請勿大批量上傳圖片否則API接口會被限制",
"MANAGE_CONSTANT_SMMS_REFER_TEXT": "配置教程請參考:",
"MANAGE_CONSTANT_QINIU_NAME": "七牛雲",
"MANAGE_CONSTANT_QINIU_ALIAS_DESC": "配置別名-必需",
"MANAGE_CONSTANT_QINIU_ALIAS_PLACEHOLDER": "該配置的唯一標識",
"MANAGE_CONSTANT_QINIU_ACCESS_KEY_DESC": "accessKey-必需",
"MANAGE_CONSTANT_QINIU_ACCESS_KEY_PLACEHOLDER": "請填寫 accessKey",
"MANAGE_CONSTANT_QINIU_SECRET_KEY_DESC": "secretKey-必需",
"MANAGE_CONSTANT_QINIU_SECRET_KEY_PLACEHOLDER": "請填寫 secretKey",
"MANAGE_CONSTANT_QINIU_BUCKET_DESC": "空間名-可選",
"MANAGE_CONSTANT_QINIU_BUCKET_PLACEHOLDER": "英文逗號分隔例如bucket1,bucket2",
"MANAGE_CONSTANT_QINIU_BASE_DIR_DESC": "起始目錄-可選",
"MANAGE_CONSTANT_QINIU_BASE_DIR_PLACEHOLDER": "英文逗號分隔,例如:/dir1,/dir2",
"MANAGE_CONSTANT_QINIU_IS_AUTO_CUSTOM_URL_DESC": "是否自動獲取綁定域名",
"MANAGE_CONSTANT_QINIU_PAGING_DESC": "是否開啟分頁",
"MANAGE_CONSTANT_QINIU_ITEMS_PAGE_DESC": "每頁顯示數量",
"MANAGE_CONSTANT_QINIU_EXPLAIN": "空間名和起始目錄配置時可通過英文逗號分隔設置,順序必須一致,逗號間留空或缺失項使用默認值",
"MANAGE_CONSTANT_QINIU_REFER_TEXT": "配置教程請參考: ",
"MANAGE_CONSTANT_GITHUB_ALIAS_DESC": "配置別名-必需",
"MANAGE_CONSTANT_GITHUB_ALIAS_PLACEHOLDER": "該配置的唯一標識",
"MANAGE_CONSTANT_GITHUB_TOKEN_DESC": "Token-必需",
"MANAGE_CONSTANT_GITHUB_TOKEN_PLACEHOLDER": "請填寫Token",
"MANAGE_CONSTANT_GITHUB_TOKEN_TIPS": "請提供具有完整repo權限的token否則部分功能可能無法使用",
"MANAGE_CONSTANT_GITHUB_USER_DESC": "用戶名-必需",
"MANAGE_CONSTANT_GITHUB_USER_PLACEHOLDER": "請填寫用戶名",
"MANAGE_CONSTANT_GITHUB_USER_RULE_MESSAGE": "用戶名",
"MANAGE_CONSTANT_GITHUB_PROXY_DESC": "代理地址-可選",
"MANAGE_CONSTANT_GITHUB_PROXY_PLACEHOLDER": "例如http://127.0.0.1:1080",
"MANAGE_CONSTANT_GITHUB_PROXY_TIPS": "如果訪問速度較慢,可以嘗試配置代理",
"MANAGE_CONSTANT_GITHUB_PAGING_DESC": "是否開啟分頁",
"MANAGE_CONSTANT_GITHUB_CUSTOM_URL_DESC": "CDN加速域名-可選",
"MANAGE_CONSTANT_GITHUB_CUSTOM_URL_PLACEHOLDER": "支持使用{username}、{repo}、{branch}和{path}作為替換占位符,用於適配不同倉庫和分支",
"MANAGE_CONSTANT_GITHUB_CUSTOM_URL_TIPS": "例如: https://cdn.staticaly.com/gh/{username}/{repo}@{branch}/{path}",
"MANAGE_CONSTANT_GITHUB_CUSTOM_URL_RULE_MESSAGE_A": "加速域名請以http://或https://開頭",
"MANAGE_CONSTANT_GITHUB_CUSTOM_URL_RULE_MESSAGE_B": "加速域名中的大括號必須成對出現",
"MANAGE_CONSTANT_GITHUB_EXPLAIN": "API調用有每小時上限此外不支持上傳超過100M的文件",
"MANAGE_CONSTANT_GITHUB_REFER_TEXT": "配置教程請參考:",
"MANAGE_CONSTANT_ALIYUN_NAME": "阿里雲",
"MANAGE_CONSTANT_ALIYUN_ALIAS_DESC": "配置別名-必需",
"MANAGE_CONSTANT_ALIYUN_ALIAS_PLACEHOLDER": "該配置的唯一標識",
"MANAGE_CONSTANT_ALIYUN_ACCESS_KEY_ID_DESC": "accessKeyId-必需",
"MANAGE_CONSTANT_ALIYUN_ACCESS_KEY_SECRET_DESC": "accessKeySecret-必需",
"MANAGE_CONSTANT_ALIYUN_ACCESS_KEY_SECRET_PLACEHOLDER": "請填寫accessKeySecret",
"MANAGE_CONSTANT_ALIYUN_BUCKET_DESC": "儲存桶名-可選",
"MANAGE_CONSTANT_ALIYUN_BUCKET_PLACEHOLDER": "英文逗號分隔例如bucket1,bucket2",
"MANAGE_CONSTANT_ALIYUN_BASE_DIR_DESC": "起始目錄-可選",
"MANAGE_CONSTANT_ALIYUN_BASE_DIR_PLACEHOLDER": "英文逗號分隔,例如:/dir1,/dir2",
"MANAGE_CONSTANT_ALIYUN_IS_AUTO_CUSTOM_URL_DESC": "是否自動獲取綁定域名",
"MANAGE_CONSTANT_ALIYUN_PAGING_DESC": "是否開啟分頁",
"MANAGE_CONSTANT_ALIYUN_ITEMS_PAGE_DESC": "每頁顯示數量",
"MANAGE_CONSTANT_ALIYUN_EXPLAIN": "儲存桶名和起始目錄配置時可通過英文逗號分隔不同儲存桶的設置,順序必須一致,逗號間留空或缺失項使用默認值",
"MANAGE_CONSTANT_ALIYUN_REFER_TEXT": "配置教程請參考: ",
"MANAGE_CONSTANT_TENCENT_NAME": "腾讯雲",
"MANAGE_CONSTANT_TENCENT_ALIAS_DESC": "配置别名-必需",
"MANAGE_CONSTANT_TENCENT_ALIAS_PLACEHOLDER": "該配置的唯一標識",
"MANAGE_CONSTANT_TENCENT_SECRET_ID_DESC": "secretId-必需",
"MANAGE_CONSTANT_TENCENT_SECRET_ID_PLACEHOLDER": "請填寫 secretId",
"MANAGE_CONSTANT_TENCENT_SECRET_KEY_DESC": "secretKey-必需",
"MANAGE_CONSTANT_TENCENT_SECRET_KEY_PLACEHOLDER": "請填寫 secretKey",
"MANAGE_CONSTANT_TENCENT_APPID_DESC": "appId-必需",
"MANAGE_CONSTANT_TENCENT_APPID_PLACEHOLDER": "請填寫 appId",
"MANAGE_CONSTANT_TENCENT_APPID_TOOLTIP": "例如1250000000",
"MANAGE_CONSTANT_TENCENT_BUCKET_DESC": "存儲桶名-可選(注意包含AppId)",
"MANAGE_CONSTANT_TENCENT_BUCKET_PLACEHOLDER": "英文逗號分隔例如bucket1-1250000000,bucket2-1250000000",
"MANAGE_CONSTANT_TENCENT_BASE_DIR_DESC": "起始目錄-可選",
"MANAGE_CONSTANT_TENCENT_BASE_DIR_PLACEHOLDER": "英文逗號分隔,例如:/dir1,/dir2",
"MANAGE_CONSTANT_TENCENT_IS_AUTO_CUSTOM_URL_DESC": "是否自動獲取綁定域名",
"MANAGE_CONSTANT_TENCENT_PAGING_DESC": "是否開啟分頁",
"MANAGE_CONSTANT_TENCENT_ITEMS_PAGE_DESC": "每頁顯示數量",
"MANAGE_CONSTANT_TENCENT_EXPLAIN": "存儲桶名和起始目錄配置時可通過英文逗號分隔不同存儲桶的設置,順序必須一致,逗號間留空或缺失項使用默認值",
"MANAGE_CONSTANT_TENCENT_REFER_TEXT": "配置教程請參考: ",
"MANAGE_CONSTANT_UPYUN_NAME": "又拍雲",
"MANAGE_CONSTANT_UPYUN_ALIAS_DESC": "配置別名-必需",
"MANAGE_CONSTANT_UPYUN_ALIAS_PLACEHOLDER": "該配置的唯一標識",
"MANAGE_CONSTANT_UPYUN_BUCKET_DESC": "服務名-必需",
"MANAGE_CONSTANT_UPYUN_BUCKET_PLACEHOLDER": "對應其它對象存儲的存儲桶名",
"MANAGE_CONSTANT_UPYUN_OPERATOR_NAME_DESC": "操作員名-必需",
"MANAGE_CONSTANT_UPYUN_OPERATOR_NAME_PLACEHOLDER": "推薦使用具有讀取、寫入和刪除完整權限的操作員",
"MANAGE_CONSTANT_UPYUN_OPERATOR_NAME_RULE": "操作員",
"MANAGE_CONSTANT_UPYUN_OPERATOR_PWD_DESC": "操作員密碼-必需",
"MANAGE_CONSTANT_UPYUN_OPERATOR_PWD_PLACEHOLDER": "請填寫密碼",
"MANAGE_CONSTANT_UPYUN_OPERATOR_PWD_RULE": "操作員密碼",
"MANAGE_CONSTANT_UPYUN_BASE_DIR_DESC": "起始目錄-可選",
"MANAGE_CONSTANT_UPYUN_BASE_DIR_PLACEHOLDER": "讀取文件時的初始目錄",
"MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_DESC": "加速域名-必需",
"MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_PLACEHOLDER": "請以http://或https://開頭",
"MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_RULE_MESSAGE_A": "加速域名不能為空",
"MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_RULE_MESSAGE_B": "自定義域名請以http://或https://開頭",
"MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_DESC": "防盗链密钥-可選",
"MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_PLACEHOLDER": "請填寫防盗链密钥",
"MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_TOOLTIP": "如果不填寫,則不啟用防盗链",
"MANAGE_CONSTANT_UPYUN_EXPIRE_TIME_DESC": "防盗链有效期(秒)-可選",
"MANAGE_CONSTANT_UPYUN_PAGING": "是否開啟分頁",
"MANAGE_CONSTANT_UPYUN_ITEMS_PAGE": "每頁顯示數量",
"MANAGE_CONSTANT_UPYUN_EXPLAIN": "又拍雲圖床必須填寫加速域名,否則無法正常使用",
"MANAGE_CONSTANT_UPYUN_REFER_TEXT": "配置教程請參考: ",
"MANAGE_CONSTANT_IMGUR_NAME": "Imgur",
"MANAGE_CONSTANT_IMGUR_ALIAS_DESC": "配置別名-必需",
"MANAGE_CONSTANT_IMGUR_ALIAS_PLACEHOLDER": "該配置的唯一標識",
"MANAGE_CONSTANT_IMGUR_USERNAME_DESC": "Imgur用戶名-必需",
"MANAGE_CONSTANT_IMGUR_USERNAME_PLACEHOLDER": "請填寫Imgur用戶名",
"MANAGE_CONSTANT_IMGUR_ACCESS_TOKEN_DESC": "Access Token-必需",
"MANAGE_CONSTANT_IMGUR_ACCESS_TOKEN_PLACEHOLDER": "請填寫Access Token",
"MANAGE_CONSTANT_IMGUR_ACCESS_TOKEN_TOOLTIP": "不是client ID請參考配置教程",
"MANAGE_CONSTANT_IMGUR_PROXY_DESC": "代理-可選",
"MANAGE_CONSTANT_IMGUR_PROXY_PLACEHOLDER": "例如http://127.0.0.1:1080",
"MANAGE_CONSTANT_IMGUR_PROXY_TOOLTIP": "大陸地區請使用代理,否則無法正常使用",
"MANAGE_CONSTANT_IMGUR_EXPLAIN": "大陸地區請使用代理API調用存在限制請注意使用頻率",
"MANAGE_CONSTANT_IMGUR_REFER_TEXT": "配置教程請參考:",
"MANAGE_CONSTANT_S3_NAME": "S3兼容雲",
"MANAGE_CONSTANT_S3_ALIAS_DESC": "配置別名-必需",
"MANAGE_CONSTANT_S3_ALIAS_PLACEHOLDER": "該配置的唯一標識",
"MANAGE_CONSTANT_S3_ACCESS_KEY_ID_DESC": "accessKeyId-必需",
"MANAGE_CONSTANT_S3_ACCESS_KEY_ID_PLACEHOLDER": "請填寫accessKeyId",
"MANAGE_CONSTANT_S3_SECRET_ACCESS_KEY_DESC": "secretAccessKey-必需",
"MANAGE_CONSTANT_S3_SECRET_ACCESS_KEY_PLACEHOLDER": "請填寫secretAccessKey",
"MANAGE_CONSTANT_S3_ENDPOINT_DESC": "endpoint-可選",
"MANAGE_CONSTANT_S3_ENDPOINT_PLACEHOLDER": "例如s3.us-east-1.amazonaws.com",
"MANAGE_CONSTANT_S3_ENDPOINT_TOOLTIP": "如果不填寫,默認訪問 AWS S3請提供根API endpoint",
"MANAGE_CONSTANT_S3_SSLENABLED_DESC": "使用HTTPS連接",
"MANAGE_CONSTANT_S3_SSLENABLED_TOOLTIP": "如果您的平臺不支持,請關閉該選項",
"MANAGE_CONSTANT_S3_FORCE_PATH_STYLE_DESC": "啟用 S3 Path style",
"MANAGE_CONSTANT_S3_FORCE_PATH_STYLE_TOOLTIP": "例如使用 minio 時需要啟用",
"MANAGE_CONSTANT_S3_PROXY_DESC": "代理-可選",
"MANAGE_CONSTANT_S3_PROXY_PLACEHOLDER": "例如http://127.0.0.1:1080",
"MANAGE_CONSTANT_S3_PROXY_TOOLTIP": "如果部分平臺大陸地區無法訪問,請使用代理",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_DESC": "上傳文件的權限",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_PRIVATE": "私有",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_PUBLIC_READ": "公共讀",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_PUBLIC_READ_WRITE": "公共讀寫",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_AUTHENTICATED_READ": "授權讀",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_BUCKET_OWNER_READ": "桶所有者讀",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_BUCKET_OWNER_FULL_CONTROL": "桶所有者完全控制",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_AWS_EXEC_READ": "AWS執行讀",
"MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_TOOLTIP": "上傳文件的權限可選值private、public-read、public-read-write、authenticated-read、bucket-owner-read、bucket-owner-full-control、aws-exec-read",
"MANAGE_CONSTANT_S3_BUCKET_DESC": "存儲桶名-可選",
"MANAGE_CONSTANT_S3_BUCKET_PLACEHOLDER": "英文逗號分隔例如bucket1,bucket2",
"MANAGE_CONSTANT_S3_BASE_DIR_DESC": "起始目錄-可選",
"MANAGE_CONSTANT_S3_BASE_DIR_PLACEHOLDER": "英文逗號分隔,例如:/dir1,/dir2",
"MANAGE_CONSTANT_S3_DOGE_CLOUD_SUPPORT_DESC": "啟用 Doge Cloud 支援",
"MANAGE_CONSTANT_S3_DOGE_CLOUD_SUPPORT_TOOLTIP": "啟用後將會啟用Doge Cloud API",
"MANAGE_CONSTANT_S3_PAGING_DESC": "是否開啟分頁",
"MANAGE_CONSTANT_S3_ITEMS_PAGE_DESC": "每頁顯示數量",
"MANAGE_CONSTANT_S3_EXPLAIN": "存儲桶名和起始目錄配置時可通過英文逗號分隔不同存儲桶的設置,順序必須一致,逗號間留空或缺失項使用默認值",
"MANAGE_CONSTANT_S3_REFER_TEXT": "配置教程請參考:",
"MANAGE_CONSTANT_WEBDAV_ALIAS_DESC": "配置別名-必需",
"MANAGE_CONSTANT_WEBDAV_ALIAS_PLACEHOLDER": "該配置的唯一標識",
"MANAGE_CONSTANT_WEBDAV_HOST_DESC": "地址-必需",
"MANAGE_CONSTANT_WEBDAV_HOST_PLACEHOLDER": "例如https://example.com/dav",
"MANAGE_CONSTANT_WEBDAV_HOST_TOOLTIP": "請填寫完整的WebDAV地址",
"MANAGE_CONSTANT_WEBDAV_USERNAME_DESC": "使用者名稱-必需",
"MANAGE_CONSTANT_WEBDAV_USERNAME_PLACEHOLDER": "請填寫使用者名稱",
"MANAGE_CONSTANT_WEBDAV_BUCKET_DESC": "特殊配置",
"MANAGE_CONSTANT_WEBDAV_BUCKET_PLACEHOLDER": "例如bucket1",
"MANAGE_CONSTANT_WEBDAV_BUCKET_TOOLTIP": "此處不可修改,僅為軟體相容性考量",
"MANAGE_CONSTANT_WEBDAV_PASSWORD_DESC": "密碼-必需",
"MANAGE_CONSTANT_WEBDAV_PASSWORD_PLACEHOLDER": "請填寫密碼",
"MANAGE_CONSTANT_WEBDAV_BASE_DIR_DESC": "起始目錄-可選",
"MANAGE_CONSTANT_WEBDAV_BASE_DIR_PLACEHOLDER": "例如:/dir1",
"MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_DESC": "自訂網域名稱-可選",
"MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_PLACEHOLDER": "例如https://example.com",
"MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_TOOLTIP": "如果您的WebDAV伺服器支援自訂網域名稱請填寫",
"MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_RULE_MESSAGE": "自訂網域名稱請以http://或https://開頭",
"MANAGE_CONSTANT_WEBDAV_WEB_PATH": "WebDAV網路路徑-可選",
"MANAGE_CONSTANT_WEBDAV_WEB_PATH_PLACEHOLDER": "例如test/ttc",
"MANAGE_CONSTANT_WEBDAV_WEB_PATH_TOOLTIP": "用於拼接網址",
"MANAGE_CONSTANT_WEBDAV_PROXY_DESC": "代理-可選",
"MANAGE_CONSTANT_WEBDAV_PROXY_PLACEHOLDER": "例如http://127.0.0.1:1080",
"MANAGE_CONSTANT_WEBDAV_PROXY_TOOLTIP": "如果需要特殊網路環境才能訪問,請使用代理",
"MANAGE_CONSTANT_WEBDAV_SSL_DESC": "使用HTTPS連線",
"MANAGE_CONSTANT_WEBDAV_SSL_TOOLTIP": "根據WebDAV伺服器的配置如果您的伺服器不支援HTTPS請關閉該選項",
"MANAGE_CONSTANT_WEBDAV_AUTH_TYPE_DESC": "認證類型",
"MANAGE_CONSTANT_WEBDAV_EXPLAIN": "WebDAV配置",
"MANAGE_CONSTANT_WEBDAV_REFER_TEXT": "配置教程請參考: ",
"MANAGE_CONSTANT_LOCAL_NAME": "本地",
"MANAGE_CONSTANT_LOCAL_ALIAS_DESC": "配置別名-必需",
"MANAGE_CONSTANT_LOCAL_ALIAS_PLACEHOLDER": "該配置的唯一標識",
"MANAGE_CONSTANT_LOCAL_BASE_DIR_DESC": "起始目錄-必需",
"MANAGE_CONSTANT_LOCAL_BASE_DIR_PLACEHOLDER": "請填寫起始目錄",
"MANAGE_CONSTANT_LOCAL_CUSTOM_URL_DESC": "自定義網域-可選",
"MANAGE_CONSTANT_LOCAL_CUSTOM_URL_PLACEHOLDER": "例如https://example.com",
"MANAGE_CONSTANT_LOCAL_CUSTOM_URL_TOOLTIP": "如果您的目錄支援自定義網域,請填寫",
"MANAGE_CONSTANT_LOCAL_WEB_PATH": "網路路徑-可選",
"MANAGE_CONSTANT_LOCAL_WEB_PATH_PLACEHOLDER": "例如test/ttc",
"MANAGE_CONSTANT_LOCAL_WEB_PATH_TOOLTIP": "用於拼接網址",
"MANAGE_CONSTANT_LOCAL_EXPLAIN": "本地配置",
"MANAGE_CONSTANT_LOCAL_REFER_TEXT": "配置教程請參考: ",
"MANAGE_CONSTANT_LOCAL_BASE_DIR_RULE_MESSAGE": "起始目錄不能為空",
"MANAGE_CONSTANT_LOCAL_BUCKET_DESC": "特殊配置",
"MANAGE_CONSTANT_LOCAL_BUCKET_PLACEHOLDER": "例如bucket1",
"MANAGE_CONSTANT_LOCAL_BUCKET_TOOLTIP": "此處不可修改,僅為軟體相容性考量",
"MANAGE_CONSTANT_SFTP_NAME": "SFTP",
"MANAGE_CONSTANT_SFTP_ALIAS_DESC": "配置別名-必需",
"MANAGE_CONSTANT_SFTP_ALIAS_PLACEHOLDER": "該配置的唯一標識",
"MANAGE_CONSTANT_SFTP_HOST_DESC": "地址-必需",
"MANAGE_CONSTANT_SFTP_HOST_PLACEHOLDER": "例如233.233.233.233",
"MANAGE_CONSTANT_SFTP_PORT_DESC": "端口-必需",
"MANAGE_CONSTANT_SFTP_PORT_PLACEHOLDER": "例如22",
"MANAGE_CONSTANT_SFTP_USERNAME_DESC": "用戶名",
"MANAGE_CONSTANT_SFTP_USERNAME_PLACEHOLDER": "請填寫用戶名",
"MANAGE_CONSTANT_SFTP_PASSWORD_DESC": "密碼",
"MANAGE_CONSTANT_SFTP_PASSWORD_PLACEHOLDER": "請填寫密碼",
"MANAGE_CONSTANT_SFTP_PRIVATE_KEY_DESC": "私鑰地址",
"MANAGE_CONSTANT_SFTP_PRIVATE_KEY_PLACEHOLDER": "請填寫私鑰地址",
"MANAGE_CONSTANT_SFTP_PASSPHRASE_DESC": "私鑰密碼",
"MANAGE_CONSTANT_SFTP_PASSPHRASE_PLACEHOLDER": "請填寫私鑰密碼",
"MANAGE_CONSTANT_SFTP_BASE_DIR_DESC": "起始目錄-可選",
"MANAGE_CONSTANT_SFTP_BASE_DIR_PLACEHOLDER": "例如:/dir1",
"MANAGE_CONSTANT_SFTP_CUSTOM_URL_DESC": "自定義網域-可選",
"MANAGE_CONSTANT_SFTP_CUSTOM_URL_PLACEHOLDER": "例如https://example.com",
"MANAGE_CONSTANT_SFTP_CUSTOM_URL_TOOLTIP": "如果您的目錄支援自定義網域,請填寫",
"MANAGE_CONSTANT_SFTP_WEB_PATH": "網路路徑-可選",
"MANAGE_CONSTANT_SFTP_WEB_PATH_PLACEHOLDER": "例如test/ttc",
"MANAGE_CONSTANT_SFTP_WEB_PATH_TOOLTIP": "用於拼接網址",
"MANAGE_CONSTANT_SFTP_FILE_PERMISSIONS_DESC": "文件權限",
"MANAGE_CONSTANT_SFTP_FILE_PERMISSIONS_PLACEHOLDER": "例如0644",
"MANAGE_CONSTANT_SFTP_DIR_PERMISSIONS_DESC": "目錄權限",
"MANAGE_CONSTANT_SFTP_DIR_PERMISSIONS_PLACEHOLDER": "例如0755",
"MANAGE_CONSTANT_SFTP_EXPLAIN": "SFTP配置",
"MANAGE_CONSTANT_SFTP_REFER_TEXT": "配置教程請參考: ",
"MANAGE_CONSTANT_SFTP_BASE_DIR_RULE_MESSAGE": "起始目錄不能為空",
"MANAGE_CONSTANT_SFTP_BUCKET_DESC": "特殊配置",
"MANAGE_CONSTANT_SFTP_BUCKET_PLACEHOLDER": "例如bucket1",
"MANAGE_CONSTANT_SFTP_BUCKET_TOOLTIP": "此處不可修改,僅為軟體相容性考量",
"MANAGE_LOGIN_PAGE_PANE_NAME": "已保存配置",
"MANAGE_LOGIN_PAGE_PANE_KEY_NAME": "配置項",
"MANAGE_LOGIN_PAGE_PANE_KEY_VALUE": "值",
"MANAGE_LOGIN_PAGE_PANE_ENTER": "進入",
"MANAGE_LOGIN_PAGE_PANE_DELETE": "刪除",
"MANAGE_LOGIN_PAGE_PANE_SELECT_PLACEHOLDER": "請選擇",
"MANAGE_LOGIN_PAGE_PANE_IMPORT": "導入",
"MANAGE_LOGIN_PAGE_PANE_SAVE": "保存",
"MANAGE_LOGIN_PAGE_PANE_RESET": "重置",
"MANAGE_LOGIN_PAGE_PANE_TABLE_TITLE": "已有配置,單擊可複製對應儲存格資料",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_MESSAGE_A": "請填寫",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_ALIAS_MESSAGE": "別名只能包含中文、英文、數字、下劃線和中劃線",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_ITEMS_PER_PAGE_MESSAGE": "每頁數量必須在20-1000之間",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_CUSTOM_URL_MESSAGE": "自定義網域請以http://或https://開頭",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_NAME": "通知",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE": "已覆蓋別名",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_B": "已保存別名",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_C": "已刪除別名",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_D": "刪除別名為",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_E": "的配置失敗",
"MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_COPY_SUCCESS": "已複製",
"MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_TITLE": "確定要删除嗎??",
"MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_TIP": "提示",
"MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_CONFIRM": "確定",
"MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_CANCEL": "取消",
"MANAGE_BUCKET_PAGE_LOADING_TEXT": "載入檔案中...",
"MANAGE_BUCKET_PAGE_CUSTOM_URL_SELECT_PLACEHOLDER": "請選擇自訂域名",
"MANAGE_BUCKET_PAGE_CUSTOM_URL_INPUT_PLACEHOLDER": "請輸入自訂域名",
"MANAGE_BUCKET_PAGE_UPLOAD_FILES_TOOLTIP": "檔案上傳(支援多選)",
"MANAGE_BUCKET_PAGE_UPLOAD_FROM_URL_TOOLTIP": "從 URL 上傳",
"MANAGE_BUCKET_PAGE_CREATE_FOLDER_TOOLTIP": "建立資料夾",
"MANAGE_BUCKET_PAGE_DOWNLOAD_TOOLTIP": "下載頁面",
"MANAGE_BUCKET_PAGE_BATCH_RENAME_TOOLTIP": "批次重新命名",
"MANAGE_BUCKET_PAGE_BATCH_COPY_URL_TOOLTIP": "批次複製 URL",
"MANAGE_BUCKET_PAGE_COPY_FILE_INFO_TOOLTIP": "複製檔案資訊",
"MANAGE_BUCKET_PAGE_FORCE_REFRESH_TOOLTIP": "強制重新整理檔案列表",
"MANAGE_BUCKET_PAGE_SEARCH_PLACEHOLDER": "搜尋檔案",
"MANAGE_BUCKET_PAGE_ROOT_FOLDER": "根目錄",
"MANAGE_BUCKET_PAGE_FILE_NUMBER": "檔案數:",
"MANAGE_BUCKET_PAGE_FILE_SIZE": "總大小:",
"MANAGE_BUCKET_PAGE_SELECT_ALL": "全選",
"MANAGE_BUCKET_PAGE_SELECT_NONE": "取消選擇",
"MANAGE_BUCKET_PAGE_SELECT_INVERT": "反選",
"MANAGE_BUCKET_DOWNLOAD_BTN": "下載",
"MANAGE_BUCKET_DELETE_BTN": "刪除",
"MANAGE_BUCKET_SORT_TITLE": "排序",
"MANAGE_BUCKET_SORT_NAME": "檔案名稱",
"MANAGE_BUCKET_SORT_SIZE": "大小",
"MANAGE_BUCKET_SORT_EXT": "類型",
"MANAGE_BUCKET_SORT_TIME": "時間",
"MANAGE_BUCKET_SORT_CHECK": "選取狀態",
"MANAGE_BUCKET_SORT_INIT": "初始化",
"MANAGE_BUCKET_URL_UPLOAD_DIALOG_TITLE": "請輸入 URL支援多個 URL以換行分隔",
"MANAGE_BUCKET_URL_UPLOAD_DIALOG_CONFIRM": "確定",
"MANAGE_BUCKET_URL_UPLOAD_DIALOG_CANCEL": "取消",
"MANAGE_BUCKET_URL_FORMAT_MARKDOWN": "Markdown",
"MANAGE_BUCKET_URL_FORMAT_MARKDOWN_WITH_LINK": "Markdown-link",
"MANAGE_BUCKET_URL_FORMAT_URL": "Url",
"MANAGE_BUCKET_URL_FORMAT_HTML": "Html",
"MANAGE_BUCKET_URL_FORMAT_BBCODE": "BBCode",
"MANAGE_BUCKET_URL_FORMAT_CUSTOM": "自訂",
"MANAGE_BUCKET_URL_FORMAT_PRESIGN": "預簽名連結",
"MANAGE_BUCKET_FILE_INFO_TITLE": "檔案資訊",
"MANAGE_BUCKET_FILE_INFO_COPY_TIPS": "複製 JSON 格式資訊",
"MANAGE_BUCKET_FILE_LIST_LOADING": "載入中,點擊取消",
"MANAGE_BUCKET_FILE_LIST_DOWNLOAD_PRE": "準備下載中,點擊取消",
"MANAGE_BUCKET_KEEP_FOLDER_STRUCTURE": "保持目錄結構",
"MANAGE_BUCKET_NOT_KEEP_FOLDER_STRUCTURE": "不保持目錄結構",
"MANAGE_BUCKET_UPLOAD_AREA_TITLE": "拖放上傳支援遞歸上傳資料夾",
"MANAGE_BUCKET_UPLOAD_AREA_TEXT": "或:點選選擇檔案(不支援資料夾)",
"MANAGE_BUCKET_UPLOAD_AREA_BTN_LOADING": "讀取檔案中",
"MANAGE_BUCKET_UPLOAD_AREA_BTN": "上傳",
"MANAGE_BUCKET_UPLOAD_AREA_CLEAR": "清空",
"MANAGE_BUCKET_UPLOAD_AREA_STATUS_UPLOADING": "上傳中",
"MANAGE_BUCKET_UPLOAD_AREA_COPY_TASK": "複製上傳任務資訊",
"MANAGE_BUCKET_UPLOAD_AREA_CLEAR_UPLOADED_TASK": "清空已完成任務",
"MANAGE_BUCKET_UPLOAD_AREA_CLEAR_ALL_TASK": "清空所有任務",
"MANAGE_BUCKET_UPLOAD_AREA_SUCCESS": "成功",
"MANAGE_BUCKET_UPLOAD_AREA_FAILED": "失敗",
"MANAGE_BUCKET_DOWNLOAD_PAGE_TITLE": "下載頁面",
"MANAGE_BUCKET_DOWNLOADING": "下載中",
"MANAGE_BUCKET_DOWNLOAD_COPY_TASK": "複製下載任務資訊",
"MANAGE_BUCKET_DOWNLOAD_CLEAR_DOWNLOADED_TASK": "清空已完成任務",
"MANAGE_BUCKET_DOWNLOAD_CLEAR_ALL_TASK": "清空所有任務",
"MANAGE_BUCKET_DOWNLOAD_OPEN_FOLDER": "開啟下載目錄",
"MANAGE_BUCKET_DOWNLOAD_SUCCESS": "成功",
"MANAGE_BUCKET_DOWNLOAD_FAILED": "失敗",
"MANAGE_BUCKET_MARKDOWN_PREVIEW": "預覽",
"MANAGE_BUCKET_PLAY": "播放",
"MANAGE_BUCKET_RENAME_FILE": "檔案重新命名",
"MANAGE_BUCKET_RENAME_FILE_INPUT_A": "進行替換時匹配的字串或 JS 正則表達式",
"MANAGE_BUCKET_RENAME_FILE_INPUT_A_TIPS": "正則表達式請直接輸入,不需要加上 /",
"MANAGE_BUCKET_RENAME_FILE_INPUT_A_PLACEHOLDER": "例如:^\\d{4}-\\d{2}-\\d{2}",
"MANAGE_BUCKET_RENAME_FILE_INPUT_B": "需要替換的字串,可使用自訂重新命名規則中的佔位符",
"MANAGE_BUCKET_RENAME_FILE_TABLE_IID": "自增數字",
"MANAGE_BUCKET_RENAME_FILE_EXT": "是否匹配副檔名進行替換",
"MANAGE_BUCKET_RENAME_FILE_EXT_TIPS": "如果希望修改副檔名,請勾選此項",
"MANAGE_BUCKET_RENAME_FILE_EXT_YES": "是",
"MANAGE_BUCKET_RENAME_FILE_EXT_NO": "否",
"MANAGE_BUCKET_RENAME_FILE_CANCEL": "取消",
"MANAGE_BUCKET_RENAME_FILE_CONFIRM": "確定",
"MANAGE_BUCKET_COPY_SUCCESS": "複製成功",
"MANAGE_BUCKET_START_LOADING_MESSAGE": "開始取得檔案",
"MANAGE_BUCKET_END_LOADING_MESSAGE_FAIL": "取得檔案內容失敗",
"MANAGE_BUCKET_LAST_PAGE_TITLE": "提示",
"MANAGE_BUCKET_LAST_PAGE_MSG": "已經是最後一頁了",
"MANAGE_BUCKET_GET_LIST_FAIL_TITLE": "提示",
"MANAGE_BUCKET_GET_LIST_FAIL_MSG": "獲取檔案列表失敗",
"MANAGE_BUCKET_GET_LIST_FAIL_MSG2": "正在後台獲取檔案列表,請勿切換頁面",
"MANAGE_BUCKET_GET_LIST_FAIL_MSG3": "正在載入檔案列表,請稍後再試",
"MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_TITLE": "確定要下載該資料夾嗎?",
"MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_TIP": "提示",
"MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_CONFIRM": "確定",
"MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_CANCEL": "取消",
"MANAGE_BUCKET_DOWNLOAD_FOLDER_SUCCESS": "獲取下載列表成功",
"MANAGE_BUCKET_DOWNLOAD_FOLDER_FAIL": "獲取失敗",
"MANAGE_BUCKET_DOWNLOAD_FOLDER_CANCEL": "已取消",
"MANAGE_BUCKET_CREATE_FOLDER_BOX_TITLE": "請輸入資料夾名稱",
"MANAGE_BUCKET_CREATE_FOLDER_BOX_TIP": "新建資料夾",
"MANAGE_BUCKET_CREATE_FOLDER_BOX_CONFIRM": "確定",
"MANAGE_BUCKET_CREATE_FOLDER_BOX_CANCEL": "取消",
"MANAGE_BUCKET_CREATE_FOLDER_ERROR_MSG": "資料夾名稱只能包含中文、英文、數字、下劃線和斜線",
"MANAGE_BUCKET_CREATE_FOLDER_SUCCESS": "創建成功,請刷新",
"MANAGE_BUCKET_CREATE_FOLDER_FAIL": "創建失敗",
"MANAGE_BUCKET_UPLOAD_URL_ERROR_MSQ": "請輸入有效的URL",
"MANAGE_BUCKET_UPLOAD_URL_NOT_TITLE": "提示",
"MANAGE_BUCKET_UPLOAD_URL_NOT_MSG": "開始後台下載,成功後自動上傳",
"MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG": "請輸入匹配字串",
"MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG2": "沒有匹配到檔案",
"MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG3": "沒有需要重命名的檔案",
"MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_A": "檢測到有",
"MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_B": "個檔案重複,是否繼續",
"MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_C": "提示",
"MANAGE_BUCKET_BATCH_RENAME_REPEATED_CONFIRM": "確定",
"MANAGE_BUCKET_BATCH_RENAME_REPEATED_CANCEL": "取消",
"MANAGE_BUCKET_BATCH_RENAME_RESULT_MSG_A": "重命名成功",
"MANAGE_BUCKET_BATCH_RENAME_RESULT_MSG_B": "失敗",
"MANAGE_BUCKET_BATCH_RENAME_CANCEL": "已取消",
"MANAGE_BUCKET_BATCH_COPY_INFO_ERROR_MSG": "請先選擇檔案",
"MANAGE_BUCKET_BATCH_COPY_INFO_MSG_A": "已複製",
"MANAGE_BUCKET_BATCH_COPY_INFO_MSG_B": "個檔案資訊",
"MANAGE_BUCKET_BATCH_COPY_URL_ERROR_MSG": "請先選擇檔案",
"MANAGE_BUCKET_BATCH_COPY_URL_MSG_A": "已複製",
"MANAGE_BUCKET_BATCH_COPY_URL_MSG_B": "個連結",
"MANAGE_BUCKET_CANCEL_LOADING_TITLE": "是否停止獲取檔案列表?",
"MANAGE_BUCKET_CANCEL_LOADING_MSG": "提示",
"MANAGE_BUCKET_CANCEL_LOADING_CONFIRM": "确定",
"MANAGE_BUCKET_CANCEL_LOADING_CANCEL": "取消",
"MANAGE_BUCKET_CANCEL_LOADING_SUCCESS": "文件列表获取已停止",
"MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_TITLE": "是否停止下载文件获取?",
"MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_MSG": "提示",
"MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_CONFIRM": "确定",
"MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_CANCEL": "取消",
"MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_SUCCESS": "下载文件获取已停止",
"MANAGE_BUCKET_GET_FILE_BS_NOT_TITLE": "提示",
"MANAGE_BUCKET_GET_FILE_BS_NOT_MSG": "获取文件列表成功",
"MANAGE_BUCKET_GET_FILE_BS_NOT_MSG2": "部分文件获取失败",
"MANAGE_BUCKET_BATCH_DELETE_CONFIRM_TITLE_A": "将永久删除",
"MANAGE_BUCKET_BATCH_DELETE_CONFIRM_TITLE_B": "个文件,是否继续?",
"MANAGE_BUCKET_BATCH_DELETE_CONFIRM_MSG": "提示",
"MANAGE_BUCKET_BATCH_DELETE_CONFIRM_CONFIRM": "确定",
"MANAGE_BUCKET_BATCH_DELETE_CONFIRM_CANCEL": "取消",
"MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_TITLE": "提示",
"MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_MSG": "删除失败",
"MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_MSG2": "删除成功",
"MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_MSG3": "失败",
"MANAGE_BUCKET_BATCH_DELETE_CANCEL": "已取消删除",
"MANAGE_BUCKET_DELETE_CONFIRM_TITLE": "将永久删除",
"MANAGE_BUCKET_DELETE_CONFIRM_TITLE_FOLDER": "文件夹",
"MANAGE_BUCKET_DELETE_CONFIRM_TITLE_FOLDER_A": "和该目录下的所有文件",
"MANAGE_BUCKET_DELETE_CONFIRM_TITLE_FILE": "文件",
"MANAGE_BUCKET_DELETE_CONFIRM_TITLE_C": "是否继续",
"MANAGE_BUCKET_DELETE_CONFIRM_MSG": "提示",
"MANAGE_BUCKET_DELETE_CONFIRM_CONFIRM": "确定",
"MANAGE_BUCKET_DELETE_CONFIRM_CANCEL": "取消",
"MANAGE_BUCKET_DELETE_ERROR_MSG_TITLE": "提示",
"MANAGE_BUCKET_DELETE_ERROR_MSG_MSG": "删除文件夹可能需要一段时间,请耐心等待",
"MANAGE_BUCKET_DELETE_SUCCESS": "刪除成功",
"MANAGE_BUCKET_DELETE_FAIL": "刪除失敗",
"MANAGE_BUCKET_DELETE_CANCEL": "已取消删除",
"MANAGE_BUCKET_RENAME_INFO_MSG": "新文件名和原文件名相同,無需重命名",
"MANAGE_BUCKET_RENAME_SUCCESS": "重命名成功",
"MANAGE_BUCKET_RENAME_ERROR_MSG": "重命名失敗",
"MANAGE_BUCKET_DOWNLOAD_COLUMN_FILENAME": "文件名",
"MANAGE_BUCKET_DOWNLOAD_COLUMN_FINISHTIME": "完成時間",
"MANAGE_BUCKET_DOWNLOAD_COLUMN_STATUS": "狀態",
"MANAGE_BUCKET_DOWNLOAD_COLUMN_STATUS_SUCCESS": "成功",
"MANAGE_BUCKET_DOWNLOAD_COLUMN_STATUS_FAIL": "失敗",
"MANAGE_BUCKET_UPLOAD_COLUMN_FILENAME": "文件名",
"MANAGE_BUCKET_UPLOAD_COLUMN_TARGETFILEPATH": "上傳路徑",
"MANAGE_BUCKET_UPLOAD_COLUMN_FINISHTIME": "完成時間",
"MANAGE_BUCKET_UPLOAD_COLUMN_STATUS": "狀態",
"MANAGE_BUCKET_UPLOAD_COLUMN_STATUS_SUCCESS": "成功",
"MANAGE_BUCKET_UPLOAD_COLUMN_STATUS_FAIL": "失敗",
"MANAGE_BUCKET_DOWNLOADING_COLUMN_FILENAME": "文件名",
"MANAGE_BUCKET_DOWNLOADING_COLUMN_PROGRESS": "進度",
"MANAGE_BUCKET_UPLOADING_COLUMN_FILENAME": "文件名",
"MANAGE_BUCKET_UPLOADING_COLUMN_PROGRESS": "進度",
"MANAGE_BUCKET_UPLOADED_COLUMN_FILENAME": "文件名",
"MANAGE_BUCKET_UPLOADED_COLUMN_FILESIZE": "大小",
"MANAGE_BUCKET_UPLOADED_COLUMN_FILENUM": "文件數",
"MANAGE_BUCKET_FILE_COLUMN_FILENAME": "文件名",
"MANAGE_BUCKET_FILE_COLUMN_COPY_URL": "複製鏈接",
"MANAGE_BUCKET_FILE_COLUMN_INFO": "文件信息",
"MANAGE_BUCKET_FILE_COLUMN_FILESIZE": "大小",
"MANAGE_BUCKET_FILE_COLUMN_TIME": "修改時間",
"MANAGE_NEW_BUCKET_TCYUN_NAME": "腾讯雲",
"MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_DESC": "Bucket名稱",
"MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_PLACEHOLDER": "請輸入Bucket名稱",
"MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_A": "Bucket名稱不能為空",
"MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_B": "Bucket名稱長度不能超過23個字符",
"MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_C": "Bucket名稱只能包含小寫字母、數字和中橫線且不能以中橫線開頭和結尾",
"MANAGE_NEW_BUCKET_TCYUN_REGION": "區域",
"MANAGE_NEW_BUCKET_TCYUN_ACL_DESC": "訪問權限",
"MANAGE_NEW_BUCKET_TCYUN_ACL_PUBLIC_RW": "公共讀寫",
"MANAGE_NEW_BUCKET_TCYUN_ACL_PUBLIC_R": "公共讀",
"MANAGE_NEW_BUCKET_TCYUN_ACL_PRIVATE": "私有",
"MANAGE_NEW_BUCKET_ALIYUN_NAME": "阿里雲",
"MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_DESC": "Bucket名稱",
"MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_PLACEHOLDER": "請輸入Bucket名稱",
"MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_A": "Bucket名稱不能為空",
"MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_B": "Bucket名稱長度不能超過63個字符",
"MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_C": "Bucket名稱只能包含小寫字母、數字和中橫線且不能以中橫線開頭和結尾",
"MANAGE_NEW_BUCKET_ALIYUN_REGION": "區域",
"MANAGE_NEW_BUCKET_ALIYUN_ACL_DESC": "訪問權限",
"MANAGE_NEW_BUCKET_ALIYUN_ACL_PUBLIC_RW": "公共讀寫",
"MANAGE_NEW_BUCKET_ALIYUN_ACL_PUBLIC_R": "公共讀",
"MANAGE_NEW_BUCKET_ALIYUN_ACL_PRIVATE": "私有",
"MANAGE_NEW_BUCKET_QINIU_NAME": "七牛雲",
"MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_DESC": "Bucket名稱",
"MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_PLACEHOLDER": "請輸入Bucket名稱",
"MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_A": "Bucket名稱不能為空",
"MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_B": "Bucket名稱長度不能超過63個字符",
"MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_C": "Bucket名稱只能包含小寫字母、數字和中橫線且不能以中橫線開頭和結尾",
"MANAGE_NEW_BUCKET_QINIU_REGION": "區域",
"MANAGE_NEW_BUCKET_QINIU_ACL_DESC": "公開訪問",
"MANAGE_NEW_BUCKET_S3PLIST_NAME": "S3兼容雲",
"MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_DESC": "Bucket名稱",
"MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_PLACEHOLDER": "請輸入Bucket名稱",
"MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_RULE_MSG_A": "Bucket名稱不能為空",
"MANAGE_NEW_BUCKET_S3PLIST_REGION": "區域",
"MANAGE_NEW_BUCKET_S3PLIST_ACL_DESC": "訪問權限",
"MANAGE_NEW_BUCKET_S3PLIST_ACL_PUBLIC_RW": "公共讀寫",
"MANAGE_NEW_BUCKET_S3PLIST_ACL_PUBLIC_R": "公共讀",
"MANAGE_NEW_BUCKET_S3PLIST_ACL_PRIVATE": "私有",
"MANAGE_NEW_BUCKET_S3PLIST_ACL_AUTHENTICATED_READ": "授權讀",
"PLUGIN_UPDATE_SUCCEED": "插件更新成功",
"TIPS_NOTICE": "注意"
}

View File

@@ -69,19 +69,19 @@
<el-icon>
<UploadFilled />
</el-icon>
<span>{{ $T('UPLOAD_AREA') }}</span>
<span>{{ $t('UPLOAD_AREA') }}</span>
</el-menu-item>
<el-menu-item :index="routerConfig.MANAGE_LOGIN_PAGE">
<el-icon>
<PieChart />
</el-icon>
<span>{{ $T('MANAGE_PAGE') }}</span>
<span>{{ $t('MANAGE_PAGE') }}</span>
</el-menu-item>
<el-menu-item :index="routerConfig.GALLERY_PAGE">
<el-icon>
<PictureFilled />
</el-icon>
<span>{{ $T('GALLERY') }}</span>
<span>{{ $t('GALLERY') }}</span>
</el-menu-item>
<el-sub-menu
index="sub-menu"
@@ -93,7 +93,7 @@
<el-icon>
<Menu />
</el-icon>
<span>{{ $T('PICBEDS_SETTINGS') }}</span>
<span>{{ $t('PICBEDS_SETTINGS') }}</span>
</template>
<template v-for="item in picBedGlobal">
<el-menu-item
@@ -109,19 +109,19 @@
<el-icon>
<Tools />
</el-icon>
<span>{{ $T('PICLIST_SETTINGS') }}</span>
<span>{{ $t('PICLIST_SETTINGS') }}</span>
</el-menu-item>
<el-menu-item :index="routerConfig.PLUGIN_PAGE">
<el-icon>
<Share />
</el-icon>
<span>{{ $T('PLUGIN_SETTINGS') }}</span>
<span>{{ $t('PLUGIN_SETTINGS') }}</span>
</el-menu-item>
<el-menu-item :index="routerConfig.DocumentPage">
<el-icon>
<Link />
</el-icon>
<span>{{ $T('MANUAL') }}</span>
<span>{{ $t('MANUAL') }}</span>
</el-menu-item>
</el-menu>
<el-icon
@@ -154,7 +154,7 @@
class="qrcode-dialog"
top="3vh"
width="60%"
:title="$T('PICBED_QRCODE')"
:title="$t('PICBED_QRCODE')"
:modal-append-to-body="false"
lock-scroll
append-to-body
@@ -164,7 +164,7 @@
label-width="70px"
size="small"
>
<el-form-item :label="$T('CHOOSE_PICBED')">
<el-form-item :label="$t('CHOOSE_PICBED')">
<el-select
v-model="choosedPicBedForQRCode"
multiple
@@ -186,7 +186,7 @@
class="copy-picbed-config"
@click="handleCopyPicBedConfig"
>
{{ $T('COPY_PICBED_CONFIG') }}
{{ $t('COPY_PICBED_CONFIG') }}
</el-button>
</el-form-item>
</el-form>
@@ -223,10 +223,10 @@ import { pick } from 'lodash-es'
import QrcodeVue from 'qrcode.vue'
import pkg from 'root/package.json'
import { nextTick, onBeforeMount, onBeforeUnmount, reactive, Ref, ref, watch } from 'vue'
import { useI18n } from 'vue-i18n'
import { onBeforeRouteUpdate, useRouter } from 'vue-router'
import InputBoxDialog from '@/components/InputBoxDialog.vue'
import { T as $T } from '@/i18n/index'
import * as config from '@/router/config'
import { getConfig, saveConfig } from '@/utils/dataSender'
import { osGlobal, picBedGlobal, updatePicBedGlobal } from '@/utils/global'
@@ -234,6 +234,7 @@ import { SHOW_MAIN_PAGE_QRCODE } from '#/events/constants'
import { II18nLanguage, IRPCActionType } from '#/types/enum'
import { configPaths, manualPageOpenType } from '#/utils/configPaths'
const { t } = useI18n()
const version = ref(pkg.version)
const routerConfig = reactive(config)
const defaultActive = ref(routerConfig.UPLOAD_PAGE)
@@ -291,9 +292,9 @@ const handleSelect = async (index: string) => {
)
if (!manualPageOpenSetting) {
ElMessageBox.confirm($T('MANUAL_PAGE_OPEN_TIP'), $T('MANUAL_PAGE_OPEN_TIP_TITLE'), {
confirmButtonText: $T('MANUAL_PAGE_OPEN_BY_BROWSER'),
cancelButtonText: $T('MANUAL_PAGE_OPEN_BY_BUILD_IN'),
ElMessageBox.confirm(t('MANUAL_PAGE_OPEN_TIP'), t('MANUAL_PAGE_OPEN_TIP_TITLE'), {
confirmButtonText: t('MANUAL_PAGE_OPEN_BY_BROWSER'),
cancelButtonText: t('MANUAL_PAGE_OPEN_BY_BUILD_IN'),
type: 'info',
center: true
})
@@ -344,7 +345,7 @@ function openMiniWindow () {
function handleCopyPicBedConfig () {
window.electron.clipboard.writeText(picBedConfigString.value)
$message.success($T('COPY_PICBED_CONFIG_SUCCEED'))
$message.success(t('COPY_PICBED_CONFIG_SUCCEED'))
}
function setAlwaysOnTop () {

View File

@@ -10,26 +10,38 @@ import ElementUI from 'element-plus'
import { createPinia } from 'pinia'
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
import { createApp } from 'vue'
import { createI18n } from 'vue-i18n'
import VueLazyLoad from 'vue3-lazyload'
import vue3PhotoPreview from 'vue3-photo-preview'
import App from '@/App.vue'
import { T } from '@/i18n/index'
import en from '@/i18n/locales/en.json'
import zhCN from '@/i18n/locales/zh-CN.json'
import zhTW from '@/i18n/locales/zh-TW.json'
import router from '@/router'
import { store } from '@/store'
import { initTalkingData } from '@/utils/analytic'
import db from '@/utils/db'
type MessageSchema = typeof en
window.electron.setVisualZoomLevelLimits(1, 1)
const app = createApp(App)
app.config.globalProperties.$$db = db
app.config.globalProperties.$T = T
app.config.globalProperties.triggerRPC = window.electron.triggerRPC
app.config.globalProperties.sendRPC = window.electron.sendRPC
app.config.globalProperties.sendToMain = window.electron.sendToMain
const i18n = createI18n<MessageSchema, 'en' | 'zh-CN' | 'zh-TW'>({
locale: localStorage.getItem('currentLanguage') || 'zh-CN',
fallbackLocale: 'zh-CN',
messages: {
en,
'zh-CN': zhCN,
'zh-TW': zhTW
}
})
const pinia = createPinia()
pinia.use(piniaPluginPersistedstate)
app.use(VueLazyLoad, {
@@ -37,6 +49,7 @@ app.use(VueLazyLoad, {
error: '/unknown-file-type.svg',
delay: 500
})
app.use(i18n)
app.use(ElementUI)
app.use(router)
app.use(store)
@@ -45,5 +58,3 @@ app.use(pinia)
app.use(hljsVuePlugin)
app.use(VueVideoPlayer)
app.mount('#app')
initTalkingData()

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,6 @@
<template>
<el-empty :description="$T('MANAGE_NO_DATA')" />
<el-empty :description="$t('MANAGE_NO_DATA')" />
</template>
<script lang="ts" setup>
import { T as $T } from '@/i18n'
</script>

View File

@@ -11,7 +11,7 @@
>
<el-tab-pane
name="login"
:label="$T('MANAGE_LOGIN_PAGE_PANE_NAME')"
:label="$t('MANAGE_LOGIN_PAGE_PANE_NAME')"
style="width: 100%; overflow-y: scroll; height: calc(100vh - 50px)"
lazy
>
@@ -46,12 +46,12 @@
>
<el-table-column
prop="key"
:label="$T('MANAGE_LOGIN_PAGE_PANE_KEY_NAME')"
:label="$t('MANAGE_LOGIN_PAGE_PANE_KEY_NAME')"
width="100"
/>
<el-table-column
prop="value"
:label="$T('MANAGE_LOGIN_PAGE_PANE_KEY_VALUE')"
:label="$t('MANAGE_LOGIN_PAGE_PANE_KEY_VALUE')"
/>
</el-table>
<template #reference>
@@ -92,7 +92,7 @@
plain
@click="handleConfigClick(item)"
>
{{ $T('MANAGE_LOGIN_PAGE_PANE_ENTER') }}
{{ $t('MANAGE_LOGIN_PAGE_PANE_ENTER') }}
</el-button>
<el-button
type="warning"
@@ -100,7 +100,7 @@
plain
@click="handleConfigRemove(item.alias)"
>
{{ $T('MANAGE_LOGIN_PAGE_PANE_DELETE') }}
{{ $t('MANAGE_LOGIN_PAGE_PANE_DELETE') }}
</el-button>
</el-button-group>
</el-card>
@@ -182,7 +182,7 @@
<el-select
v-else-if="supportedPicBedList[item.icon].configOptions[option].type === 'select'"
v-model="configResult[item.icon + '.' + option]"
:placeholder="$T('MANAGE_LOGIN_PAGE_PANE_SELECT_PLACEHOLDER')"
:placeholder="$t('MANAGE_LOGIN_PAGE_PANE_SELECT_PLACEHOLDER')"
:persistent="false"
teleported
>
@@ -204,7 +204,7 @@
:disabled="currentAliasList.length === 0"
teleported
>
{{ $T('MANAGE_LOGIN_PAGE_PANE_IMPORT') }}
{{ $t('MANAGE_LOGIN_PAGE_PANE_IMPORT') }}
<template #dropdown>
<el-dropdown-item
v-for="i in currentAliasList"
@@ -222,7 +222,7 @@
plain
@click="handleConfigChange(item.icon)"
>
{{ $T('MANAGE_LOGIN_PAGE_PANE_SAVE') }}
{{ $t('MANAGE_LOGIN_PAGE_PANE_SAVE') }}
</el-button>
<el-button
type="danger"
@@ -231,12 +231,12 @@
plain
@click="handleConfigReset(item.icon)"
>
{{ $T('MANAGE_LOGIN_PAGE_PANE_RESET') }}
{{ $t('MANAGE_LOGIN_PAGE_PANE_RESET') }}
</el-button>
</div>
<br>
<el-alert
:title="$T('MANAGE_LOGIN_PAGE_PANE_TABLE_TITLE')"
:title="$t('MANAGE_LOGIN_PAGE_PANE_TABLE_TITLE')"
type="success"
center
:closable="false"
@@ -266,9 +266,9 @@
import { Delete, Edit, InfoFilled, Pointer } from '@element-plus/icons-vue'
import { ElMessage, ElMessageBox, ElNotification } from 'element-plus'
import { computed, onMounted, reactive, ref } from 'vue'
import { useI18n } from 'vue-i18n'
import { useRouter } from 'vue-router'
import { T as $T } from '@/i18n'
import { useManageStore } from '@/manage/store/manageStore'
import { formObjToTableData } from '@/manage/utils/common'
import { supportedPicBedList } from '@/manage/utils/constants'
@@ -278,6 +278,7 @@ import { IRPCActionType } from '#/types/enum'
import { IStringKeyMap, IUploaderConfigListItem } from '#/types/types'
import { formatEndpoint, isNeedToShorten, safeSliceF } from '#/utils/common'
const { t } = useI18n()
const manageStore = useManageStore()
const router = useRouter()
@@ -362,13 +363,13 @@ async function handleConfigChange (name: string) {
if (supportedPicBedList[name].configOptions[key].required) {
if (supportedPicBedList[name].configOptions[key].type !== 'boolean' && !configResult[resultKey]) {
ElMessage.error(
`${$T('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_MESSAGE_A')} ${supportedPicBedList[name].configOptions[key].description}`
`${t('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_MESSAGE_A')} ${supportedPicBedList[name].configOptions[key].description}`
)
return
}
}
if (key === 'alias' && configResult[resultKey] !== undefined && !reg.test(configResult[resultKey])) {
ElMessage.error($T('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_ALIAS_MESSAGE'))
ElMessage.error(t('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_ALIAS_MESSAGE'))
return
}
if (
@@ -376,13 +377,13 @@ async function handleConfigChange (name: string) {
configResult[resultKey] !== undefined &&
(configResult[resultKey] < 20 || configResult[resultKey] > 1000)
) {
ElMessage.error($T('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_ITEMS_PER_PAGE_MESSAGE'))
ElMessage.error(t('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_ITEMS_PER_PAGE_MESSAGE'))
return
}
if (key === 'customUrl' && configResult[resultKey] !== undefined && configResult[resultKey] !== '') {
if (name !== 'upyun') {
if (!/^https?:\/\//.test(configResult[resultKey])) {
ElMessage.error($T('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_CUSTOM_URL_MESSAGE'))
ElMessage.error(t('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_CUSTOM_URL_MESSAGE'))
return
}
}
@@ -438,8 +439,8 @@ async function handleConfigChange (name: string) {
getDataForTable()
if (aliasList.includes(resultMap.alias)) {
ElNotification({
title: $T('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_NAME'),
message: `${$T('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE')}${resultMap.alias}`,
title: t('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_NAME'),
message: `${t('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE')}${resultMap.alias}`,
type: 'warning',
duration: 500,
customClass: 'notification',
@@ -447,8 +448,8 @@ async function handleConfigChange (name: string) {
})
} else {
ElNotification({
title: $T('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_NAME'),
message: `${$T('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_B')}${resultMap.alias}`,
title: t('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_NAME'),
message: `${t('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_B')}${resultMap.alias}`,
type: 'success',
duration: 2000,
customClass: 'notification',
@@ -471,16 +472,16 @@ const handleConfigReset = (name: string) => {
const handleConfigRemove = (name: string) => {
ElMessageBox.confirm(
$T('MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_TITLE'),
$T('MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_TIP'),
t('MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_TITLE'),
t('MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_TIP'),
{
confirmButtonText: $T('MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_CONFIRM'),
cancelButtonText: $T('MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_CANCEL'),
confirmButtonText: t('MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_CONFIRM'),
cancelButtonText: t('MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_CANCEL'),
type: 'warning'
}
).then(async () => {
const commonNoticeConfig = {
title: $T('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_NAME'),
title: t('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_NAME'),
duration: 2000,
customClass: 'notification',
offset: 100
@@ -489,7 +490,7 @@ const handleConfigRemove = (name: string) => {
removeConfig('picBed', name)
ElNotification({
...commonNoticeConfig,
message: `${$T('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_C')}${name}`,
message: `${t('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_C')}${name}`,
type: 'success',
position: 'bottom-right'
})
@@ -498,7 +499,7 @@ const handleConfigRemove = (name: string) => {
} catch (error) {
ElNotification({
...commonNoticeConfig,
message: `${$T('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_D')}${name}${$T('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_E')}`,
message: `${t('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_D')}${name}${t('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_E')}`,
type: 'error',
position: 'bottom-right'
})
@@ -523,7 +524,7 @@ const getAllConfigAliasArray = async () => {
const handleCellClick = (row: any, column: any) => {
navigator.clipboard.writeText(row[column.property])
ElMessage.success(`${$T('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_COPY_SUCCESS')}${row[column.property]}`)
ElMessage.success(`${t('MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_COPY_SUCCESS')}${row[column.property]}`)
}
const handleReferenceClick = (url: string) => window.electron.sendRPC(IRPCActionType.OPEN_URL, url)

View File

@@ -23,7 +23,7 @@
<el-tooltip
v-if="showNewIconList.includes(currentPicBedName)"
effect="dark"
:content="$T('MANAGE_MAIN_PAGE_NEW_BUCKET')"
:content="$t('MANAGE_MAIN_PAGE_NEW_BUCKET')"
placement="right"
:persistent="false"
teleported
@@ -101,7 +101,7 @@
<el-icon class="layout__menu__setting__item__icon">
<HomeFilled />
</el-icon>
{{ $T('MANAGE_MAIN_PAGE_BACK_TO_HOME') }}
{{ $t('MANAGE_MAIN_PAGE_BACK_TO_HOME') }}
</span>
</el-menu-item>
<el-menu-item
@@ -113,7 +113,7 @@
<el-icon class="layout__menu__setting__item__icon">
<Switch />
</el-icon>
{{ $T('MANAGE_MAIN_PAGE_SWITCH_PICBED') }}
{{ $t('MANAGE_MAIN_PAGE_SWITCH_PICBED') }}
</span>
</el-menu-item>
<el-menu-item
@@ -125,7 +125,7 @@
<el-icon class="layout__menu__setting__item__icon">
<Tools />
</el-icon>
{{ $T('MANAGE_MAIN_PAGE_SETTING') }}
{{ $t('MANAGE_MAIN_PAGE_SETTING') }}
</span>
</el-menu-item>
</el-menu>
@@ -158,7 +158,7 @@
<ChromeFilled />
</el-icon>
<span style="font-size: 13px; margin-top: 5px; color: red">
{{ $T('MANAGE_MAIN_PAGE_BACK_TO_HOME') }}
{{ $t('MANAGE_MAIN_PAGE_BACK_TO_HOME') }}
</span>
</div>
</el-card>
@@ -258,7 +258,7 @@
style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%)"
@click="createNewBucket(currentPicBedName)"
>
{{ $T('MANAGE_MAIN_PAGE_SUBMIT') }}
{{ $t('MANAGE_MAIN_PAGE_SUBMIT') }}
</el-button>
</div>
</el-form>
@@ -281,14 +281,15 @@ import {
import { ElNotification } from 'element-plus'
import { IRPCActionType } from 'root/src/universal/types/enum'
import { computed, onBeforeMount, reactive, ref, watch } from 'vue'
import { useI18n } from 'vue-i18n'
import { useRoute, useRouter } from 'vue-router'
import { T as $T } from '@/i18n'
import { useManageStore } from '@/manage/store/manageStore'
import { supportedPicBedList } from '@/manage/utils/constants'
import { newBucketConfig } from '@/manage/utils/newBucketConfig'
import { IStringKeyMap } from '#/types/types'
const { t } = useI18n()
const manageStore = useManageStore() as any
const route = useRoute()
const router = useRouter()
@@ -336,9 +337,9 @@ const urlMap: IStringKeyMap = {
const showNewIconList = ['aliyun', 'qiniu', 'tcyun', 's3plist']
const bucketT = $T('MANAGE_MAIN_PAGE_BUCKET')
const galleryT = $T('MANAGE_MAIN_PAGE_GALLERY')
const repositoryT = $T('MANAGE_MAIN_PAGE_REPOSITORY')
const bucketT = t('MANAGE_MAIN_PAGE_BUCKET')
const galleryT = t('MANAGE_MAIN_PAGE_GALLERY')
const repositoryT = t('MANAGE_MAIN_PAGE_REPOSITORY')
const menuTitleMap: IStringKeyMap = {
aliyun: bucketT,
@@ -401,8 +402,8 @@ function createNewBucket (picBedName: string) {
window.electron.triggerRPC(IRPCActionType.MANAGE_CREATE_BUCKET, currentAlias, resultMap).then((result: any) => {
if (result) {
ElNotification({
title: $T('MANAGE_MAIN_PAGE_TIPS'),
message: $T('MANAGE_MAIN_PAGE_TIPS_SUCCESS'),
title: t('MANAGE_MAIN_PAGE_TIPS'),
message: t('MANAGE_MAIN_PAGE_TIPS_SUCCESS'),
type: 'success'
})
nweBucketDrawerVisible.value = false
@@ -411,8 +412,8 @@ function createNewBucket (picBedName: string) {
}, 2000)
} else {
ElNotification({
title: $T('MANAGE_MAIN_PAGE_TIPS'),
message: $T('MANAGE_MAIN_PAGE_TIPS_FAILED'),
title: t('MANAGE_MAIN_PAGE_TIPS'),
message: t('MANAGE_MAIN_PAGE_TIPS_FAILED'),
type: 'error'
})
}

View File

@@ -6,7 +6,7 @@
justify="center"
style="font-size: 20px; color: black"
>
{{ $T('MANAGE_SETTING_TITLE') }}
{{ $t('MANAGE_SETTING_TITLE') }}
</el-row>
<el-row class="setting-list">
<el-col
@@ -23,13 +23,13 @@
<el-form-item>
<template #label>
<span style="position: absolute; left: 0">
<span>{{ $T('MANAGE_SETTING_CLEAR_CACHE_TITLE') }} </span>
<span>{{ $t('MANAGE_SETTING_CLEAR_CACHE_TITLE') }} </span>
<span style="color: #ff4949">{{ formatFileSize(dbSize) === '' ? 0 : formatFileSize(dbSize) }} </span>
<span> &nbsp;{{ $T('MANAGE_SETTING_CLEAR_CACHE_FREE_TITLE') }} </span>
<span> &nbsp;{{ $t('MANAGE_SETTING_CLEAR_CACHE_FREE_TITLE') }} </span>
<span style="color: #ff4949">{{ dbSizeAvailableRate }} %</span>
<el-tooltip
effect="dark"
:content="$T('MANAGE_SETTING_CLEAR_CACHE_TIPS')"
:content="$t('MANAGE_SETTING_CLEAR_CACHE_TIPS')"
placement="right"
:persistent="false"
teleported
@@ -41,9 +41,9 @@
</span>
</template>
<el-popconfirm
:title="$T('MANAGE_SETTING_CLEAR_CACHE_PROMPT')"
:confirm-button-text="$T('CONFIRM')"
:cancel-button-text="$T('CANCEL')"
:title="$t('MANAGE_SETTING_CLEAR_CACHE_PROMPT')"
:confirm-button-text="$t('CONFIRM')"
:cancel-button-text="$t('CANCEL')"
hide-icon
:persistent="false"
teleported
@@ -55,7 +55,7 @@
plain
style="position: absolute; right: 0"
>
{{ $T('MANAGE_SETTING_CLEAR_CACHE_BUTTON') }}
{{ $t('MANAGE_SETTING_CLEAR_CACHE_BUTTON') }}
</el-button>
</template>
</el-popconfirm>
@@ -75,12 +75,12 @@
style="margin-top: 10px; margin-bottom: 10px; color: #409eff"
:underline="false"
>
{{ $T('MANAGE_SETTING_CUSTOM_PATTERN_TITLE') }}
{{ $t('MANAGE_SETTING_CUSTOM_PATTERN_TITLE') }}
</el-link>
<el-input
v-if="form.customRename"
v-model="form.customRenameFormat"
:placeholder="$T('MANAGE_SETTING_CUSTOM_PATTERN_TIPS')"
:placeholder="$t('MANAGE_SETTING_CUSTOM_PATTERN_TIPS')"
style="width: 100%"
/>
<el-table
@@ -95,7 +95,7 @@
v-for="prop in ['placeholder', 'description', 'placeholderB', 'descriptionB']"
:key="prop"
:prop="prop"
:label="$T('MANAGE_SETTING_CUSTOM_PATTERN_TABLE_TITLE' as any)"
:label="$t('MANAGE_SETTING_CUSTOM_PATTERN_TABLE_TITLE' as any)"
width="150"
/>
</el-table>
@@ -111,10 +111,10 @@
<el-form-item>
<template #label>
<span style="position: absolute; left: 0">
{{ $T('MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_TITLE') }}
{{ $t('MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_TITLE') }}
<el-tooltip
effect="dark"
:content="$T('MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_TIPS')"
:content="$t('MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_TIPS')"
placement="right"
:persistent="false"
teleported
@@ -128,7 +128,7 @@
<el-input-number
v-model="form.maxDownloadFileCount"
style="position: absolute; right: 0"
:placeholder="$T('MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_INPUT_TIPS')"
:placeholder="$t('MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_INPUT_TIPS')"
:min="1"
:max="9999"
:step="1"
@@ -137,10 +137,10 @@
<el-form-item>
<template #label>
<span style="position: absolute; left: 0">
{{ $T('MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TITLE') }}
{{ $t('MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TITLE') }}
<el-tooltip
effect="dark"
:content="$T('MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TIPS')"
:content="$t('MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TIPS')"
placement="right"
:persistent="false"
teleported
@@ -154,7 +154,7 @@
<el-input-number
v-model="form.PreSignedExpire"
style="position: absolute; right: 0"
:placeholder="$T('MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TIPS')"
:placeholder="$t('MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TIPS')"
:min="1"
:step="1"
/>
@@ -163,7 +163,7 @@
style="margin-top: 10px; margin-bottom: 10px; color: #409eff"
:underline="false"
>
{{ $T('MANAGE_SETTING_CHOOSE_COPY_FORMAT_TITLE') }}
{{ $t('MANAGE_SETTING_CHOOSE_COPY_FORMAT_TITLE') }}
</el-link>
<br>
<el-radio-group v-model="form.pasteFormat">
@@ -172,7 +172,7 @@
:key="item"
:value="item"
>
{{ $T(`MANAGE_SETTING_CHOOSE_COPY_FORMAT_${item.toUpperCase().replace(/-/g, '_')}` as any) }}
{{ $t(`MANAGE_SETTING_CHOOSE_COPY_FORMAT_${item.toUpperCase().replace(/-/g, '_')}` as any) }}
</el-radio>
</el-radio-group>
<el-link
@@ -180,12 +180,12 @@
style="margin-top: 10px; margin-bottom: 10px; color: #409eff"
:underline="false"
>
{{ $T('MANAGE_SETTING_CUSTOM_COPY_FORMAT_TITLE') }}
{{ $t('MANAGE_SETTING_CUSTOM_COPY_FORMAT_TITLE') }}
</el-link>
<el-input
v-if="form.pasteFormat === 'custom'"
v-model="form.customPasteFormat"
:placeholder="$T('MANAGE_SETTING_CUSTOM_COPY_FORMAT_TIPS')"
:placeholder="$t('MANAGE_SETTING_CUSTOM_COPY_FORMAT_TIPS')"
style="width: 100%"
/>
<div>
@@ -193,13 +193,13 @@
style="margin-top: 10px; margin-bottom: 10px; color: #409eff"
:underline="false"
>
{{ $T('MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_TITLE') }}
{{ $t('MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_TITLE') }}
</el-link>
</div>
<el-input
v-model="form.downloadDir"
disabled
:placeholder="$T('MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_TIPS')"
:placeholder="$t('MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_TIPS')"
style="width: 100%; margin-top: 10px"
>
<template #append>
@@ -210,7 +210,7 @@
<el-icon>
<Folder />
</el-icon>
{{ $T('MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_BUTTON') }}
{{ $t('MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_BUTTON') }}
</el-button>
</template>
</el-input>
@@ -227,14 +227,15 @@ import { Folder, InfoFilled } from '@element-plus/icons-vue'
import { ElMessage } from 'element-plus'
import { IRPCActionType } from 'root/src/universal/types/enum'
import { onBeforeMount, ref, watch } from 'vue'
import { useI18n } from 'vue-i18n'
import { T as $T } from '@/i18n'
import DynamicSwitch from '@/manage/components/DynamicSwitch.vue'
import { fileCacheDbInstance } from '@/manage/store/bucketFileDb'
import { customRenameFormatTable, formatFileSize } from '@/manage/utils/common'
import { getConfig, saveConfig } from '@/manage/utils/dataSender'
import { IStringKeyMap } from '#/types/types'
const { t } = useI18n()
const form = ref<IStringKeyMap>({
timestampRename: false,
randomStringRename: false,
@@ -291,16 +292,16 @@ const switchFieldsConfigList = switchFieldsList.map(item => ({
configName: item,
segments: [
{
text: $T(`MANAGE_SETTING_${item.toUpperCase()}_TITLE` as any),
text: t(`MANAGE_SETTING_${item.toUpperCase()}_TITLE` as any),
style: 'color: black;'
}
],
tooltip: switchFieldsNoTipsList.includes(item) ? undefined : $T(`MANAGE_SETTING_${item.toUpperCase()}_TIPS` as any),
tooltip: switchFieldsNoTipsList.includes(item) ? undefined : t(`MANAGE_SETTING_${item.toUpperCase()}_TIPS` as any),
activeText: switchFieldsHasActiveTextList.includes(item)
? $T(`MANAGE_SETTING_${item.toUpperCase()}_ON` as any)
? t(`MANAGE_SETTING_${item.toUpperCase()}_ON` as any)
: undefined,
inactiveText: switchFieldsHasActiveTextList.includes(item)
? $T(`MANAGE_SETTING_${item.toUpperCase()}_OFF` as any)
? t(`MANAGE_SETTING_${item.toUpperCase()}_OFF` as any)
: undefined
}))
@@ -309,37 +310,37 @@ const switchFieldsSpecialList = [
configName: 'isDownloadFileKeepDirStructure',
segments: [
{
text: $T('MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_A'),
text: t('MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_A'),
style: 'color: black;'
},
{
text: $T('MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_B'),
text: t('MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_B'),
style: 'color: orange;'
},
{
text: $T('MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_C'),
text: t('MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_C'),
style: 'color: black;'
}
],
tooltip: $T('MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TIPS')
tooltip: t('MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TIPS')
},
{
configName: 'isDownloadFolderKeepDirStructure',
segments: [
{
text: $T('MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_A'),
text: t('MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_A'),
style: 'color: black;'
},
{
text: $T('MANAGE_SETTING_ISDOWNLOADFOLDERKEEPDIRSTRUCTURE_TITLE_D'),
text: t('MANAGE_SETTING_ISDOWNLOADFOLDERKEEPDIRSTRUCTURE_TITLE_D'),
style: 'color: coral;'
},
{
text: $T('MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_C'),
text: t('MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_C'),
style: 'color: black;'
}
],
tooltip: $T('MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TIPS')
tooltip: t('MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TIPS')
}
]
@@ -359,7 +360,7 @@ async function handleDownloadDirClick () {
const handleCellClick = (row: any, column: any) => {
navigator.clipboard.writeText(row[column.property])
ElMessage.success(`${$T('MANAGE_SETTING_COPY_MESSAGE')}${row[column.property]}`)
ElMessage.success(`${t('MANAGE_SETTING_COPY_MESSAGE')}${row[column.property]}`)
}
function handleClearDb () {
@@ -367,10 +368,10 @@ function handleClearDb () {
.delete()
.then(() => {
getIndexDbSize()
ElMessage.success($T('MANAGE_SETTING_CLEAR_CACHE_SUCCESS'))
ElMessage.success(t('MANAGE_SETTING_CLEAR_CACHE_SUCCESS'))
})
.catch(() => {
ElMessage.error($T('MANAGE_SETTING_CLEAR_CACHE_FAILED'))
ElMessage.error(t('MANAGE_SETTING_CLEAR_CACHE_FAILED'))
})
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,32 +1,36 @@
import { T as $T } from '@/i18n'
import { useI18n } from 'vue-i18n'
import { IStringKeyMap } from '#/types/types'
import { AliyunAreaCodeName, QiniuAreaCodeName, TencentAreaCodeName } from '~/manage/utils/constants'
import { AliyunAreaCodeName, QiniuAreaCodeName, TencentAreaCodeName } from './bucketConfigCons'
const { t } = useI18n()
export const newBucketConfig: IStringKeyMap = {
tcyun: {
name: $T('MANAGE_NEW_BUCKET_TCYUN_NAME'),
name: t('MANAGE_NEW_BUCKET_TCYUN_NAME'),
icon: 'tcyun',
configOptions: {
BucketName: {
required: true,
description: $T('MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_DESC'),
placeholder: $T('MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_PLACEHOLDER'),
description: t('MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_DESC'),
placeholder: t('MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_PLACEHOLDER'),
paraType: 'string',
component: 'input',
default: 'piclist',
rule: [
{
required: true,
message: $T('MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_A'),
message: t('MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_A'),
trigger: 'blur'
},
{
validator: (rule: any, value: any, callback: any) => {
const reg = /^[a-z0-9][a-z0-9-]{1,21}[a-z0-9]$/
if (value.length > 23) {
callback(new Error($T('MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_B')))
callback(new Error(t('MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_B')))
} else if (!reg.test(value)) {
callback(new Error($T('MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_C')))
callback(new Error(t('MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_C')))
} else {
callback()
}
@@ -37,7 +41,7 @@ export const newBucketConfig: IStringKeyMap = {
},
region: {
required: true,
description: $T('MANAGE_NEW_BUCKET_TCYUN_REGION'),
description: t('MANAGE_NEW_BUCKET_TCYUN_REGION'),
paraType: 'string',
component: 'select',
default: 'ap-nanjing',
@@ -45,43 +49,43 @@ export const newBucketConfig: IStringKeyMap = {
},
acl: {
required: true,
description: $T('MANAGE_NEW_BUCKET_TCYUN_ACL_DESC'),
description: t('MANAGE_NEW_BUCKET_TCYUN_ACL_DESC'),
paraType: 'string',
component: 'select',
default: 'private',
options: {
private: $T('MANAGE_NEW_BUCKET_TCYUN_ACL_PRIVATE'),
'public-read': $T('MANAGE_NEW_BUCKET_TCYUN_ACL_PUBLIC_R'),
'public-read-write': $T('MANAGE_NEW_BUCKET_TCYUN_ACL_PUBLIC_RW')
private: t('MANAGE_NEW_BUCKET_TCYUN_ACL_PRIVATE'),
'public-read': t('MANAGE_NEW_BUCKET_TCYUN_ACL_PUBLIC_R'),
'public-read-write': t('MANAGE_NEW_BUCKET_TCYUN_ACL_PUBLIC_RW')
}
}
},
options: ['BucketName', 'region', 'acl']
},
aliyun: {
name: $T('MANAGE_NEW_BUCKET_ALIYUN_NAME'),
name: t('MANAGE_NEW_BUCKET_ALIYUN_NAME'),
icon: 'aliyun',
configOptions: {
BucketName: {
required: true,
description: $T('MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_DESC'),
placeholder: $T('MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_PLACEHOLDER'),
description: t('MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_DESC'),
placeholder: t('MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_PLACEHOLDER'),
paraType: 'string',
component: 'input',
default: 'piclist',
rule: [
{
required: true,
message: $T('MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_A'),
message: t('MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_A'),
trigger: 'blur'
},
{
validator: (rule: any, value: any, callback: any) => {
const reg = /^[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$/
if (value.length > 63) {
callback(new Error($T('MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_B')))
callback(new Error(t('MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_B')))
} else if (!reg.test(value)) {
callback(new Error($T('MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_C')))
callback(new Error(t('MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_C')))
} else {
callback()
}
@@ -92,7 +96,7 @@ export const newBucketConfig: IStringKeyMap = {
},
region: {
required: true,
description: $T('MANAGE_NEW_BUCKET_ALIYUN_REGION'),
description: t('MANAGE_NEW_BUCKET_ALIYUN_REGION'),
paraType: 'string',
component: 'select',
default: 'oss-cn-hangzhou',
@@ -100,43 +104,43 @@ export const newBucketConfig: IStringKeyMap = {
},
acl: {
required: true,
description: $T('MANAGE_NEW_BUCKET_ALIYUN_ACL_DESC'),
description: t('MANAGE_NEW_BUCKET_ALIYUN_ACL_DESC'),
paraType: 'string',
component: 'select',
default: 'private',
options: {
private: $T('MANAGE_NEW_BUCKET_ALIYUN_ACL_PRIVATE'),
publicRead: $T('MANAGE_NEW_BUCKET_ALIYUN_ACL_PUBLIC_R'),
publicReadWrite: $T('MANAGE_NEW_BUCKET_ALIYUN_ACL_PUBLIC_RW')
private: t('MANAGE_NEW_BUCKET_ALIYUN_ACL_PRIVATE'),
publicRead: t('MANAGE_NEW_BUCKET_ALIYUN_ACL_PUBLIC_R'),
publicReadWrite: t('MANAGE_NEW_BUCKET_ALIYUN_ACL_PUBLIC_RW')
}
}
},
options: ['BucketName', 'region', 'acl']
},
qiniu: {
name: $T('MANAGE_NEW_BUCKET_QINIU_NAME'),
name: t('MANAGE_NEW_BUCKET_QINIU_NAME'),
icon: 'qiniu',
configOptions: {
BucketName: {
required: true,
description: $T('MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_DESC'),
placeholder: $T('MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_PLACEHOLDER'),
description: t('MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_DESC'),
placeholder: t('MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_PLACEHOLDER'),
paraType: 'string',
component: 'input',
default: 'piclist',
rule: [
{
required: true,
message: $T('MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_A'),
message: t('MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_A'),
trigger: 'blur'
},
{
validator: (rule: any, value: any, callback: any) => {
const reg = /^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$/
if (value.length > 63) {
callback(new Error($T('MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_B')))
callback(new Error(t('MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_B')))
} else if (!reg.test(value)) {
callback(new Error($T('MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_C')))
callback(new Error(t('MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_C')))
} else {
callback()
}
@@ -147,7 +151,7 @@ export const newBucketConfig: IStringKeyMap = {
},
region: {
required: true,
description: $T('MANAGE_NEW_BUCKET_QINIU_REGION'),
description: t('MANAGE_NEW_BUCKET_QINIU_REGION'),
paraType: 'string',
component: 'select',
default: 'z0',
@@ -155,7 +159,7 @@ export const newBucketConfig: IStringKeyMap = {
},
acl: {
required: true,
description: $T('MANAGE_NEW_BUCKET_QINIU_ACL_DESC'),
description: t('MANAGE_NEW_BUCKET_QINIU_ACL_DESC'),
paraType: 'boolean',
component: 'switch',
default: false
@@ -164,42 +168,42 @@ export const newBucketConfig: IStringKeyMap = {
options: ['BucketName', 'region', 'acl']
},
s3plist: {
name: $T('MANAGE_NEW_BUCKET_S3PLIST_NAME'),
name: t('MANAGE_NEW_BUCKET_S3PLIST_NAME'),
icon: 's3plist',
configOptions: {
BucketName: {
required: true,
description: $T('MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_DESC'),
placeholder: $T('MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_PLACEHOLDER'),
description: t('MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_DESC'),
placeholder: t('MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_PLACEHOLDER'),
paraType: 'string',
component: 'input',
default: 'piclist',
rule: [
{
required: true,
message: $T('MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_RULE_MSG_A'),
message: t('MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_RULE_MSG_A'),
trigger: 'blur'
}
]
},
region: {
required: true,
description: $T('MANAGE_NEW_BUCKET_S3PLIST_REGION'),
description: t('MANAGE_NEW_BUCKET_S3PLIST_REGION'),
paraType: 'string',
component: 'input',
default: 'us-east-1'
},
acl: {
required: true,
description: $T('MANAGE_NEW_BUCKET_S3PLIST_ACL_DESC'),
description: t('MANAGE_NEW_BUCKET_S3PLIST_ACL_DESC'),
paraType: 'string',
component: 'select',
default: 'private',
options: {
private: $T('MANAGE_NEW_BUCKET_S3PLIST_ACL_PRIVATE'),
'public-read': $T('MANAGE_NEW_BUCKET_S3PLIST_ACL_PUBLIC_R'),
'public-read-write': $T('MANAGE_NEW_BUCKET_S3PLIST_ACL_PUBLIC_RW'),
'authenticated-read': $T('MANAGE_NEW_BUCKET_S3PLIST_ACL_AUTHENTICATED_READ')
private: t('MANAGE_NEW_BUCKET_S3PLIST_ACL_PRIVATE'),
'public-read': t('MANAGE_NEW_BUCKET_S3PLIST_ACL_PUBLIC_R'),
'public-read-write': t('MANAGE_NEW_BUCKET_S3PLIST_ACL_PUBLIC_RW'),
'authenticated-read': t('MANAGE_NEW_BUCKET_S3PLIST_ACL_AUTHENTICATED_READ')
}
}
},

View File

@@ -4,7 +4,7 @@
:style="handleBarActive ? 'height: 85%;' : 'height: 95%;'"
>
<div class="view-title">
{{ $T('GALLERY') }} - {{ filterList.length }}
{{ $t('GALLERY') }} - {{ filterList.length }}
<el-icon
style="margin-left: 4px"
class="cursor-pointer"
@@ -14,11 +14,11 @@
<CaretTop v-show="handleBarActive" />
</el-icon>
<span style="position: absolute; right: 0; top: 0; margin-right: 20px; font-size: 0.8em; color: #fff">
{{ $T('GALLERY_SYNC_DELETE') }}
{{ $t('GALLERY_SYNC_DELETE') }}
<el-switch
v-model="deleteCloud"
:active-text="$T('SETTINGS_OPEN')"
:inactive-text="$T('SETTINGS_CLOSE')"
:active-text="$t('SETTINGS_OPEN')"
:inactive-text="$t('SETTINGS_CLOSE')"
@change="handleDeleteCloudFile"
/>
<el-button
@@ -29,7 +29,7 @@
<el-tooltip
class="item"
effect="dark"
:content="$T('REFRESH')"
:content="$t('REFRESH')"
placement="bottom"
:persistent="false"
teleported
@@ -61,7 +61,7 @@
collapse-tags
size="small"
style="width: 100%"
:placeholder="$T('CHOOSE_SHOWED_PICBED')"
:placeholder="$t('CHOOSE_SHOWED_PICBED')"
:persistent="false"
teleported
>
@@ -97,7 +97,7 @@
v-model="pasteStyle"
size="small"
style="width: 100%"
:placeholder="$T('CHOOSE_PASTE_FORMAT')"
:placeholder="$t('CHOOSE_PASTE_FORMAT')"
:persistent="false"
teleported
@change="handlePasteStyleChange"
@@ -135,20 +135,20 @@
type="primary"
:icon="Sort"
>
{{ $T('MANAGE_BUCKET_SORT_TITLE') }}
{{ $t('MANAGE_BUCKET_SORT_TITLE') }}
</el-button>
<template #dropdown>
<el-dropdown-item @click="sortFile('name')">
{{ $T('MANAGE_BUCKET_SORT_NAME') }}
{{ $t('MANAGE_BUCKET_SORT_NAME') }}
</el-dropdown-item>
<el-dropdown-item @click="sortFile('ext')">
{{ $T('MANAGE_BUCKET_SORT_EXT') }}
{{ $t('MANAGE_BUCKET_SORT_EXT') }}
</el-dropdown-item>
<el-dropdown-item @click="sortFile('time')">
{{ $T('MANAGE_BUCKET_SORT_TIME') }}
{{ $t('MANAGE_BUCKET_SORT_TIME') }}
</el-dropdown-item>
<el-dropdown-item @click="sortFile('check')">
{{ $T('MANAGE_BUCKET_SORT_CHECK') }}
{{ $t('MANAGE_BUCKET_SORT_CHECK') }}
</el-dropdown-item>
</template>
</el-dropdown>
@@ -161,7 +161,7 @@
<el-col :span="5">
<el-input
v-model="searchText"
:placeholder="$T('GALLERY_SEARCH_FILENAME')"
:placeholder="$t('GALLERY_SEARCH_FILENAME')"
size="small"
>
<template #suffix>
@@ -178,7 +178,7 @@
<el-col :span="6">
<el-input
v-model="searchTextURL"
:placeholder="$T('GALLERY_SEARCH_URL')"
:placeholder="$t('GALLERY_SEARCH_URL')"
size="small"
>
<template #suffix>
@@ -205,7 +205,7 @@
:class="{ active: isMultiple(choosedList) }"
@click="multiCopy"
>
{{ $T('COPY') }}
{{ $t('COPY') }}
</div>
</el-col>
<el-col :span="3">
@@ -214,7 +214,7 @@
:class="{ active: filterList.length > 0 }"
@click="() => (isShowBatchRenameDialog = true)"
>
{{ $T('GALLERY_CHANGE_URL') }}
{{ $t('GALLERY_CHANGE_URL') }}
</div>
</el-col>
<el-col :span="3">
@@ -223,7 +223,7 @@
:class="{ active: isMultiple(choosedList) }"
@click="multiRemove"
>
{{ $T('DELETE') }}
{{ $t('DELETE') }}
</div>
</el-col>
<el-col :span="3">
@@ -232,7 +232,7 @@
:class="{ active: filterList.length > 0 }"
@click="toggleSelectAll"
>
{{ isAllSelected ? $T('CANCEL') : $T('SELECT_ALL') }}
{{ isAllSelected ? $t('CANCEL') : $t('SELECT_ALL') }}
</div>
</el-col>
</el-row>
@@ -320,7 +320,7 @@
</el-row>
<el-dialog
v-model="dialogVisible"
:title="$T('CHANGE_IMAGE_URL')"
:title="$t('CHANGE_IMAGE_URL')"
width="500px"
:modal-append-to-body="false"
append-to-body
@@ -328,19 +328,19 @@
<el-input v-model="imgInfo.imgUrl" />
<template #footer>
<el-button @click="dialogVisible = false">
{{ $T('CANCEL') }}
{{ $t('CANCEL') }}
</el-button>
<el-button
type="primary"
@click="confirmModify"
>
{{ $T('CONFIRM') }}
{{ $t('CONFIRM') }}
</el-button>
</template>
</el-dialog>
<el-dialog
v-model="isShowBatchRenameDialog"
:title="$T('CHANGE_IMAGE_URL')"
:title="$t('CHANGE_IMAGE_URL')"
center
align-center
draggable
@@ -352,10 +352,10 @@
style="margin-bottom: 10px"
>
<span>
{{ $T('MANAGE_BUCKET_RENAME_FILE_INPUT_A') + $T('GALLERY_MATCHED') + mathcedCount + ' ' }}
{{ $t('MANAGE_BUCKET_RENAME_FILE_INPUT_A') + $t('GALLERY_MATCHED') + mathcedCount + ' ' }}
<el-tooltip
effect="dark"
:content="$T('MANAGE_BUCKET_RENAME_FILE_INPUT_A_TIPS')"
:content="$t('MANAGE_BUCKET_RENAME_FILE_INPUT_A_TIPS')"
placement="right"
:persistent="false"
teleported
@@ -368,7 +368,7 @@
</el-link>
<el-input
v-model="batchRenameMatch"
:placeholder="$T('MANAGE_BUCKET_RENAME_FILE_INPUT_A_PLACEHOLDER')"
:placeholder="$t('MANAGE_BUCKET_RENAME_FILE_INPUT_A_PLACEHOLDER')"
clearable
/>
<el-link
@@ -376,7 +376,7 @@
style="margin-bottom: 10px; margin-top: 10px"
>
<span>
{{ $T('MANAGE_BUCKET_RENAME_FILE_INPUT_B') }}
{{ $t('MANAGE_BUCKET_RENAME_FILE_INPUT_B') }}
<el-popover
effect="light"
placement="right"
@@ -417,7 +417,7 @@
align="center"
label-style="width: 100px;"
>
{{ $T('MANAGE_BUCKET_RENAME_FILE_TABLE_IID') }}
{{ $t('MANAGE_BUCKET_RENAME_FILE_TABLE_IID') }}
</el-descriptions-item>
</el-descriptions>
</el-popover>
@@ -440,7 +440,7 @@
}
"
>
{{ $T('MANAGE_BUCKET_RENAME_FILE_CANCEL') }}
{{ $t('MANAGE_BUCKET_RENAME_FILE_CANCEL') }}
</el-button>
<el-button
type="primary"
@@ -448,7 +448,7 @@
:icon="Edit"
@click="handleBatchRename()"
>
{{ $T('MANAGE_BUCKET_RENAME_FILE_CONFIRM') }}
{{ $t('MANAGE_BUCKET_RENAME_FILE_CONFIRM') }}
</el-button>
</div>
</el-dialog>
@@ -470,10 +470,10 @@ import {
} from '@element-plus/icons-vue'
import { CheckboxValueType, ElMessage, ElMessageBox, ElNotification } from 'element-plus'
import { computed, nextTick, onActivated, onBeforeMount, onBeforeUnmount, reactive, ref, watch } from 'vue'
import { useI18n } from 'vue-i18n'
import { onBeforeRouteUpdate } from 'vue-router'
import ALLApi from '@/apis/allApi'
import { T as $T } from '@/i18n/index'
import { customRenameFormatTable, customStrMatch, customStrReplace } from '@/manage/utils/common'
import { getConfig, saveConfig } from '@/utils/dataSender'
import $$db from '@/utils/db'
@@ -482,6 +482,8 @@ import { IPasteStyle, IRPCActionType } from '#/types/enum'
import { ICheckBoxValueType, IGalleryItem, ImgInfo, IObj, IObjT } from '#/types/types'
import { configPaths } from '#/utils/configPaths'
import { picBedsCanbeDeleted } from '#/utils/static'
const { t } = useI18n()
type IResult<T> = T & {
id: string
createdAt: number
@@ -516,8 +518,8 @@ const pasteStyleMap = {
}
const useShortUrl = ref<string>('')
const shortURLMap = {
[$T('UPLOAD_SHORT_URL')]: $T('UPLOAD_SHORT_URL'),
[$T('UPLOAD_NORMAL_URL')]: $T('UPLOAD_NORMAL_URL')
[t('UPLOAD_SHORT_URL')]: t('UPLOAD_SHORT_URL'),
[t('UPLOAD_NORMAL_URL')]: t('UPLOAD_NORMAL_URL')
}
const fileSortNameReverse = ref(false)
const fileSortTimeReverse = ref(false)
@@ -722,7 +724,7 @@ async function copy (item: ImgInfo) {
})
}
const obj = {
title: $T('COPY_LINK_SUCCEED'),
title: t('COPY_LINK_SUCCEED'),
body: result ? result[0] : ''
}
const myNotification = new Notification(obj.title, obj)
@@ -734,9 +736,9 @@ async function copy (item: ImgInfo) {
function remove (item: ImgInfo) {
if (!item.id) return
$confirm($T('TIPS_REMOVE_LINK'), $T('TIPS_NOTICE'), {
confirmButtonText: $T('CONFIRM'),
cancelButtonText: $T('CANCEL'),
$confirm(t('TIPS_REMOVE_LINK'), t('TIPS_NOTICE'), {
confirmButtonText: t('CONFIRM'),
cancelButtonText: t('CANCEL'),
type: 'warning'
})
.then(async () => {
@@ -748,14 +750,14 @@ function remove (item: ImgInfo) {
const result = await ALLApi.delete(item)
if (result) {
ElNotification({
title: $T('GALLERY_SYNC_DELETE_NOTICE_TITLE'),
message: `${item.fileName} ${$T('GALLERY_SYNC_DELETE_NOTICE_SUCCEED')}`,
title: t('GALLERY_SYNC_DELETE_NOTICE_TITLE'),
message: `${item.fileName} ${t('GALLERY_SYNC_DELETE_NOTICE_SUCCEED')}`,
type: 'success'
})
} else {
ElNotification({
title: $T('GALLERY_SYNC_DELETE_NOTICE_TITLE'),
message: `${item.fileName} ${$T('GALLERY_SYNC_DELETE_NOTICE_FAILED')}`,
title: t('GALLERY_SYNC_DELETE_NOTICE_TITLE'),
message: `${item.fileName} ${t('GALLERY_SYNC_DELETE_NOTICE_FAILED')}`,
type: 'error'
})
return true
@@ -764,7 +766,7 @@ function remove (item: ImgInfo) {
await $$db.removeById(item.id!)
window.electron.sendRPC(IRPCActionType.GALLERY_REMOVE_FILES, [file])
const obj = {
title: $T('OPERATION_SUCCEED'),
title: t('OPERATION_SUCCEED'),
body: ''
}
const myNotification = new Notification(obj.title, obj)
@@ -796,7 +798,7 @@ async function confirmModify () {
imgUrl: imgInfo.imgUrl
})
const obj = {
title: $T('CHANGE_IMAGE_URL_SUCCEED'),
title: t('CHANGE_IMAGE_URL_SUCCEED'),
body: imgInfo.imgUrl
}
const myNotification = new Notification(obj.title, obj)
@@ -830,13 +832,13 @@ function multiRemove () {
const multiRemoveNumber = Object.values(choosedList).filter(item => item).length
if (multiRemoveNumber) {
$confirm(
$T('TIPS_WILL_REMOVE_CHOOSED_IMAGES', {
t('TIPS_WILL_REMOVE_CHOOSED_IMAGES', {
m: multiRemoveNumber
}),
$T('TIPS_NOTICE'),
t('TIPS_NOTICE'),
{
confirmButtonText: $T('CONFIRM'),
cancelButtonText: $T('CANCEL'),
confirmButtonText: t('CONFIRM'),
cancelButtonText: t('CANCEL'),
type: 'warning'
}
)
@@ -854,8 +856,8 @@ function multiRemove () {
const result = await ALLApi.delete(file)
if (result) {
ElNotification({
title: $T('GALLERY_SYNC_DELETE'),
message: `${file.fileName} ${$T('GALLERY_SYNC_DELETE_NOTICE_SUCCEED')}`,
title: t('GALLERY_SYNC_DELETE'),
message: `${file.fileName} ${t('GALLERY_SYNC_DELETE_NOTICE_SUCCEED')}`,
type: 'success',
duration: multiRemoveNumber > 5 ? 1000 : 2000
})
@@ -863,8 +865,8 @@ function multiRemove () {
await $$db.removeById(key)
} else {
ElNotification({
title: $T('GALLERY_SYNC_DELETE'),
message: `${file.fileName} ${$T('GALLERY_SYNC_DELETE_NOTICE_FAILED')}`,
title: t('GALLERY_SYNC_DELETE'),
message: `${file.fileName} ${t('GALLERY_SYNC_DELETE_NOTICE_FAILED')}`,
type: 'error',
duration: multiRemoveNumber > 5 ? 1000 : 2000
})
@@ -892,7 +894,7 @@ function multiRemove () {
// TODO: check this
// choosedList = {} // 只有删除才能将这个置空
const obj = {
title: $T('OPERATION_SUCCEED'),
title: t('OPERATION_SUCCEED'),
body: ''
}
window.electron.sendRPC(IRPCActionType.GALLERY_REMOVE_FILES, files)
@@ -930,7 +932,7 @@ async function multiCopy () {
}
}
const obj = {
title: $T('BATCH_COPY_LINK_SUCCEED'),
title: t('BATCH_COPY_LINK_SUCCEED'),
body: copyString.join('\n')
}
const myNotification = new Notification(obj.title, obj)
@@ -952,7 +954,7 @@ async function handlePasteStyleChange (val: string) {
}
function handleUseShortUrlChange (value: string) {
saveConfig(configPaths.settings.useShortUrl, value === $T('UPLOAD_SHORT_URL'))
saveConfig(configPaths.settings.useShortUrl, value === t('UPLOAD_SHORT_URL'))
useShortUrl.value = value
}
@@ -1005,7 +1007,7 @@ function sortFile (type: 'name' | 'time' | 'ext' | 'check') {
function handleBatchRename () {
isShowBatchRenameDialog.value = false
if (batchRenameMatch.value === '') {
ElMessage.warning($T('MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG'))
ElMessage.warning(t('MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG'))
return
}
let matchedFiles = [] as any[]
@@ -1015,7 +1017,7 @@ function handleBatchRename () {
}
})
if (matchedFiles.length === 0) {
ElMessage.warning($T('MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG2'))
ElMessage.warning(t('MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG2'))
return
}
for (const matchedFile of matchedFiles) {
@@ -1023,7 +1025,7 @@ function handleBatchRename () {
}
matchedFiles = matchedFiles.filter((item: any) => item.imgUrl !== item.newUrl)
if (matchedFiles.length === 0) {
ElMessage.warning($T('MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG3'))
ElMessage.warning(t('MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG3'))
}
for (let i = 0; i < matchedFiles.length; i++) {
matchedFiles[i].newUrl = matchedFiles[i].newUrl.replaceAll('{auto}', (i + 1).toString())
@@ -1044,7 +1046,7 @@ function handleBatchRename () {
Promise.all(promiseList)
.then(() => {
const obj = {
title: $T('OPERATION_SUCCEED'),
title: t('OPERATION_SUCCEED'),
body: ''
}
const myNotification = new Notification(obj.title, obj)
@@ -1059,11 +1061,11 @@ function handleBatchRename () {
}
if (duplicateFilesNum > 0) {
ElMessageBox.confirm(
`${$T('MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_A')} ${duplicateFilesNum} ${$T('MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_B')}`,
$T('MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_C'),
`${t('MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_A')} ${duplicateFilesNum} ${t('MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_B')}`,
t('MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_C'),
{
confirmButtonText: $T('MANAGE_BUCKET_BATCH_RENAME_REPEATED_CONFIRM'),
cancelButtonText: $T('MANAGE_BUCKET_BATCH_RENAME_REPEATED_CANCEL'),
confirmButtonText: t('MANAGE_BUCKET_BATCH_RENAME_REPEATED_CONFIRM'),
cancelButtonText: t('MANAGE_BUCKET_BATCH_RENAME_REPEATED_CANCEL'),
type: 'warning'
}
)
@@ -1071,7 +1073,7 @@ function handleBatchRename () {
rename()
})
.catch(() => {
ElMessage.info($T('MANAGE_BUCKET_BATCH_RENAME_CANCEL'))
ElMessage.info(t('MANAGE_BUCKET_BATCH_RENAME_CANCEL'))
})
} else {
rename()
@@ -1085,8 +1087,8 @@ onBeforeUnmount(() => {
onActivated(async () => {
pasteStyle.value = (await getConfig(configPaths.settings.pasteStyle)) || IPasteStyle.MARKDOWN
useShortUrl.value = (await getConfig(configPaths.settings.useShortUrl))
? $T('UPLOAD_SHORT_URL')
: $T('UPLOAD_NORMAL_URL')
? t('UPLOAD_SHORT_URL')
: t('UPLOAD_NORMAL_URL')
initDeleteCloud()
})
</script>

View File

@@ -33,18 +33,19 @@
</template>
<script lang="ts" setup>
import { IpcRendererEvent } from 'electron'
import type { IpcRendererEvent } from 'electron'
import { ElMessage as $message } from 'element-plus'
import type { IConfig } from 'piclist'
import { onBeforeMount, onBeforeUnmount, ref, watch } from 'vue'
import { useI18n } from 'vue-i18n'
import { T as $T } from '@/i18n/index'
import { getConfig } from '@/utils/dataSender'
import { osGlobal } from '@/utils/global'
import { IRPCActionType } from '#/types/enum'
import { IFileWithPath } from '#/types/types'
import { isUrl } from '#/utils/common'
const { t } = useI18n()
const logoPath = ref('')
const dragover = ref(false)
const progress = ref(0)
@@ -114,7 +115,7 @@ function onDrop (e: DragEvent) {
if (isUrl(str)) {
window.electron.sendRPC(IRPCActionType.UPLOAD_CHOOSED_FILES, [{ path: str }])
} else {
$message.error($T('TIPS_DRAG_VALID_PICTURE_OR_URL'))
$message.error(t('TIPS_DRAG_VALID_PICTURE_OR_URL'))
}
}
}
@@ -132,7 +133,7 @@ function handleURLDrag (items: DataTransferItemList, dataTransfer: DataTransfer)
}
])
} else {
$message.error($T('TIPS_DRAG_VALID_PICTURE_OR_URL'))
$message.error(t('TIPS_DRAG_VALID_PICTURE_OR_URL'))
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
<template>
<div id="plugin-view">
<div class="view-title">
{{ $T('PLUGIN_SETTINGS') }} -
{{ $t('PLUGIN_SETTINGS') }} -
<el-tooltip
:content="pluginListToolTip"
placement="right"
@@ -48,7 +48,7 @@
>
<el-input
v-model="searchText"
:placeholder="$T('PLUGIN_SEARCH_PLACEHOLDER')"
:placeholder="$t('PLUGIN_SEARCH_PLACEHOLDER')"
size="small"
>
<template #suffix>
@@ -132,20 +132,20 @@
class="config-button install"
@click="installPlugin(item)"
>
{{ $T('PLUGIN_INSTALL') }}
{{ $t('PLUGIN_INSTALL') }}
</span>
<span
v-else-if="item.ing"
class="config-button ing"
>
{{ $T('PLUGIN_INSTALLING') }}
{{ $t('PLUGIN_INSTALLING') }}
</span>
</template>
<span
v-else
class="config-button ing"
>
{{ $T('PLUGIN_INSTALLED') }}
{{ $t('PLUGIN_INSTALLED') }}
</span>
</template>
<template v-else>
@@ -153,7 +153,7 @@
v-if="item.ing"
class="config-button ing"
>
{{ $T('PLUGIN_DOING_SOMETHING') }}
{{ $t('PLUGIN_DOING_SOMETHING') }}
</span>
<template v-else>
<el-icon
@@ -190,14 +190,14 @@
round
@click="reloadApp"
>
{{ $T('TIPS_NEED_RELOAD') }}
{{ $t('TIPS_NEED_RELOAD') }}
</el-button>
</el-row>
<el-dialog
v-model="dialogVisible"
:modal-append-to-body="false"
:title="
$T('CONFIG_THING', {
$t('CONFIG_THING', {
c: configName
})
"
@@ -216,14 +216,14 @@
round
@click="dialogVisible = false"
>
{{ $T('CANCEL') }}
{{ $t('CANCEL') }}
</el-button>
<el-button
type="primary"
round
@click="handleConfirmConfig"
>
{{ $T('CONFIRM') }}
{{ $t('CONFIRM') }}
</el-button>
</template>
</el-dialog>
@@ -236,9 +236,9 @@ import type { IpcRendererEvent } from 'electron'
import { ElMessageBox } from 'element-plus'
import { debounce, DebouncedFunc } from 'lodash-es'
import { computed, onBeforeMount, onBeforeUnmount, onMounted, reactive, ref, toRaw, watch } from 'vue'
import { useI18n } from 'vue-i18n'
import ConfigForm from '@/components/ConfigFormForPlugin.vue'
import { T as $T } from '@/i18n/index'
import { getConfig, saveConfig } from '@/utils/dataSender'
import { osGlobal, updatePicBedGlobal } from '@/utils/global'
import {
@@ -252,6 +252,7 @@ import { INPMSearchResultObject, IPicGoPlugin } from '#/types/types'
import { handleStreamlinePluginName } from '#/utils/common'
import { configPaths } from '#/utils/configPaths'
const { t } = useI18n()
const $confirm = ElMessageBox.confirm
const searchText = ref('')
const pluginList = ref<IPicGoPlugin[]>([])
@@ -263,9 +264,9 @@ const pluginNameList = ref<string[]>([])
const loading = ref(true)
const needReload = ref(false)
const latestVersionMap = reactive<{ [key: string]: string }>({})
const pluginListToolTip = $T('PLUGIN_LIST')
const importLocalPluginToolTip = $T('PLUGIN_IMPORT_LOCAL')
const updateAllToolTip = $T('PLUGIN_UPDATE_ALL')
const pluginListToolTip = t('PLUGIN_LIST')
const importLocalPluginToolTip = t('PLUGIN_IMPORT_LOCAL')
const updateAllToolTip = t('PLUGIN_UPDATE_ALL')
const defaultLogo = ref('this.src=\'/roundLogo.png\'')
const $configForm = ref<InstanceType<typeof ConfigForm> | null>(null)
const npmSearchText = computed(() => {
@@ -440,9 +441,9 @@ function getPluginList () {
function installPlugin (item: IPicGoPlugin) {
if (!item.gui) {
$confirm($T('TIPS_PLUGIN_NOT_GUI_IMPLEMENT'), $T('TIPS_NOTICE'), {
confirmButtonText: $T('CONFIRM'),
cancelButtonText: $T('CANCEL'),
$confirm(t('TIPS_PLUGIN_NOT_GUI_IMPLEMENT'), t('TIPS_NOTICE'), {
confirmButtonText: t('CONFIRM'),
cancelButtonText: t('CANCEL'),
type: 'warning'
})
.then(() => {
@@ -467,8 +468,8 @@ async function handleReload () {
needReload: true
})
needReload.value = true
const successNotification = new Notification($T('PLUGIN_UPDATE_SUCCEED'), {
body: $T('TIPS_NEED_RELOAD')
const successNotification = new Notification(t('PLUGIN_UPDATE_SUCCEED'), {
body: t('TIPS_NEED_RELOAD')
})
successNotification.onclick = () => {
reloadApp()
@@ -499,8 +500,8 @@ async function handleConfirmConfig () {
})
break
}
const successNotification = new Notification($T('SETTINGS_RESULT'), {
body: $T('TIPS_SET_SUCCEED')
const successNotification = new Notification(t('SETTINGS_RESULT'), {
body: t('TIPS_SET_SUCCEED')
})
successNotification.onclick = () => {
return true

View File

@@ -6,7 +6,7 @@
@submit.prevent
>
<el-form-item
:label="$T('FILE_RENAME')"
:label="$t('FILE_RENAME')"
prop="fileName"
:rules="[{ required: true, message: 'file name is required', trigger: 'blur' }]"
>
@@ -35,7 +35,7 @@
size="small"
@click="cancel"
>
{{ $T('CANCEL') }}
{{ $t('CANCEL') }}
</el-button>
<el-button
type="primary"
@@ -43,7 +43,7 @@
size="small"
@click="confirmName"
>
{{ $T('CONFIRM') }}
{{ $t('CONFIRM') }}
</el-button>
</div>
</el-row>
@@ -56,7 +56,6 @@ import type { IpcRendererEvent } from 'electron'
import type { FormInstance } from 'element-plus'
import { onBeforeMount, onBeforeUnmount, reactive, ref } from 'vue'
import { T as $T } from '@/i18n/index'
import { GET_RENAME_FILE_NAME, RENAME_FILE_NAME } from '#/events/constants'
const id = ref<string | null>(null)

View File

@@ -1,7 +1,7 @@
<template>
<div id="shortcut-page">
<div class="view-title">
{{ $T('SETTINGS_SET_SHORTCUT') }}
{{ $t('SETTINGS_SET_SHORTCUT') }}
</div>
<el-row>
<el-col
@@ -15,28 +15,28 @@
header-cell-class-name="shortcut-page-table-border"
cell-class-name="shortcut-page-table-border"
>
<el-table-column :label="$T('SHORTCUT_NAME')">
<el-table-column :label="$t('SHORTCUT_NAME')">
<template #default="scope">
{{ scope.row.label ? scope.row.label : scope.row.name }}
</template>
</el-table-column>
<el-table-column
width="160px"
:label="$T('SHORTCUT_BIND')"
:label="$t('SHORTCUT_BIND')"
prop="key"
/>
<el-table-column :label="$T('SHORTCUT_STATUS')">
<el-table-column :label="$t('SHORTCUT_STATUS')">
<template #default="scope">
<el-tag
size="small"
:type="scope.row.enable ? 'success' : 'danger'"
>
{{ scope.row.enable ? $T('SHORTCUT_ENABLED') : $T('SHORTCUT_DISABLED') }}
{{ scope.row.enable ? $t('SHORTCUT_ENABLED') : $t('SHORTCUT_DISABLED') }}
</el-tag>
</template>
</el-table-column>
<el-table-column
:label="$T('SHORTCUT_SOURCE')"
:label="$t('SHORTCUT_SOURCE')"
width="100px"
>
<template #default="scope">
@@ -44,7 +44,7 @@
</template>
</el-table-column>
<el-table-column
:label="$T('SHORTCUT_HANDLE')"
:label="$t('SHORTCUT_HANDLE')"
width="100px"
>
<template #default="scope">
@@ -58,7 +58,7 @@
:link="true"
@click="toggleEnable(scope.row)"
>
{{ scope.row.enable ? $T('SHORTCUT_DISABLE') : $T('SHORTCUT_ENABLE') }}
{{ scope.row.enable ? $t('SHORTCUT_DISABLE') : $t('SHORTCUT_ENABLE') }}
</el-button>
<el-button
class="edit"
@@ -67,7 +67,7 @@
:link="true"
@click="openKeyBindingDialog(scope.row, scope.$index)"
>
{{ $T('SHORTCUT_EDIT') }}
{{ $t('SHORTCUT_EDIT') }}
</el-button>
</el-row>
</template>
@@ -77,7 +77,7 @@
</el-row>
<el-dialog
v-model="keyBindingVisible"
:title="$T('SHORTCUT_CHANGE_UPLOAD')"
:title="$t('SHORTCUT_CHANGE_UPLOAD')"
:modal-append-to-body="false"
append-to-body
>
@@ -99,14 +99,14 @@
round
@click="cancelKeyBinding"
>
{{ $T('CANCEL') }}
{{ $t('CANCEL') }}
</el-button>
<el-button
type="primary"
round
@click="confirmKeyBinding"
>
{{ $T('CONFIRM') }}
{{ $t('CONFIRM') }}
</el-button>
</template>
</el-dialog>
@@ -116,7 +116,6 @@
<script lang="ts" setup>
import { onBeforeMount, onBeforeUnmount, ref, watch } from 'vue'
import { T as $T } from '@/i18n'
import { getConfig } from '@/utils/dataSender'
import keyBinding from '@/utils/key-binding'
import { IRPCActionType } from '#/types/enum'

View File

@@ -9,10 +9,10 @@
>
<el-row class="toolbox-header__text">
<el-row class="toolbox-header__title">
{{ $T('TOOLBOX_TITLE') }}
{{ $t('TOOLBOX_TITLE') }}
</el-row>
<el-row class="toolbox-header__sub-title">
{{ $T('TOOLBOX_SUB_TITLE') }}
{{ $t('TOOLBOX_SUB_TITLE') }}
</el-row>
</el-row>
</el-row>
@@ -24,12 +24,12 @@
:disabled="isLoading"
@click="handleCheck"
>
{{ $T('TOOLBOX_START_SCAN') }}
{{ $t('TOOLBOX_START_SCAN') }}
</el-button>
</template>
<template v-else-if="isAllSuccess">
<div class="toolbox-tips">
{{ $T('TOOLBOX_SUCCESS_TIPS') }}
{{ $t('TOOLBOX_SUCCESS_TIPS') }}
</div>
</template>
<template v-else-if="!isAllSuccess">
@@ -39,19 +39,19 @@
round
@click="handleFix"
>
{{ $T('TOOLBOX_START_FIX') }}
{{ $t('TOOLBOX_START_FIX') }}
</el-button>
</template>
<template v-else>
<div class="toolbox-cant-fix toolbox-tips">
{{ $T('TOOLBOX_CANT_AUTO_FIX') }}
{{ $t('TOOLBOX_CANT_AUTO_FIX') }}
<el-button
type="primary"
round
class="toolbox-cant-fix__btn"
@click="handleCheck"
>
{{ $T('TOOLBOX_RE_SCAN') }}
{{ $t('TOOLBOX_RE_SCAN') }}
</el-button>
</div>
</template>
@@ -95,41 +95,42 @@
<script lang="ts" setup>
import { ElMessageBox } from 'element-plus'
import { IToolboxCheckRes } from 'root/src/universal/types/rpc'
import { IToolboxMap } from 'root/src/universal/types/view'
import { computed, onUnmounted, reactive, ref } from 'vue'
import { useI18n } from 'vue-i18n'
import ToolboxHandler from '@/components/ToolboxHandler.vue'
import ToolboxStatusIcon from '@/components/ToolboxStatusIcon.vue'
import { T as $T } from '@/i18n'
import { IRPCActionType, IToolboxItemCheckStatus, IToolboxItemType } from '#/types/enum'
import { IToolboxCheckRes } from '#/types/rpc'
import { IToolboxMap } from '#/types/view'
const { t } = useI18n()
const $confirm = ElMessageBox.confirm
const defaultLogo = ref('/roundLogo.png')
const activeTypes = ref<IToolboxItemType[]>([])
const fixList = reactive<IToolboxMap>({
[IToolboxItemType.IS_CONFIG_FILE_BROKEN]: {
title: $T('TOOLBOX_CHECK_CONFIG_FILE_BROKEN'),
title: t('TOOLBOX_CHECK_CONFIG_FILE_BROKEN'),
status: IToolboxItemCheckStatus.INIT,
handlerText: $T('SETTINGS_OPEN_CONFIG_FILE'),
handlerText: t('SETTINGS_OPEN_CONFIG_FILE'),
handler (value: string) {
window.electron.sendRPC(IRPCActionType.OPEN_FILE, value)
}
},
[IToolboxItemType.IS_GALLERY_FILE_BROKEN]: {
title: $T('TOOLBOX_CHECK_GALLERY_FILE_BROKEN'),
title: t('TOOLBOX_CHECK_GALLERY_FILE_BROKEN'),
status: IToolboxItemCheckStatus.INIT
},
[IToolboxItemType.HAS_PROBLEM_WITH_CLIPBOARD_PIC_UPLOAD]: {
title: $T('TOOLBOX_CHECK_PROBLEM_WITH_CLIPBOARD_PIC_UPLOAD'), // picgo-image-clipboard folder
title: t('TOOLBOX_CHECK_PROBLEM_WITH_CLIPBOARD_PIC_UPLOAD'), // picgo-image-clipboard folder
status: IToolboxItemCheckStatus.INIT,
handlerText: $T('OPEN_FILE_PATH'),
handlerText: t('OPEN_FILE_PATH'),
handler (value: string) {
window.electron.sendRPC(IRPCActionType.OPEN_FILE, value)
}
},
[IToolboxItemType.HAS_PROBLEM_WITH_PROXY]: {
title: $T('TOOLBOX_CHECK_PROBLEM_WITH_PROXY'),
title: t('TOOLBOX_CHECK_PROBLEM_WITH_PROXY'),
status: IToolboxItemCheckStatus.INIT,
hasNoFixMethod: true
}
@@ -210,9 +211,9 @@ const handleFix = async () => {
}
})
$confirm($T('TOOLBOX_FIX_DONE_NEED_RELOAD'), $T('TIPS_NOTICE'), {
confirmButtonText: $T('CONFIRM'),
cancelButtonText: $T('CANCEL'),
$confirm(t('TOOLBOX_FIX_DONE_NEED_RELOAD'), t('TIPS_NOTICE'), {
confirmButtonText: t('CONFIRM'),
cancelButtonText: t('CANCEL'),
type: 'info'
})
.then(() => {

View File

@@ -4,7 +4,7 @@
class="open-main-window"
@click="openSettingWindow"
>
{{ $T('OPEN_MAIN_WINDOW') }}
{{ $t('OPEN_MAIN_WINDOW') }}
</div>
<div class="content">
<div
@@ -12,7 +12,7 @@
class="wait-upload-img"
>
<div class="list-title">
{{ $T('WAIT_TO_UPLOAD') }}
{{ $t('WAIT_TO_UPLOAD') }}
</div>
<div
v-for="(item, index) in clipboardFiles"
@@ -33,7 +33,7 @@
</div>
<div class="uploaded-img">
<div class="list-title">
{{ $T('ALREADY_UPLOAD') }}
{{ $t('ALREADY_UPLOAD') }}
</div>
<div
v-for="item in files"
@@ -64,8 +64,8 @@
<script lang="ts" setup>
import type { IpcRendererEvent } from 'electron'
import { onBeforeMount, onBeforeUnmount, reactive, ref } from 'vue'
import { useI18n } from 'vue-i18n'
import { T as $T } from '@/i18n/index'
import { getConfig } from '@/utils/dataSender'
import $$db from '@/utils/db'
import { IPasteStyle, IRPCActionType, IWindowList } from '#/types/enum'
@@ -73,6 +73,8 @@ import { ImgInfo } from '#/types/types'
import { handleUrlEncode } from '#/utils/common'
import { configPaths } from '#/utils/configPaths'
const { t } = useI18n()
type IResult<T> = T & {
id: string
createdAt: number
@@ -80,7 +82,7 @@ type IResult<T> = T & {
}
const files = ref<IResult<ImgInfo>[]>([])
const notification = reactive({
title: $T('COPY_LINK_SUCCEED'),
title: t('COPY_LINK_SUCCEED'),
body: ''
})

View File

@@ -9,7 +9,7 @@
<el-tooltip
placement="top"
effect="light"
:content="$T('UPLOAD_VIEW_HINT')"
:content="$t('UPLOAD_VIEW_HINT')"
:persistent="false"
teleported
>
@@ -34,7 +34,7 @@
style="margin-left: 6px"
@click="handleImageProcess"
>
{{ $T('UPLOAD_PAGE_IMAGE_PROCESS_NAME') }}
{{ $t('UPLOAD_PAGE_IMAGE_PROCESS_NAME') }}
</el-button>
</div>
<div
@@ -52,8 +52,8 @@
<UploadFilled />
</el-icon>
<div class="upload-dragger__text">
{{ $T('DRAG_FILE_TO_HERE') }}
<span>{{ $T('CLICK_TO_UPLOAD') }}</span>
{{ $t('DRAG_FILE_TO_HERE') }}
<span>{{ $t('CLICK_TO_UPLOAD') }}</span>
</div>
<input
id="file-uploader"
@@ -73,7 +73,7 @@
<div class="paste-style">
<div class="el-col-12">
<div class="paste-style__text">
{{ $T('LINK_FORMAT') }}
{{ $t('LINK_FORMAT') }}
</div>
<el-radio-group
v-model="pasteStyle"
@@ -98,19 +98,19 @@
:value="true"
style="border-radius: 5px"
>
{{ $T('UPLOAD_SHORT_URL') }}
{{ $t('UPLOAD_SHORT_URL') }}
</el-radio-button>
<el-radio-button
:value="false"
style="border-radius: 5px"
>
{{ $T('UPLOAD_NORMAL_URL') }}
{{ $t('UPLOAD_NORMAL_URL') }}
</el-radio-button>
</el-radio-group>
</div>
<div class="el-col-8">
<div class="paste-style__text">
{{ $T('QUICK_UPLOAD') }}
{{ $t('QUICK_UPLOAD') }}
</div>
<el-button
type="primary"
@@ -120,7 +120,7 @@
style="width: 50%"
@click="uploadClipboardFiles"
>
{{ $T('CLIPBOARD_PICTURE') }}
{{ $t('CLIPBOARD_PICTURE') }}
</el-button>
<el-button
type="primary"
@@ -138,7 +138,7 @@
</el-row>
<el-dialog
v-model="imageProcessDialogVisible"
:title="$T('UPLOAD_PAGE_IMAGE_PROCESS_DIALOG_TITLE')"
:title="$t('UPLOAD_PAGE_IMAGE_PROCESS_DIALOG_TITLE')"
width="50%"
draggable
center
@@ -155,10 +155,10 @@ import { CaretBottom, UploadFilled } from '@element-plus/icons-vue'
import type { IpcRendererEvent } from 'electron'
import { ElMessage as $message } from 'element-plus'
import { onBeforeMount, onBeforeUnmount, ref, watch } from 'vue'
import { useI18n } from 'vue-i18n'
import { useRouter } from 'vue-router'
import ImageProcessSetting from '@/components/ImageProcessSetting.vue'
import { T as $T } from '@/i18n'
import { PICBEDS_PAGE } from '@/router/config'
import $bus from '@/utils/bus'
import { getConfig, saveConfig } from '@/utils/dataSender'
@@ -170,6 +170,7 @@ import { IFileWithPath, IUploaderConfigItem } from '#/types/types'
import { isUrl } from '#/utils/common'
import { configPaths } from '#/utils/configPaths'
const { t } = useI18n()
useDragEventListeners()
const $router = useRouter()
@@ -277,7 +278,7 @@ function onDrop (e: DragEvent) {
if (isUrl(str)) {
window.electron.sendRPC(IRPCActionType.UPLOAD_CHOOSED_FILES, [{ path: str }])
} else {
$message.error($T('TIPS_DRAG_VALID_PICTURE_OR_URL'))
$message.error(t('TIPS_DRAG_VALID_PICTURE_OR_URL'))
}
}
}
@@ -295,7 +296,7 @@ function handleURLDrag (items: DataTransferItemList, dataTransfer: DataTransfer)
}
])
} else {
$message.error($T('TIPS_DRAG_VALID_PICTURE_OR_URL'))
$message.error(t('TIPS_DRAG_VALID_PICTURE_OR_URL'))
}
}
@@ -349,8 +350,8 @@ async function uploadURLFiles () {
const str = await navigator.clipboard.readText()
$bus.emit(SHOW_INPUT_BOX, {
value: isUrl(str) ? str : '',
title: $T('TIPS_INPUT_URL'),
placeholder: $T('TIPS_HTTP_PREFIX')
title: t('TIPS_INPUT_URL'),
placeholder: t('TIPS_HTTP_PREFIX')
})
}
@@ -363,7 +364,7 @@ function handleInputBoxValue (val: string) {
}
])
} else {
$message.error($T('TIPS_INPUT_VALID_URL'))
$message.error(t('TIPS_INPUT_VALID_URL'))
}
}

View File

@@ -1,7 +1,7 @@
<template>
<div id="config-list-view">
<div class="view-title">
{{ $T('SETTINGS') }}
{{ $t('SETTINGS') }}
</div>
<el-row
:gutter="15"
@@ -34,7 +34,7 @@
v-if="defaultConfigId === item._id"
class="default-text"
>
{{ $T('SELECTED_SETTING_HINT') }}
{{ $t('SELECTED_SETTING_HINT') }}
</div>
<div class="operation-container">
<el-icon
@@ -84,7 +84,7 @@
:disabled="store?.state.defaultPicBed === type"
@click="setDefaultPicBed(type)"
>
{{ $T('SETTINGS_SET_DEFAULT_PICBED') }}
{{ $t('SETTINGS_SET_DEFAULT_PICBED') }}
</el-button>
</el-row>
</div>
@@ -94,16 +94,17 @@
import { Delete, Edit, Plus } from '@element-plus/icons-vue'
import dayjs from 'dayjs'
import { onBeforeMount, ref } from 'vue'
import { useI18n } from 'vue-i18n'
import { onBeforeRouteUpdate, useRoute, useRouter } from 'vue-router'
import { useStore } from '@/hooks/useStore'
import { T as $T } from '@/i18n/index'
import { PICBEDS_PAGE, UPLOADER_CONFIG_PAGE } from '@/router/config'
import { saveConfig } from '@/utils/dataSender'
import { IRPCActionType } from '#/types/enum'
import { IStringKeyMap, IUploaderConfigItem } from '#/types/types'
import { configPaths } from '#/utils/configPaths'
const { t } = useI18n()
const router = useRouter()
const route = useRoute()
@@ -185,8 +186,8 @@ function setDefaultPicBed (type: string) {
store?.setDefaultPicBed(type)
const currentConfigName = curConfigList.value.find(item => item._id === defaultConfigId.value)?._configName
window.electron.sendRPC(IRPCActionType.TRAY_SET_TOOL_TIP, `${type} ${currentConfigName || ''}`)
const successNotification = new Notification($T('SETTINGS_DEFAULT_PICBED'), {
body: $T('TIPS_SET_SUCCEED')
const successNotification = new Notification(t('SETTINGS_DEFAULT_PICBED'), {
body: t('TIPS_SET_SUCCEED')
})
successNotification.onclick = () => {
return true

View File

@@ -12,7 +12,7 @@
<span
class="view-title-text"
@click="handleNameClick"
> {{ picBedName }} {{ $T('SETTINGS') }}</span>
> {{ picBedName }} {{ $t('SETTINGS') }}</span>
<el-icon>
<Link />
</el-icon>
@@ -23,7 +23,7 @@
style="margin-left: 6px"
@click="handleCopyApi"
>
{{ $T('UPLOAD_PAGE_COPY_UPLOAD_API') }}
{{ $t('UPLOAD_PAGE_COPY_UPLOAD_API') }}
</el-button>
</div>
<config-form
@@ -40,14 +40,14 @@
round
@click="handleReset"
>
{{ $T('RESET_PICBED_CONFIG') }}
{{ $t('RESET_PICBED_CONFIG') }}
</el-button>
<el-button
type="success"
round
@click="handleConfirm"
>
{{ $T('CONFIRM') }}
{{ $t('CONFIRM') }}
</el-button>
<el-button
round
@@ -62,7 +62,7 @@
:disabled="picBedConfigList.length === 0"
teleported
>
{{ $T('MANAGE_LOGIN_PAGE_PANE_IMPORT') }}
{{ $t('MANAGE_LOGIN_PAGE_PANE_IMPORT') }}
<template #dropdown>
<el-dropdown-item
v-for="i in picBedConfigList"
@@ -82,7 +82,7 @@
class="single"
>
<div class="notice">
{{ $T('SETTINGS_NOT_CONFIG_OPTIONS') }}
{{ $t('SETTINGS_NOT_CONFIG_OPTIONS') }}
</div>
</div>
</el-col>
@@ -95,16 +95,17 @@ import { Link } from '@element-plus/icons-vue'
import dayjs from 'dayjs'
import { ElDropdown, ElMessage } from 'element-plus'
import { onBeforeMount, ref } from 'vue'
import { useI18n } from 'vue-i18n'
import { useRoute, useRouter } from 'vue-router'
import ConfigForm from '@/components/ConfigForm.vue'
import { T as $T } from '@/i18n/index'
import { getConfig } from '@/utils/dataSender'
import { II18nLanguage, IRPCActionType } from '#/types/enum'
import { IPicGoPluginConfig, IStringKeyMap, IUploaderConfigItem, IUploaderConfigListItem } from '#/types/types'
import { configPaths } from '#/utils/configPaths'
import { picBedManualUrlList } from '#/utils/static'
const { t } = useI18n()
const type = ref('')
const config = ref<IPicGoPluginConfig[]>([])
const picBedConfigList = ref<IUploaderConfigListItem[]>([])
@@ -124,8 +125,8 @@ const handleConfirm = async () => {
const result = (await $configForm.value?.validate()) || false
if (result !== false) {
await window.electron.triggerRPC<void>(IRPCActionType.UPLOADER_UPDATE_CONFIG, type.value, result?._id, result)
const successNotification = new Notification($T('SETTINGS_RESULT'), {
body: $T('TIPS_SET_SUCCEED')
const successNotification = new Notification(t('SETTINGS_RESULT'), {
body: t('TIPS_SET_SUCCEED')
})
successNotification.onclick = () => {
return true
@@ -167,8 +168,8 @@ async function handleConfigImport (configItem: IUploaderConfigListItem) {
const handleReset = async () => {
await window.electron.triggerRPC<void>(IRPCActionType.UPLOADER_RESET_CONFIG, type.value, $route.params.configId)
const successNotification = new Notification($T('SETTINGS_RESULT'), {
body: $T('TIPS_RESET_SUCCEED')
const successNotification = new Notification(t('SETTINGS_RESULT'), {
body: t('TIPS_RESET_SUCCEED')
})
successNotification.onclick = () => {
return true
@@ -197,7 +198,7 @@ async function handleCopyApi () {
}
const apiUrl = `http://${host === '0.0.0.0' ? '127.0.0.1' : host}:${port}/upload?picbed=${$route.params.type}&configName=${picBedConfig._configName}${serverKey ? `&key=${serverKey}` : ''}`
window.electron.clipboard.writeText(apiUrl)
ElMessage.success(`${$T('MANAGE_BUCKET_COPY_SUCCESS')} ${apiUrl}`)
ElMessage.success(`${t('MANAGE_BUCKET_COPY_SUCCESS')} ${apiUrl}`)
} catch (error) {
console.log(error)
ElMessage.error('Copy failed')

View File

@@ -1,22 +0,0 @@
import pkg from 'root/package.json'
import { handleTalkingDataEvent } from '@/utils/common'
import { TALKING_DATA_APPID, TALKING_DATA_EVENT } from '#/events/constants'
import { ITalkingDataOptions } from '#/types/types'
const { version } = pkg
export const initTalkingData = () => {
setTimeout(() => {
const talkingDataScript = document.createElement('script')
talkingDataScript.src = `http://sdk.talkingdata.com/app/h5/v1?appid=${TALKING_DATA_APPID}&vn=${version}&vc=${version}`
const head = document.getElementsByTagName('head')[0]
head.appendChild(talkingDataScript)
}, 0)
}
window.electron.ipcRendererOn(TALKING_DATA_EVENT, (_, data: ITalkingDataOptions) => {
handleTalkingDataEvent(data)
})

View File

@@ -1,17 +1,5 @@
import { isReactive, isRef, toRaw, unref } from 'vue'
import { ITalkingDataOptions } from '#/types/types'
export const handleTalkingDataEvent = (data: ITalkingDataOptions) => {
try {
const { EventId, Label = '', MapKv = {} } = data
MapKv.from = window.location.href
window.TDAPP.onEvent(EventId, Label, MapKv)
} catch (e) {
console.error(e)
}
}
/**
* get raw data from reactive or ref
*/

View File

@@ -1,5 +1,4 @@
import { IRPCActionType } from 'root/src/universal/types/enum'
import { IRPCActionType } from '#/types/enum'
import { IObj } from '#/types/types'
export function saveConfig (config: IObj | string, value?: any) {

View File

@@ -1,14 +0,0 @@
import { ILogType, IRPCActionType } from '#/types/enum'
export const deleteLog = (fileName?: string, type?: string, isSuccess = true, msg?: string) => {
window.electron.sendRPC(
IRPCActionType.GALLERY_LOG_DELETE_MSG,
msg || `Delete ${fileName} on ${type} success`,
isSuccess ? ILogType.success : ILogType.error
)
}
export const deleteFailedLog = (fileName: string, type: string, error: any) => {
deleteLog(fileName, type, false)
window.electron.sendRPC(IRPCActionType.GALLERY_LOG_DELETE_MSG, error, ILogType.error)
}

View File

@@ -1,9 +1,6 @@
export const SHOW_INPUT_BOX = 'SHOW_INPUT_BOX'
export const SHOW_INPUT_BOX_RESPONSE = 'SHOW_INPUT_BOX_RESPONSE'
export const TOGGLE_SHORTKEY_MODIFIED_MODE = 'TOGGLE_SHORTKEY_MODIFIED_MODE'
// talking data
export const TALKING_DATA_APPID = 'B743C16E2989419A9B02EDE9D1E6A530'
export const TALKING_DATA_EVENT = 'TALKING_DATA_EVENT'
// picgo plugin
export const PICGO_CONFIG_PLUGIN = 'PICGO_CONFIG_PLUGIN'
export const PICGO_HANDLE_PLUGIN_ING = 'PICGO_HANDLE_PLUGIN_ING'

View File

@@ -79,8 +79,6 @@ export enum IRPCActionType {
OPEN_URL = 'OPEN_URL',
OPEN_FILE = 'OPEN_FILE',
HIDE_DOCK = 'HIDE_DOCK',
GET_LANGUAGE_LIST = 'GET_LANGUAGE_LIST',
GET_CURRENT_LANGUAGE = 'GET_CURRENT_LANGUAGE',
SET_CURRENT_LANGUAGE = 'SET_CURRENT_LANGUAGE',
OPEN_WINDOW = 'OPEN_WINDOW',
OPEN_MINI_WINDOW = 'OPEN_MINI_WINDOW',
@@ -154,12 +152,6 @@ export enum IRPCActionType {
GALLERY_REMOVE_BY_ID_DB = 'GALLERY_REMOVE_BY_ID_DB',
GALLERY_INSERT_DB = 'GALLERY_INSERT_DB',
GALLERY_INSERT_DB_BATCH = 'GALLERY_INSERT_DB_BATCH',
GALLERY_LOG_DELETE_MSG = 'GALLERY_LOG_DELETE_MSG',
GALLERY_DELETE_SFTP_FILE = 'GALLERY_DELETE_SFTP_FILE',
GALLERY_DELETE_AWS_S3_FILE = 'GALLERY_DELETE_AWS_S3_FILE',
GALLERY_DELETE_DOGE_FILE = 'GALLERY_DELETE_DOGE_FILE',
GALLERY_DELETE_HUAWEI_OSS_FILE = 'GALLERY_DELETE_HUAWEI_OSS_FILE',
// plugin rpc
PLUGIN_GET_LIST = 'PLUGIN_GET_LIST',
PLUGIN_INSTALL = 'PLUGIN_INSTALL',

View File

@@ -9,13 +9,10 @@ export interface ILocales {
UPLOAD_SUCCEED: string
UPLOAD_FAILED: string
UPLOAD_PROGRESS: string
OPERATION_SUCCEED: string
OPERATION_FAILED: string
UPLOADING: string
QUICK_UPLOAD: string
UPLOAD_BY_CLIPBOARD: string
SHOW_PICBED_QRCODE: string
PICBED_QRCODE: string
ENABLE: string
DISABLE: string
CONFIG_THING: string
@@ -29,18 +26,6 @@ export interface ILocales {
STOP_WATCH_CLIPBOARD: string
OPEN_TOOLBOX: string
TOOLBOX: string
TOOLBOX_TITLE: string
TOOLBOX_SUB_TITLE: string
TOOLBOX_CHECK_CONFIG_FILE_BROKEN: string
TOOLBOX_CHECK_GALLERY_FILE_BROKEN: string
TOOLBOX_CHECK_PROBLEM_WITH_CLIPBOARD_PIC_UPLOAD: string
TOOLBOX_CHECK_PROBLEM_WITH_PROXY: string
TOOLBOX_FIX_DONE_NEED_RELOAD: string
TOOLBOX_CANT_AUTO_FIX: string
TOOLBOX_START_SCAN: string
TOOLBOX_RE_SCAN: string
TOOLBOX_START_FIX: string
TOOLBOX_SUCCESS_TIPS: string
TOOLBOX_CHECK_CONFIG_FILE_PATH_TIPS: string
TOOLBOX_CHECK_CONFIG_FILE_BROKEN_TIPS: string
TOOLBOX_CHECK_GALLERY_FILE_PATH_TIPS: string
@@ -52,865 +37,12 @@ export interface ILocales {
TOOLBOX_CHECK_CLIPBOARD_FILE_PATH_TIPS: string
TOOLBOX_CHECK_CLIPBOARD_FILE_PATH_NOT_EXIST_TIPS: string
TOOLBOX_CHECK_CLIPBOARD_FILE_PATH_ERROR_TIPS: string
MANUAL_PAGE_OPEN_TIP: string
MANUAL_PAGE_OPEN_TIP_TITLE: string
MANUAL_PAGE_OPEN_BY_BROWSER: string
MANUAL_PAGE_OPEN_BY_BUILD_IN: string
MANUAL_PAGE_OPEN_SETTING_TIP: string
UPLOAD_AREA: string
UPLOAD_VIEW_HINT: string
MANAGE_PAGE: string
GALLERY: string
REFRESH: string
MANUAL: string
PICBEDS_SETTINGS: string
PICLIST_SETTINGS: string
PLUGIN_SETTINGS: string
CHOOSE_PICBED: string
COPY_PICBED_CONFIG: string
COPY_PICBED_CONFIG_SUCCEED: string
INPUT: string
CANCEL: string
CONFIRM: string
RESET_PICBED_CONFIG: string
CHOOSE_SHOWED_PICBED: string
CHOOSE_PASTE_FORMAT: string
COPY: string
DELETE: string
SELECT_ALL: string
CHANGE_IMAGE_URL: string
CHANGE_IMAGE_URL_SUCCEED: string
COPY_LINK_SUCCEED: string
BATCH_COPY_LINK_SUCCEED: string
FILE_RENAME: string
OPEN_FILE_PATH: string
GALLERY_SYNC_DELETE: string
GALLERY_SYNC_DELETE_NOTICE_TITLE: string
GALLERY_SYNC_DELETE_NOTICE_SUCCEED: string
GALLERY_SYNC_DELETE_NOTICE_FAILED: string
GALLERY_CHANGE_URL: string
GALLERY_SEARCH_FILENAME: string
GALLERY_SEARCH_URL: string
GALLERY_MATCHED: string
UPLOAD_PAGE_COPY_UPLOAD_API: string
UPLOAD_PAGE_IMAGE_PROCESS_NAME: string
UPLOAD_PAGE_IMAGE_PROCESS_DIALOG_TITLE: string
UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST: string
UPLOAD_PAGE_IMAGE_PROCESS_SKIP_PROCESS_EXT_LIST_TIPS: string
UPLOAD_PAGE_IMAGE_PROCESS_ISADDWM: string
UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE: string
UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE_TEXT: string
UPLOAD_PAGE_IMAGE_PROCESS_WMTYPE_IMAGE: string
UPLOAD_PAGE_IMAGE_PROCESS_ISFULLSCREEN_WM: string
UPLOAD_PAGE_IMAGE_PROCESS_WMDEGREE: string
UPLOAD_PAGE_IMAGE_PROCESS_WMTEXT: string
UPLOAD_PAGE_IMAGE_PROCESS_WMTEXT_FONT_PATH: string
UPLOAD_PAGE_IMAGE_PROCESS_WMRATIO: string
UPLOAD_PAGE_IMAGE_PROCESS_WMCOLOR: string
UPLOAD_PAGE_IMAGE_PROCESS_WMPATH: string
UPLOAD_PAGE_IMAGE_PROCESS_WMPOSITION: string
UPLOAD_PAGE_IMAGE_PROCESS_ISREMOVEEXIF: string
UPLOAD_PAGE_IMAGE_PROCESS_QUALITY: string
UPLOAD_PAGE_IMAGE_PROCESS_ISCONVERT: string
UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT: string
UPLOAD_PAGE_IMAGE_PROCESS_CONVERTFORMAT_SPECIFIC: string
UPLOAD_PAGE_IMAGE_PROCESS_ISFLIP: string
UPLOAD_PAGE_IMAGE_PROCESS_ISFLOP: string
UPLOAD_PAGE_IMAGE_PROCESS_ISRESIZE: string
UPLOAD_PAGE_IMAGE_PROCESS_RESIZEWIDTH: string
UPLOAD_PAGE_IMAGE_PROCESS_RESIZEHEIGHT: string
UPLOAD_PAGE_IMAGE_PROCESS_SKIPRESIZEOfSMALLIMG_HEIGHT: string
UPLOAD_PAGE_IMAGE_PROCESS_SKIPRESIZEOfSMALLIMG_WIDTH: string
UPLOAD_PAGE_IMAGE_PROCESS_ISRESIZEBYPERCENT: string
UPLOAD_PAGE_IMAGE_PROCESS_RESIZEPERCENT: string
UPLOAD_PAGE_IMAGE_PROCESS_ISROTATE: string
UPLOAD_PAGE_IMAGE_PROCESS_ROTATEDEGREE: string
UPLOAD_PAGE_IMAGE_PROCESS_CONFIRM: string
UPLOAD_PAGE_IMAGE_PROCESS_CANCEL: string
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP: string
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM: string
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_LEFT: string
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_RIGHT: string
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP_LEFT: string
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_TOP_RIGHT: string
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM_LEFT: string
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_BOTTOM_RIGHT: string
UPLOAD_PAGE_IMAGE_PROCESS_POSITION_CENTER: string
UPLOAD_SHORT_URL: string
UPLOAD_NORMAL_URL: string
SETTINGS: string
SETTINGS_OPEN_CONFIG_FILE: string
SETTINGS_MIGRATE_FROM_PICGO: string
SETTINGS_MIGRATE_FROM_PICGO_TITLE: string
SETTINGS_MIGRATE_FROM_PICGO_CONTENT: string
SETTINGS_MIGRATE_FROM_PICGO_SUCCESS: string
SETTINGS_MIGRATE_FROM_PICGO_FAILED: string
SETTINGS_START_MODE: string
SETTINGS_START_MODE_MINI: string
SETTINGS_START_MODE_MAIN: string
SETTINGS_START_MODE_NO_TRAY: string
SETTINGS_START_MODE_QUIET: string
SETTINGS_CLICK_TO_OPEN: string
SETTINGS_SET_LOG_FILE: string
SETTINGS_CLICK_TO_SET: string
SETTINGS_CLICK_TO_CHECK: string
SETTINGS_SET_SHORTCUT: string
SETTINGS_CUSTOM_LINK_FORMAT: string
SETTINGS_SET_PROXY_AND_MIRROR: string
SETTINGS_SET_SERVER: string
SETTINGS_CHECK_UPDATE: string
SETTINGS_OPEN_UPDATE_HELPER: string
SETTINGS_OPEN: string
SETTINGS_CLOSE: string
SETTINGS_CLOSE_MINI_WINDOW_SYNC: string
SETTINGS_CLOSE_MAIN_WINDOW_SYNC: string
SETTINGS_LAUNCH_ON_BOOT: string
SETTINGS_RENAME_BEFORE_UPLOAD: string
SETTINGS_TIMESTAMP_RENAME: string
SETTINGS_ADVANCED_RENAME: string
SETTINGS_ADVANCED_RENAME_ENABLE: string
SETTINGS_ADVANCED_RENAME_FORMAT: string
SETTINGS_ENABLE_SECOND_PICBED: string
SETTINGS_SET_SECOND_PICBED: string
SETTINGS_OPEN_UPLOAD_TIPS: string
SETTINGS_OPEN_UPLOAD_RESULT_TIPS: string
SETTINGS_MINI_WINDOW_ON_TOP: string
SETTINGS_AUTO_COPY_URL_AFTER_UPLOAD: string
SETTINGS_TIPS_PLACEHOLDER_URL: string
SETTINGS_TIPS_PLACEHOLDER_FILENAME: string
SETTINGS_TIPS_PLACEHOLDER_EXTNAME: string
SETTINGS_TIPS_SUCH_AS: string
SETTINGS_UPLOAD_PROXY: string
SETTINGS_PLUGIN_INSTALL_PROXY: string
SETTINGS_PLUGIN_INSTALL_MIRROR: string
SETTINGS_CURRENT_VERSION: string
SETTINGS_NEWEST_VERSION: string
SETTINGS_GETING: string
SETTINGS_TIPS_HAS_NEW_VERSION: string
SETTINGS_LOG_FILE_PATH: string
SETTINGS_CONFIG_FILE_PATH: string
SETTINGS_LOG_FILE: string
SETTINGS_GUI_LOG_FILE: string
SETTINGS_MANAGE_LOG_FILE: string
SETTINGS_LOG_LEVEL: string
SETTINGS_LOG_FILE_SIZE: string
SETTINGS_SET_PICGO_SERVER: string
SETTINGS_TIPS_SERVER_NOTICE: string
SETTINGS_ENABLE_SERVER: string
SETTINGS_SET_SERVER_HOST: string
SETTINGS_SET_SERVER_PORT: string
SETTINGS_SET_SERVER_KEY: string
SETTINGS_SET_WEB_SERVER: string
SETTINGS_TIPS_WEB_SERVER_NOTICE: string
SETTINGS_SET_ENABLE_WEB_SERVER: string
SETTINGS_SET_WEB_SERVER_HOST: string
SETTINGS_SET_WEB_SERVER_PORT: string
SETTINGS_SET_WEB_SERVER_PATH: string
SETTINGS_TIP_PLACEHOLDER_WEB_HOST: string
SETTINGS_TIP_PLACEHOLDER_WEB_PORT: string
SETTINGS_TIP_PLACEHOLDER_HOST: string
SETTINGS_TIP_PLACEHOLDER_PORT: string
SETTINGS_TIP_PLACEHOLDER_KEY: string
SETTINGS_SET_SERVER_AES_KEY: string
SETTINGS_LOG_LEVEL_ALL: string
SETTINGS_LOG_LEVEL_SUCCESS: string
SETTINGS_LOG_LEVEL_ERROR: string
SETTINGS_LOG_LEVEL_INFO: string
SETTINGS_LOG_LEVEL_WARN: string
SETTINGS_LOG_LEVEL_NONE: string
SETTINGS_RESULT: string
SETTINGS_DEFAULT_PICBED: string
SETTINGS_SET_DEFAULT_PICBED: string
SETTINGS_NOT_CONFIG_OPTIONS: string
SETTINGS_USE_BUILTIN_CLIPBOARD_UPLOAD: string
SETTINGS_CHOOSE_LANGUAGE: string
BUILTIN_CLIPBOARD_TIPS: string
UPLOADER_CONFIG_NAME: string
UPLOADER_CONFIG_PLACEHOLDER: string
SELECTED_SETTING_HINT: string
SETTINGS_MAIN_WINDOW_SIZE: string
SETTINGS_MAIN_WINDOW_SIZE_WIDTH: string
SETTINGS_MAIN_WINDOW_WIDTH_HINT: string
SETTINGS_MAIN_WINDOW_SIZE_HEIGHT: string
SETTINGS_MAIN_WINDOW_HEIGHT_HINT: string
SETTINGS_RAW_PICGO_SIZE: string
SETTINGS_CUSTOM_MINI_ICON_PATH: string
SETTINGS_CUSTOM_MINI_ICON: string
SETTINGS_COMPRESS_AND_WATERMARK: string
SETTINGS_SYNC_DELETE_CLOUD: string
SETTINGS_ISHIDEDOCK: string
SETTINGS_ISHIDEDOCK_TIPS: string
SETTINGS_ENCODE_OUTPUT_URL: string
SETTINGS_WATCH_CLIPBOARD: string
SETTINGS_SHORT_URL: string
SETTINGS_SHORT_URL_SERVER: string
SETTINGS_SHORT_URL_C1N_TOKEN: string
SETTINGS_SHORT_URL_YOURLS_DOMAIN: string
SETTINGS_SHORT_URL_YOURLS_SIGNATURE: string
SETTINGS_SHORT_URL_CF_WORKER_HOST: string
SETTINGS_SHORT_SINK_DOMAIN: string
SETTINGS_SHORT_SINK_TOKEN: string
SETTINGS_DELETE_LOCAL_FILE_AFTER_UPLOAD: string
SETTINGS_SYNC_CONFIG: string
SETTINGS_SYNC_CONFIG_TITLE: string
SETTINGS_SYNC_CONFIG_NOTE: string
SETTINGS_SYNC_CONFIG_SELECT_TYPE: string
SETTINGS_SYNC_CONFIG_SELECT_FILE: string
SETTINGS_SYNC_CONFIG_SELECT_CONFIG: string
SETTINGS_SYNC_CONFIG_SELECT_GALLERY: string
SETTINGS_SYNC_CONFIG_SELECT_BOTH: string
SETTINGS_SYNC_CONFIG_GITEA_HOST: string
SETTINGS_SYNC_CONFIG_GITHUB_USERNAME: string
SETTINGS_SYNC_CONFIG_GITEA_USERNAME: string
SETTINGS_SYNC_CONFIG_GITEE_USERNAME: string
SETTINGS_SYNC_CONFIG_GITHUB_REPO: string
SETTINGS_SYNC_CONFIG_GITEA_REPO: string
SETTINGS_SYNC_CONFIG_GITEE_REPO: string
SETTINGS_SYNC_CONFIG_GITHUB_BRANCH: string
SETTINGS_SYNC_CONFIG_GITEA_BRANCH: string
SETTINGS_SYNC_CONFIG_GITEE_BRANCH: string
SETTINGS_SYNC_CONFIG_GITHUB_TOKEN: string
SETTINGS_SYNC_CONFIG_GITEA_TOKEN: string
SETTINGS_SYNC_CONFIG_GITEE_TOKEN: string
SETTINGS_SYNC_CONFIG_PROXY: string
SETTINGS_SYNC_CONFIG_GITHUB_USERNAME_PLACEHOLDER: string
SETTINGS_SYNC_CONFIG_GITEA_USERNAME_PLACEHOLDER: string
SETTINGS_SYNC_CONFIG_GITEE_USERNAME_PLACEHOLDER: string
SETTINGS_SYNC_CONFIG_GITHUB_REPO_PLACEHOLDER: string
SETTINGS_SYNC_CONFIG_GITEA_REPO_PLACEHOLDER: string
SETTINGS_SYNC_CONFIG_GITEE_REPO_PLACEHOLDER: string
SETTINGS_SYNC_CONFIG_GITHUB_BRANCH_PLACEHOLDER: string
SETTINGS_SYNC_CONFIG_GITEA_BRANCH_PLACEHOLDER: string
SETTINGS_SYNC_CONFIG_GITEE_BRANCH_PLACEHOLDER: string
SETTINGS_SYNC_CONFIG_GITHUB_TOKEN_PLACEHOLDER: string
SETTINGS_SYNC_CONFIG_GITEA_TOKEN_PLACEHOLDER: string
SETTINGS_SYNC_CONFIG_GITEE_TOKEN_PLACEHOLDER: string
SETTINGS_SYNC_CONFIG_PROXY_PLACEHOLDER: string
SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT: string
SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT_PLACEHOLDER: string
SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME: string
SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME_PLACEHOLDER: string
SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD: string
SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD_PLACEHOLDER: string
SETTINGS_SYNC_CONFIG_WEBDAV_AUTH_TYPE: string
SETTINGS_SYNC_CONFIG_WEBDAV_SSL_ENABLED: string
SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH: string
SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH_PLACEHOLDER: string
SETTINGS_UP_DOWN_DESC: string
SETTINGS_SYNC_UPLOAD: string
SETTINGS_SYNC_DOWNLOAD: string
SETTINGS_SYNC_UPLOAD_ALL: string
SETTINGS_SYNC_DOWNLOAD_ALL: string
SETTINGS_SYNC_UPLOAD_SUCCESS: string
SETTINGS_SYNC_UPLOAD_FAILED: string
SETTINGS_SYNC_DOWNLOAD_SUCCESS: string
SETTINGS_SYNC_DOWNLOAD_FAILED: string
SETTINGS_SYNC_COMMON_CONFIG: string
SETTINGS_SYNC_MANAGE_CONFIG: string
SETTINGS_AUTO_IMPORT: string
SETTINGS_AUTO_IMPORT_SELECT_PICBED: string
SETTINGS_TAB_SYSTEM: string
SETTINGS_TAB_SYNC_CONFIG: string
SETTINGS_TAB_UPLOAD: string
SETTINGS_TAB_ADVANCED: string
SETTINGS_TAB_UPDATE: string
SHORTCUT_NAME: string
SHORTCUT_BIND: string
SHORTCUT_STATUS: string
SHORTCUT_ENABLED: string
SHORTCUT_DISABLED: string
SHORTCUT_SOURCE: string
SHORTCUT_HANDLE: string
SHORTCUT_ENABLE: string
SHORTCUT_DISABLE: string
SHORTCUT_EDIT: string
SHORTCUT_CHANGE_UPLOAD: string
WAIT_TO_UPLOAD: string
ALREADY_UPLOAD: string
DRAG_FILE_TO_HERE: string
CLICK_TO_UPLOAD: string
LINK_FORMAT: string
CLIPBOARD_PICTURE: string
TIPS_DRAG_VALID_PICTURE_OR_URL: string
TIPS_INPUT_URL: string
TIPS_HTTP_PREFIX: string
TIPS_INPUT_VALID_URL: string
PLUGIN_SEARCH_PLACEHOLDER: string
PLUGIN_INSTALL: string
PLUGIN_INSTALLING: string
PLUGIN_INSTALLED: string
PLUGIN_DOING_SOMETHING: string
PLUGIN_LIST: string
PLUGIN_IMPORT_LOCAL: string
PLUGIN_UPDATE_ALL: string
TIPS_REMOVE_LINK: string
TIPS_WILL_REMOVE_CHOOSED_IMAGES: string
TIPS_MUST_CONTAINS_URL: string
TIPS_NETWORK_ERROR: string
TIPS_NEED_RELOAD: string
TIPS_PLEASE_CHOOSE_LOG_LEVEL: string
TIPS_SET_SUCCEED: string
TIPS_RESET_SUCCEED: string
TIPS_PLUGIN_NOT_GUI_IMPLEMENT: string
TIPS_GET_PLUGIN_LIST_FAILED: string
MANAGE_SETTING_TITLE: string
MANAGE_SETTING_ISAUTOREFRESH_TITLE: string
MANAGE_SETTING_ISAUTOREFRESH_TIPS: string
MANAGE_SETTING_CLEAR_CACHE_TITLE: string
MANAGE_SETTING_CLEAR_CACHE_FREE_TITLE: string
MANAGE_SETTING_CLEAR_CACHE_TIPS: string
MANAGE_SETTING_CLEAR_CACHE_PROMPT: string
MANAGE_SETTING_CLEAR_CACHE_BUTTON: string
MANAGE_SETTING_ISSHOWTHUMBNAIL_TITLE: string
MANAGE_SETTING_ISUSEPRESIGNEDURL_TITLE: string
MANAGE_SETTING_ISSHOWLIST_TITLE: string
MANAGE_SETTING_ISSHOWLIST_ON: string
MANAGE_SETTING_ISSHOWLIST_OFF: string
MANAGE_SETTING_ISFORCECUSTOMURLHTTPS_TITLE: string
MANAGE_SETTING_ISFORCECUSTOMURLHTTPS_TIPS: string
MANAGE_SETTING_ISUPLOADKEEPDIRSTRUCTURE_TITLE: string
MANAGE_SETTING_ISUPLOADKEEPDIRSTRUCTURE_TIPS: string
MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_A: string
MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_B: string
MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_C: string
MANAGE_SETTING_ISDOWNLOADFOLDERKEEPDIRSTRUCTURE_TITLE_D: string
MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TIPS: string
MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_TITLE: string
MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_TIPS: string
MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_INPUT_TIPS: string
MANAGE_SETTING_ISIGNORECASE_TITLE: string
MANAGE_SETTING_ISIGNORECASE_TIPS: string
MANAGE_SETTING_TIMESTAMPRENAME_TITLE: string
MANAGE_SETTING_TIMESTAMPRENAME_TIPS: string
MANAGE_SETTING_RANDOMSTRINGRENAME_TITLE: string
MANAGE_SETTING_RANDOMSTRINGRENAME_TIPS: string
MANAGE_SETTING_CUSTOMRENAME_TITLE: string
MANAGE_SETTING_CUSTOMRENAME_TIPS: string
MANAGE_SETTING_CUSTOM_PATTERN_TITLE: string
MANAGE_SETTING_CUSTOM_PATTERN_TIPS: string
MANAGE_SETTING_CUSTOM_PATTERN_TABLE_TITLE: string
MANAGE_SETTING_CUSTOM_PATTERN_TABLE_TIPS: string
MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TITLE: string
MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TIPS: string
MANAGE_SETTING_CHOOSE_COPY_FORMAT_TITLE: string
MANAGE_SETTING_CHOOSE_COPY_FORMAT_MARKDOWN: string
MANAGE_SETTING_CHOOSE_COPY_FORMAT_MARKDOWN_WITH_LINK: string
MANAGE_SETTING_CHOOSE_COPY_FORMAT_RAWURL: string
MANAGE_SETTING_CHOOSE_COPY_FORMAT_HTML: string
MANAGE_SETTING_CHOOSE_COPY_FORMAT_BBCODE: string
MANAGE_SETTING_CHOOSE_COPY_FORMAT_CUSTOM: string
MANAGE_SETTING_CUSTOM_COPY_FORMAT_TITLE: string
MANAGE_SETTING_CUSTOM_COPY_FORMAT_TIPS: string
MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_TITLE: string
MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_TIPS: string
MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_BUTTON: string
MANAGE_SETTING_COPY_MESSAGE: string
MANAGE_SETTING_CLEAR_CACHE_SUCCESS: string
MANAGE_SETTING_CLEAR_CACHE_FAILED: string
MANAGE_SETTING_ISENCODEURL_TITLE: string
MANAGE_SETTING_ISENCODEURL_TIPS: string
MANAGE_NO_DATA: string
MANAGE_MAIN_PAGE_NEW_BUCKET: string
MANAGE_MAIN_PAGE_BACK_TO_HOME: string
MANAGE_MAIN_PAGE_SWITCH_PICBED: string
MANAGE_MAIN_PAGE_SETTING: string
MANAGE_MAIN_PAGE_SUBMIT: string
MANAGE_MAIN_PAGE_TIPS: string
MANAGE_MAIN_PAGE_TIPS_SUCCESS: string
MANAGE_MAIN_PAGE_TIPS_FAILED: string
MANAGE_MAIN_PAGE_BUCKET: string
MANAGE_MAIN_PAGE_GALLERY: string
MANAGE_MAIN_PAGE_REPOSITORY: string
MANAGE_CONSTANT_BASE_RULE: string
MANAGE_CONSTANT_ITEMS_PAGE_RULE_MESSAGE_A: string
MANAGE_CONSTANT_ITEMS_PAGE_RULE_MESSAGE_B: string
MANAGE_CONSTANT_ITEMS_PAGE_RULE_MESSAGE_C: string
MANAGE_CONSTANT_ALIAS_RULE_MESSAGE_A: string
MANAGE_CONSTANT_ALIAS_RULE_MESSAGE_B: string
MANAGE_CONSTANT_ALIAS_TOOLTIP: string
MANAGE_CONSTANT_ITEMS_PAGE_TOOLTIP: string
MANAGE_CONSTANT_PAGING_TOOLTIP: string
MANAGE_CONSTANT_BUCKET_NAME_TOOLTIP: string
MANAGE_CONSTANT_BASE_DIR_TOOLTIP: string
MANAGE_CONSTANT_IS_AUTO_CUSTOM_URL_TOOLTIP: string
MANAGE_CONSTANT_SMMS_ALIAS_DESC: string
MANAGE_CONSTANT_SMMS_ALIAS_PLACEHOLDER: string
MANAGE_CONSTANT_SMMS_TOKEN_DESC: string
MANAGE_CONSTANT_SMMS_TOKEN_PLACEHOLDER: string
MANAGE_CONSTANT_SMMS_PAGING_DESC: string
MANAGE_CONSTANT_SMMS_EXPLAIN: string
MANAGE_CONSTANT_SMMS_REFER_TEXT: string
MANAGE_CONSTANT_QINIU_NAME: string
MANAGE_CONSTANT_QINIU_ALIAS_DESC: string
MANAGE_CONSTANT_QINIU_ALIAS_PLACEHOLDER: string
MANAGE_CONSTANT_QINIU_ACCESS_KEY_DESC: string
MANAGE_CONSTANT_QINIU_ACCESS_KEY_PLACEHOLDER: string
MANAGE_CONSTANT_QINIU_SECRET_KEY_DESC: string
MANAGE_CONSTANT_QINIU_SECRET_KEY_PLACEHOLDER: string
MANAGE_CONSTANT_QINIU_BUCKET_DESC: string
MANAGE_CONSTANT_QINIU_BUCKET_PLACEHOLDER: string
MANAGE_CONSTANT_QINIU_BASE_DIR_DESC: string
MANAGE_CONSTANT_QINIU_BASE_DIR_PLACEHOLDER: string
MANAGE_CONSTANT_QINIU_IS_AUTO_CUSTOM_URL_DESC: string
MANAGE_CONSTANT_QINIU_PAGING_DESC: string
MANAGE_CONSTANT_QINIU_ITEMS_PAGE_DESC: string
MANAGE_CONSTANT_QINIU_EXPLAIN: string
MANAGE_CONSTANT_QINIU_REFER_TEXT: string
MANAGE_CONSTANT_GITHUB_ALIAS_DESC: string
MANAGE_CONSTANT_GITHUB_ALIAS_PLACEHOLDER: string
MANAGE_CONSTANT_GITHUB_TOKEN_DESC: string
MANAGE_CONSTANT_GITHUB_TOKEN_PLACEHOLDER: string
MANAGE_CONSTANT_GITHUB_TOKEN_TIPS: string
MANAGE_CONSTANT_GITHUB_USER_DESC: string
MANAGE_CONSTANT_GITHUB_USER_PLACEHOLDER: string
MANAGE_CONSTANT_GITHUB_USER_RULE_MESSAGE: string
MANAGE_CONSTANT_GITHUB_PROXY_DESC: string
MANAGE_CONSTANT_GITHUB_PROXY_PLACEHOLDER: string
MANAGE_CONSTANT_GITHUB_PROXY_TIPS: string
MANAGE_CONSTANT_GITHUB_PAGING_DESC: string
MANAGE_CONSTANT_GITHUB_CUSTOM_URL_DESC: string
MANAGE_CONSTANT_GITHUB_CUSTOM_URL_PLACEHOLDER: string
MANAGE_CONSTANT_GITHUB_CUSTOM_URL_TIPS: string
MANAGE_CONSTANT_GITHUB_CUSTOM_URL_RULE_MESSAGE_A: string
MANAGE_CONSTANT_GITHUB_CUSTOM_URL_RULE_MESSAGE_B: string
MANAGE_CONSTANT_GITHUB_EXPLAIN: string
MANAGE_CONSTANT_GITHUB_REFER_TEXT: string
MANAGE_CONSTANT_ALIYUN_NAME: string
MANAGE_CONSTANT_ALIYUN_ALIAS_DESC: string
MANAGE_CONSTANT_ALIYUN_ALIAS_PLACEHOLDER: string
MANAGE_CONSTANT_ALIYUN_ACCESS_KEY_ID_DESC: string
MANAGE_CONSTANT_ALIYUN_ACCESS_KEY_SECRET_DESC: string
MANAGE_CONSTANT_ALIYUN_ACCESS_KEY_SECRET_PLACEHOLDER: string
MANAGE_CONSTANT_ALIYUN_BUCKET_DESC: string
MANAGE_CONSTANT_ALIYUN_BUCKET_PLACEHOLDER: string
MANAGE_CONSTANT_ALIYUN_BASE_DIR_DESC: string
MANAGE_CONSTANT_ALIYUN_BASE_DIR_PLACEHOLDER: string
MANAGE_CONSTANT_ALIYUN_IS_AUTO_CUSTOM_URL_DESC: string
MANAGE_CONSTANT_ALIYUN_PAGING_DESC: string
MANAGE_CONSTANT_ALIYUN_ITEMS_PAGE_DESC: string
MANAGE_CONSTANT_ALIYUN_EXPLAIN: string
MANAGE_CONSTANT_ALIYUN_REFER_TEXT: string
MANAGE_CONSTANT_TENCENT_NAME: string
MANAGE_CONSTANT_TENCENT_ALIAS_DESC: string
MANAGE_CONSTANT_TENCENT_ALIAS_PLACEHOLDER: string
MANAGE_CONSTANT_TENCENT_SECRET_ID_DESC: string
MANAGE_CONSTANT_TENCENT_SECRET_ID_PLACEHOLDER: string
MANAGE_CONSTANT_TENCENT_SECRET_KEY_DESC: string
MANAGE_CONSTANT_TENCENT_SECRET_KEY_PLACEHOLDER: string
MANAGE_CONSTANT_TENCENT_APPID_DESC: string
MANAGE_CONSTANT_TENCENT_APPID_PLACEHOLDER: string
MANAGE_CONSTANT_TENCENT_APPID_TOOLTIP: string
MANAGE_CONSTANT_TENCENT_BUCKET_DESC: string
MANAGE_CONSTANT_TENCENT_BUCKET_PLACEHOLDER: string
MANAGE_CONSTANT_TENCENT_BASE_DIR_DESC: string
MANAGE_CONSTANT_TENCENT_BASE_DIR_PLACEHOLDER: string
MANAGE_CONSTANT_TENCENT_IS_AUTO_CUSTOM_URL_DESC: string
MANAGE_CONSTANT_TENCENT_PAGING_DESC: string
MANAGE_CONSTANT_TENCENT_ITEMS_PAGE_DESC: string
MANAGE_CONSTANT_TENCENT_EXPLAIN: string
MANAGE_CONSTANT_TENCENT_REFER_TEXT: string
MANAGE_CONSTANT_UPYUN_NAME: string
MANAGE_CONSTANT_UPYUN_ALIAS_DESC: string
MANAGE_CONSTANT_UPYUN_ALIAS_PLACEHOLDER: string
MANAGE_CONSTANT_UPYUN_BUCKET_DESC: string
MANAGE_CONSTANT_UPYUN_BUCKET_PLACEHOLDER: string
MANAGE_CONSTANT_UPYUN_OPERATOR_NAME_DESC: string
MANAGE_CONSTANT_UPYUN_OPERATOR_NAME_PLACEHOLDER: string
MANAGE_CONSTANT_UPYUN_OPERATOR_NAME_RULE: string
MANAGE_CONSTANT_UPYUN_OPERATOR_PWD_DESC: string
MANAGE_CONSTANT_UPYUN_OPERATOR_PWD_PLACEHOLDER: string
MANAGE_CONSTANT_UPYUN_OPERATOR_PWD_RULE: string
MANAGE_CONSTANT_UPYUN_BASE_DIR_DESC: string
MANAGE_CONSTANT_UPYUN_BASE_DIR_PLACEHOLDER: string
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_DESC: string
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_PLACEHOLDER: string
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_RULE_MESSAGE_A: string
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_RULE_MESSAGE_B: string
MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_DESC: string
MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_PLACEHOLDER: string
MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_TOOLTIP: string
MANAGE_CONSTANT_UPYUN_EXPIRE_TIME_DESC: string
MANAGE_CONSTANT_UPYUN_PAGING: string
MANAGE_CONSTANT_UPYUN_ITEMS_PAGE: string
MANAGE_CONSTANT_UPYUN_EXPLAIN: string
MANAGE_CONSTANT_UPYUN_REFER_TEXT: string
MANAGE_CONSTANT_IMGUR_NAME: string
MANAGE_CONSTANT_IMGUR_ALIAS_DESC: string
MANAGE_CONSTANT_IMGUR_ALIAS_PLACEHOLDER: string
MANAGE_CONSTANT_IMGUR_USERNAME_DESC: string
MANAGE_CONSTANT_IMGUR_USERNAME_PLACEHOLDER: string
MANAGE_CONSTANT_IMGUR_ACCESS_TOKEN_DESC: string
MANAGE_CONSTANT_IMGUR_ACCESS_TOKEN_PLACEHOLDER: string
MANAGE_CONSTANT_IMGUR_ACCESS_TOKEN_TOOLTIP: string
MANAGE_CONSTANT_IMGUR_PROXY_DESC: string
MANAGE_CONSTANT_IMGUR_PROXY_PLACEHOLDER: string
MANAGE_CONSTANT_IMGUR_PROXY_TOOLTIP: string
MANAGE_CONSTANT_IMGUR_EXPLAIN: string
MANAGE_CONSTANT_IMGUR_REFER_TEXT: string
MANAGE_CONSTANT_S3_NAME: string
MANAGE_CONSTANT_S3_ALIAS_DESC: string
MANAGE_CONSTANT_S3_ALIAS_PLACEHOLDER: string
MANAGE_CONSTANT_S3_ACCESS_KEY_ID_DESC: string
MANAGE_CONSTANT_S3_ACCESS_KEY_ID_PLACEHOLDER: string
MANAGE_CONSTANT_S3_SECRET_ACCESS_KEY_DESC: string
MANAGE_CONSTANT_S3_SECRET_ACCESS_KEY_PLACEHOLDER: string
MANAGE_CONSTANT_S3_ENDPOINT_DESC: string
MANAGE_CONSTANT_S3_ENDPOINT_PLACEHOLDER: string
MANAGE_CONSTANT_S3_ENDPOINT_TOOLTIP: string
MANAGE_CONSTANT_S3_SSLENABLED_DESC: string
MANAGE_CONSTANT_S3_SSLENABLED_TOOLTIP: string
MANAGE_CONSTANT_S3_FORCE_PATH_STYLE_DESC: string
MANAGE_CONSTANT_S3_FORCE_PATH_STYLE_TOOLTIP: string
MANAGE_CONSTANT_S3_PROXY_DESC: string
MANAGE_CONSTANT_S3_PROXY_PLACEHOLDER: string
MANAGE_CONSTANT_S3_PROXY_TOOLTIP: string
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_DESC: string
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_PRIVATE: string
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_PUBLIC_READ: string
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_PUBLIC_READ_WRITE: string
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_AUTHENTICATED_READ: string
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_BUCKET_OWNER_READ: string
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_BUCKET_OWNER_FULL_CONTROL: string
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_OPTIONS_AWS_EXEC_READ: string
MANAGE_CONSTANT_S3_ACL_FOR_UPLOAD_TOOLTIP: string
MANAGE_CONSTANT_S3_BUCKET_DESC: string
MANAGE_CONSTANT_S3_BUCKET_PLACEHOLDER: string
MANAGE_CONSTANT_S3_BASE_DIR_DESC: string
MANAGE_CONSTANT_S3_BASE_DIR_PLACEHOLDER: string
MANAGE_CONSTANT_S3_DOGE_CLOUD_SUPPORT_DESC: string
MANAGE_CONSTANT_S3_DOGE_CLOUD_SUPPORT_TOOLTIP: string
MANAGE_CONSTANT_S3_PAGING_DESC: string
MANAGE_CONSTANT_S3_ITEMS_PAGE_DESC: string
MANAGE_CONSTANT_S3_EXPLAIN: string
MANAGE_CONSTANT_S3_REFER_TEXT: string
MANAGE_CONSTANT_WEBDAV_ALIAS_DESC: string
MANAGE_CONSTANT_WEBDAV_ALIAS_PLACEHOLDER: string
MANAGE_CONSTANT_WEBDAV_HOST_DESC: string
MANAGE_CONSTANT_WEBDAV_HOST_PLACEHOLDER: string
MANAGE_CONSTANT_WEBDAV_HOST_TOOLTIP: string
MANAGE_CONSTANT_WEBDAV_USERNAME_DESC: string
MANAGE_CONSTANT_WEBDAV_USERNAME_PLACEHOLDER: string
MANAGE_CONSTANT_WEBDAV_BUCKET_DESC: string
MANAGE_CONSTANT_WEBDAV_BUCKET_PLACEHOLDER: string
MANAGE_CONSTANT_WEBDAV_BUCKET_TOOLTIP: string
MANAGE_CONSTANT_WEBDAV_PASSWORD_DESC: string
MANAGE_CONSTANT_WEBDAV_PASSWORD_PLACEHOLDER: string
MANAGE_CONSTANT_WEBDAV_BASE_DIR_DESC: string
MANAGE_CONSTANT_WEBDAV_BASE_DIR_PLACEHOLDER: string
MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_DESC: string
MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_PLACEHOLDER: string
MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_TOOLTIP: string
MANAGE_CONSTANT_WEBDAV_CUSTOM_URL_RULE_MESSAGE: string
MANAGE_CONSTANT_WEBDAV_WEB_PATH: string
MANAGE_CONSTANT_WEBDAV_WEB_PATH_PLACEHOLDER: string
MANAGE_CONSTANT_WEBDAV_WEB_PATH_TOOLTIP: string
MANAGE_CONSTANT_WEBDAV_PROXY_DESC: string
MANAGE_CONSTANT_WEBDAV_PROXY_PLACEHOLDER: string
MANAGE_CONSTANT_WEBDAV_PROXY_TOOLTIP: string
MANAGE_CONSTANT_WEBDAV_SSL_DESC: string
MANAGE_CONSTANT_WEBDAV_SSL_TOOLTIP: string
MANAGE_CONSTANT_WEBDAV_AUTH_TYPE_DESC: string
MANAGE_CONSTANT_WEBDAV_EXPLAIN: string
MANAGE_CONSTANT_WEBDAV_REFER_TEXT: string
MANAGE_CONSTANT_LOCAL_NAME: string
MANAGE_CONSTANT_LOCAL_ALIAS_DESC: string
MANAGE_CONSTANT_LOCAL_ALIAS_PLACEHOLDER: string
MANAGE_CONSTANT_LOCAL_BASE_DIR_DESC: string
MANAGE_CONSTANT_LOCAL_BASE_DIR_PLACEHOLDER: string
MANAGE_CONSTANT_LOCAL_CUSTOM_URL_DESC: string
MANAGE_CONSTANT_LOCAL_CUSTOM_URL_PLACEHOLDER: string
MANAGE_CONSTANT_LOCAL_CUSTOM_URL_TOOLTIP: string
MANAGE_CONSTANT_LOCAL_WEB_PATH: string
MANAGE_CONSTANT_LOCAL_WEB_PATH_PLACEHOLDER: string
MANAGE_CONSTANT_LOCAL_WEB_PATH_TOOLTIP: string
MANAGE_CONSTANT_LOCAL_EXPLAIN: string
MANAGE_CONSTANT_LOCAL_REFER_TEXT: string
MANAGE_CONSTANT_LOCAL_BASE_DIR_RULE_MESSAGE: string
MANAGE_CONSTANT_LOCAL_BUCKET_DESC: string
MANAGE_CONSTANT_LOCAL_BUCKET_PLACEHOLDER: string
MANAGE_CONSTANT_LOCAL_BUCKET_TOOLTIP: string
MANAGE_CONSTANT_SFTP_NAME: string
MANAGE_CONSTANT_SFTP_ALIAS_DESC: string
MANAGE_CONSTANT_SFTP_ALIAS_PLACEHOLDER: string
MANAGE_CONSTANT_SFTP_HOST_DESC: string
MANAGE_CONSTANT_SFTP_HOST_PLACEHOLDER: string
MANAGE_CONSTANT_SFTP_PORT_DESC: string
MANAGE_CONSTANT_SFTP_PORT_PLACEHOLDER: string
MANAGE_CONSTANT_SFTP_USERNAME_DESC: string
MANAGE_CONSTANT_SFTP_USERNAME_PLACEHOLDER: string
MANAGE_CONSTANT_SFTP_PASSWORD_DESC: string
MANAGE_CONSTANT_SFTP_PASSWORD_PLACEHOLDER: string
MANAGE_CONSTANT_SFTP_PRIVATE_KEY_DESC: string
MANAGE_CONSTANT_SFTP_PRIVATE_KEY_PLACEHOLDER: string
MANAGE_CONSTANT_SFTP_PASSPHRASE_DESC: string
MANAGE_CONSTANT_SFTP_PASSPHRASE_PLACEHOLDER: string
MANAGE_CONSTANT_SFTP_BASE_DIR_DESC: string
MANAGE_CONSTANT_SFTP_BASE_DIR_PLACEHOLDER: string
MANAGE_CONSTANT_SFTP_CUSTOM_URL_DESC: string
MANAGE_CONSTANT_SFTP_CUSTOM_URL_PLACEHOLDER: string
MANAGE_CONSTANT_SFTP_CUSTOM_URL_TOOLTIP: string
MANAGE_CONSTANT_SFTP_WEB_PATH: string
MANAGE_CONSTANT_SFTP_WEB_PATH_PLACEHOLDER: string
MANAGE_CONSTANT_SFTP_WEB_PATH_TOOLTIP: string
MANAGE_CONSTANT_SFTP_FILE_PERMISSIONS_DESC: string
MANAGE_CONSTANT_SFTP_FILE_PERMISSIONS_PLACEHOLDER: string
MANAGE_CONSTANT_SFTP_DIR_PERMISSIONS_DESC: string
MANAGE_CONSTANT_SFTP_DIR_PERMISSIONS_PLACEHOLDER: string
MANAGE_CONSTANT_SFTP_EXPLAIN: string
MANAGE_CONSTANT_SFTP_REFER_TEXT: string
MANAGE_CONSTANT_SFTP_BASE_DIR_RULE_MESSAGE: string
MANAGE_CONSTANT_SFTP_BUCKET_DESC: string
MANAGE_CONSTANT_SFTP_BUCKET_PLACEHOLDER: string
MANAGE_CONSTANT_SFTP_BUCKET_TOOLTIP: string
MANAGE_LOGIN_PAGE_PANE_NAME: string
MANAGE_LOGIN_PAGE_PANE_KEY_NAME: string
MANAGE_LOGIN_PAGE_PANE_KEY_VALUE: string
MANAGE_LOGIN_PAGE_PANE_ENTER: string
MANAGE_LOGIN_PAGE_PANE_DELETE: string
MANAGE_LOGIN_PAGE_PANE_SELECT_PLACEHOLDER: string
MANAGE_LOGIN_PAGE_PANE_IMPORT: string
MANAGE_LOGIN_PAGE_PANE_SAVE: string
MANAGE_LOGIN_PAGE_PANE_RESET: string
MANAGE_LOGIN_PAGE_PANE_TABLE_TITLE: string
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_MESSAGE_A: string
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_ALIAS_MESSAGE: string
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_ITEMS_PER_PAGE_MESSAGE: string
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_CUSTOM_URL_MESSAGE: string
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_NAME: string
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE: string
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_B: string
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_C: string
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_D: string
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_NOTICE_MESSAGE_E: string
MANAGE_LOGIN_PAGE_PANE_CONFIG_CHANGE_COPY_SUCCESS: string
MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_TITLE: string
MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_TIP: string
MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_CONFIRM: string
MANAGE_LOGIN_PAGE_PANE_DELETE_CONFIG_CANCEL: string
MANAGE_BUCKET_PAGE_LOADING_TEXT: string
MANAGE_BUCKET_PAGE_CUSTOM_URL_SELECT_PLACEHOLDER: string
MANAGE_BUCKET_PAGE_CUSTOM_URL_INPUT_PLACEHOLDER: string
MANAGE_BUCKET_PAGE_UPLOAD_FILES_TOOLTIP: string
MANAGE_BUCKET_PAGE_UPLOAD_FROM_URL_TOOLTIP: string
MANAGE_BUCKET_PAGE_CREATE_FOLDER_TOOLTIP: string
MANAGE_BUCKET_PAGE_DOWNLOAD_TOOLTIP: string
MANAGE_BUCKET_PAGE_BATCH_RENAME_TOOLTIP: string
MANAGE_BUCKET_PAGE_BATCH_COPY_URL_TOOLTIP: string
MANAGE_BUCKET_PAGE_COPY_FILE_INFO_TOOLTIP: string
MANAGE_BUCKET_PAGE_FORCE_REFRESH_TOOLTIP: string
MANAGE_BUCKET_PAGE_SEARCH_PLACEHOLDER: string
MANAGE_BUCKET_PAGE_ROOT_FOLDER: string
MANAGE_BUCKET_PAGE_FILE_NUMBER: string
MANAGE_BUCKET_PAGE_FILE_SIZE: string
MANAGE_BUCKET_PAGE_SELECT_ALL: string
MANAGE_BUCKET_PAGE_SELECT_NONE: string
MANAGE_BUCKET_PAGE_SELECT_INVERT: string
MANAGE_BUCKET_DOWNLOAD_BTN: string
MANAGE_BUCKET_DELETE_BTN: string
MANAGE_BUCKET_SORT_TITLE: string
MANAGE_BUCKET_SORT_NAME: string
MANAGE_BUCKET_SORT_SIZE: string
MANAGE_BUCKET_SORT_EXT: string
MANAGE_BUCKET_SORT_TIME: string
MANAGE_BUCKET_SORT_CHECK: string
MANAGE_BUCKET_SORT_INIT: string
MANAGE_BUCKET_URL_UPLOAD_DIALOG_TITLE: string
MANAGE_BUCKET_URL_UPLOAD_DIALOG_CONFIRM: string
MANAGE_BUCKET_URL_UPLOAD_DIALOG_CANCEL: string
MANAGE_BUCKET_URL_FORMAT_MARKDOWN: string
MANAGE_BUCKET_URL_FORMAT_MARKDOWN_WITH_LINK: string
MANAGE_BUCKET_URL_FORMAT_URL: string
MANAGE_BUCKET_URL_FORMAT_HTML: string
MANAGE_BUCKET_URL_FORMAT_BBCODE: string
MANAGE_BUCKET_URL_FORMAT_CUSTOM: string
MANAGE_BUCKET_URL_FORMAT_PRESIGN: string
MANAGE_BUCKET_FILE_INFO_TITLE: string
MANAGE_BUCKET_FILE_INFO_COPY_TIPS: string
MANAGE_BUCKET_FILE_LIST_LOADING: string
MANAGE_BUCKET_FILE_LIST_DOWNLOAD_PRE: string
MANAGE_BUCKET_KEEP_FOLDER_STRUCTURE: string
MANAGE_BUCKET_NOT_KEEP_FOLDER_STRUCTURE: string
MANAGE_BUCKET_UPLOAD_AREA_TITLE: string
MANAGE_BUCKET_UPLOAD_AREA_TEXT: string
MANAGE_BUCKET_UPLOAD_AREA_BTN_LOADING: string
MANAGE_BUCKET_UPLOAD_AREA_BTN: string
MANAGE_BUCKET_UPLOAD_AREA_CLEAR: string
MANAGE_BUCKET_UPLOAD_AREA_STATUS_UPLOADING: string
MANAGE_BUCKET_UPLOAD_AREA_COPY_TASK: string
MANAGE_BUCKET_UPLOAD_AREA_CLEAR_UPLOADED_TASK: string
MANAGE_BUCKET_UPLOAD_AREA_CLEAR_ALL_TASK: string
MANAGE_BUCKET_UPLOAD_AREA_SUCCESS: string
MANAGE_BUCKET_UPLOAD_AREA_FAILED: string
MANAGE_BUCKET_DOWNLOAD_PAGE_TITLE: string
MANAGE_BUCKET_DOWNLOADING: string
MANAGE_BUCKET_DOWNLOAD_COPY_TASK: string
MANAGE_BUCKET_DOWNLOAD_CLEAR_DOWNLOADED_TASK: string
MANAGE_BUCKET_DOWNLOAD_CLEAR_ALL_TASK: string
MANAGE_BUCKET_DOWNLOAD_OPEN_FOLDER: string
MANAGE_BUCKET_DOWNLOAD_SUCCESS: string
MANAGE_BUCKET_DOWNLOAD_FAILED: string
MANAGE_BUCKET_MARKDOWN_PREVIEW: string
MANAGE_BUCKET_PLAY: string
MANAGE_BUCKET_RENAME_FILE: string
MANAGE_BUCKET_RENAME_FILE_INPUT_A: string
MANAGE_BUCKET_RENAME_FILE_INPUT_A_TIPS: string
MANAGE_BUCKET_RENAME_FILE_INPUT_A_PLACEHOLDER: string
MANAGE_BUCKET_RENAME_FILE_INPUT_B: string
MANAGE_BUCKET_RENAME_FILE_TABLE_IID: string
MANAGE_BUCKET_RENAME_FILE_EXT: string
MANAGE_BUCKET_RENAME_FILE_EXT_TIPS: string
MANAGE_BUCKET_RENAME_FILE_EXT_YES: string
MANAGE_BUCKET_RENAME_FILE_EXT_NO: string
MANAGE_BUCKET_RENAME_FILE_CANCEL: string
MANAGE_BUCKET_RENAME_FILE_CONFIRM: string
MANAGE_BUCKET_COPY_SUCCESS: string
MANAGE_BUCKET_START_LOADING_MESSAGE: string
MANAGE_BUCKET_END_LOADING_MESSAGE_FAIL: string
MANAGE_BUCKET_LAST_PAGE_TITLE: string
MANAGE_BUCKET_LAST_PAGE_MSG: string
MANAGE_BUCKET_GET_LIST_FAIL_TITLE: string
MANAGE_BUCKET_GET_LIST_FAIL_MSG: string
MANAGE_BUCKET_GET_LIST_FAIL_MSG2: string
MANAGE_BUCKET_GET_LIST_FAIL_MSG3: string
MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_TITLE: string
MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_TIP: string
MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_CONFIRM: string
MANAGE_BUCKET_DOWNLOAD_FOLDER_BOX_CANCEL: string
MANAGE_BUCKET_DOWNLOAD_FOLDER_SUCCESS: string
MANAGE_BUCKET_DOWNLOAD_FOLDER_FAIL: string
MANAGE_BUCKET_DOWNLOAD_FOLDER_CANCEL: string
MANAGE_BUCKET_CREATE_FOLDER_BOX_TITLE: string
MANAGE_BUCKET_CREATE_FOLDER_BOX_TIP: string
MANAGE_BUCKET_CREATE_FOLDER_BOX_CONFIRM: string
MANAGE_BUCKET_CREATE_FOLDER_BOX_CANCEL: string
MANAGE_BUCKET_CREATE_FOLDER_ERROR_MSG: string
MANAGE_BUCKET_CREATE_FOLDER_SUCCESS: string
MANAGE_BUCKET_CREATE_FOLDER_FAIL: string
MANAGE_BUCKET_UPLOAD_URL_ERROR_MSQ: string
MANAGE_BUCKET_UPLOAD_URL_NOT_TITLE: string
MANAGE_BUCKET_UPLOAD_URL_NOT_MSG: string
MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG: string
MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG2: string
MANAGE_BUCKET_BATCH_RENAME_ERROR_MSG3: string
MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_A: string
MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_B: string
MANAGE_BUCKET_BATCH_RENAME_REPEATED_MSG_C: string
MANAGE_BUCKET_BATCH_RENAME_REPEATED_CONFIRM: string
MANAGE_BUCKET_BATCH_RENAME_REPEATED_CANCEL: string
MANAGE_BUCKET_BATCH_RENAME_RESULT_MSG_A: string
MANAGE_BUCKET_BATCH_RENAME_RESULT_MSG_B: string
MANAGE_BUCKET_BATCH_RENAME_CANCEL: string
MANAGE_BUCKET_BATCH_COPY_INFO_ERROR_MSG: string
MANAGE_BUCKET_BATCH_COPY_INFO_MSG_A: string
MANAGE_BUCKET_BATCH_COPY_INFO_MSG_B: string
MANAGE_BUCKET_BATCH_COPY_URL_ERROR_MSG: string
MANAGE_BUCKET_BATCH_COPY_URL_MSG_A: string
MANAGE_BUCKET_BATCH_COPY_URL_MSG_B: string
MANAGE_BUCKET_CANCEL_LOADING_TITLE: string
MANAGE_BUCKET_CANCEL_LOADING_MSG: string
MANAGE_BUCKET_CANCEL_LOADING_CONFIRM: string
MANAGE_BUCKET_CANCEL_LOADING_CANCEL: string
MANAGE_BUCKET_CANCEL_LOADING_SUCCESS: string
MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_TITLE: string
MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_MSG: string
MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_CONFIRM: string
MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_CANCEL: string
MANAGE_BUCKET_CANCEL_DOWNLOAD_LOADING_SUCCESS: string
MANAGE_BUCKET_GET_FILE_BS_NOT_TITLE: string
MANAGE_BUCKET_GET_FILE_BS_NOT_MSG: string
MANAGE_BUCKET_GET_FILE_BS_NOT_MSG2: string
MANAGE_BUCKET_BATCH_DELETE_CONFIRM_TITLE_A: string
MANAGE_BUCKET_BATCH_DELETE_CONFIRM_TITLE_B: string
MANAGE_BUCKET_BATCH_DELETE_CONFIRM_MSG: string
MANAGE_BUCKET_BATCH_DELETE_CONFIRM_CONFIRM: string
MANAGE_BUCKET_BATCH_DELETE_CONFIRM_CANCEL: string
MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_TITLE: string
MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_MSG: string
MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_MSG2: string
MANAGE_BUCKET_BATCH_DELETE_ERROR_MSG_MSG3: string
MANAGE_BUCKET_BATCH_DELETE_CANCEL: string
MANAGE_BUCKET_DELETE_CONFIRM_TITLE: string
MANAGE_BUCKET_DELETE_CONFIRM_TITLE_FOLDER: string
MANAGE_BUCKET_DELETE_CONFIRM_TITLE_FOLDER_A: string
MANAGE_BUCKET_DELETE_CONFIRM_TITLE_FILE: string
MANAGE_BUCKET_DELETE_CONFIRM_TITLE_C: string
MANAGE_BUCKET_DELETE_CONFIRM_MSG: string
MANAGE_BUCKET_DELETE_CONFIRM_CONFIRM: string
MANAGE_BUCKET_DELETE_CONFIRM_CANCEL: string
MANAGE_BUCKET_DELETE_ERROR_MSG_TITLE: string
MANAGE_BUCKET_DELETE_ERROR_MSG_MSG: string
MANAGE_BUCKET_DELETE_SUCCESS: string
MANAGE_BUCKET_DELETE_FAIL: string
MANAGE_BUCKET_DELETE_CANCEL: string
MANAGE_BUCKET_RENAME_INFO_MSG: string
MANAGE_BUCKET_RENAME_SUCCESS: string
MANAGE_BUCKET_RENAME_ERROR_MSG: string
MANAGE_BUCKET_DOWNLOAD_COLUMN_FILENAME: string
MANAGE_BUCKET_DOWNLOAD_COLUMN_FINISHTIME: string
MANAGE_BUCKET_DOWNLOAD_COLUMN_STATUS: string
MANAGE_BUCKET_DOWNLOAD_COLUMN_STATUS_SUCCESS: string
MANAGE_BUCKET_DOWNLOAD_COLUMN_STATUS_FAIL: string
MANAGE_BUCKET_UPLOAD_COLUMN_FILENAME: string
MANAGE_BUCKET_UPLOAD_COLUMN_TARGETFILEPATH: string
MANAGE_BUCKET_UPLOAD_COLUMN_FINISHTIME: string
MANAGE_BUCKET_UPLOAD_COLUMN_STATUS: string
MANAGE_BUCKET_UPLOAD_COLUMN_STATUS_SUCCESS: string
MANAGE_BUCKET_UPLOAD_COLUMN_STATUS_FAIL: string
MANAGE_BUCKET_DOWNLOADING_COLUMN_FILENAME: string
MANAGE_BUCKET_DOWNLOADING_COLUMN_PROGRESS: string
MANAGE_BUCKET_UPLOADING_COLUMN_FILENAME: string
MANAGE_BUCKET_UPLOADING_COLUMN_PROGRESS: string
MANAGE_BUCKET_UPLOADED_COLUMN_FILENAME: string
MANAGE_BUCKET_UPLOADED_COLUMN_FILESIZE: string
MANAGE_BUCKET_UPLOADED_COLUMN_FILENUM: string
MANAGE_BUCKET_FILE_COLUMN_FILENAME: string
MANAGE_BUCKET_FILE_COLUMN_COPY_URL: string
MANAGE_BUCKET_FILE_COLUMN_INFO: string
MANAGE_BUCKET_FILE_COLUMN_FILESIZE: string
MANAGE_BUCKET_FILE_COLUMN_TIME: string
MANAGE_NEW_BUCKET_TCYUN_NAME: string
MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_DESC: string
MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_PLACEHOLDER: string
MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_A: string
MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_B: string
MANAGE_NEW_BUCKET_TCYUN_BUCKETNAME_RULE_MSG_C: string
MANAGE_NEW_BUCKET_TCYUN_REGION: string
MANAGE_NEW_BUCKET_TCYUN_ACL_DESC: string
MANAGE_NEW_BUCKET_TCYUN_ACL_PUBLIC_RW: string
MANAGE_NEW_BUCKET_TCYUN_ACL_PUBLIC_R: string
MANAGE_NEW_BUCKET_TCYUN_ACL_PRIVATE: string
MANAGE_NEW_BUCKET_ALIYUN_NAME: string
MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_DESC: string
MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_PLACEHOLDER: string
MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_A: string
MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_B: string
MANAGE_NEW_BUCKET_ALIYUN_BUCKETNAME_RULE_MSG_C: string
MANAGE_NEW_BUCKET_ALIYUN_REGION: string
MANAGE_NEW_BUCKET_ALIYUN_ACL_DESC: string
MANAGE_NEW_BUCKET_ALIYUN_ACL_PUBLIC_RW: string
MANAGE_NEW_BUCKET_ALIYUN_ACL_PUBLIC_R: string
MANAGE_NEW_BUCKET_ALIYUN_ACL_PRIVATE: string
MANAGE_NEW_BUCKET_QINIU_NAME: string
MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_DESC: string
MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_PLACEHOLDER: string
MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_A: string
MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_B: string
MANAGE_NEW_BUCKET_QINIU_BUCKETNAME_RULE_MSG_C: string
MANAGE_NEW_BUCKET_QINIU_REGION: string
MANAGE_NEW_BUCKET_QINIU_ACL_DESC: string
MANAGE_NEW_BUCKET_S3PLIST_NAME: string
MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_DESC: string
MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_PLACEHOLDER: string
MANAGE_NEW_BUCKET_S3PLIST_BUCKETNAME_RULE_MSG_A: string
MANAGE_NEW_BUCKET_S3PLIST_REGION: string
MANAGE_NEW_BUCKET_S3PLIST_ACL_DESC: string
MANAGE_NEW_BUCKET_S3PLIST_ACL_PUBLIC_RW: string
MANAGE_NEW_BUCKET_S3PLIST_ACL_PUBLIC_R: string
MANAGE_NEW_BUCKET_S3PLIST_ACL_PRIVATE: string
MANAGE_NEW_BUCKET_S3PLIST_ACL_AUTHENTICATED_READ: string
PLUGIN_INSTALL_FAILED: string
PLUGIN_UNINSTALL_FAILED: string
PLUGIN_UPDATE_SUCCEED: string
PLUGIN_UPDATE_FAILED: string
PLUGIN_IMPORT_SUCCEED: string
PLUGIN_IMPORT_FAILED: string

View File

@@ -67,8 +67,5 @@ declare global {
setLocales: (lang: string, locales: ILocales) => void
translate: (key: ILocalesKey, args?: IStringKeyMap) => string
}
TDAPP: {
onEvent: (EventId: string, Label?: string, MapKv?: IStringKeyMap) => void
}
}
}

View File

@@ -153,12 +153,6 @@ export interface IBounds {
y: number
}
export interface ITalkingDataOptions {
EventId: string
Label?: string
MapKv?: IStringKeyMap
}
// PicGo Types
export type ICtx = PicGo
export interface IPicGoPlugin {
@@ -457,13 +451,6 @@ export interface IAppNotification {
icon?: string
}
export interface IAnalyticsData {
fromClipboard: boolean
type: string
count: number
duration?: number // 耗时
}
export interface IStringKeyMap {
[propName: string]: any
}

376
yarn.lock
View File

@@ -1151,7 +1151,7 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
"@babel/parser@^7.27.2", "@babel/parser@^7.28.0":
"@babel/parser@^7.24.6", "@babel/parser@^7.27.2", "@babel/parser@^7.28.0":
version "7.28.0"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.0.tgz#979829fbab51a29e13901e5a80713dbcb840825e"
integrity sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==
@@ -2103,6 +2103,95 @@
resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-3.0.8.tgz#efc293ba0ed91e90e6267f1aacc1c70d20b8b4e8"
integrity sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==
"@intlify/bundle-utils@^10.0.1":
version "10.0.1"
resolved "https://registry.yarnpkg.com/@intlify/bundle-utils/-/bundle-utils-10.0.1.tgz#6416e1c327bcc3b3579d803dc9bbe0d30ec0b012"
integrity sha512-WkaXfSevtpgtUR4t8K2M6lbR7g03mtOxFeh+vXp5KExvPqS12ppaRj1QxzwRuRI5VUto54A22BjKoBMLyHILWQ==
dependencies:
"@intlify/message-compiler" "^11.1.2"
"@intlify/shared" "^11.1.2"
acorn "^8.8.2"
escodegen "^2.1.0"
estree-walker "^2.0.2"
jsonc-eslint-parser "^2.3.0"
mlly "^1.2.0"
source-map-js "^1.0.1"
yaml-eslint-parser "^1.2.2"
"@intlify/core-base@10.0.8":
version "10.0.8"
resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-10.0.8.tgz#2fcf46bab72d4daa8575eb11e04a549ea4030ac3"
integrity sha512-FoHslNWSoHjdUBLy35bpm9PV/0LVI/DSv9L6Km6J2ad8r/mm0VaGg06C40FqlE8u2ADcGUM60lyoU7Myo4WNZQ==
dependencies:
"@intlify/message-compiler" "10.0.8"
"@intlify/shared" "10.0.8"
"@intlify/core-base@11.1.11":
version "11.1.11"
resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-11.1.11.tgz#e36893a7d37a3a75fae30977fc58c1d8cf3c853f"
integrity sha512-1Z0N8jTfkcD2Luq9HNZt+GmjpFe4/4PpZF3AOzoO1u5PTtSuXZcfhwBatywbfE2ieB/B5QHIoOFmCXY2jqVKEQ==
dependencies:
"@intlify/message-compiler" "11.1.11"
"@intlify/shared" "11.1.11"
"@intlify/message-compiler@10.0.8":
version "10.0.8"
resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-10.0.8.tgz#48aee742916f8aaa43945682f32bec1c9e73e2f8"
integrity sha512-DV+sYXIkHVd5yVb2mL7br/NEUwzUoLBsMkV3H0InefWgmYa34NLZUvMCGi5oWX+Hqr2Y2qUxnVrnOWF4aBlgWg==
dependencies:
"@intlify/shared" "10.0.8"
source-map-js "^1.0.2"
"@intlify/message-compiler@11.1.11", "@intlify/message-compiler@^11.1.2":
version "11.1.11"
resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-11.1.11.tgz#ba10641f86af0e991ac9def0385bd345c8f150fb"
integrity sha512-7PC6neomoc/z7a8JRjPBbu0T2TzR2MQuY5kn2e049MP7+o32Ve7O8husylkA7K9fQRe4iNXZWTPnDJ6vZdtS1Q==
dependencies:
"@intlify/shared" "11.1.11"
source-map-js "^1.0.2"
"@intlify/shared@10.0.8", "@intlify/shared@^10.0.0":
version "10.0.8"
resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-10.0.8.tgz#5f8019919dea8695b2e345257fc0cda7665d8ef9"
integrity sha512-BcmHpb5bQyeVNrptC3UhzpBZB/YHHDoEREOUERrmF2BRxsyOEuRrq+Z96C/D4+2KJb8kuHiouzAei7BXlG0YYw==
"@intlify/shared@11.1.11", "@intlify/shared@^11.1.2":
version "11.1.11"
resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-11.1.11.tgz#6bba3b86617c05767356e4ca939c9e300563a083"
integrity sha512-RIBFTIqxZSsxUqlcyoR7iiC632bq7kkOwYvZlvcVObHfrF4NhuKc4FKvu8iPCrEO+e3XsY7/UVpfgzg+M7ETzA==
"@intlify/unplugin-vue-i18n@^6.0.8":
version "6.0.8"
resolved "https://registry.yarnpkg.com/@intlify/unplugin-vue-i18n/-/unplugin-vue-i18n-6.0.8.tgz#2162dced28b01f7ea471b577ba10ecc4ba523d0d"
integrity sha512-Vvm3KhjE6TIBVUQAk37rBiaYy2M5OcWH0ZcI1XKEsOTeN1o0bErk+zeuXmcrcMc/73YggfI8RoxOUz9EB/69JQ==
dependencies:
"@eslint-community/eslint-utils" "^4.4.0"
"@intlify/bundle-utils" "^10.0.1"
"@intlify/shared" "^11.1.2"
"@intlify/vue-i18n-extensions" "^8.0.0"
"@rollup/pluginutils" "^5.1.0"
"@typescript-eslint/scope-manager" "^8.13.0"
"@typescript-eslint/typescript-estree" "^8.13.0"
debug "^4.3.3"
fast-glob "^3.2.12"
js-yaml "^4.1.0"
json5 "^2.2.3"
pathe "^1.0.0"
picocolors "^1.0.0"
source-map-js "^1.0.2"
unplugin "^1.1.0"
vue "^3.4"
"@intlify/vue-i18n-extensions@^8.0.0":
version "8.0.0"
resolved "https://registry.yarnpkg.com/@intlify/vue-i18n-extensions/-/vue-i18n-extensions-8.0.0.tgz#84adc3f40829ee144f056b774a77d838ce3f5034"
integrity sha512-w0+70CvTmuqbskWfzeYhn0IXxllr6mU+IeM2MU0M+j9OW64jkrvqY+pYFWrUnIIC9bEdij3NICruicwd5EgUuQ==
dependencies:
"@babel/parser" "^7.24.6"
"@intlify/shared" "^10.0.0"
"@vue/compiler-dom" "^3.2.45"
vue-i18n "^10.0.0"
"@isaacs/balanced-match@^4.0.1":
version "4.0.1"
resolved "https://registry.yarnpkg.com/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz#3081dadbc3460661b751e7591d7faea5df39dd29"
@@ -2457,6 +2546,15 @@
resolved "https://registry.yarnpkg.com/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.29.tgz#f8fc9a8788757dccba0d3b7fee93183621773d4c"
integrity sha512-NIJgOsMjbxAXvoGq/X0gD7VPMQ8j9g0BiDaNjVNVjvl+iKXxL3Jre0v31RmBYeLEmkbj2s02v8vFTbUXi5XS2Q==
"@rollup/pluginutils@^5.1.0":
version "5.2.0"
resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.2.0.tgz#eac25ca5b0bdda4ba735ddaca5fbf26bd435f602"
integrity sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==
dependencies:
"@types/estree" "^1.0.0"
estree-walker "^2.0.2"
picomatch "^4.0.2"
"@rollup/rollup-android-arm-eabi@4.46.2":
version "4.46.2"
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.2.tgz#292e25953d4988d3bd1af0f5ebbd5ee4d65c90b4"
@@ -3204,7 +3302,7 @@
dependencies:
"@types/ms" "*"
"@types/estree@1.0.8", "@types/estree@^1.0.6":
"@types/estree@1.0.8", "@types/estree@^1.0.0", "@types/estree@^1.0.6":
version "1.0.8"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e"
integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==
@@ -3253,14 +3351,6 @@
resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4"
integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==
"@types/inquirer@^6.5.0":
version "6.5.0"
resolved "https://registry.npmjs.org/@types/inquirer/-/inquirer-6.5.0.tgz#b83b0bf30b88b8be7246d40e51d32fe9d10e09be"
integrity sha512-rjaYQ9b9y/VFGOpqBEXRavc3jh0a+e6evAbI31tMda8VlPaSy0AZJfXsvmIe3wklc7W6C3zCSfleuMXR7NOyXw==
dependencies:
"@types/through" "*"
rxjs "^6.4.0"
"@types/js-yaml@^4.0.9":
version "4.0.9"
resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.9.tgz#cd82382c4f902fed9691a2ed79ec68c5898af4c2"
@@ -3419,13 +3509,6 @@
dependencies:
"@types/node" "^18.11.18"
"@types/through@*":
version "0.0.30"
resolved "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz#e0e42ce77e897bd6aead6f6ea62aeb135b8a3895"
integrity sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==
dependencies:
"@types/node" "*"
"@types/tunnel@^0.0.7":
version "0.0.7"
resolved "https://registry.yarnpkg.com/@types/tunnel/-/tunnel-0.0.7.tgz#6150f30579ecd467b63c13c48124150f4f52ac93"
@@ -3509,7 +3592,7 @@
"@typescript-eslint/types" "^8.38.0"
debug "^4.3.4"
"@typescript-eslint/scope-manager@8.38.0":
"@typescript-eslint/scope-manager@8.38.0", "@typescript-eslint/scope-manager@^8.13.0":
version "8.38.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.38.0.tgz#5a0efcb5c9cf6e4121b58f87972f567c69529226"
integrity sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ==
@@ -3538,7 +3621,7 @@
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.38.0.tgz#297351c994976b93c82ac0f0e206c8143aa82529"
integrity sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==
"@typescript-eslint/typescript-estree@8.38.0":
"@typescript-eslint/typescript-estree@8.38.0", "@typescript-eslint/typescript-estree@^8.13.0":
version "8.38.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.38.0.tgz#82262199eb6778bba28a319e25ad05b1158957df"
integrity sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==
@@ -3785,7 +3868,7 @@
estree-walker "^2.0.2"
source-map-js "^1.2.1"
"@vue/compiler-dom@3.5.18", "@vue/compiler-dom@^3.5.0":
"@vue/compiler-dom@3.5.18", "@vue/compiler-dom@^3.2.45", "@vue/compiler-dom@^3.5.0":
version "3.5.18"
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.5.18.tgz#e13504492c3061ec5bbe6a2e789f15261d4f03a7"
integrity sha512-RMbU6NTU70++B1JyVJbNbeFkK+A+Q7y9XKE2EM4NLGm2WFR8x9MbAtWxPPLdm0wUkuZv9trpwfSlL6tjdIa1+A==
@@ -3824,16 +3907,38 @@
de-indent "^1.0.2"
he "^1.2.0"
"@vue/devtools-api@^6.5.0":
version "6.5.0"
resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz#98b99425edee70b4c992692628fa1ea2c1e57d07"
integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==
"@vue/devtools-api@^6.6.4":
"@vue/devtools-api@^6.5.0", "@vue/devtools-api@^6.6.4":
version "6.6.4"
resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz#cbe97fe0162b365edc1dba80e173f90492535343"
integrity sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==
"@vue/devtools-api@^7.7.2":
version "7.7.7"
resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-7.7.7.tgz#5ef5f55f60396220725a273548c0d7ee983d5d34"
integrity sha512-lwOnNBH2e7x1fIIbVT7yF5D+YWhqELm55/4ZKf45R9T8r9dE2AIOy8HKjfqzGsoTHFbWbr337O4E0A0QADnjBg==
dependencies:
"@vue/devtools-kit" "^7.7.7"
"@vue/devtools-kit@^7.7.7":
version "7.7.7"
resolved "https://registry.yarnpkg.com/@vue/devtools-kit/-/devtools-kit-7.7.7.tgz#41a64f9526e9363331c72405544df020ce2e3641"
integrity sha512-wgoZtxcTta65cnZ1Q6MbAfePVFxfM+gq0saaeytoph7nEa7yMXoi6sCPy4ufO111B9msnw0VOWjPEFCXuAKRHA==
dependencies:
"@vue/devtools-shared" "^7.7.7"
birpc "^2.3.0"
hookable "^5.5.3"
mitt "^3.0.1"
perfect-debounce "^1.0.0"
speakingurl "^14.0.1"
superjson "^2.2.2"
"@vue/devtools-shared@^7.7.7":
version "7.7.7"
resolved "https://registry.yarnpkg.com/@vue/devtools-shared/-/devtools-shared-7.7.7.tgz#ff14aa8c1262ebac8c0397d3b09f767cd489750c"
integrity sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==
dependencies:
rfdc "^1.4.1"
"@vue/eslint-config-prettier@^10.2.0":
version "10.2.0"
resolved "https://registry.yarnpkg.com/@vue/eslint-config-prettier/-/eslint-config-prettier-10.2.0.tgz#49a5ed571acb81820a216e6d88ebf1f3def321d0"
@@ -3971,7 +4076,7 @@ acorn-walk@^8.1.1:
resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
acorn@^8.15.0:
acorn@^8.14.0, acorn@^8.15.0, acorn@^8.5.0, acorn@^8.8.2, acorn@^8.9.0:
version "8.15.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816"
integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==
@@ -4376,6 +4481,11 @@ before@^0.0.1:
resolved "https://registry.npmjs.org/before/-/before-0.0.1.tgz#d21270e98747e9097253441e868adb325ae72dda"
integrity sha512-1J5SWbkoVJH9DTALN8igB4p+nPKZzPrJ/HomqBDLpfUvDXCdjdBmBUcH5McZfur0lftVssVU6BZug5NYh87zTw==
birpc@^2.3.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/birpc/-/birpc-2.5.0.tgz#3a014e54c17eceba0ce15738d484ea371dbf6527"
integrity sha512-VSWO/W6nNQdyP520F1mhf+Lc2f8pjGQOtoHHm7Ze8Go1kX7akpVIrtTa0fn+HB0QJEDVacl6aO08YE0PgXfdnQ==
bl@^1.0.0:
version "1.2.3"
resolved "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7"
@@ -5001,6 +5111,11 @@ conf@^9.0.0:
pkg-up "^3.1.0"
semver "^7.3.4"
confbox@^0.1.8:
version "0.1.8"
resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.1.8.tgz#820d73d3b3c82d9bd910652c5d4d599ef8ff8b06"
integrity sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==
config-chain@^1.1.11:
version "1.1.13"
resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4"
@@ -5097,6 +5212,13 @@ convert-source-map@^2.0.0:
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
copy-anything@^3.0.2:
version "3.0.5"
resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-3.0.5.tgz#2d92dce8c498f790fa7ad16b01a1ae5a45b020a0"
integrity sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==
dependencies:
is-what "^4.1.8"
copy-to@^2.0.1:
version "2.0.1"
resolved "https://registry.npmjs.org/copy-to/-/copy-to-2.0.1.tgz#2680fbb8068a48d08656b6098092bdafc906f4a5"
@@ -5389,6 +5511,11 @@ deep-is@^0.1.3:
resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
deep-pick-omit@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/deep-pick-omit/-/deep-pick-omit-1.2.1.tgz#c035b27a4c86518b76f60ffa3004e6c61f317032"
integrity sha512-2J6Kc/m3irCeqVG42T+SaUMesaK7oGWaedGnQQK/+O0gYc+2SP5bKh/KKTE7d7SJ+GCA9UUE1GRzh6oDe0EnGw==
default-shell@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/default-shell/-/default-shell-2.2.0.tgz#31481c19747bfe59319b486591643eaf115a1864"
@@ -5420,6 +5547,11 @@ define-properties@^1.1.3:
dependencies:
object-keys "^1.0.12"
defu@^6.1.4:
version "6.1.4"
resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.4.tgz#4e0c9cf9ff68fe5f3d7f2765cc1a012dfdcb0479"
integrity sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==
degenerator@^5.0.0:
version "5.0.1"
resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-5.0.1.tgz#9403bf297c6dad9a1ece409b37db27954f91f2f5"
@@ -5439,6 +5571,11 @@ depd@^1.1.2:
resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
destr@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/destr/-/destr-2.0.5.tgz#7d112ff1b925fb8d2079fac5bdb4a90973b51fdb"
integrity sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==
destroy@^1.0.4:
version "1.2.0"
resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
@@ -6015,10 +6152,10 @@ eslint-plugin-unicorn@^60.0.0:
semver "^7.7.2"
strip-indent "^4.0.0"
eslint-plugin-vue@^10.3.0:
version "10.3.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-10.3.0.tgz#d8fb96d06bc71829177fe81590489117b9540c17"
integrity sha512-A0u9snqjCfYaPnqqOaH6MBLVWDUIN4trXn8J3x67uDcXvR7X6Ut8p16N+nYhMCQ9Y7edg2BIRGzfyZsY0IdqoQ==
eslint-plugin-vue@^10.4.0:
version "10.4.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-10.4.0.tgz#2ae20df43801d20515c58ec2ae0555bf1127a080"
integrity sha512-K6tP0dW8FJVZLQxa2S7LcE1lLw3X8VvB3t887Q6CLrFVxHYBXGANbXvwNzYIu6Ughx1bSJ5BDT0YB3ybPT39lw==
dependencies:
"@eslint-community/eslint-utils" "^4.4.0"
natural-compare "^1.4.0"
@@ -6035,16 +6172,16 @@ eslint-scope@^8.2.0, eslint-scope@^8.4.0:
esrecurse "^4.3.0"
estraverse "^5.2.0"
eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
version "3.4.3"
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
eslint-visitor-keys@^3.3.0:
version "3.3.0"
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
eslint-visitor-keys@^3.4.3:
version "3.4.3"
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
eslint-visitor-keys@^4.2.0, eslint-visitor-keys@^4.2.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1"
@@ -6100,6 +6237,15 @@ espree@^10.0.1, espree@^10.3.0, espree@^10.4.0:
acorn-jsx "^5.3.2"
eslint-visitor-keys "^4.2.1"
espree@^9.0.0:
version "9.6.1"
resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f"
integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
dependencies:
acorn "^8.9.0"
acorn-jsx "^5.3.2"
eslint-visitor-keys "^3.4.1"
esprima@^4.0.1:
version "4.0.1"
resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
@@ -6238,7 +6384,7 @@ fast-diff@^1.1.2:
resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0"
integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==
fast-glob@^3.3.2, fast-glob@^3.3.3:
fast-glob@^3.2.12, fast-glob@^3.3.2, fast-glob@^3.3.3:
version "3.3.3"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818"
integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==
@@ -7168,6 +7314,11 @@ homedir-polyfill@^1.0.1:
dependencies:
parse-passwd "^1.0.0"
hookable@^5.5.3:
version "5.5.3"
resolved "https://registry.yarnpkg.com/hookable/-/hookable-5.5.3.tgz#6cfc358984a1ef991e2518cb9ed4a778bbd3215d"
integrity sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==
hosted-git-info@^4.1.0:
version "4.1.0"
resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224"
@@ -7660,6 +7811,11 @@ is-utf8@^0.2.1:
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==
is-what@^4.1.8:
version "4.1.16"
resolved "https://registry.yarnpkg.com/is-what/-/is-what-4.1.16.tgz#1ad860a19da8b4895ad5495da3182ce2acdd7a6f"
integrity sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==
is-windows@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
@@ -7837,6 +7993,16 @@ json5@^2.2.3:
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
jsonc-eslint-parser@^2.3.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz#74ded53f9d716e8d0671bd167bf5391f452d5461"
integrity sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==
dependencies:
acorn "^8.5.0"
eslint-visitor-keys "^3.0.0"
espree "^9.0.0"
semver "^7.3.5"
jsonfile@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
@@ -8499,6 +8665,16 @@ mkdirp@^1.0.3, mkdirp@^1.0.4:
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
mlly@^1.2.0, mlly@^1.7.4:
version "1.7.4"
resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.7.4.tgz#3d7295ea2358ec7a271eaa5d000a0f84febe100f"
integrity sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==
dependencies:
acorn "^8.14.0"
pathe "^2.0.1"
pkg-types "^1.3.0"
ufo "^1.5.4"
mockdate@^3.0.5:
version "3.0.5"
resolved "https://registry.npmjs.org/mockdate/-/mockdate-3.0.5.tgz#789be686deb3149e7df2b663d2bc4392bc3284fb"
@@ -9148,6 +9324,16 @@ path-type@^4.0.0:
resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
pathe@^1.0.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec"
integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==
pathe@^2.0.1:
version "2.0.3"
resolved "https://registry.yarnpkg.com/pathe/-/pathe-2.0.3.tgz#3ecbec55421685b70a9da872b2cff3e1cbed1716"
integrity sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==
pause-stream@~0.0.11:
version "0.0.11"
resolved "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445"
@@ -9165,6 +9351,11 @@ pend@~1.2.0:
resolved "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA=
perfect-debounce@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz#9c2e8bc30b169cc984a58b7d5b28049839591d2a"
integrity sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==
performance-now@^2.1.0:
version "2.1.0"
resolved "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
@@ -9209,7 +9400,7 @@ performance-now@^2.1.0:
uuid "^11.1.0"
webdav "^5.8.0"
picocolors@^1.1.1:
picocolors@^1.0.0, picocolors@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
@@ -9234,18 +9425,21 @@ pify@^3.0.0:
resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
pinia-plugin-persistedstate@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.2.1.tgz#66780602aecd6c7b152dd7e3ddc249a1f7a13fe5"
integrity sha512-MK++8LRUsGF7r45PjBFES82ISnPzyO6IZx3CH5vyPseFLZCk1g2kgx6l/nW8pEBKxxd4do0P6bJw+mUSZIEZUQ==
pinia@^2.1.7:
version "2.1.7"
resolved "https://registry.yarnpkg.com/pinia/-/pinia-2.1.7.tgz#4cf5420d9324ca00b7b4984d3fbf693222115bbc"
integrity sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==
pinia-plugin-persistedstate@^4.4.1:
version "4.4.1"
resolved "https://registry.yarnpkg.com/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-4.4.1.tgz#2cc60432d8b5b56c49cdd1c604a709f2e2864d60"
integrity sha512-lmuMPpXla2zJKjxEq34e1E9P9jxkWEhcVwwioCCE0izG45kkTOvQfCzvwhW3i38cvnaWC7T1eRdkd15Re59ldw==
dependencies:
"@vue/devtools-api" "^6.5.0"
vue-demi ">=0.14.5"
deep-pick-omit "^1.2.1"
defu "^6.1.4"
destr "^2.0.5"
pinia@^3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/pinia/-/pinia-3.0.3.tgz#f412019bdeb2f45e85927b432803190343e12d89"
integrity sha512-ttXO/InUULUXkMHpTdp9Fj4hLpD/2AoJdmAbAeW2yu1iy1k+pkFekQXw5VpC0/5p51IOR/jDaDRfRWRnMMsGOA==
dependencies:
"@vue/devtools-api" "^7.7.2"
pinkie-promise@^2.0.0:
version "2.0.1"
@@ -9266,6 +9460,15 @@ pkcs7@^1.0.4:
dependencies:
"@babel/runtime" "^7.5.5"
pkg-types@^1.3.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.3.1.tgz#bd7cc70881192777eef5326c19deb46e890917df"
integrity sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==
dependencies:
confbox "^0.1.8"
mlly "^1.7.4"
pathe "^2.0.1"
pkg-up@^3.1.0:
version "3.1.0"
resolved "https://registry.npmmirror.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5"
@@ -9709,6 +9912,11 @@ reusify@^1.0.4:
resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
rfdc@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca"
integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==
rimraf@^3.0.0, rimraf@^3.0.2:
version "3.0.2"
resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
@@ -10112,7 +10320,7 @@ sort-keys@^2.0.0:
dependencies:
is-plain-obj "^1.0.0"
source-map-js@^1.2.1:
source-map-js@^1.0.1, source-map-js@^1.0.2, source-map-js@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
@@ -10161,6 +10369,11 @@ spdx-license-ids@^3.0.0:
resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95"
integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==
speakingurl@^14.0.1:
version "14.0.1"
resolved "https://registry.yarnpkg.com/speakingurl/-/speakingurl-14.0.1.tgz#f37ec8ddc4ab98e9600c1c9ec324a8c48d772a53"
integrity sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==
split2@^4.0.0:
version "4.2.0"
resolved "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4"
@@ -10446,6 +10659,13 @@ sumchecker@^3.0.1:
dependencies:
debug "^4.1.0"
superjson@^2.2.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/superjson/-/superjson-2.2.2.tgz#9d52bf0bf6b5751a3c3472f1292e714782ba3173"
integrity sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==
dependencies:
copy-anything "^3.0.2"
supports-color@^5.3.0:
version "5.5.0"
resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
@@ -10798,6 +11018,11 @@ typescript@^5.4.3, typescript@^5.8.3:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e"
integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==
ufo@^1.5.4:
version "1.6.1"
resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.6.1.tgz#ac2db1d54614d1b22c1d603e3aef44a85d8f146b"
integrity sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==
uglify-js@^3.1.4:
version "3.14.5"
resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.5.tgz#cdabb7d4954231d80cb4a927654c4655e51f4859"
@@ -10872,6 +11097,14 @@ universalify@^2.0.0:
resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
unplugin@^1.1.0:
version "1.16.1"
resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-1.16.1.tgz#a844d2e3c3b14a4ac2945c42be80409321b61199"
integrity sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==
dependencies:
acorn "^8.14.0"
webpack-virtual-modules "^0.6.2"
unrs-resolver@^1.9.2:
version "1.11.1"
resolved "https://registry.yarnpkg.com/unrs-resolver/-/unrs-resolver-1.11.1.tgz#be9cd8686c99ef53ecb96df2a473c64d304048a9"
@@ -11160,11 +11393,6 @@ vue-demi@*:
resolved "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz#7d90369bdae8974d87b1973564ad390182410d99"
integrity sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==
vue-demi@>=0.14.5:
version "0.14.5"
resolved "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz#676d0463d1a1266d5ab5cba932e043d8f5f2fbd9"
integrity sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==
vue-demi@^0.12.5:
version "0.12.5"
resolved "https://registry.npmjs.org/vue-demi/-/vue-demi-0.12.5.tgz#8eeed566a7d86eb090209a11723f887d28aeb2d1"
@@ -11182,6 +11410,24 @@ vue-eslint-parser@^10.2.0:
esquery "^1.6.0"
semver "^7.6.3"
vue-i18n@^10.0.0:
version "10.0.8"
resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-10.0.8.tgz#adce21f875b29589c8bd602eb28b5c6ad2d85c97"
integrity sha512-mIjy4utxMz9lMMo6G9vYePv7gUFt4ztOMhY9/4czDJxZ26xPeJ49MAGa9wBAE3XuXbYCrtVPmPxNjej7JJJkZQ==
dependencies:
"@intlify/core-base" "10.0.8"
"@intlify/shared" "10.0.8"
"@vue/devtools-api" "^6.5.0"
vue-i18n@^11.1.11:
version "11.1.11"
resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-11.1.11.tgz#b38ed214896540cf7a68932dfa565d9d4fbbffac"
integrity sha512-LvyteQoXeQiuILbzqv13LbyBna/TEv2Ha+4ZWK2AwGHUzZ8+IBaZS0TJkCgn5izSPLcgZwXy9yyTrewCb2u/MA==
dependencies:
"@intlify/core-base" "11.1.11"
"@intlify/shared" "11.1.11"
"@vue/devtools-api" "^6.5.0"
vue-router@^4.5.1:
version "4.5.1"
resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.5.1.tgz#47bffe2d3a5479d2886a9a244547a853aa0abf69"
@@ -11211,7 +11457,7 @@ vue3-photo-preview@^0.3.0:
dependencies:
lodash-es "^4.17.21"
vue@^3.5.18:
vue@^3.4, vue@^3.5.18:
version "3.5.18"
resolved "https://registry.yarnpkg.com/vue/-/vue-3.5.18.tgz#3d622425ad1391a2b0138323211ec784f4415686"
integrity sha512-7W4Y4ZbMiQ3SEo+m9lnoNpV9xG7QVMLa+/0RFwwiAVkeYoyGXqWE85jabU4pllJNUzqfLShJ5YLptewhCWUgNA==
@@ -11259,6 +11505,11 @@ webdav@^5.8.0:
url-join "^5.0.0"
url-parse "^1.5.10"
webpack-virtual-modules@^0.6.2:
version "0.6.2"
resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz#057faa9065c8acf48f24cb57ac0e77739ab9a7e8"
integrity sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==
which@^1.2.14:
version "1.3.1"
resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
@@ -11392,6 +11643,19 @@ yallist@^4.0.0:
resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
yaml-eslint-parser@^1.2.2:
version "1.3.0"
resolved "https://registry.yarnpkg.com/yaml-eslint-parser/-/yaml-eslint-parser-1.3.0.tgz#975dd11f8349e18c15c88b0e41a6d0b0377969cd"
integrity sha512-E/+VitOorXSLiAqtTd7Yqax0/pAS3xaYMP+AUUJGOK1OZG3rhcj9fcJOM5HJ2VrP1FrStVCWr1muTfQCdj4tAA==
dependencies:
eslint-visitor-keys "^3.0.0"
yaml "^2.0.0"
yaml@^2.0.0:
version "2.8.0"
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.0.tgz#15f8c9866211bdc2d3781a0890e44d4fa1a5fff6"
integrity sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==
yargs-parser@^21.0.0:
version "21.0.0"
resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz#a485d3966be4317426dd56bdb6a30131b281dc55"