diff --git a/docutranslate/static/i18nData.json b/docutranslate/static/i18nData.json
index cece3a7..f4bdc13 100644
--- a/docutranslate/static/i18nData.json
+++ b/docutranslate/static/i18nData.json
@@ -25,7 +25,8 @@
"separatorHelp": "当插入模式为附加或前置时,用于分隔原文和译文的字符。\\n 代表换行。",
"docxSettingsTitleText": "DOCX翻译选项",
"insertModeHelpDocx": "选择如何将翻译后的文本插入。",
- "separatorPlaceholder": "例如: \\n---翻译---\\n",
+ "separatorPlaceholderStructured": "例如: ---",
+ "separatorHelpDocx": "附加模式下译文会另起一段。此项用于在原文和译文段落之间添加额外内容。\\n 可在分隔符内部换行。",
"xlsxSettingsTitleText": "XLSX翻译选项",
"insertModeHelpXlsx": "选择如何将翻译后的文本插入到单元格中。",
"xlsxTranslateRegionsLabel": "翻译区域 (可选)",
@@ -34,12 +35,10 @@
"insertModeHelpSrt": "选择如何将翻译后的文本插入。",
"epubSettingsTitleText": "EPUB翻译选项",
"insertModeHelpEpub": "选择如何将翻译后的文本插入。",
- "separatorPlaceholderEpub": "例如:
(换行标签)",
- "separatorHelpEpub": "当插入模式为附加或前置时,用于分隔原文和译文的字符。<br /> 是EPUB (HTML) 中的换行标签。",
+ "separatorHelpEpub": "附加模式下译文会另起一段。此项用于在原文和译文区块之间添加额外内容。\\n 可在分隔符内部换行。",
"htmlSettingsTitleText": "HTML翻译选项",
"insertModeHelpHtml": "选择如何将翻译后的文本插入。",
- "separatorPlaceholderHtml": "例如:
(换行标签)",
- "separatorHelpHtml": "当插入模式为附加或前置时,用于分隔原文和译文的字符。<br> 是HTML中的换行标签。",
+ "separatorHelpHtml": "附加模式下译文会另起一段。此项用于在原文和译文区块之间添加额外内容。\\n 可在分隔符内部换行。",
"assSettingsTitleText": "ASS翻译选项",
"insertModeHelpAss": "选择如何将翻译后的文本插入。",
"separatorPlaceholderAss": "例如: \\N (换行符)",
@@ -47,7 +46,7 @@
"jsonSettingsTitleText": "JSON路径配置",
"jsonPathLabel": "需要翻译的JSON路径",
"jsonPathPlaceholder": "每行一个路径, 例如:\n$.name\n$.*",
- "jsonPathHelp": "采用jsonpath-ng的路径选择语法,每一行表示一个json路径。\n 将翻译路径匹配对象内的所有字符串",
+ "jsonPathHelp": "采用jsonpath-ng的路径选择语法,每一行表示一个json路径。 将翻译路径匹配对象内的所有字符串",
"parsingSettingsTitleText": "解析配置",
"parsingEngineLabel": "解析引擎",
"parsingEngineHelp": "如果上传的文件本身是.md格式,此项可不选。",
@@ -82,9 +81,9 @@
"customPromptLabel": "自定义Prompt",
"customPromptPlaceholder": "可选,如“人名保持原文不翻译”",
"chunkSizeLabel": "分块大小",
- "resetBtn": "重置",
"concurrentLabel": "并发数",
"retryLabel": "重试次数",
+ "resetBtn": "重置",
"glossaryGenTitle": "术语表",
"glossaryLabel": "术语表 (可选)",
"glossaryHelp": "选择一个或多个CSV文件。文件需包含'src'和'dst'两列标题,分别代表原文和译文。",
@@ -141,19 +140,19 @@
"glossaryTableDestination": "译文 (dst)",
"init_i18n_failed_alert": "加载界面翻译资源失败,请检查网络连接或联系管理员。",
"init_failed_alert": "初始化失败,无法连接到后端服务。请检查服务是否运行或刷新页面。",
- "apiHrefInfo302ai": "👈通过此链接注册可享1美元免费额度",
+ "glossaryEmpty": "术语表为空",
+ "apiHrefInfo302ai": "👈 通过该链接注册即享1美金免费额度",
"engineOptionIdentity": "已经是markdown格式",
"engineOptionMineru": "Mineru (推荐)",
"engineOptionDocling": "Docling (本地解析)",
- "glossaryEmpty": "术语表为空。",
- "status_selectFileFirst": "请先选择文件。",
- "status_fillRequired": "请填写所有必填项。",
- "btn_initializing": "初始化中...",
- "status_encodingAndSubmitting": "文件编码和任务提交中...",
+ "status_selectFileFirst": "请先选择文件",
+ "status_fillRequired": "请填写所有必填项",
+ "btn_initializing": "初始化中",
+ "status_encodingAndSubmitting": "文件编码和提交中...",
"status_requestOk": "请求成功,任务已开始",
"btn_cancelTranslation": "取消翻译",
"status_requestFail": "请求失败",
- "status_initFail": "任务初始化失败",
+ "status_initFail": "初始化失败",
"status_cancelling": "取消中...",
"status_cancelSent": "取消请求已发送",
"status_cancelFail": "取消失败",
@@ -161,16 +160,16 @@
"btn_reTranslate": "重新翻译",
"status_updateError": "状态更新出错",
"preview_loading": "加载预览中...",
- "preview_cantReadOriginal": "无法读取原文文件内容进行预览。",
- "preview_cantPreviewType": "不支持预览此文件类型",
- "preview_noOriginalCache": "无原文文件缓存,无法预览。",
- "preview_loadFailed": "加载预览失败",
- "pdf_preparing": "正在准备PDF...",
- "pdf_print_failed": "打印失败,请尝试手动在预览页面右键打印。",
- "pdf_fetch_failed": "获取翻译内容失败,无法生成PDF。",
+ "preview_cantReadOriginal": "无法读取原文内容",
+ "preview_cantPreviewType": "无法预览此文件类型",
+ "preview_noOriginalCache": "无原文缓存,请重新上传",
+ "preview_loadFailed": "预览加载失败",
+ "pdf_preparing": "正在准备PDF,请稍候...",
+ "pdf_print_failed": "调用打印失败,请尝试手动保存为PDF。",
+ "pdf_fetch_failed": "获取译文内容失败,无法生成PDF。",
"preview_bilingual": "双语预览",
"preview_translatedOnly": "仅译文预览",
- "admin_tasklist_failed": "管理员模式:加载任务列表失败。",
+ "admin_tasklist_failed": "管理员模式:获取任务列表失败。",
"configImportSuccess": "配置导入成功!",
"configImportError": "配置导入失败,文件格式错误。"
},
@@ -188,19 +187,20 @@
"workflowOptionAss": "ASS Subtitle Translation (.ass)",
"workflowOptionJson": "JSON Translation (.json)",
"workflowOptionHtml": "HTML Translation (.html)",
- "autoWorkflowLabel": "Auto-select workflow",
+ "autoWorkflowLabel": "Auto-select Workflow",
"txtSettingsTitleText": "TXT Translation Options",
"insertModeLabel": "Insert Mode",
- "insertModeReplace": "Replace Original (Replace)",
- "insertModeAppend": "Append to Original (Append)",
- "insertModePrepend": "Prepend to Original (Prepend)",
+ "insertModeReplace": "Replace Original",
+ "insertModeAppend": "Append to Original",
+ "insertModePrepend": "Prepend to Original",
"insertModeHelpTxt": "Choose how to insert the translated text.",
"separatorLabel": "Separator",
"separatorPlaceholderSimple": "e.g., \\n---\\n",
- "separatorHelp": "The character(s) used to separate original and translated text in 'Append' or 'Prepend' mode. \\n represents a new line.",
+ "separatorHelp": "Separator for 'Append' or 'Prepend' mode. \\n represents a newline.",
"docxSettingsTitleText": "DOCX Translation Options",
"insertModeHelpDocx": "Choose how to insert the translated text.",
- "separatorPlaceholder": "e.g., \\n---Translation---\\n",
+ "separatorPlaceholderStructured": "e.g., ---",
+ "separatorHelpDocx": "In append mode, the translation starts a new paragraph. This adds content between original and translated paragraphs. \\n can be used for newlines within the separator.",
"xlsxSettingsTitleText": "XLSX Translation Options",
"insertModeHelpXlsx": "Choose how to insert the translated text into cells.",
"xlsxTranslateRegionsLabel": "Translate Regions (Optional)",
@@ -209,29 +209,27 @@
"insertModeHelpSrt": "Choose how to insert the translated text.",
"epubSettingsTitleText": "EPUB Translation Options",
"insertModeHelpEpub": "Choose how to insert the translated text.",
- "separatorPlaceholderEpub": "e.g.,
(line break tag)",
- "separatorHelpEpub": "The character(s) used to separate original and translated text in 'Append' or 'Prepend' mode. <br /> is the line break tag in EPUB (HTML).",
+ "separatorHelpEpub": "In append mode, the translation starts a new block. This adds content between original and translated blocks. \\n can be used for newlines within the separator.",
"htmlSettingsTitleText": "HTML Translation Options",
"insertModeHelpHtml": "Choose how to insert the translated text.",
- "separatorPlaceholderHtml": "e.g.,
(line break tag)",
- "separatorHelpHtml": "The character(s) used to separate original and translated text in 'Append' or 'Prepend' mode. <br> is the line break tag in HTML.",
+ "separatorHelpHtml": "In append mode, the translation starts a new block. This adds content between original and translated blocks. \\n can be used for newlines within the separator.",
"assSettingsTitleText": "ASS Translation Options",
"insertModeHelpAss": "Choose how to insert the translated text.",
- "separatorPlaceholderAss": "e.g., \\N (newline character)",
- "separatorHelpAss": "The character(s) used to separate original and translated text in 'Append' or 'Prepend' mode. \\N is the newline character in ASS format.",
+ "separatorPlaceholderAss": "e.g., \\N (newline)",
+ "separatorHelpAss": "Separator for 'Append' or 'Prepend' mode. \\N is the newline character in ASS format.",
"jsonSettingsTitleText": "JSON Path Configuration",
"jsonPathLabel": "JSON Paths to Translate",
- "jsonPathPlaceholder": "One path per line, e.g.,\n$.name\n$.*",
- "jsonPathHelp": "Uses jsonpath-ng syntax. Each line represents a JSON path. All strings within the matched objects will be translated.",
+ "jsonPathPlaceholder": "One path per line, e.g.:\n$.name\n$.*",
+ "jsonPathHelp": "Uses jsonpath-ng syntax. Each line represents a JSON path. All strings within matching objects will be translated.",
"parsingSettingsTitleText": "Parsing Configuration",
"parsingEngineLabel": "Parsing Engine",
- "parsingEngineHelp": "This can be skipped if the uploaded file is already in .md format.",
+ "parsingEngineHelp": "Not required if the uploaded file is already in .md format.",
"getMineruTokenTitle": "Get Mineru Token",
- "mineruTokenPlaceholder": "Required when using the Mineru engine",
+ "mineruTokenPlaceholder": "Required for Mineru engine",
"modelVersionLabel": "Mineru Model Version",
"modelVersionVlm": "VLM",
"modelVersionPipline": "Pipeline",
- "modelVersionHelp": "Mineru VLM is a newer model in private beta.",
+ "modelVersionHelp": "Mineru VLM is a newer model in beta.",
"formulaOcrLabel": "Formula Recognition",
"codeOcrLabel": "Code Recognition",
"aiSettingsTitleText": "Translation Model",
@@ -241,7 +239,7 @@
"baseUrlLabel": "API Address (Base URL)",
"baseUrlPlaceholder": "OpenAI-compatible address",
"getApiKeyTitle": "Get API Key",
- "apiKeyPlaceholder": "Enter your API Key",
+ "apiKeyPlaceholder": "Please enter your API Key",
"modelIdLabel": "Model ID",
"modelIdPlaceholder": "e.g., gpt-4o, glm-4",
"systemProxyLabel": "Enable System Proxy",
@@ -250,24 +248,24 @@
"targetLanguageCustom": "Other (Custom)",
"customLangPlaceholder": "Enter target language, e.g., Italian",
"thinkingModeLabel": "Thinking Mode",
- "thinkingModeTooltip": "Sets whether the hybrid inference model should 'think'. Supported by Zhipu's glm4.5 series, Volcengine's seed1.6 series, SiliconFlow platform, Google's Gemini series, 302AI (partial). Disabling is recommended.",
+ "thinkingModeTooltip": "Configure whether the hybrid inference model should 'think'. Supported by Zhipu glm4.5 series, Volcengine seed1.6 series, SiliconFlow, Google Gemini series, 302AI (partial). Disabling is recommended.",
"thinkingModeEnable": "Enable",
"thinkingModeDisable": "Disable (Recommended)",
"thinkingModeDefault": "Default",
"customPromptLabel": "Custom Prompt",
- "customPromptPlaceholder": "Optional, e.g., 'Keep proper nouns in their original language.'",
+ "customPromptPlaceholder": "Optional, e.g., 'Do not translate personal names'",
"chunkSizeLabel": "Chunk Size",
- "resetBtn": "Reset",
"concurrentLabel": "Concurrency",
"retryLabel": "Retries",
+ "resetBtn": "Reset",
"glossaryGenTitle": "Glossary",
"glossaryLabel": "Glossary (Optional)",
- "glossaryHelp": "Select one or more CSV files. Files must contain 'src' and 'dst' columns for source and destination terms respectively.",
+ "glossaryHelp": "Select one or more CSV files. Files must contain 'src' and 'dst' columns for source and destination text.",
"viewGlossaryBtn": "View Glossary",
"clearGlossaryBtn": "Clear",
"glossaryGenEnableLabel": "Auto-generate Glossary",
"glossaryCustomPromptLabel": "Custom Prompt",
- "glossaryCustomPromptPlaceholder": "Glossary generation prompt",
+ "glossaryCustomPromptPlaceholder": "Prompt for glossary generation",
"glossaryGenConfigLabel": "Glossary Generation Config",
"glossaryGenConfigSame": "Same as Translation Config",
"glossaryGenConfigCustom": "Custom",
@@ -284,69 +282,69 @@
"taskCardFileSelected": "File selected",
"taskCardFilenameLabel": "Filename: ",
"taskCardLogLabel": "Logs",
- "copyLogsTooltip": "Copy logs",
+ "copyLogsTooltip": "Copy Logs",
"taskCardStatusWaiting": "Waiting for file upload...",
"taskCardPreviewBtn": "Preview",
"taskCardDownloadBtn": "Download",
"taskCardAttachmentBtn": "Attachments",
"taskCardStartBtn": "Start Translation",
- "downloadMdEmbedded": "Markdown (Embedded Images)",
+ "downloadMdEmbedded": "Markdown (Embedded)",
"downloadMdZip": "Markdown (Zip)",
"downloadAss": "ASS",
"previewTitle": "Preview",
"previewBilingualBtn": "Bilingual",
"previewTranslatedOnlyBtn": "Translated Only",
"previewOriginal": "Original",
- "previewTranslated": "Translated",
+ "previewTranslated": "Translation",
"closeBtn": "Close",
"downloadBtn": "Download",
"tutorialModalTitle": "Tutorial",
- "tutorialModalBody": "
Video tutorials are available on Bilibili by searching for docutranslate.
Welcome to DocuTranslate! Please follow these steps to translate your documents:
At the top of the left-side settings panel, first choose the processing flow that best suits your file type.
.txt plain text files..epub e-book files..docx Word documents..xlsx or .csv spreadsheet files..srt subtitle files..ass advanced subtitle files..json files..html web page files.After selecting a workflow, relevant configuration options will appear below. Please complete the settings in order (all configurations are automatically saved in your browser):
A. Workflow-Specific Options (Appears based on your choice in Step 1):
minerU engine, you must enter your token here.\\N for ASS, <br /> for EPUB).$.* (translate all strings), $..description (translate all values with the key description).B. General Options (Applicable to all workflows):
In the task list on the right, click or drag your document into the file upload area.
Once the file is selected, click the Start Translation button on the task card. The system will begin processing, and you can monitor the real-time progress in the log area.
After the translation is complete, action buttons will appear on the task card:
Video tutorials can be found by searching for docutranslate on Bilibili.
Welcome to DocuTranslate! Please follow these steps to translate your documents:
At the top of the left settings panel, first choose the processing flow that best suits your file type.
.txt files..epub e-book files..docx Word documents..xlsx or .csv spreadsheet files..srt subtitle files..ass advanced subtitle files..json files..html web files.After selecting a workflow, the relevant configuration options will appear below. Please configure them in order (all settings are automatically saved in your browser):
A. Workflow-Specific Options (Appear based on your selection in Step 1):
minerU engine, you need to enter your Token here.\\N for ASS, <br /> for EPUB).$.* (translates all strings), $..description (translates all values for the key description).B. General Options (Apply to all workflows):
In the task list on the right, click or drag your document into the file upload area.
Once the file is selected, click the Start Translation button on the task card. The system will begin processing, and you can monitor the real-time progress in the log area.
After the translation is complete, action buttons will appear on the task card:
当前没有任务,点击“新建任务”开始吧!
等待提交...
点击或拖拽文件到此处
当前没有任务,点击“新建任务”开始吧!
等待提交...
点击或拖拽文件到此处