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:

  1. Step 1: Select Workflow

    At the top of the left-side settings panel, first choose the processing flow that best suits your file type.

    Tip: 'Auto-select workflow' is enabled by default. Just upload your file, and the system will automatically match it to the appropriate workflow, simplifying the process.

  2. Step 2: Configure Parameters

    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):

    B. General Options (Applicable to all workflows):

  3. Step 3: Upload File

    In the task list on the right, click or drag your document into the file upload area.

  4. Step 4: Start Translation

    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.

  5. Step 5: View & Download

    After the translation is complete, action buttons will appear on the task card:

Important Note: All settings are automatically saved locally in your browser for future use. You can also use the new 'Export Config' and 'Import Config' buttons to back up and restore your settings.
", + "tutorialModalBody": "

Video tutorials can be found by searching for docutranslate on Bilibili.

Welcome to DocuTranslate! Please follow these steps to translate your documents:

  1. Step 1: Select Workflow

    At the top of the left settings panel, first choose the processing flow that best suits your file type.

    Tip: 'Auto-select Workflow' is enabled by default. Simply upload your file, and the system will automatically match the appropriate workflow for you.

  2. Step 2: Configure Parameters

    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):

    B. General Options (Apply to all workflows):

  3. Step 3: Upload File

    In the task list on the right, click or drag your document into the file upload area.

  4. Step 4: Start Translation

    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.

  5. Step 5: View & Download

    After the translation is complete, action buttons will appear on the task card:

Important Note: All your settings are automatically saved locally in your browser for future use. You can also use the new 'Export Config' and 'Import Config' buttons to back up and restore your settings.
", "tutorialUnderstandBtn": "I Understand", "contributorsModalTitle": "Thanks for Contributing", - "contributorsPara1": "DocuTranslate is an open-source project! Your needs and usage are what drive its progress.", - "contributorsPara2": "Thank you to all the friends who have sponsored the project, submitted code, provided valuable suggestions, and starred the project!", + "contributorsPara1": "DocuTranslate is an open-source project! The community's needs and usage are the driving force behind its progress.", + "contributorsPara2": "Thanks to everyone who has funded the project, submitted code, provided valuable suggestions, and starred the project!", "contributorsWelcome": "You are welcome to contribute in the following ways:", "contributorsGithub": "GitHub Homepage", "contributorsPR": "Submit a Pull Request", "contributorsIssue": "Report an Issue", - "contributorsQQ": "Or contact the author via QQ Group: 1047781902", + "contributorsQQ": "Or contact the author via QQ group: 1047781902", "glossaryModalTitle": "Current Glossary", "glossaryTableSource": "Source (src)", "glossaryTableDestination": "Destination (dst)", "init_i18n_failed_alert": "Failed to load interface translations. Please check your network connection or contact an administrator.", "init_failed_alert": "Initialization failed, could not connect to the backend service. Please ensure the service is running and refresh the page.", + "glossaryEmpty": "Glossary is empty", "apiHrefInfo302ai": "👈 Register through this link to enjoy a $1 free credit", - "engineOptionIdentity": "Already in Markdown format", + "engineOptionIdentity": "Already in markdown format", "engineOptionMineru": "Mineru (Recommended)", "engineOptionDocling": "Docling (Local Parsing)", - "glossaryEmpty": "The glossary is empty.", - "status_selectFileFirst": "Please select a file first.", - "status_fillRequired": "Please fill in all required fields.", - "btn_initializing": "Initializing...", - "status_encodingAndSubmitting": "Encoding file and submitting task...", - "status_requestOk": "Request successful, task has started.", + "status_selectFileFirst": "Please select a file first", + "status_fillRequired": "Please fill in all required fields", + "btn_initializing": "Initializing", + "status_encodingAndSubmitting": "Encoding and submitting file...", + "status_requestOk": "Request successful, task started", "btn_cancelTranslation": "Cancel Translation", "status_requestFail": "Request failed", - "status_initFail": "Task initialization failed", + "status_initFail": "Initialization failed", "status_cancelling": "Cancelling...", - "status_cancelSent": "Cancellation request sent.", - "status_cancelFail": "Cancellation failed.", + "status_cancelSent": "Cancellation request sent", + "status_cancelFail": "Cancellation failed", "status_gettingStatus": "Getting status...", "btn_reTranslate": "Re-translate", - "status_updateError": "Error updating status.", + "status_updateError": "Error updating status", "preview_loading": "Loading preview...", - "preview_cantReadOriginal": "Cannot read original file content for preview.", - "preview_cantPreviewType": "Preview is not supported for this file type", - "preview_noOriginalCache": "No original file cached, cannot preview.", - "preview_loadFailed": "Failed to load preview.", - "pdf_preparing": "Preparing PDF...", - "pdf_print_failed": "Print failed. Please try right-clicking on the preview page to print manually.", + "preview_cantReadOriginal": "Cannot read original content", + "preview_cantPreviewType": "Cannot preview this file type", + "preview_noOriginalCache": "No original file cached, please re-upload", + "preview_loadFailed": "Failed to load preview", + "pdf_preparing": "Preparing PDF, please wait...", + "pdf_print_failed": "Print failed. Please try saving as PDF manually.", "pdf_fetch_failed": "Failed to fetch translated content, cannot generate PDF.", "preview_bilingual": "Bilingual Preview", - "preview_translatedOnly": "Translated-Only Preview", - "admin_tasklist_failed": "Admin Mode: Failed to load task list.", + "preview_translatedOnly": "Translated Only Preview", + "admin_tasklist_failed": "Admin mode: Failed to get task list.", "configImportSuccess": "Configuration imported successfully!", - "configImportError": "Configuration import failed. Invalid file format." + "configImportError": "Configuration import failed, incorrect file format." } } \ No newline at end of file diff --git a/docutranslate/static/index.html b/docutranslate/static/index.html index 3c093fe..8848afc 100644 --- a/docutranslate/static/index.html +++ b/docutranslate/static/index.html @@ -1 +1 @@ - DocuTranslate - 交互式文档翻译

DocuTranslate

如果上传的文件本身是.md格式,此项可不选。
mineru VLM是更新的内测模型。

Base URL:

选择一个或多个CSV文件。文件需包含'src'和'dst'两列标题,分别代表原文和译文。

GitHub主页(欢迎star❤):
https://github.com/xunbu/docutranslate

交流QQ群: 1047781902

version:

任务列表

LOGO

当前没有任务,点击“新建任务”开始吧!

预览
原文
译文
\ No newline at end of file + DocuTranslate - 交互式文档翻译

DocuTranslate

如果上传的文件本身是.md格式,此项可不选。
mineru VLM是更新的内测模型。

Base URL:

选择一个或多个CSV文件。文件需包含'src'和'dst'两列标题,分别代表原文和译文。

GitHub主页(欢迎star❤):
https://github.com/xunbu/docutranslate

交流QQ群: 1047781902

version:

任务列表

LOGO

当前没有任务,点击“新建任务”开始吧!

预览
原文
译文
\ No newline at end of file