Compare commits

..
14 Commits
Author SHA1 Message Date
alam00000 f638f8e4db Release v2.8.11 2026-10-31 16:50:27 +05:30
Alam 24b060a134 Merge pull request #919 from kelseyjmw/fix-crop-scroll
Fix crop scroll
2026-10-31 16:38:58 +05:30
alam00000 6dca41aeb4 revert ICLA.md changes 2026-10-31 16:26:50 +05:30
alam00000 2a8ce12b6e add support for GFM inline math delimiters 2026-10-31 16:16:23 +05:30
Alam d03594a09d Merge pull request #964 from alam00000/chore/update-pdf-engine
build(deps): bump PDF engine and viewer to 3f6b6114b166
2026-10-31 16:03:14 +05:30
alam00000 d4e270a061 build(deps): bump PDF engine and viewer to 3f6b6114b166 2026-10-31 10:24:04 +00:00
Alam f0dd9b7153 Merge pull request #953 from alam00000/dependabot/npm_and_yarn/follow-redirects-1.16.2
build(deps): bump follow-redirects from 1.16.1 to 1.16.2
2026-10-31 15:26:30 +05:30
Alam af0d1caaf7 Merge pull request #950 from PeterDaveHello/zh-TW
Improve Traditional Chinese (zh-TW) translations
2026-10-31 15:26:14 +05:30
alam00000 d79f875ac3 Merge branch 'main' into zh-TW 2026-10-31 15:18:32 +05:30
Alam 3426da5c10 Merge pull request #961 from alam00000/ads-checkout
Ads checkout
2026-10-31 14:36:18 +05:30
dependabot[bot] 1e663cbe6c build(deps): bump follow-redirects from 1.16.1 to 1.16.2
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.16.1 to 1.16.2.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.16.1...v1.16.2)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-version: 1.16.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
2026-10-26 09:32:01 +00:00
Peter Dave Hello 57b6fe8b15 Improve Taiwanese Chinese translations
Align zh-TW strings with the English sources and use natural Taiwanese
terminology throughout the website and PDF viewer locale resources.
Add missing merge-tool messages and clarify signing, annotations,
accessibility descriptions, and page controls.
2026-10-24 01:16:02 +08:00
Kelsey White a25c6511ce Signed ICLA.md 2026-10-16 13:19:17 -03:00
Kelsey White 6d8ef7d694 Fix for issue 903: Crop tool now moves page focus to top after use 2026-10-16 13:09:32 -03:00
17 changed files with 293 additions and 265 deletions
+2 -2
View File
@@ -7,10 +7,10 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 1.0.9
version: 1.0.10
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: '2.8.10'
appVersion: '2.8.11'
+10 -10
View File
@@ -37,8 +37,8 @@
"@types/node-forge": "^1.3.14",
"@types/papaparse": "^5.5.2",
"archiver": "^7.0.1",
"bentopdf-pdfium": "file:vendor/bentopdf-pdfium/bentopdf-pdfium-1b5d842415eb.tgz",
"bentopdf-viewer": "file:vendor/bentopdf-viewer/bentopdf-viewer-1b5d842415eb.tgz",
"bentopdf-pdfium": "file:vendor/bentopdf-pdfium/bentopdf-pdfium-3f6b6114b166.tgz",
"bentopdf-viewer": "file:vendor/bentopdf-viewer/bentopdf-viewer-3f6b6114b166.tgz",
"blob-stream": "^0.1.3",
"bwip-js": "^4.8.0",
"cropperjs": "^1.6.2",
@@ -4529,15 +4529,15 @@
"license": "MIT"
},
"node_modules/bentopdf-pdfium": {
"version": "0.0.0-1b5d842415eb",
"resolved": "file:vendor/bentopdf-pdfium/bentopdf-pdfium-1b5d842415eb.tgz",
"integrity": "sha512-ZAz/FD/hbctwtX51mp8OoSy1BrUUNAEr7+ckHvNQ8iru15Bw25VNm/Up3eDHEeh7RPlFt6QnfpnNdXyRICUzkw==",
"version": "0.0.0-3f6b6114b166",
"resolved": "file:vendor/bentopdf-pdfium/bentopdf-pdfium-3f6b6114b166.tgz",
"integrity": "sha512-KedXrcBtrLgR9JMWi9odfz+oMeOHPcPWvn9fevOaNAZA6eMmYOYUOT3EzZeZVqytX7GoZ5A63nuYuPSrBUJfCw==",
"license": "AGPL-3.0"
},
"node_modules/bentopdf-viewer": {
"version": "2.9.1",
"resolved": "file:vendor/bentopdf-viewer/bentopdf-viewer-1b5d842415eb.tgz",
"integrity": "sha512-onUkB/YclMzmOObjlDBzHsb7ZYScV6d6v7WC3x0JHbEY0vzyQb1CbDczhORueSTnnTEdRh4tLv9P9XoT19c80A==",
"resolved": "file:vendor/bentopdf-viewer/bentopdf-viewer-3f6b6114b166.tgz",
"integrity": "sha512-2sL3JXDeHW5MID3Hw3zxdMjkzMgoPNiERarAsjiJ+w8j2hd6sK7o4gkn0KuEPkgIxwuH3RSlRatqG7fxcNDKpA==",
"license": "MIT",
"dependencies": {
"preact": "^10.17.0",
@@ -6709,9 +6709,9 @@
}
},
"node_modules/follow-redirects": {
"version": "1.16.1",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.1.tgz",
"integrity": "sha512-FNvFGzoMLWmE6Yj9spb/zjd7yiNCHiAW9/Tg9CXrQ8wuu32HtlJOwWO11OJafl5FfY3DxTdQ0vj42zU1kvv5jg==",
"version": "1.16.2",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.2.tgz",
"integrity": "sha512-/kVP2U8z596Ia0gwFrwyIeo74ta5aVmSeU1FfAUMAmcEP5EP7zydmag3SLiN64NaRKef3lxsq7i/g7ltJQDGow==",
"funding": [
{
"type": "individual",
+3 -3
View File
@@ -1,7 +1,7 @@
{
"name": "bento-pdf",
"private": true,
"version": "2.8.10",
"version": "2.8.11",
"license": "AGPL-3.0-only",
"type": "module",
"scripts": {
@@ -101,8 +101,8 @@
"@types/node-forge": "^1.3.14",
"@types/papaparse": "^5.5.2",
"archiver": "^7.0.1",
"bentopdf-pdfium": "file:vendor/bentopdf-pdfium/bentopdf-pdfium-1b5d842415eb.tgz",
"bentopdf-viewer": "file:vendor/bentopdf-viewer/bentopdf-viewer-1b5d842415eb.tgz",
"bentopdf-pdfium": "file:vendor/bentopdf-pdfium/bentopdf-pdfium-3f6b6114b166.tgz",
"bentopdf-viewer": "file:vendor/bentopdf-viewer/bentopdf-viewer-3f6b6114b166.tgz",
"blob-stream": "^0.1.3",
"bwip-js": "^4.8.0",
"cropperjs": "^1.6.2",
+17 -17
View File
@@ -26,7 +26,7 @@
"startUsing": "立刻開始使用"
},
"usedBy": {
"title": "被下列公司及其員工採用"
"title": "下列公司及其員工都在使用"
},
"features": {
"title": "為何您該選擇",
@@ -59,7 +59,7 @@
"tools": {
"title": "立即開始使用",
"toolsLabel": "PDF 工具",
"subtitle": "點選任意工具即可開啟檔案上傳器",
"subtitle": "點選工具即可開啟檔案上傳介面",
"searchPlaceholder": "搜尋工具(例如「分割」或「整理」…)",
"backToTools": "回到工具清單",
"firstLoadNotice": "首次載入需要一點時間,因為我們正在下載轉換引擎。之後所有載入將即時完成。"
@@ -135,7 +135,7 @@
"export": "匯出",
"resetToDefaults": "還原為預設值",
"fullWidthMode": "全寬模式",
"fullWidthDescription": "使用全螢幕寬度而非置中容器顯示所有工具",
"fullWidthDescription": "取消版面寬度限制,讓所有工具使用頁面的完整可用寬度",
"compactMode": "精簡模式",
"compactModeDescription": "以精簡清單取代卡片顯示工具",
"advancedSettings": "進階設定",
@@ -176,7 +176,7 @@
},
"ccpa": {
"title": "符合 CCPA 規範",
"description": "賦予加州居民對其個人資料如何被蒐集、使用及分享的權利。"
"description": "保障加州居民對其個人資料蒐集、使用及分享方式的相關權利。"
},
"hipaa": {
"title": "符合 HIPAA 規範",
@@ -189,7 +189,7 @@
"sectionTitle": "常見問題",
"isFree": {
"question": "BentoPDF 真的是免費的嗎?",
"answer": "是的,完全免費。BentoPDF 上的所有工具皆為 100% 免費使用,並且沒有檔案大小或數量限制、無需註冊,也沒有任何浮水印。我們相信每個人都應該享有簡單且強大的免費 PDF 工具。"
"answer": "是的,完全免費。BentoPDF 上的所有工具皆可完全免費使用,沒有檔案限制、無需註冊,也不會加上浮水印。我們相信每個人都應該能使用簡單而強大的 PDF 工具,不受付費牆限制。"
},
"areFilesSecure": {
"question": "我的檔案安全嗎?它們是在哪裡進行處理的?",
@@ -201,7 +201,7 @@
},
"gdprCompliant": {
"question": "BentoPDF 符合 GDPR 規範嗎?",
"answer": "是的。BentoPDF 完全符合 GDPR 規範。由於所有檔案處理都在您的瀏覽器本機進行,且我們絕不蒐集或傳送您的檔案到任何伺服器,我們完全無法存取您的資料。這確保您的文件永遠處於您的掌控之中。"
"answer": "是的,BentoPDF 完全符合 GDPR 規範。所有檔案都直接在本機瀏覽器中處理,我們絕不蒐集檔案或將檔案傳送至任何伺服器,因此無法存取您的資料。文件始終由您掌控。"
},
"dataStorage": {
"question": "你們會儲存或追蹤我的檔案嗎?",
@@ -213,7 +213,7 @@
},
"browserBased": {
"question": "瀏覽器端(本機)處理如何確保我的安全?",
"answer": "透過完全在您的瀏覽器內運作,BentoPDF 可確保您的檔案絕不離開您的裝置。這徹底消除了伺服器遭駭、資料外洩與未授權存取的風險。您的檔案永遠只屬於您自己。"
"answer": "BentoPDF 完全在瀏覽器中執行,確保檔案絕不離開裝置。這能消除伺服器遭駭、資料外洩或未經授權存取的風險。檔案始終屬於您。"
},
"analytics": {
"question": "BentoPDF 會使用 Cookie 或網站分析工具追蹤我嗎?",
@@ -227,7 +227,7 @@
},
"support": {
"title": "喜歡我的作品嗎?",
"description": "BentoPDF 是一個出於熱情開發的專案,為每個人提供一個免費、注重隱私且強大的 PDF 工具組。如果有幫上您的忙,請考慮支援它的開發。每杯咖啡都意義重大!",
"description": "BentoPDF 是一個出於熱情開發的專案,為每個人提供一個免費、注重隱私且強大的 PDF 工具箱。如果有幫上您的忙,請考慮贊助開發工作。每杯咖啡都能幫上忙!",
"buyMeCoffee": "買杯咖啡給我"
},
"footer": {
@@ -256,7 +256,7 @@
"howItWorks": "使用說明:",
"fileModeInstructions": [
"拖曳圖示以調整檔案順序。",
"在每個檔案的「頁數」輸入框中,您可以指定要合併的特定頁面範圍(例如「1-3, 5」)。",
"在每個檔案的「Pages(頁面)」輸入框中,您可以指定要合併的頁面範圍(例如「1-3, 5」)。",
"留空則會包含該檔案的所有頁面。"
],
"pageModeInstructions": [
@@ -289,7 +289,7 @@
"about": {
"hero": {
"title": "我們相信 PDF 工具應該",
"subtitle": "快速、私密且免費。",
"subtitle": "快速、注重隱私且免費。",
"noCompromises": "絕不妥協。"
},
"mission": {
@@ -300,25 +300,25 @@
"philosophy": {
"label": "我們的核心理念",
"title": "隱私至上,始終如一。",
"description": "在個人資料被商品化的時代,我們採取截然不同的做法。所有 BentoPDF 工具的處理流程皆在您的瀏覽器本機完成。這代表您的檔案絕不會觸及我們的伺服器,我們無法查看您的文件內容,更不會追蹤您的行為。您的文件將始終保持絕對的私密性。這不僅是一項功能,更是我們的立身之本。"
"description": "所有 BentoPDF 工具都在本機瀏覽器中執行。檔案絕不上傳,其他人無法查看文件內容,也不會有任何機制追蹤操作。"
},
"whyBentopdf": {
"title": "為何選擇",
"speed": {
"title": "極速處理",
"description": "無需等待檔案上傳與下載至伺服器。透過在您的瀏覽器中使用 WebAssembly 等現代網頁技術來處理檔案,我們得以提供所有工具無與倫比的處理速度。"
"description": "無需將檔案上傳至伺服器或從伺服器下載。檔案直接在瀏覽器中透過 WebAssembly 處理,因此不必等待伺服器回應。"
},
"free": {
"title": "完全免費",
"description": "沒有試用期、訂閱制、隱藏費用,也不會將「進階」功能封鎖在付費牆後。我們相信強大的 PDF 工具應該是每個人都能享有的公共設施,而非營利手段。"
"description": "所有工具皆可免費使用,沒有試用期、訂閱制,也不會加上浮水印。開發經費來自商業授權收入。"
},
"noAccount": {
"title": "無需註冊帳號",
"description": "立即開始使用任何工具。我們不需要您的電子郵件、密碼或任何個人資料。您的工作流程應當匿名且順暢無阻。"
"description": "開啟任何工具即可立即使用,無需提供電子郵件、密碼或任何個人資料。"
},
"openSource": {
"title": "開放原始碼精神",
"description": "以透明度為核心打造。我們採用了如 PDF-lib 和 PDF.js 等優秀的開放原始碼函式庫,並深信社群驅動的力量能讓強大的工具造福每一個人。"
"title": "開放原始碼",
"description": "程式碼以 AGPL-3.0 授權條款公開於 GitHub,可檢查檔案的實際處理方式。BentoPDF 以 PDF.js、pdf-lib、qpdf 和 LibreOffice 等開放原始碼專案為基礎。"
}
},
"cta": {
@@ -350,7 +350,7 @@
"rotate": "旋轉:",
"rotateLeft": "向左",
"rotateRight": "向右",
"transform": "轉換:",
"transform": "操作:",
"duplicate": "複製",
"split": "分割",
"clear": "清除:",
+123 -123
View File
@@ -7,7 +7,7 @@
"convertFromPdf": "從 PDF 轉換",
"organizeManage": "整理與管理",
"optimizeRepair": "最佳化與修復",
"securePdf": "安全 PDF",
"securePdf": "保護 PDF",
"input": "輸入",
"output": "輸出"
},
@@ -27,21 +27,21 @@
"name": "合併 PDF",
"subtitle": "將多個 PDF 合併為一個檔案。保留書籤。",
"retainPageLabels": "保留每個檔案的原始頁面標籤",
"retainPageLabelsHint": "關閉(預設):合併後的 PDF 使用自然頁碼 1–N。開啟:保留每個檔案的原始頁面標籤(可能產生重複的標籤)。",
"retainPageLabelsHint": "關閉(預設):合併後的 PDF 頁碼會依序編為 1–N。開啟:保留每個檔案的原始頁面標籤(可能產生重複的標籤)。",
"removeDuplicateFonts": "移除重複字型",
"alert": {
"thumbnailError": "無法轉譯頁面縮圖",
"noSelection": "未選取要合併的檔案或頁面。",
"thumbnailError": "無法繪製頁面縮圖。",
"noSelection": "尚未選取要合併的檔案或頁面。",
"mergeSuccess": "PDF 合併成功!",
"mergeFailed": "PDF 合併失敗。",
"mergeError": "PDF 合併失敗。請確認所有檔案皆有效且未受密碼保護。",
"workerError": "合併程序發生未預期的錯誤。",
"loadError": "無法載入一個或多個 PDF 檔案"
"mergeFailed": "無法合併 PDF。",
"mergeError": "無法合併 PDF。請確認所有檔案均有效且未受密碼保護。",
"workerError": "合併 Worker 發生未預期的錯誤。",
"loadError": "無法載入一或多個 PDF 檔案。"
},
"loader": {
"renderingPreviews": "正在轉譯頁面預覽...",
"merging": "正在合併 PDF...",
"loadingDocuments": "正在載入 PDF 文件..."
"renderingPreviews": "正在繪製頁面預覽…",
"merging": "正在合併 PDF…",
"loadingDocuments": "正在載入 PDF 文件…"
}
},
"splitPdf": {
@@ -50,26 +50,26 @@
},
"compressPdf": {
"name": "壓縮 PDF",
"subtitle": "降低您的 PDF 檔案大小。"
"subtitle": "縮小 PDF 檔案大小。"
},
"pdfEditor": {
"name": "PDF 編輯器",
"subtitle": "註解、螢光標註、塗黑、評論、新增圖形或圖片、搜尋與檢視 PDF。"
"subtitle": "標註、螢光標註、塗黑、註解、新增圖形或圖片、搜尋與檢視 PDF。"
},
"editPdfText": {
"name": "編輯 PDF 文字",
"subtitle": "點擊任意段落即可就地編輯,支援即時重排、字型與樣式設定。",
"subtitle": "點選任意段落即可直接編輯,支援即時重新排版、字型與樣式設定。",
"saved": "PDF 儲存成功!({{size}} KB)",
"failedToLoad": "無法載入 PDF 文字編輯器。",
"loadingFonts": "正在載入字型…",
"fontsUnavailable": "無法下載部分字元所需的字型。請檢查網路連線後再試一次,否則這些字元在儲存的 PDF 中可能無法正確顯示。",
"howToUpload": "上傳 PDF",
"howToClick": "點擊段落",
"howToClick": "點選段落",
"howToRestyle": "隨意變更樣式",
"relatedPdfEditor": "為 PDF 加上註解與標記",
"relatedSignPdf": "手寫、輸入或上傳簽名",
"relatedWatermark": "疊加文字或圖片",
"relatedStamps": "在頁面上加入印章",
"relatedSignPdf": "繪製、輸入或上傳簽名",
"relatedWatermark": "加上文字或圖片浮水印",
"relatedStamps": "在頁面上新增印章",
"relatedCompress": "縮小檔案大小",
"relatedOrganizeName": "整理 PDF",
"relatedOrganize": "重新排序與管理頁面",
@@ -78,15 +78,15 @@
"filterAll": "全部",
"filterText": "文字",
"filterImages": "圖片",
"filterShapes": "形狀",
"addText": "加入文字",
"filterShapes": "圖形",
"addText": "新增文字",
"langAuto": "自動",
"change": "變更",
"ignore": "忽略",
"next": "下一個",
"replace": "取代",
"replaceAll": "全部取代",
"emptyState": "開啟 PDF 即可編輯其中的文字、圖片與形狀。",
"emptyState": "開啟 PDF 即可編輯其中的文字、圖片與圖形。",
"choosePdf": "選擇 PDF…",
"font": "字型",
"systemFonts": "系統字型",
@@ -99,18 +99,18 @@
"direction": "方向",
"dirAuto": "自動",
"pathStroke": "路徑筆畫",
"tipBackToUpload": "返回上傳",
"tipBackToUpload": "回到上傳畫面",
"tipOpenAnotherPdf": "開啟其他 PDF",
"tipExportS": "匯出 (⌘S)",
"tipUndoZ": "復原 (⌘Z)",
"tipRedoZ": "重做 (⇧⌘Z)",
"tipExportS": "匯出(⌘S)",
"tipUndoZ": "復原(⌘Z)",
"tipRedoZ": "重做(⇧⌘Z)",
"tipFileDetails": "檔案詳細資料",
"tipEditExistingContent": "編輯現有內容",
"tipWhatTheEditToolTouchesNarrowTheScopeOnBus": "編輯工具的作用範圍:在內容密集的頁面上縮小範圍",
"tipClickThePageToAddATextBox": "點擊頁面以加入文字方塊",
"tipWhatTheEditToolTouchesNarrowTheScopeOnBus": "頁面內容繁多時,可縮小編輯工具的作用範圍",
"tipClickThePageToAddATextBox": "點選頁面以新增文字方塊",
"tipSpellCheckLanguage": "拼字檢查語言",
"tipFindAndReplace": "尋找與取代",
"tipAddAnImage": "加入圖片",
"tipAddAnImage": "新增圖片",
"tipCopyThisPageSTextInReadingOrder": "依閱讀順序複製本頁文字",
"tipCheckTheSpellingOfThisPage": "檢查本頁拼字",
"tipShowOrHideTheFormatPanel": "顯示或隱藏格式面板",
@@ -130,9 +130,9 @@
"tipSendToBack": "移至最下層",
"tipDuplicate": "複製",
"tipDelete": "刪除",
"tipAlignLeftEdges": "靠左邊緣對齊",
"tipAlignLeftEdges": "靠左對齊",
"tipAlignHorizontalCenters": "水平置中對齊",
"tipAlignRightEdges": "靠右邊緣對齊",
"tipAlignRightEdges": "靠右對齊",
"tipAlignTops": "靠上對齊",
"tipAlignVerticalCenters": "垂直置中對齊",
"tipAlignBottoms": "靠下對齊",
@@ -152,13 +152,13 @@
"tipSuperscript": "上標",
"tipSubscript": "下標",
"tipToggleBulletedItem": "切換項目符號",
"tipToggleNumberedItem": "切換編號項目",
"tipToggleNumberedItem": "切換項目編號",
"tipNumberedListMarkerStyle": "編號清單標記樣式",
"tipDecreaseListIndentTab": "減少縮排 (⇧Tab)",
"tipIncreaseListIndentTab": "增加縮排 (Tab)",
"tipDecreaseListIndentTab": "減少清單縮排(⇧Tab)",
"tipIncreaseListIndentTab": "增加清單縮排(Tab)",
"tipTextOutlineColor": "文字外框顏色",
"tipOutlineWidth0None": "外框寬度(0 = 無)",
"tipFromContent": "來自內容",
"tipFromContent": "依內容決定",
"tipLeftToRight": "由左至右",
"tipRightToLeft": "由右至左",
"tipStrokeColor": "筆畫顏色",
@@ -191,7 +191,7 @@
"subtitle": "將選取的頁面儲存為新的檔案。"
},
"duplicateOrganize": {
"name": "複製與組織",
"name": "複製與整理",
"subtitle": "複製、重新排序與刪除頁面。",
"saveChanges": "儲存變更"
},
@@ -219,8 +219,8 @@
"addBookmark": "為目錄頁新增書籤",
"generateButton": "產生目錄",
"selectPdfFirst": "請先選擇 PDF 檔案。",
"statusReadingFileMainThread": "正在讀取檔案(主執行緒)...",
"statusGenerating": "正在產生目錄...",
"statusReadingFileMainThread": "正在讀取檔案(主執行緒)…",
"statusGenerating": "正在產生目錄…",
"errorReadingFileWithMessage": "讀取檔案時發生錯誤:{{message}}",
"successGeneratedDownloadStarted": "目錄產生成功!下載已開始。",
"workerErrorWithMessage": "錯誤:{{message}}",
@@ -238,11 +238,11 @@
"howLabelsWorkStep1": "將頁面範圍留空即可為所有頁面套用標籤。",
"howLabelsWorkStep2": "前置頁可使用羅馬數字,正文則可使用十進位編號等樣式。",
"howLabelsWorkStep3": "將前綴搭配起始值 0,可建立像 A-0、A-1、A-2 這樣的標籤。",
"howLabelsWorkStep4": "當規則使用 1-9,30-40 或 odd 等不連續範圍時,請啟用連續編號。",
"howLabelsWorkStep4": "當規則使用 1-9,30-40 或 odd 等不連續範圍時,請啟用持續編號。",
"labelRulesTitle": "標籤規則",
"addRule": "新增規則",
"removeExistingLabels": "套用這些規則前先移除現有頁面標籤",
"cpdfNote": "此工具會在您的瀏覽器中使用 CoherentPDF。若 CoherentPDF 尚未設定,系統會提示您在 WASM 設定中完成設定。",
"cpdfNote": "此工具會在您的瀏覽器中使用 CoherentPDF。若 CoherentPDF 尚未設定,系統會提示您在 [進階功能設定] 中完成設定。",
"processButton": "新增頁面標籤",
"howItWorksUploadTitle": "上傳檔案",
"howItWorksUploadDescription": "選擇您要重新標記的 PDF 檔案。",
@@ -254,30 +254,30 @@
"faqWhatIsQuestion": "什麼是頁面標籤?",
"faqWhatIsAnswer": "頁面標籤是 PDF 閱讀器在縮圖、頁面導覽與列印對話框中顯示的編號。它不會在頁面本身額外列印新文字。",
"faqMixQuestion": "我可以混用羅馬數字和一般數字嗎?",
"faqMixAnswer": "可以。請新增多條規則,例如將 1-4 設為 LowercaseRoman,並將 5-20 設為 DecimalArabic。",
"faqMixAnswer": "可以。請新增多條規則,例如將 1-4 設為 [小寫羅馬數字],並將 5-20 設為 [十進位數字]。",
"faqPrivacyQuestion": "我的檔案會保持私密嗎?",
"faqPrivacyAnswer": "會。處理程序會在您的瀏覽器中使用 CoherentPDF WASM 完成,PDF 不會離開您的裝置。",
"invalidFileTitle": "無效檔案",
"invalidFileMessage": "請上傳有效的 PDF 檔案。",
"loadingPdf": "正在載入 PDF...",
"loadingPdf": "正在載入 PDF…",
"protectedPdfTitle": "受保護的 PDF",
"protectedPdfMessage": "此 PDF 受密碼保護。請先使用解密或變更權限工具。",
"loadErrorMessage": "無法載入 PDF 檔案。該檔案可能無效、毀損或受密碼保護。",
"fileMeta": "{{size}} • {{count}} 頁",
"ruleTitle": "標籤規則 {{number}}",
"pageRangeLabel": "頁面範圍",
"pageRangePlaceholder": "所有頁面,例如 1-4, 7, odd",
"pageRangePlaceholder": "所有頁面,或指定範圍(例如 1-4, 7, odd)",
"labelStyleLabel": "標籤樣式",
"labelPrefixLabel": "標籤前綴",
"labelPrefixPlaceholder": "選填的前綴,例如 A-",
"startValueLabel": "起始值",
"continueNumbering": "在不連續範圍中持續編號",
"examplesNote": "例如:前置頁 1-4 使用羅馬數字、15-20 使用前綴 A- 且起始值為 0,或輸入 odd 並啟用連續編號。",
"examplesNote": "例如:前置頁 1-4 使用羅馬數字、15-20 使用前綴 A- 且起始值為 0,或輸入 odd 並啟用持續編號。",
"uploadFirstMessage": "請先上傳 PDF 檔案。",
"applyingLabels": "正在套用頁面標籤...",
"applyingLabels": "正在套用頁面標籤…",
"invalidRangeMessage": "規則 {{number}} 的頁面範圍無效:{{range}}",
"allPages": "所有頁面",
"emptyOutputMessage": "CoherentPDF 產生了空白檔案。",
"emptyOutputMessage": "CoherentPDF 產生了空檔案。",
"successMessage": "頁面標籤新增成功!",
"processErrorMessage": "無法新增頁面標籤。",
"styleOptions": {
@@ -295,7 +295,7 @@
},
"addWatermark": {
"name": "新增浮水印",
"subtitle": "在您的 PDF 頁面上壓印文字或圖片。",
"subtitle": "在 PDF 頁面上加上文字或圖片浮水印。",
"applyToAllPages": "套用至所有頁面"
},
"headerFooter": {
@@ -314,7 +314,7 @@
"gray": "灰階",
"border": "邊框",
"rotate": "旋轉",
"rotateVariance": "旋轉變異",
"rotateVariance": "隨機旋轉幅度",
"brightness": "亮度",
"contrast": "對比度",
"blur": "模糊",
@@ -334,7 +334,7 @@
"temperature": "色溫",
"tint": "色調",
"gamma": "伽瑪值",
"sepia": "復古色",
"sepia": "深褐色調",
"processButton": "套用顏色調整"
},
"backgroundColor": {
@@ -355,7 +355,7 @@
},
"removeAnnotations": {
"name": "移除註解",
"subtitle": "移除留言、螢光標註與連結。"
"subtitle": "移除註解、螢光標註與連結。"
},
"pdfFormFiller": {
"name": "PDF 表單填寫器",
@@ -366,14 +366,14 @@
},
"createPdfForm": {
"name": "建立 PDF 表單",
"subtitle": "透過拖放文字框建立可填寫的 PDF 表單。",
"subtitle": "透過拖放文字欄位建立可填寫的 PDF 表單。",
"orSeparator": "或",
"createBlankPdf": "建立空白 PDF"
},
"removeBlankPages": {
"name": "移除空白頁面",
"subtitle": "自動偵測並刪除空白頁面。",
"sensitivityHint": "數值越高,判定條件越嚴格,只會偵測完全空白的頁面;數值越低,則允許頁面包含少量內容。"
"sensitivityHint": "數值越高,判定條件越嚴格,只會偵測完全空白的頁面;數值越低,則可能將含有少量內容的頁面視為空白頁。"
},
"imageToPdf": {
"name": "圖片轉 PDF",
@@ -425,10 +425,10 @@
"status": {
"selectAtLeastOne": "請至少選擇 1 個 JSON 檔案",
"selectedReady": "已選擇 {{count}} 個檔案。準備轉換!",
"readingFiles": "正在讀取檔案(主執行緒)...",
"converting": "正在將 JSON 檔案轉換為 PDF...",
"readingFiles": "正在讀取檔案(主執行緒)…",
"converting": "正在將 JSON 檔案轉換為 PDF…",
"readError": "讀取檔案時發生錯誤:{{message}}",
"creatingZip": "正在建立 ZIP 檔案...",
"creatingZip": "正在建立 ZIP 檔案…",
"success": "JSON 檔案已成功轉換為 PDF!ZIP 下載已開始。",
"zipError": "建立 ZIP 時發生錯誤:{{message}}",
"workerError": "Worker 錯誤:{{message}}",
@@ -449,7 +449,7 @@
"conversionError": "無法將 PDF 轉換為 JPG。檔案可能已損壞。"
},
"loader": {
"converting": "正在轉換為 JPG..."
"converting": "正在轉換為 JPG…"
}
},
"pdfToPng": {
@@ -466,7 +466,7 @@
"conversionError": "無法將 PDF 轉換為 PNG。檔案可能已損壞。"
},
"loader": {
"converting": "正在轉換為 PNG..."
"converting": "正在轉換為 PNG…"
}
},
"pdfToWebp": {
@@ -483,7 +483,7 @@
"conversionError": "無法將 PDF 轉換為 WebP。檔案可能已損壞。"
},
"loader": {
"converting": "正在轉換為 WebP..."
"converting": "正在轉換為 WebP…"
}
},
"pdfToBmp": {
@@ -498,7 +498,7 @@
"conversionError": "無法將 PDF 轉換為 BMP。檔案可能已損壞。"
},
"loader": {
"converting": "正在轉換為 BMP..."
"converting": "正在轉換為 BMP…"
}
},
"pdfToTiff": {
@@ -510,8 +510,8 @@
"compressionExplanation": "LZW 和 Deflate 為無損壓縮。CCITT Group 4 最適合黑白掃描文件。",
"colorMode": "色彩模式",
"multiPage": "儲存為多頁 TIFF(單一檔案)",
"loadingVips": "正在載入影像處理器...",
"converting": "正在轉換為 TIFF...",
"loadingVips": "正在載入影像處理器…",
"converting": "正在轉換為 TIFF…",
"alert": {
"invalidFile": "無效檔案",
"invalidFileExplanation": "請上傳 PDF 檔案。",
@@ -519,12 +519,12 @@
"noFileExplanation": "請先上傳 PDF 檔案。",
"conversionSuccess": "PDF 已成功轉換為 TIFF!",
"conversionError": "無法將 PDF 轉換為 TIFF。檔案可能已損壞。",
"conversionOutOfMemory": "轉換時瀏覽器記憶體不足。請嘗試降低 DPI,或取消勾選多頁 TIFF 選項以逐頁轉換。"
"conversionOutOfMemory": "轉換時瀏覽器記憶體不足。請嘗試降低 DPI,或取消勾選多頁 TIFF 選項,改為逐頁轉換。"
}
},
"pdfToCbz": {
"name": "PDF 轉 CBZ",
"subtitle": "將 PDF 轉換為 CBZ(漫畫書封存)檔案,適用於漫畫閱讀器。",
"subtitle": "將 PDF 轉換為 CBZ(漫畫封存檔),供漫畫閱讀器使用。",
"imageFormat": "圖片格式",
"quality": "圖片品質",
"qualityExplanation": "品質越高,檔案越大",
@@ -539,10 +539,10 @@
"numberLabel": "編號",
"volumeLabel": "卷",
"publisherLabel": "出版社",
"tagsLabel": "標籤 / 類型",
"tagsLabel": "標籤/類型",
"yearLabel": "出版年份",
"ratingLabel": "評分(0-5)",
"converting": "正在轉換為 CBZ...",
"converting": "正在轉換為 CBZ…",
"alert": {
"invalidFile": "無效檔案",
"invalidFileExplanation": "請上傳 PDF 檔案。",
@@ -563,11 +563,11 @@
"status": {
"selectAtLeastOne": "請至少選擇 1 個 PDF 檔案",
"selectedReady": "已選擇 {{count}} 個檔案。準備轉換!",
"checkingEncrypted": "正在檢查加密的 PDF...",
"readingFiles": "正在讀取檔案(主執行緒)...",
"converting": "正在將 PDF 轉換為 JSON...",
"checkingEncrypted": "正在檢查加密的 PDF…",
"readingFiles": "正在讀取檔案(主執行緒)…",
"converting": "正在將 PDF 轉換為 JSON…",
"readError": "讀取檔案時發生錯誤:{{message}}",
"creatingZip": "正在建立 ZIP 檔案...",
"creatingZip": "正在建立 ZIP 檔案…",
"success": "PDF 已成功轉換為 JSON!ZIP 下載已開始。",
"zipError": "建立 ZIP 時發生錯誤:{{message}}",
"workerError": "Worker 錯誤:{{message}}",
@@ -575,10 +575,10 @@
}
},
"ocrPdf": {
"name": "PDF 文字辨識 (OCR)",
"subtitle": "使 PDF 可搜尋且可複製。",
"name": "PDF 文字辨識(OCR)",
"subtitle": "讓 PDF 中的文字可供搜尋與複製。",
"languagesInDocument": "文件中的語言",
"searchLanguagesPlaceholder": "搜尋語言...",
"searchLanguagesPlaceholder": "搜尋語言…",
"selectedLabel": "已選擇:",
"none": "無",
"advancedSettingsSummary": "進階設定(建議使用,可提高準確度)",
@@ -586,22 +586,22 @@
"resolutionStandard": "標準(192 DPI)",
"resolutionHigh": "高(288 DPI)",
"resolutionUltra": "超高(384 DPI)",
"binarizeLabel": "將圖片二值化(提高對比度,改善清晰掃描文件的辨識效果)",
"binarizeLabel": "將辨識用影像轉為純黑白(提高對比度)",
"embedFullFontsLabel": "嵌入完整字型(檔案較大,相容性更好)",
"whitelistPresetLabel": "字元白名單預設組合",
"whitelistNone": "無(所有字元)",
"whitelistAlphanumeric": "字母數字 + 基本標點",
"whitelistAlphanumeric": "英數字元 + 基本標點",
"whitelistNumbersCurrency": "數字 + 貨幣符號",
"whitelistLettersOnly": "僅字母(A-Z、a-z)",
"whitelistNumbersOnly": "僅數字(0-9)",
"whitelistInvoice": "發票/收據(數字、$、.、-、/)",
"whitelistForms": "表單(字母數字 + 常用符號)",
"whitelistCustom": "自訂...",
"whitelistInvoice": "發票/收據(數字、$、.、-、/)",
"whitelistForms": "表單(英數字元 + 常用符號)",
"whitelistCustom": "自訂…",
"whitelistHelp": "系統只會辨識這些字元;若留空,則會辨識所有字元。",
"whitelistInputLabel": "字元白名單(選填)",
"whitelistInputPlaceholder": "例如:abcdefghijklmnopqrstuvwxyz0123456789$.,",
"startButton": "開始 OCR",
"progressInitializing": "正在初始化...",
"progressInitializing": "正在初始化…",
"resultsTitle": "OCR 完成",
"resultsDescription": "可搜尋的 PDF 已準備完成。也可以在下方複製或下載擷取出的文字。",
"copyToClipboard": "複製到剪貼簿",
@@ -632,11 +632,11 @@
"name": "交錯混合頁面",
"subtitle": "將每個 PDF 的頁面交錯合併。保留書籤。",
"retainPageLabels": "保留每個檔案的原始頁面標籤",
"retainPageLabelsHint": "關閉(預設):合併後的 PDF 使用自然頁碼 1–N。開啟:保留每個檔案的原始頁面標籤(可能產生重複的標籤)。"
"retainPageLabelsHint": "關閉(預設):合併後的 PDF 頁碼會依序編為 1–N。開啟:保留每個檔案的原始頁面標籤(可能產生重複的標籤)。"
},
"duplexCollate": {
"name": "雙面掃描整理",
"subtitle": "將分兩個區塊掃描的 PDF(先全部正面,再全部背面)重新排列成正確的正面/背面順序。",
"subtitle": "將分兩個區塊掃描的 PDF(先全部正面,再全部背面)重新排列成正確的正面/背面順序。",
"totalPagesLabel": "總頁數:",
"splitAfterPageLabel": "在此頁後分割",
"splitAfterPagePlaceholder": "例如 50",
@@ -644,27 +644,27 @@
"backBlockReverseOption": "反轉背面區塊(紙疊翻面掃描時常見)",
"backBlockKeepOption": "保持背面區塊原樣",
"autoSplitButton": "自動偵測分割點(對半)",
"exportGroupedLabel": "依原始文件長度分組匯出檔案",
"exportGroupedLabel": "依原始文件頁數分組匯出檔案",
"pagesPerDocumentLabel": "每份原始文件的頁數",
"groupedHelp": "啟用後,輸出為 ZIP 檔,其中每份分組文件對應一個 PDF。",
"collateButton": "整理 PDF",
"invalidFileTitle": "檔案無效",
"invalidFileMessage": "請選擇 PDF 檔案。",
"loadingPdf": "正在載入 PDF...",
"loadingPdf": "正在載入 PDF…",
"loadErrorMessage": "無法載入 PDF 檔案。",
"fileMeta": "{{size}} - {{count}} 頁",
"oddPageWarning": "頁數為奇數({{count}} 頁)。雙面掃描的頁數應為偶數,可能缺少或多出一頁。",
"previewSummary": "正面區塊:{{frontCount}} 頁,背面區塊:{{backCount}} 頁。輸出:{{outputCount}} 頁,依正面/背面順序排列。",
"previewMismatchWarning": "正面與背面區塊頁數不一致(正面 {{frontCount}} 頁,背面 {{backCount}} 頁)。較長一側多出的 {{extraCount}} 頁將不配對地附加在結尾。",
"previewSummary": "正面區塊:{{frontCount}} 頁,背面區塊:{{backCount}} 頁。輸出:{{outputCount}} 頁,依正面/背面順序排列。",
"previewMismatchWarning": "正面與背面區塊頁數不一致(正面 {{frontCount}} 頁,背面 {{backCount}} 頁)。較長一側多出的 {{extraCount}} 頁將直接附加在結尾,不另配對。",
"missingFileTitle": "缺少檔案",
"missingFileMessage": "請先上傳至少 2 頁的 PDF 再進行處理。",
"invalidSplitTitle": "分割點無效",
"invalidSplitMessage": "分割點必須介於第 1 頁與第 {{maxSplit}} 頁之間。",
"unevenConfirmTitle": "區塊不均等",
"unevenConfirmMessage": "正面區塊有 {{frontCount}} 頁,背面區塊有 {{backCount}} 頁。\n這通常表示某一頁被掃描兩次或缺失。\n\n未配對的 {{extraCount}} 頁將附加在結尾。\n\n仍要繼續嗎?",
"unevenConfirmTitle": "正反面頁數不一致",
"unevenConfirmMessage": "正面區塊有 {{frontCount}} 頁,背面區塊有 {{backCount}} 頁。\n這通常表示有頁面重複掃描或遺漏。\n\n未配對的 {{extraCount}} 頁將附加在結尾。\n\n仍要繼續嗎?",
"invalidGroupTitle": "分組大小無效",
"invalidGroupMessage": "請輸入有效的每份原始文件頁數。",
"collatingLoader": "正在整理雙面掃描...",
"collatingLoader": "正在整理雙面掃描…",
"successMessage": "已成功產生整理後的 PDF。",
"successGroupedMessage": "整理完成,已產生 {{fileCount}} 個分組檔案。",
"processErrorMessage": "無法整理 PDF。",
@@ -673,7 +673,7 @@
"howItWorksStep2Title": "設定分割點",
"howItWorksStep2": "標出正面區塊結束的位置,然後選擇背面區塊是否需要反轉。",
"howItWorksStep3Title": "整理並下載",
"howItWorksStep3": "取得一個正反交錯排列的 PDF,或一個為每份原始文件各自成檔的 ZIP。",
"howItWorksStep3": "下載正反面交錯排列的單一 PDF,或下載 ZIP 檔,其中每份原始文件各自存成一個 PDF。",
"faqOddPagesQuestion": "如果掃描檔的頁數是奇數怎麼辦?",
"faqOddPagesAnswer": "雙面掃描的頁數應為偶數。若不是,通常表示某一頁被掃描兩次或被漏掉。處理前工具會提醒你,未配對的頁面會附加在結尾,因此不會遺失任何內容。",
"faqBackOrderQuestion": "什麼情況下要保持背面區塊原樣?",
@@ -700,7 +700,7 @@
"subtitle": "在您的 PDF 中的任一位置插入空白頁面。"
},
"reversePages": {
"name": "反轉頁面",
"name": "反轉頁面順序",
"subtitle": "反轉您的文件中所有頁面的順序。"
},
"rotatePdf": {
@@ -712,12 +712,12 @@
"subtitle": "以任意自訂角度旋轉頁面。"
},
"nUpPdf": {
"name": "多頁併一頁 (N-Up)",
"name": "多頁併一頁(N-Up)",
"subtitle": "將多個頁面排列在單張紙上。"
},
"combineToSinglePage": {
"name": "合併為單一頁面",
"subtitle": "將所有頁面縫合為一個連續的捲動頁面。"
"subtitle": "將所有頁面拼接成一個可連續捲動的頁面。"
},
"viewMetadata": {
"name": "檢視中繼資料",
@@ -750,7 +750,7 @@
"rightDocument": "右側文件",
"original": "原始",
"modified": "修改後",
"searchChanges": "搜尋變更...",
"searchChanges": "搜尋變更…",
"deleted": "已刪除",
"added": "已新增",
"prevPage": "上一頁",
@@ -762,15 +762,15 @@
"noMatchingChanges": "沒有符合目前篩選條件的變更。",
"pageNotExist": "此 PDF 中不存在第 {{page}} 頁。",
"noPairedPage": "此側沒有配對頁面。",
"buildingModel": "正在建立頁面配對模型...",
"indexingPdf": "正在索引 PDF {{num}},第 {{page}} / {{total}} 頁...",
"loadingComparison": "正在載入比較 {{current}} / {{total}}...",
"runningOcr": "正在對第 {{page}} 頁執行 OCR...",
"preparingExport": "正在準備 PDF 匯出...",
"renderingPage": "正在轉譯第 {{current}} / {{total}} 頁...",
"buildingModel": "正在建立頁面配對模型…",
"indexingPdf": "正在為 PDF {{num}} 建立索引(第 {{page}} / {{total}} 頁)…",
"loadingComparison": "正在載入比較 {{current}} / {{total}}…",
"runningOcr": "正在對第 {{page}} 頁執行 OCR…",
"preparingExport": "正在準備 PDF 匯出…",
"renderingPage": "正在繪製第 {{current}} / {{total}} 頁…",
"exportError": "匯出錯誤",
"exportFailed": "無法匯出比較 PDF。",
"loadingFile": "正在載入 {{name}}...",
"loadingFile": "正在載入 {{name}}…",
"invalidFile": "無效檔案",
"invalidFileMsg": "請選擇有效的 PDF 檔案。",
"loadError": "無法載入 PDF。檔案可能已損毀或受密碼保護。"
@@ -805,7 +805,7 @@
},
"sanitizePdf": {
"name": "清理 PDF",
"subtitle": "移除中繼資料、註解、腳本與其他資料。"
"subtitle": "移除中繼資料、註解、指令碼與其他資料。"
},
"decryptPdf": {
"name": "解密 PDF",
@@ -861,7 +861,7 @@
},
"markdownToPdf": {
"name": "Markdown 轉 PDF",
"subtitle": "編寫或貼上 Markdown 並匯出為精美格式的 PDF。",
"subtitle": "編寫或貼上 Markdown 並匯出為排版精美的 PDF。",
"paneMarkdown": "Markdown",
"panePreview": "預覽",
"btnUpload": "選擇",
@@ -869,10 +869,10 @@
"btnSettings": "設定",
"btnExportPdf": "匯出 PDF",
"settingsTitle": "Markdown 設定",
"settingsPreset": "預設",
"settingsPreset": "預設組合",
"presetDefault": "預設(GFM 風格)",
"presetCommonmark": "CommonMark(嚴格)",
"presetZero": "最小(無功能)",
"presetZero": "極簡(無額外功能)",
"settingsOptions": "Markdown 選項",
"optAllowHtml": "允許 HTML 標籤",
"optBreaks": "將換行轉換為 <br>",
@@ -881,7 +881,7 @@
},
"pdfBooklet": {
"name": "PDF 小手冊",
"subtitle": "重新排列頁面以利雙面小手冊列印。折疊並裝訂以製作小手冊。",
"subtitle": "重新排列頁面,以便雙面列印後摺疊,再用訂書機裝訂成小手冊。",
"howItWorks": "運作方式:",
"step1": "上傳 PDF 檔案。",
"step2": "頁面將按小手冊順序重新排列。",
@@ -892,7 +892,7 @@
"landscape": "橫向",
"pagesPerSheet": "每張紙的頁數",
"createBooklet": "建立小手冊",
"processing": "處理中...",
"processing": "處理中…",
"pageCount": "必要時,系統會將頁數補齊為 4 的倍數。"
},
"xpsToPdf": {
@@ -1005,7 +1005,7 @@
"name": "PDF 轉文字",
"subtitle": "從 PDF 檔案擷取文字並儲存為純文字檔案(.txt)。支援多個檔案。",
"noteLabel": "注意:",
"noteText": "此工具僅適用於數位建立的 PDF。對於掃描文件或基於圖片的 PDF,請改用我們的 OCR PDF 工具。",
"noteText": "此工具僅適用於以數位方式建立的 PDF。若為掃描文件或只包含影像資料的 PDF,請改用 [PDF 文字辨識(OCR)] 工具。",
"convertButton": "擷取文字"
},
"digitalSignPdf": {
@@ -1020,7 +1020,7 @@
"certInfo": "憑證資訊",
"certSubject": "主體",
"certIssuer": "簽發者",
"certValidity": "有效",
"certValidity": "有效期限",
"signatureDetails": "簽章詳細資料(選填)",
"reason": "原因",
"reasonPlaceholder": "例如:我核准此文件",
@@ -1044,7 +1044,7 @@
"yPosition": "Y 位置(上)",
"width": "寬度",
"height": "高度",
"addTextOverlay": "新增文字覆蓋",
"addTextOverlay": "疊加文字",
"text": "文字",
"textPlaceholder": "例如:由王小明數位簽署",
"textColor": "文字顏色",
@@ -1078,7 +1078,7 @@
"howToStep3Text": "套用數位簽章並下載已簽署的 PDF",
"relatedEncryptDesc": "用密碼保護您的 PDF",
"relatedDecryptDesc": "移除 PDF 密碼",
"relatedFlattenDesc": "使註解永久化",
"relatedFlattenDesc": "將註解併入頁面內容",
"relatedSanitizeDesc": "移除隱藏資料",
"relatedPermissionsDesc": "設定 PDF 權限",
"faqWhatIsQuestion": "什麼是數位簽章?",
@@ -1110,7 +1110,7 @@
},
"emailToPdf": {
"name": "電子郵件轉 PDF",
"subtitle": "將電子郵件檔案(EML、MSG)轉換為 PDF 格式。支援 Outlook 匯出和標準電子郵件格式。",
"subtitle": "將電子郵件檔案(EML、MSG)轉換為 PDF 格式。支援 Outlook 匯出的檔案和標準電子郵件格式。",
"acceptedFormats": "EML、MSG 檔案",
"convertButton": "轉換為 PDF"
},
@@ -1148,13 +1148,13 @@
},
"rasterizePdf": {
"name": "光柵化 PDF",
"subtitle": "將 PDF 轉換為基於影像的 PDF。展平圖層並移除可選取的文字。"
"subtitle": "將 PDF 轉換為只包含圖片的 PDF,合併圖層並移除可選取的文字。"
},
"pdfWorkflow": {
"name": "PDF 工作流程建構器",
"subtitle": "使用視覺化節點編輯器建構自訂 PDF 處理管線。",
"nodes": "節點",
"searchNodes": "搜尋節點...",
"searchNodes": "搜尋節點…",
"run": "執行",
"clear": "清除",
"save": "儲存",
@@ -1163,7 +1163,7 @@
"import": "匯入",
"ready": "就緒",
"settings": "設定",
"processing": "處理中...",
"processing": "處理中…",
"saveTemplate": "儲存範本",
"templateName": "範本名稱",
"templatePlaceholder": "例如:發票處理工作流程",
@@ -1200,9 +1200,9 @@
"failedToGetCanvasContext": "無法取得頁面 {{page}} 的 Canvas 繪圖環境",
"failedToRenderPageToImage": "無法將頁面 {{page}} 轉譯為影像",
"noPagesProcessed": "未處理任何頁面",
"cpdfNotConfigured": "CoherentPDF 未設定。請在進階設定中設定。",
"cpdfNotConfigured": "尚未設定 CoherentPDF。請至 [進階功能設定] 完成設定。",
"workerError": "Worker 錯誤:{{message}}",
"alternateMergeWorkerError": "交替合併 Worker 錯誤:{{message}}",
"alternateMergeWorkerError": "交錯混合頁面 Worker 錯誤:{{message}}",
"noPdfFilesUploaded": "PDF 輸入節點中未上傳 PDF 檔案",
"failedToLoadFile": "無法載入「{{file}}」,檔案可能已損毀",
"noImagesUploaded": "影像輸入節點中未上傳影像",
@@ -1226,7 +1226,7 @@
"noWpsUploaded": "WPS 輸入節點中未上傳 WPS 檔案",
"noXmlUploaded": "XML 輸入節點中未上傳 XML 檔案",
"noXpsUploaded": "XPS 輸入節點中未上傳 XPS 檔案",
"alternateMergeNeedsTwo": "交替合併需要至少連接兩個 PDF 到其輸入",
"alternateMergeNeedsTwo": "交錯混合頁面的輸入端至少須連接兩個 PDF。",
"cropMarginsExceed": "裁切邊距超出頁面尺寸。請縮小裁切值。",
"digitalSignNoCertificate": "數位簽章節點中未載入憑證",
"encryptUserPasswordRequired": "加密需要使用者密碼",
@@ -1243,7 +1243,7 @@
"timestampFailed": "使用 TSA {{tsa}} 加蓋時間戳記失敗:{{message}}",
"noOutputNodes": "找不到輸出節點。新增下載節點以完成您的工作流程。",
"circularDependency": "工作流程中偵測到循環相依性。請移除節點之間的任何循環。",
"encryptOrdering": "加密節點會將資料傳送至「{{target}}」,但該節點可能無法處理加密資料。請將加密節點移至緊鄰輸出節點的位置。",
"encryptOrdering": "加密節點會將資料傳送至「{{target}}」,但該節點可能無法處理加密資料。請將加密節點移到輸出節點的前一步。",
"invalidWorkflowFile": "無效的工作流程檔案:缺少節點或連接陣列。",
"storageQuotaExceeded": "儲存工作流程失敗:超出儲存配額。請嘗試刪除舊範本。",
"failedToImport": "匯入工作流程失敗:{{message}}"
@@ -1253,7 +1253,7 @@
"title": "進階功能設定",
"description": "設定外部處理模組以啟用進階 PDF 功能。這些模組為選用且另行授權。",
"status": {
"testing": "正在測試...",
"testing": "正在測試…",
"customOverride": "自訂覆寫",
"preConfigured": "預先設定",
"notConfigured": "未設定"
@@ -1262,7 +1262,7 @@
"preconfiguredDescription": "進階處理模組會從 CDN 自動載入。如需使用自訂來源(例如用於隔離環境或自架部署),可以覆寫下列 URL。",
"usingDefault": "使用預設值:{{url}}",
"pymupdfSubtitle": "文件處理引擎",
"pymupdfFeatures": "啟用:PDF 轉文字、Markdown、SVG、DOCX、Excel • 擷取圖片/表格 • 格式轉換",
"pymupdfFeatures": "啟用:PDF 轉文字、Markdown、SVG、DOCX、Excel • 擷取圖片/表格 • 格式轉換",
"testButton": "測試",
"recommendedLabel": "建議:",
"copyTitle": "複製到剪貼簿",
@@ -1271,7 +1271,7 @@
"cpdfSubtitle": "書籤和中繼資料引擎",
"cpdfFeatures": "啟用:按書籤分割 • 編輯書籤 • PDF 中繼資料",
"saveConfiguration": "儲存設定",
"savingConfiguration": "正在儲存設定...",
"savingConfiguration": "正在儲存設定…",
"savedTitle": "已儲存",
"savedMessage": "設定儲存成功!",
"errorTitle": "錯誤",
@@ -1291,7 +1291,7 @@
},
"pdfOverlay": {
"name": "PDF 疊加",
"subtitle": "將一個 PDF 的頁面疊加在另一個 PDF 上,或襯於其下。",
"subtitle": "將一個 PDF 的頁面疊加在另一個 PDF 上方,或放在下方作為襯底。",
"basePdfLabel": "基礎 PDF",
"uploadBasePdf": "上傳基礎 PDF",
"overlayPdfLabel": "疊加/襯底 PDF",
@@ -1300,7 +1300,7 @@
"overlayOption": "疊加(在頁面上方)",
"underlayOption": "襯底(在頁面下方)",
"pageRangeLabel": "套用到頁面(選填)",
"pageRangeHint": "使用 \"z\" 表示最後一頁。留空則套用到所有頁面。",
"pageRangeHint": "使用「z」表示最後一頁。留空則套用到所有頁面。",
"repeatLabel": "若基礎 PDF 頁數較多,則重複使用疊加/襯底頁面",
"processButton": "套用疊加/襯底",
"howItWorksUploadTitle": "上傳兩個 PDF",
@@ -1318,10 +1318,10 @@
},
"unlockPdf": {
"name": "解除鎖定 PDF",
"subtitle": "透過移除密碼保護解鎖 PDF。"
"subtitle": "移除 PDF 密碼保護,讓檔案可直接開啟。需要提供目前的密碼。"
},
"protectPdf": {
"name": "保護 PDF",
"subtitle": "透過新增密碼為您的 PDF 上鎖。"
"subtitle": "使用高強度 AES 加密為 PDF 加上密碼保護。"
}
}
@@ -13,7 +13,7 @@ pdfjs-next-button-label = 下一頁
# .title: Tooltip for the pageNumber input.
pdfjs-page-input =
.title = 第
.title = 頁碼
# Variables:
# $pagesCount (Number) - the total number of pages in the document
@@ -83,8 +83,8 @@ pdfjs-cursor-hand-tool-button =
.title = 開啟頁面移動工具
pdfjs-cursor-hand-tool-button-label = 頁面移動工具
pdfjs-scroll-page-button =
.title = 使用頁面捲動功能
pdfjs-scroll-page-button-label = 頁面捲動功能
.title = 使用單頁捲動版面
pdfjs-scroll-page-button-label = 單頁捲動
pdfjs-scroll-vertical-button =
.title = 使用垂直捲動版面
pdfjs-scroll-vertical-button-label = 垂直捲動
@@ -109,8 +109,8 @@ pdfjs-spread-even-button-label = 偶數跨頁
pdfjs-document-properties-button =
.title = 文件內容…
pdfjs-document-properties-button-label = 文件內容…
pdfjs-document-properties-file-name = 檔案名稱:
pdfjs-document-properties-file-size = 檔案大小:
pdfjs-document-properties-file-name = 檔案名稱:
pdfjs-document-properties-file-size = 檔案大小:
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
@@ -122,27 +122,27 @@ pdfjs-document-properties-kb = { $size_kb } KB({ $size_b } 位元組)
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB({ $size_b } 位元組)
pdfjs-document-properties-title = 標題:
pdfjs-document-properties-author = 作者:
pdfjs-document-properties-subject = 主旨:
pdfjs-document-properties-keywords = 關鍵字:
pdfjs-document-properties-creation-date = 建立日期:
pdfjs-document-properties-modification-date = 修改日期:
pdfjs-document-properties-title = 標題:
pdfjs-document-properties-author = 作者:
pdfjs-document-properties-subject = 主旨:
pdfjs-document-properties-keywords = 關鍵字:
pdfjs-document-properties-creation-date = 建立日期:
pdfjs-document-properties-modification-date = 修改日期:
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date } { $time }
pdfjs-document-properties-creator = 建立者:
pdfjs-document-properties-producer = PDF 產生器:
pdfjs-document-properties-version = PDF 版本:
pdfjs-document-properties-page-count = 頁數:
pdfjs-document-properties-page-size = 頁面大小:
pdfjs-document-properties-creator = 建立者:
pdfjs-document-properties-producer = PDF 產生器:
pdfjs-document-properties-version = PDF 版本:
pdfjs-document-properties-page-count = 頁數:
pdfjs-document-properties-page-size = 頁面大小:
pdfjs-document-properties-page-size-unit-inches = in
pdfjs-document-properties-page-size-unit-millimeters = mm
pdfjs-document-properties-page-size-orientation-portrait = 垂直
pdfjs-document-properties-page-size-orientation-landscape = 水平
pdfjs-document-properties-page-size-orientation-portrait = 直向
pdfjs-document-properties-page-size-orientation-landscape = 橫向
pdfjs-document-properties-page-size-name-a-three = A3
pdfjs-document-properties-page-size-name-a-four = A4
pdfjs-document-properties-page-size-name-letter = Letter
@@ -162,7 +162,7 @@ pdfjs-document-properties-page-size-dimension-name-string = { $width } × { $hei
# The linearization status of the document; usually called "Fast Web View" in
# English locales of Adobe software.
pdfjs-document-properties-linearized = 快速 Web 檢視:
pdfjs-document-properties-linearized = 快速 Web 檢視:
pdfjs-document-properties-linearized-yes = 是
pdfjs-document-properties-linearized-no = 否
pdfjs-document-properties-close-button = 關閉
@@ -176,24 +176,24 @@ pdfjs-print-progress-message = 正在準備列印文件…
pdfjs-print-progress-percent = { $progress }%
pdfjs-print-progress-close-button = 取消
pdfjs-printing-not-supported = 警告: 此瀏覽器未完整支援列印功能。
pdfjs-printing-not-ready = 警告: 此 PDF 未完成下載以供列印。
pdfjs-printing-not-supported = 警告:此瀏覽器未完整支援列印功能。
pdfjs-printing-not-ready = 警告:此 PDF 尚未完整載入,無法列印。
## Tooltips and alt text for side panel toolbar buttons
pdfjs-toggle-sidebar-button =
.title = 切換側邊欄
pdfjs-toggle-sidebar-notification-button =
.title = 切換側邊欄(包含大綱、附件、圖層的文件)
.title = 切換側邊欄(文件含有大綱、附件或圖層)
pdfjs-toggle-sidebar-button-label = 切換側邊欄
pdfjs-document-outline-button =
.title = 顯示文件大綱(雙擊展開/摺疊所有項目)
.title = 顯示文件大綱(按兩下展開/摺疊所有項目)
pdfjs-document-outline-button-label = 文件大綱
pdfjs-attachments-button =
.title = 顯示附件
pdfjs-attachments-button-label = 附件
pdfjs-layers-button =
.title = 顯示圖層(滑鼠雙擊即可將所有圖層重設為預設狀態)
.title = 顯示圖層(按兩下即可將所有圖層重設為預設狀態)
pdfjs-layers-button-label = 圖層
pdfjs-thumbs-button =
.title = 顯示縮圖
@@ -231,8 +231,8 @@ pdfjs-find-next-button =
pdfjs-find-next-button-label = 下一個
pdfjs-find-highlight-checkbox = 強調全部
pdfjs-find-match-case-checkbox-label = 區分大小寫
pdfjs-find-match-diacritics-checkbox-label = 符合變音符號
pdfjs-find-entire-word-checkbox-label = 符合整個字
pdfjs-find-match-diacritics-checkbox-label = 區分變音符號
pdfjs-find-entire-word-checkbox-label = 全字比對
pdfjs-find-reached-top = 已搜尋至文件頂端,自底端繼續搜尋
pdfjs-find-reached-bottom = 已搜尋至文件底端,自頂端繼續搜尋
@@ -241,16 +241,16 @@ pdfjs-find-reached-bottom = 已搜尋至文件底端,自頂端繼續搜尋
# $total (Number) - the total number of matches in the document
pdfjs-find-match-count =
{ $total ->
[one] 第 { $current } 筆符合,共符合 { $total } 筆
*[other] 第 { $current } 筆符合,共符合 { $total } 筆
[one] { $current } / { $total } 筆相符
*[other] { $current } / { $total } 筆相符
}
# Variables:
# $limit (Number) - the maximum number of matches
pdfjs-find-match-count-limit =
{ $limit ->
[one] 符合超過 { $limit } 項
*[other] 符合超過 { $limit } 項
[one] 超過 { $limit } 筆相符結果
*[other] 超過 { $limit } 筆相符結果
}
pdfjs-find-not-found = 找不到指定文字
@@ -278,7 +278,7 @@ pdfjs-page-landmark =
pdfjs-loading-error = 載入 PDF 時發生錯誤。
pdfjs-invalid-file-error = 無效或毀損的 PDF 檔案。
pdfjs-missing-file-error = 找不到 PDF 檔案。
pdfjs-unexpected-response-error = 伺服器回應未預期的內容。
pdfjs-unexpected-response-error = 收到非預期的伺服器回應。
pdfjs-rendering-error = 描繪頁面時發生錯誤。
## Annotations
@@ -302,7 +302,7 @@ pdfjs-password-label = 請輸入用來開啟此 PDF 檔案的密碼。
pdfjs-password-invalid = 密碼不正確,請再試一次。
pdfjs-password-ok-button = 確定
pdfjs-password-cancel-button = 取消
pdfjs-web-fonts-disabled = 已停用網路字型 (Web fonts): 無法使用 PDF 內嵌字型。
pdfjs-web-fonts-disabled = 已停用網路字型(Web fonts):無法使用 PDF 內嵌字型。
## Editing
@@ -316,12 +316,12 @@ pdfjs-editor-stamp-button =
.title = 新增或編輯圖片
pdfjs-editor-stamp-button-label = 新增或編輯圖片
pdfjs-editor-highlight-button =
.title = 強調
pdfjs-editor-highlight-button-label = 強調
.title = 螢光標註
pdfjs-editor-highlight-button-label = 螢光標註
pdfjs-highlight-floating-button1 =
.title = 強調
.aria-label = 強調
pdfjs-highlight-floating-button-label = 強調
.title = 螢光標註
.aria-label = 螢光標註
pdfjs-highlight-floating-button-label = 螢光標註
## Remove button for the various kind of editor.
@@ -332,7 +332,7 @@ pdfjs-editor-remove-freetext-button =
pdfjs-editor-remove-stamp-button =
.title = 移除圖片
pdfjs-editor-remove-highlight-button =
.title = 移除強調範圍
.title = 移除螢光標註
##
@@ -341,20 +341,20 @@ pdfjs-editor-free-text-color-input = 色彩
pdfjs-editor-free-text-size-input = 大小
pdfjs-editor-ink-color-input = 色彩
pdfjs-editor-ink-thickness-input = 線條粗細
pdfjs-editor-ink-opacity-input = 透​明度
pdfjs-editor-ink-opacity-input = 透明度
pdfjs-editor-stamp-add-image-button =
.title = 新增圖片
pdfjs-editor-stamp-add-image-button-label = 新增圖片
# This refers to the thickness of the line used for free highlighting (not bound to text)
pdfjs-editor-free-highlight-thickness-input = 線條粗細
pdfjs-editor-free-highlight-thickness-title =
.title = 更改強調文字以外的項目時的線條粗細
.title = 調整非文字內容的螢光標註粗細
pdfjs-free-text =
.aria-label = 文本編輯器
.aria-label = 文字編輯器
pdfjs-free-text-default-content = 開始打字…
pdfjs-ink =
.aria-label = 圖形編輯器
.aria-label = 繪圖編輯器
pdfjs-ink-canvas =
.aria-label = 使用者建立的圖片
@@ -365,11 +365,11 @@ pdfjs-editor-alt-text-button-label = 替代文字
pdfjs-editor-alt-text-edit-button-label = 編輯替代文字
pdfjs-editor-alt-text-dialog-label = 挑選一種
pdfjs-editor-alt-text-dialog-description = 替代文字可協助盲人,或於圖片無法載入時提供說明。
pdfjs-editor-alt-text-dialog-description = 替代文字可在使用者看不到圖片或圖片無法載入時提供說明。
pdfjs-editor-alt-text-add-description-label = 新增描述
pdfjs-editor-alt-text-add-description-description = 用 1-2 句文字描述主題、背景或動作。
pdfjs-editor-alt-text-add-description-description = 用 1-2 句文字描述主體、背景或動作。
pdfjs-editor-alt-text-mark-decorative-label = 標示為裝飾性內容
pdfjs-editor-alt-text-mark-decorative-description = 這是裝飾性圖片,例如邊框或浮水印。
pdfjs-editor-alt-text-mark-decorative-description = 用於裝飾性圖片,例如邊框或浮水印。
pdfjs-editor-alt-text-cancel-button = 取消
pdfjs-editor-alt-text-save-button = 儲存
pdfjs-editor-alt-text-decorative-tooltip = 已標示為裝飾性內容
@@ -393,7 +393,7 @@ pdfjs-editor-resizer-label-middle-left = 中間左方 — 調整大小
## Color picker
# This means "Color used to highlight text"
pdfjs-editor-highlight-colorpicker-label = 強調色彩
pdfjs-editor-highlight-colorpicker-label = 螢光標註色彩
pdfjs-editor-colorpicker-button =
.title = 更改色彩
+60 -60
View File
@@ -13,7 +13,7 @@ pdfjs-next-button-label = 下一頁
# .title: Tooltip for the pageNumber input.
pdfjs-page-input =
.title = 第
.title = 頁碼
# Variables:
# $pagesCount (Number) - the total number of pages in the document
@@ -140,8 +140,8 @@ pdfjs-document-properties-page-count = 頁數:
pdfjs-document-properties-page-size = 頁面大小:
pdfjs-document-properties-page-size-unit-inches = in
pdfjs-document-properties-page-size-unit-millimeters = mm
pdfjs-document-properties-page-size-orientation-portrait = 垂直
pdfjs-document-properties-page-size-orientation-landscape = 水平
pdfjs-document-properties-page-size-orientation-portrait = 直向
pdfjs-document-properties-page-size-orientation-landscape = 橫向
pdfjs-document-properties-page-size-name-a-three = A3
pdfjs-document-properties-page-size-name-a-four = A4
pdfjs-document-properties-page-size-name-letter = Letter
@@ -176,23 +176,23 @@ pdfjs-print-progress-percent = { $progress }%
pdfjs-print-progress-close-button = 取消
pdfjs-printing-not-supported = 警告:此瀏覽器未完整支援列印功能。
pdfjs-printing-not-ready = 警告:此 PDF 未完成下載以供列印。
pdfjs-printing-not-ready = 警告:此 PDF 尚未完整載入,無法列印。
## Tooltips and alt text for side panel toolbar buttons
pdfjs-toggle-sidebar-button =
.title = 切換側邊欄
pdfjs-toggle-sidebar-notification-button =
.title = 切換側邊欄(包含大綱、附件、圖層的文件)
.title = 切換側邊欄(文件含有大綱、附件或圖層)
pdfjs-toggle-sidebar-button-label = 切換側邊欄
pdfjs-document-outline-button =
.title = 顯示文件大綱(雙擊展開/摺疊所有項目)
.title = 顯示文件大綱(按兩下展開/摺疊所有項目)
pdfjs-document-outline-button-label = 文件大綱
pdfjs-attachments-button =
.title = 顯示附件
pdfjs-attachments-button-label = 附件
pdfjs-layers-button =
.title = 顯示圖層(滑鼠雙擊即可將所有圖層重設為預設狀態)
.title = 顯示圖層(按兩下即可將所有圖層重設為預設狀態)
pdfjs-layers-button-label = 圖層
pdfjs-thumbs-button =
.title = 顯示縮圖
@@ -230,8 +230,8 @@ pdfjs-find-next-button =
pdfjs-find-next-button-label = 下一個
pdfjs-find-highlight-checkbox = 強調全部
pdfjs-find-match-case-checkbox-label = 區分大小寫
pdfjs-find-match-diacritics-checkbox-label = 符合變音符號
pdfjs-find-entire-word-checkbox-label = 符合整個字
pdfjs-find-match-diacritics-checkbox-label = 區分變音符號
pdfjs-find-entire-word-checkbox-label = 全字比對
pdfjs-find-reached-top = 已搜尋至文件頂端,自底端繼續搜尋
pdfjs-find-reached-bottom = 已搜尋至文件底端,自頂端繼續搜尋
@@ -248,8 +248,8 @@ pdfjs-find-match-count =
# $limit (Number) - the maximum number of matches
pdfjs-find-match-count-limit =
{ $limit ->
[one] 符合超過 { $limit } 項
*[other] 符合超過 { $limit } 項
[one] 超過 { $limit } 筆相符結果
*[other] 超過 { $limit } 筆相符結果
}
pdfjs-find-not-found = 找不到指定文字
@@ -277,7 +277,7 @@ pdfjs-page-landmark =
pdfjs-loading-error = 載入 PDF 時發生錯誤。
pdfjs-invalid-file-error = 無效或毀損的 PDF 檔案。
pdfjs-missing-file-error = 找不到 PDF 檔案。
pdfjs-unexpected-response-error = 伺服器回應未預期的內容。
pdfjs-unexpected-response-error = 收到非預期的伺服器回應。
pdfjs-rendering-error = 描繪頁面時發生錯誤。
## Annotations
@@ -300,7 +300,7 @@ pdfjs-password-label = 請輸入用來開啟此 PDF 檔案的密碼。
pdfjs-password-invalid = 密碼不正確,請再試一次。
pdfjs-password-ok-button = 確定
pdfjs-password-cancel-button = 取消
pdfjs-web-fonts-disabled = 已停用網路字型 (Web fonts): 無法使用 PDF 內嵌字型。
pdfjs-web-fonts-disabled = 已停用網路字型(Web fonts):無法使用 PDF 內嵌字型。
## Editing
@@ -318,12 +318,12 @@ pdfjs-editor-stamp-button =
.title = 新增或編輯圖片
pdfjs-editor-stamp-button-label = 新增或編輯圖片
pdfjs-editor-highlight-button =
.title = 強調
pdfjs-editor-highlight-button-label = 強調
.title = 螢光標註
pdfjs-editor-highlight-button-label = 螢光標註
pdfjs-highlight-floating-button1 =
.title = 強調
.aria-label = 強調
pdfjs-highlight-floating-button-label = 強調
.title = 螢光標註
.aria-label = 螢光標註
pdfjs-highlight-floating-button-label = 螢光標註
pdfjs-comment-floating-button =
.title = 註解
.aria-label = 註解
@@ -333,14 +333,14 @@ pdfjs-editor-comment-button =
.aria-label = 註解
pdfjs-editor-comment-button-label = 註解
pdfjs-editor-signature-button =
.title = 加入簽章
pdfjs-editor-signature-button-label = 加入簽章
.title = 加入簽名
pdfjs-editor-signature-button-label = 加入簽名
## Default editor aria labels
# “Highlight” is a noun, the string is used on the editor for highlights.
pdfjs-editor-highlight-editor =
.aria-label = 強調樣式編輯器
.aria-label = 螢光標註編輯器
# “Drawing” is a noun, the string is used on the editor for drawings.
pdfjs-editor-ink-editor =
.aria-label = 繪圖編輯器
@@ -349,7 +349,7 @@ pdfjs-editor-ink-editor =
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-signature-editor1 =
.aria-description = 簽章編輯器:{ $description }
.aria-description = 簽名編輯器:{ $description }
pdfjs-editor-stamp-editor =
.aria-label = 圖片編輯器
@@ -363,9 +363,9 @@ pdfjs-editor-remove-freetext-button =
pdfjs-editor-remove-stamp-button =
.title = 移除圖片
pdfjs-editor-remove-highlight-button =
.title = 移除選擇範圍的強調效果
.title = 移除螢光標註
pdfjs-editor-remove-signature-button =
.title = 移除簽章
.title = 移除簽名
##
@@ -374,25 +374,25 @@ pdfjs-editor-free-text-color-input = 色彩
pdfjs-editor-free-text-size-input = 大小
pdfjs-editor-ink-color-input = 色彩
pdfjs-editor-ink-thickness-input = 線條粗細
pdfjs-editor-ink-opacity-input = 透​明度
pdfjs-editor-ink-opacity-input = 透明度
pdfjs-editor-stamp-add-image-button =
.title = 新增圖片
pdfjs-editor-stamp-add-image-button-label = 新增圖片
# This refers to the thickness of the line used for free highlighting (not bound to text)
pdfjs-editor-free-highlight-thickness-input = 線條粗細
pdfjs-editor-free-highlight-thickness-title =
.title = 更改強調文字以外的項目時的線條粗細
.title = 調整非文字內容的螢光標註粗細
pdfjs-editor-add-signature-container =
.aria-label = 簽章控制元件與儲存的簽章
.aria-label = 簽名控制元件與儲存的簽名
pdfjs-editor-signature-add-signature-button =
.title = 新增簽章
pdfjs-editor-signature-add-signature-button-label = 新增簽章
.title = 新增簽名
pdfjs-editor-signature-add-signature-button-label = 新增簽名
# Used on the button to use an already saved signature.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-add-saved-signature-button =
.title = 已儲存簽章:{ $description }
.title = 已儲存簽名:{ $description }
# .default-content is used as a placeholder in an empty text editor.
pdfjs-free-text2 =
@@ -414,7 +414,7 @@ pdfjs-editor-comments-sidebar-close-button =
pdfjs-editor-comments-sidebar-close-button-label = 關閉側邊欄
# Instructional copy to add a comment by selecting text or an annotations.
pdfjs-editor-comments-sidebar-no-comments1 = 看到值得注意的內容嗎?將其標註並留下註解。
pdfjs-editor-comments-sidebar-no-comments1 = 看到值得注意的內容嗎?請加上螢光標註並留下註解。
pdfjs-editor-comments-sidebar-no-comments-link = 進一步了解
## Alt-text dialog
@@ -427,11 +427,11 @@ pdfjs-editor-alt-text-button-label = 替代文字
pdfjs-editor-alt-text-edit-button =
.aria-label = 編輯替代文字
pdfjs-editor-alt-text-dialog-label = 挑選一種
pdfjs-editor-alt-text-dialog-description = 替代文字可協助盲人,或於圖片無法載入時提供說明。
pdfjs-editor-alt-text-dialog-description = 替代文字可在使用者看不到圖片或圖片無法載入時提供說明。
pdfjs-editor-alt-text-add-description-label = 新增描述
pdfjs-editor-alt-text-add-description-description = 用 1-2 句文字描述主題、背景或動作。
pdfjs-editor-alt-text-add-description-description = 用 1-2 句文字描述主體、背景或動作。
pdfjs-editor-alt-text-mark-decorative-label = 標示為裝飾性內容
pdfjs-editor-alt-text-mark-decorative-description = 這是裝飾性圖片,例如邊框或浮水印。
pdfjs-editor-alt-text-mark-decorative-description = 用於裝飾性圖片,例如邊框或浮水印。
pdfjs-editor-alt-text-cancel-button = 取消
pdfjs-editor-alt-text-save-button = 儲存
pdfjs-editor-alt-text-decorative-tooltip = 已標示為裝飾性內容
@@ -463,7 +463,7 @@ pdfjs-editor-resizer-middle-left =
## Color picker
# This means "Color used to highlight text"
pdfjs-editor-highlight-colorpicker-label = 強調色彩
pdfjs-editor-highlight-colorpicker-label = 螢光標註色彩
pdfjs-editor-colorpicker-button =
.title = 更改色彩
@@ -500,7 +500,7 @@ pdfjs-editor-new-alt-text-textarea =
.placeholder = 在此寫下您的描述文字…
# This text refers to the alt text box above this description. It offers a definition of alt text.
pdfjs-editor-new-alt-text-description = 為看不到圖片的讀者,或圖片無法載入時顯示的簡短描述。
pdfjs-editor-new-alt-text-description = 在讀者看不到圖片或圖片無法載入時顯示的簡短描述。
# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.
pdfjs-editor-new-alt-text-disclaimer1 = 此替代文字是自動產生的,可能不夠精確。
@@ -545,9 +545,9 @@ pdfjs-image-alt-text-settings-button =
pdfjs-image-alt-text-settings-button-label = 圖片替代文字設定
pdfjs-editor-alt-text-settings-dialog-label = 圖片替代文字設定
pdfjs-editor-alt-text-settings-automatic-title = 自動化替代文字
pdfjs-editor-alt-text-settings-automatic-title = 自動產生的替代文字
pdfjs-editor-alt-text-settings-create-model-button-label = 自動產生替代文字
pdfjs-editor-alt-text-settings-create-model-description = 為您建議圖片描述,幫助看不到圖片的讀者,或於圖片無法載入時顯示。
pdfjs-editor-alt-text-settings-create-model-description = 提供圖片描述建議,供看不到圖片的讀者閱讀,或在圖片無法載入時顯示。
# Variables:
# $totalSize (Number) - the total size (in MB) of the AI model.
@@ -565,38 +565,38 @@ pdfjs-editor-alt-text-settings-close-button = 關閉
## Accessibility labels (announced by screen readers) for objects added to the editor.
pdfjs-editor-highlight-added-alert = 已加入強調範圍
pdfjs-editor-freetext-added-alert = 已加入文字
pdfjs-editor-highlight-added-alert = 已新增螢光標註
pdfjs-editor-freetext-added-alert = 已新增文字
pdfjs-editor-ink-added-alert = 已新增繪圖
pdfjs-editor-stamp-added-alert = 已新增圖片
pdfjs-editor-signature-added-alert = 已新增簽章
pdfjs-editor-signature-added-alert = 已新增簽名
## "Annotations removed" bar
pdfjs-editor-undo-bar-message-highlight = 已移除強調
pdfjs-editor-undo-bar-message-highlight = 已移除螢光標註
pdfjs-editor-undo-bar-message-freetext = 已移除文字
pdfjs-editor-undo-bar-message-ink = 已移除繪圖
pdfjs-editor-undo-bar-message-stamp = 已移除圖片
pdfjs-editor-undo-bar-message-signature = 已移除簽章
pdfjs-editor-undo-bar-message-signature = 已移除簽名
# Variables:
# $count (Number) - the number of removed annotations.
pdfjs-editor-undo-bar-message-multiple =
{ $count ->
[one] { $count } 個註解已移除
*[other] { $count } 個註解已移除
[one] 已移除 { $count } 個註解
*[other] 已移除 { $count } 個註解
}
pdfjs-editor-undo-bar-undo-button =
.title = 還原
pdfjs-editor-undo-bar-undo-button-label = 還原
.title = 復原
pdfjs-editor-undo-bar-undo-button-label = 復原
pdfjs-editor-undo-bar-close-button =
.title = 關閉
pdfjs-editor-undo-bar-close-button-label = 關閉
## Add a signature dialog
pdfjs-editor-add-signature-dialog-label = 此對話框讓使用者能夠建立簽章以加入 PDF 文件。使用者可以編輯他們的姓名(同時也是替代文字),並選擇性儲存簽章,以供未來重複使用。
pdfjs-editor-add-signature-dialog-title = 加入簽章
pdfjs-editor-add-signature-dialog-label = 此對話框讓使用者能夠建立簽名以加入 PDF 文件。使用者可以編輯簽名名稱(同時也是替代文字),並可選擇是否儲存簽名,以便日後重複使用。
pdfjs-editor-add-signature-dialog-title = 加入簽名
## Tab names
@@ -612,9 +612,9 @@ pdfjs-editor-add-signature-image-button = 圖片
## Tab panels
pdfjs-editor-add-signature-type-input =
.aria-label = 輸入簽章
.placeholder = 輸入簽章
pdfjs-editor-add-signature-draw-placeholder = 手繪簽章
.aria-label = 輸入簽名
.placeholder = 輸入簽名
pdfjs-editor-add-signature-draw-placeholder = 手繪簽名
pdfjs-editor-add-signature-draw-thickness-range-label = 線條粗細
# Variables:
@@ -634,17 +634,17 @@ pdfjs-editor-add-signature-image-browse-link =
pdfjs-editor-add-signature-description-label = 描述(替代文字)
pdfjs-editor-add-signature-description-input =
.title = 描述(替代文字)
pdfjs-editor-add-signature-description-default-when-drawing = 簽章
pdfjs-editor-add-signature-description-default-when-drawing = 簽名
pdfjs-editor-add-signature-clear-button-label = 清除簽章
pdfjs-editor-add-signature-clear-button-label = 清除簽名
pdfjs-editor-add-signature-clear-button =
.title = 清除簽章
pdfjs-editor-add-signature-save-checkbox = 儲存簽章
pdfjs-editor-add-signature-save-warning-message = 您已經儲存 5 式簽章,請移除任一式才能再新增。
.title = 清除簽名
pdfjs-editor-add-signature-save-checkbox = 儲存簽名
pdfjs-editor-add-signature-save-warning-message = 您已經儲存 5 個簽名,請移除任一個才能再儲存。
pdfjs-editor-add-signature-image-upload-error-title = 無法上傳圖片
pdfjs-editor-add-signature-image-upload-error-description = 請檢查您的網路連線,或改用其他圖片。
pdfjs-editor-add-signature-image-no-data-error-title = 無法將此圖片轉換成簽章
pdfjs-editor-add-signature-image-no-data-error-title = 無法將此圖片轉換成簽名
pdfjs-editor-add-signature-image-no-data-error-description = 請試著上傳另一張圖片。
pdfjs-editor-add-signature-error-close-button = 關閉
@@ -656,8 +656,8 @@ pdfjs-editor-add-signature-add-button = 新增
## Main menu for adding/removing signatures
pdfjs-editor-delete-signature-button1 =
.title = 移除儲存的簽章
pdfjs-editor-delete-signature-button-label1 = 移除儲存的簽章
.title = 移除儲存的簽名
pdfjs-editor-delete-signature-button-label1 = 移除儲存的簽名
## Editor toolbar
+3 -1
View File
@@ -424,7 +424,7 @@ async function performFlatteningCrop(
return newPdfDoc.save();
}
function resetState() {
export function resetState() {
if (cropperState.cropper) {
cropperState.cropper.destroy();
cropperState.cropper = null;
@@ -447,4 +447,6 @@ function resetState() {
const cropBtn = document.getElementById('crop-button') as HTMLButtonElement;
if (cropBtn) cropBtn.disabled = true;
window.scrollTo({ top: 0, behavior: 'smooth' });
}
+1
View File
@@ -84,6 +84,7 @@ const ESCAPED_MATH: ReadonlyArray<[string, string, boolean]> = [
['\\\\[', '\\\\]', true],
['\\\\(', '\\\\)', false],
['\\[', '\\]', true],
['$`', '`$', false],
];
function escapedMath(state: StateInline, silent: boolean): boolean {
+18
View File
@@ -0,0 +1,18 @@
import { describe, it, expect, vi, beforeEach } from 'vitest';
import { resetState } from '../js/logic/crop-pdf-page.ts';
// Test resetState function for cropping
describe('resetState', () => {
beforeEach(() => {
vi.spyOn(window, 'scrollTo').mockImplementation(() => {});
});
it('scrolls the page to the top after resetting', () => {
resetState();
expect(window.scrollTo).toHaveBeenCalledWith({
top: 0,
behavior: 'smooth',
});
});
});
+8 -1
View File
@@ -58,10 +58,17 @@ describe('Markdown to PDF rendering', () => {
'',
'```math\n\\int x\n```',
'',
'GitHub $`\\sqrt{3}`$ inline.',
'',
'Price $5 and $10, escaped \\$3, code `$q$`.',
].join('\n')
);
expect(root.querySelectorAll('.katex').length).toBe(8);
expect(root.querySelectorAll('.katex').length).toBe(9);
const github = [...root.querySelectorAll('p')].find((p) =>
p.textContent?.startsWith('GitHub')
);
expect(github?.querySelector('.katex')).not.toBeNull();
expect(github?.textContent).not.toMatch(/[$`‘’]/);
expect(root.querySelectorAll('.katex-display').length).toBe(5);
expect(root.querySelector('em')).toBeNull();
expect(root.textContent).toContain('Price $5 and $10, escaped $3');
+1 -1
View File
@@ -1 +1 @@
1b5d842415eb
3f6b6114b166
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
1b5d842415eb
3f6b6114b166
Binary file not shown.
Binary file not shown.