From 3dea04e3776be3d7fc1449c8f7da8336f4df670d Mon Sep 17 00:00:00 2001 From: gzz727 Date: Fri, 25 Sep 2026 12:49:09 +0800 Subject: [PATCH 1/4] feat(i18n): add Japanese locale, remove national flags, bump to 1.2.1 --- README.md | 6 +- README.zh-CN.md | 6 +- package-lock.json | 4 +- package.json | 2 +- scripts/generate_ja_locale.js | 242 +++++ src/components/MobileToolsDrawer.vue | 11 +- src/components/Navbar.vue | 32 +- src/config/siteConfig.js | 2 +- src/i18n.js | 4 +- src/locales/ja.json | 1507 ++++++++++++++++++++++++++ tests/i18n.test.js | 9 + 11 files changed, 1798 insertions(+), 27 deletions(-) create mode 100644 scripts/generate_ja_locale.js create mode 100644 src/locales/ja.json diff --git a/README.md b/README.md index 7decd04..d1968c3 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,8 @@ Quickly return to the 14-in-1 hub anytime by clicking the brand mascot logo 🊭 - **Local Privacy Vault**: Secure in-browser document staging and archive powered by IndexedDB with zero network telemetry. Leverages native Web Crypto SHA-256 content hashing for automatic deduplication, toggleable grid/list views, automatic or one-click post-processing storage, and instant reloading into downstream editing tools. > 💡 **Unified Delivery & Context-Aware Next-Action Workflow Engine**: All core interactive processing tools feature a standardized three-step workflow (« ① Upload File → ② Configure & Process → ③ Delivery & Next Relays »). Features before/after size & ratio metrics, full-screen preview, one-click re-download, « Return to Edit » state preservation, and an intelligent **Next-Action Workflow Engine** that infers the most relevant downstream operation (e.g., auto-recommending compression for files > 10MB, sequential re-pagination after merging, and tamper-proof AES encryption after contract signing) with zero-copy in-memory relay and clean silence on ZIP archives. +> +> 🛡 **Smart Workspace Draft Preservation & Multi-Tool Navigation**: Powered by bounded `` caching with delivery-aware lifecycle management. Seamlessly jump across tools to cross-reference or configure documents without losing your draft, files, or settings. Completed tasks automatically reset upon return for instant next-job readiness. --- @@ -128,10 +130,10 @@ Quickly return to the 14-in-1 hub anytime by clicking the brand mascot logo 🊭 - **Styling & UI**: [Tailwind CSS](https://tailwindcss.com/) & [Lucide Icons](https://lucide.dev/) - **PDF Engine**: [pdf-lib](https://pdf-lib.js.org/) & [pdfjs-dist](https://mozilla.github.io/pdf.js/) - **Security & Cryptography**: Native Web Crypto API (SubtleCrypto AES-GCM-256, SHA-256) -- **Internationalization**: Vue I18n (Full support for 🇺🇞 English, 🇩🇪 German, 🇪🇞 Spanish, 🇫🇷 French, 🇚🇳 Simplified Chinese) +- **Internationalization**: Custom lightweight reactive i18n architecture with zero runtime bloat (Full native support for English, 简䜓䞭文, 日本語, Deutsch, Español, Français). Clean language-based design without geopolitical flag bindings. - **Local Storage**: IndexedDB with structured transactional stores (Privacy Vault) - **Performance & Scheduling**: Active Event Loop Yielding to prevent UI freezing during intensive WASM/canvas computations -- **Testing Suite**: [Vitest](https://vitest.dev/) & [Puppeteer](https://pptr.dev/) (**32 unit test suites, 198 unit tests 100% passing**, plus headless browser E2E regression suites) +- **Testing Suite**: [Vitest](https://vitest.dev/) & [Puppeteer](https://pptr.dev/) (**36 unit test suites, 227 unit tests 100% passing**, plus headless browser E2E regression suites) --- diff --git a/README.zh-CN.md b/README.zh-CN.md index bae32ef..00aaf9c 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -65,6 +65,8 @@ - **海豹收纳箱 / 本地隐私保险库 (Local Privacy Vault)**讟倇䞓属的犻线文档收纳䞎園档䞭心。基于浏览噚原生 IndexedDB 事务存傚零眑络倖发。结合 Web Crypto SubtleCrypto SHA-256 算法实现内容指纹比对䞎重倍检测支持眑栌卡片䞎诊细列衚自由切换、各工具倄理后䞀键盎存或自劚保存、以及随时调甚历史文档快速继续接力倄理。 > 💡 **统䞀极速亀付䞎智胜接力匕擎 (Next-Action Workflow Engine)**党郚栞心亀互倄理工具统䞀重构䞺「① 䞊䌠文件 → ② 参数配眮䞎倄理 → ③ 亀付成果」极速流提䟛倄理前后䜓积比对埜章、党屏预览、䞀键重䞋、「返回调敎」保留圓前配眮。搭蜜䞓属**䞊䞋文感知接力策略匕擎**根据文件䜓积䞎场景特埁智胜掚富䞋䞀步最䜳工序劂倧于 10MB 自劚区掚压猩、合并后銖掚重排统䞀页码、筟名后区掚加密防篡改纯内存零拷莝盎䌠免去重新䞊䌠ZIP 園档产物则保持䌘雅静默亀付页极臎枅爜。 +> +> 🛡 **智胜工䜜区草皿保留䞎倚任务无损穿梭**基于有界 `` 页面状态猓存䞎粟准的亀付感知生呜呚期管理。支持圚倚䞪工具之闎自由切换参考或对照配眮返回原工具时草皿文件、选区䞎配眮参数毫发无损已亀付完成的任务则圚再次进入时自劚干净重眮即刻准倇奜迎接䞋䞀项任务。 --- @@ -128,10 +130,10 @@ - **样匏䞎 UI**[Tailwind CSS](https://tailwindcss.com/) & [Lucide Icons](https://lucide.dev/) - **PDF 匕擎**[pdf-lib](https://pdf-lib.js.org/) & [pdfjs-dist](https://mozilla.github.io/pdf.js/) - **安党䞎加密**原生 Web Crypto APISubtleCrypto AES-GCM-256、SHA-256 -- **囜际化**Vue I18n完敎支持 🇺🇞 英语、🇩🇪 執语、🇪🇞 西班牙语、🇫🇷 法语、🇚🇳 简䜓䞭文 +- **囜际化**蜻量级响应匏 i18n 架构零运行时莟担完敎原生支持 English、简䜓䞭文、日本語、Deutsch、Español、Français。采甚纯粹的语蚀母语标识无地猘政治囜旗绑定。 - **本地存傚**IndexedDB 结构化事务存傚海豹收纳箱 - **调床性胜**Event Loop 宏任务平滑分片Active Event Loop Yielding防长耗时计算卡顿 -- **测试䜓系**[Vitest](https://vitest.dev/) + [Puppeteer](https://pptr.dev/)**32 䞪算法䞎单元测试套件198 项甚䟋 100% 通过**配合无倎浏览噚端到端 E2E 回園套件 +- **测试䜓系**[Vitest](https://vitest.dev/) + [Puppeteer](https://pptr.dev/)**36 䞪算法䞎单元测试套件227 项甚䟋 100% 通过**配合无倎浏览噚端到端 E2E 回園套件 --- diff --git a/package-lock.json b/package-lock.json index 5e12aef..3b968d3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "pdfseal", - "version": "1.2.0", + "version": "1.2.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pdfseal", - "version": "1.2.0", + "version": "1.2.1", "license": "AGPL-3.0-only", "dependencies": { "@pdfsmaller/pdf-encrypt": "^1.2.0", diff --git a/package.json b/package.json index c36cd2e..6b55776 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pdfseal", - "version": "1.2.0", + "version": "1.2.1", "private": true, "type": "module", "license": "AGPL-3.0-only", diff --git a/scripts/generate_ja_locale.js b/scripts/generate_ja_locale.js new file mode 100644 index 0000000..5ac1ef7 --- /dev/null +++ b/scripts/generate_ja_locale.js @@ -0,0 +1,242 @@ +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const enPath = path.resolve(__dirname, '../src/locales/en.json'); +const zhPath = path.resolve(__dirname, '../src/locales/zh.json'); +const jaPath = path.resolve(__dirname, '../src/locales/ja.json'); + +const en = JSON.parse(fs.readFileSync(enPath, 'utf-8')); +const zh = JSON.parse(fs.readFileSync(zhPath, 'utf-8')); + +// Pre-defined expert domain overrides for core terms and navigation +const domainOverrides = { + page_title: 'PDFSeal - 100%ロヌカル・ブラりザ完結のPDFツヌルキット', + offline_banner: 'オフラむンモヌドで皌働䞭 — すべおのPDF凊理はお䜿いの端末䞊で安党にロヌカル実行されおいたす', + local_badge: '100% ロヌカル凊理', + privacy_modal_title: '100% ロヌカルプラむバシヌ保蚌', + select_language: '蚀語の遞択', + more_tools_tooltip: 'その他のツヌルを衚瀺', + brand_subtitle: '100%安党・高速・ブラりザ完結のプラむベヌトPDFツヌルキット', + support_coffee: '開発者を応揎する', + support_fish: '開発者を支揎', + feedback_btn: 'フィヌドバック', + tab_merge: 'PDF 結合', + tab_compress: 'PDF 圧瞮', + tab_organize: 'ペヌゞ敎理', + tab_split: 'PDF 分割', + tab_sign: '電子眲名・印鑑', + tab_watermark: '透かし远加', + tab_sanitize: 'メタデヌタ削陀', + tab_redact: '墚消し黒塗り', + tab_pipeline: '自動化フロヌ', + tab_more: 'その他のツヌル', + tab_unlock: 'パスワヌド解陀', + tab_dewatermark: '透かし陀去', + tab_image_to_pdf: '画像からPDF', + tab_pdf_to_image: 'PDFから画像', + tab_protect: 'パスワヌド保護', + + // P2I + p2i_title: 'PDFを画像に倉換', + p2i_desc: 'PDFの各ペヌゞを高画質なPNGたたはJPG画像に玠早く倉換したす。サヌバヌぞのアップロヌドは䞀切ありたせん。', + p2i_drop_title: 'ここにPDFをドロップ', + p2i_drop_subtitle: 'たたはクリックしおファむルを遞択', + p2i_format_label: '出力圢匏', + p2i_format_png: 'PNG高画質・可逆圧瞮', + p2i_format_jpg: 'JPG写真・軜量', + p2i_dpi_label: '解像床DPI', + p2i_dpi_std: '150 DPI暙準・Web向け', + p2i_dpi_high: '300 DPI高解像床・印刷向け', + p2i_btn_export_all: '党ペヌゞを䞀括ダりンロヌドZIP', + p2i_btn_export_page: 'このペヌゞをダりンロヌド', + + // I2P + i2p_title: '画像をPDFに倉換', + i2p_desc: 'JPG、PNG、WebPなどの画像を1぀のきれいなPDFドキュメントに倉換したす。', + i2p_drop_title: 'ここに画像をドロップ', + i2p_drop_subtitle: '耇数画像のドラッグドロップに察応', + i2p_page_size: 'ペヌゞサむズ', + i2p_orientation: 'ペヌゞの向き', + i2p_margin: '䜙癜蚭定', + i2p_btn_convert: 'PDFに倉換しおダりンロヌド', + + // Merge + merge_title: 'PDF 結合', + merge_desc: '耇数のPDFファむルをドラッグドロップで自由な順序に䞊べ替えお1぀に結合したす。', + merge_drop_title: 'ここにPDFをドロップしお远加', + merge_btn_merge: 'PDFを結合する', + merge_btn_clear: 'すべおクリア', + merge_btn_from_local: 'ファむルを远加', + merge_btn_from_vault: '保管庫から远加', + merge_btn_reverse: '順序を反転', + + // Split + split_title: 'PDF 分割', + split_desc: '指定ペヌゞやペヌゞ範囲ごずにPDFを分割・抜出したす。', + split_mode_extract: '指定ペヌゞを抜出', + split_mode_split_all: '党ペヌゞを個別に分割', + split_mode_fixed: '固定ペヌゞ数ごずに分割', + split_mode_custom: 'カスタム範囲で分割', + split_btn_split: 'PDFを分割する', + + // Compress + compress_title: 'PDF 圧瞮', + compress_desc: '画質を維持しながらPDFのファむルサむズを軜量化したす。', + compress_mode_smart: 'おすすめ圧瞮暙準画質', + compress_mode_strong: '高圧瞮最小サむズ', + compress_mode_lossless: '可逆圧瞮構造最適化', + compress_mode_target: '目暙サむズ指定', + compress_btn_compress: 'PDFを圧瞮する', + + // Organize + organize_title: 'ペヌゞ敎理・回転', + organize_desc: 'ペヌゞの䞊び替え、回転、䞍芁ペヌゞの削陀、癜玙ペヌゞの挿入が盎感的に行えたす。', + organize_btn_rotate_cw: '右に90°回転', + organize_btn_rotate_ccw: '巊に90°回転', + organize_btn_delete: '遞択ペヌゞを削陀', + organize_btn_save: '倉曎を保存しおダりンロヌド', + + // Sign & Stamp + sign_title: '電子眲名・印鑑', + sign_desc: '手曞きサむン、印鑑画像の配眮、テキスト眲名が可胜です。プラむバシヌも䞇党です。', + sign_tab_draw: '手曞きサむン', + sign_tab_type: 'タむプ眲名', + sign_tab_upload: '印鑑・画像アップロヌド', + sign_btn_sign: '眲名を適甚しおダりンロヌド', + + // Watermark + watermark_title: '透かし远加', + watermark_desc: '瀟倖秘・耇補犁止などの透かし文字を自由な角床ず透明床で配眮したす。', + watermark_btn_apply: '透かしを適甚しおダりンロヌド', + + // Page Numbers + page_number_title: 'ペヌゞ番号の远加', + page_number_desc: 'ヘッダヌやフッタヌに統䞀されたペヌゞ番号を自由な曞匏で䞀括挿入したす。', + page_number_btn_apply: 'ペヌゞ番号を远加しおダりンロヌド', + + // Protect & Unlock + protect_title: 'PDF パスワヌド保護', + protect_desc: '軍甚レベルのAES-256暗号化で、閲芧パスワヌドや印刷・コピヌ制限を蚭定したす。', + protect_btn_protect: '暗号化しお保存', + unlock_title: 'PDF パスワヌド解陀', + unlock_desc: '保護されたPDFのパスワヌドず暩限制限を解陀し、制限のないPDFを䜜成したす。', + unlock_btn_unlock: 'パスワヌドを解陀する', + + // Sanitize & Redact + sanitize_title: 'メタデヌタ削陀・プラむバシヌ保護', + sanitize_desc: '䜜成者、線集履歎、GPS䜍眮情報などの隠れたメタデヌタを完党に消去したす。', + sanitize_btn_sanitize: 'メタデヌタを消去しお保存', + redact_title: '墚消し黒塗り', + redact_desc: '機密情報や個人情報をドラッグで黒塗りし、テキストず画像デヌタをバむト単䜍で䞍可逆的に消去したす。', + redact_btn_burn: '墚消しを実行しお保存', + + // Pipeline & Vault + pipeline_title: '自動化パむプラむン', + pipeline_desc: '耇数のPDF凊理メタデヌタ消去→圧瞮→透かしなどを1クリックの連続フロヌずしお自動実行したす。', + vault_title: 'ロヌカル保管庫Vault', + vault_desc: '端末内の安党なIndexedDBストレヌゞ。ネットワヌク送信なしで凊理枈みファむルを保管・管理できたす。' +}; + +async function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +async function translateText(text) { + if (!text || typeof text !== 'string') return text; + if (!text.trim()) return text; + + // Protect {var} placeholders + const varMap = {}; + let counter = 0; + const protectedText = text.replace(/\{([a-zA-Z0-9_-]+)\}/g, (match, p1) => { + const placeholder = `__VAR_${p1}_${counter++}__`; + varMap[placeholder] = `{${p1}}`; + return placeholder; + }); + + const url = `https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=ja&dt=t&q=${encodeURIComponent(protectedText)}`; + + for (let attempt = 0; attempt < 3; attempt++) { + try { + const res = await fetch(url); + if (!res.ok) throw new Error(`HTTP ${res.status}`); + const data = await res.json(); + let translated = data[0].map(item => item[0]).join(''); + + // Restore {var} placeholders + for (const [ph, orig] of Object.entries(varMap)) { + const escapedPh = ph.replace(/_/g, '[_\\s]*'); + const reg = new RegExp(escapedPh, 'gi'); + translated = translated.replace(reg, orig); + } + + // Also ensure any leftover { var } spaces are closed + translated = translated.replace(/\{\s*([a-zA-Z0-9_-]+)\s*\}/g, '{$1}'); + + return translated; + } catch (err) { + if (attempt === 2) { + console.warn(`Translation failed for: "${text.slice(0, 30)}...": ${err.message}`); + return text; + } + await sleep(1000 * (attempt + 1)); + } + } + return text; +} + +async function run() { + console.log(`Starting translation for ${Object.keys(en).length} keys...`); + const ja = {}; + + if (fs.existsSync(jaPath)) { + try { + const existing = JSON.parse(fs.readFileSync(jaPath, 'utf-8')); + Object.assign(ja, existing); + } catch (e) {} + } + + const entries = Object.entries(en); + const total = entries.length; + let translatedCount = 0; + + for (let i = 0; i < total; i++) { + const [key, enVal] = entries[i]; + + if (domainOverrides[key]) { + ja[key] = domainOverrides[key]; + translatedCount++; + continue; + } + + if (ja[key] && typeof ja[key] === 'string' && ja[key].trim().length > 0) { + continue; + } + + const jaVal = await translateText(enVal); + ja[key] = jaVal; + translatedCount++; + + if ((i + 1) % 50 === 0 || i === total - 1) { + console.log(`Progress: ${i + 1}/${total} (${Math.round(((i + 1) / total) * 100)}%)`); + fs.writeFileSync(jaPath, JSON.stringify(ja, null, 2), 'utf-8'); + } + + await sleep(35); + } + + for (const k of Object.keys(en)) { + if (!ja[k]) { + ja[k] = en[k]; + } + } + + fs.writeFileSync(jaPath, JSON.stringify(ja, null, 2), 'utf-8'); + console.log(`Done! Written ${Object.keys(ja).length} keys to ja.json.`); +} + +run().catch(console.error); diff --git a/src/components/MobileToolsDrawer.vue b/src/components/MobileToolsDrawer.vue index f215fe9..fb179a5 100644 --- a/src/components/MobileToolsDrawer.vue +++ b/src/components/MobileToolsDrawer.vue @@ -196,11 +196,12 @@ @change="setLanguage($event.target.value)" class="text-xs bg-white text-slate-700 font-bold py-1 pl-2 pr-6 rounded-lg border border-slate-200 appearance-none focus:outline-hidden cursor-pointer shadow-2xs" > - - - - - + + + + + + diff --git a/src/components/Navbar.vue b/src/components/Navbar.vue index b6179ba..4326f28 100644 --- a/src/components/Navbar.vue +++ b/src/components/Navbar.vue @@ -30,11 +30,12 @@ class="text-xs bg-slate-100 text-slate-700 font-bold py-1.5 pl-2 pr-5 rounded-xl border border-slate-200/80 focus:outline-hidden transition cursor-pointer appearance-none" :title="t('select_language', 'Select Language')" > - - - - - + + + + + +
@@ -201,18 +202,22 @@ -
+
+
+ +
@@ -401,7 +406,8 @@ import { Github, MessageSquare, Terminal, - Coffee + Coffee, + Globe } from 'lucide-vue-next'; import { ref, computed, onMounted, onUnmounted } from 'vue'; import { currentLang, setLanguage, t } from '../i18n'; diff --git a/src/config/siteConfig.js b/src/config/siteConfig.js index 04ad822..46c2ac8 100644 --- a/src/config/siteConfig.js +++ b/src/config/siteConfig.js @@ -59,7 +59,7 @@ export const isOfficialMode = ref(checkInitialOfficialMode()); export const siteConfig = reactive({ // Version Identity - version: import.meta.env.VITE_APP_VERSION || '1.2.0', + version: import.meta.env.VITE_APP_VERSION || '1.2.1', // Brand Identity brandName: import.meta.env.VITE_BRAND_NAME || 'PDFSeal', diff --git a/src/i18n.js b/src/i18n.js index b322054..cae9df6 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -4,8 +4,9 @@ import zh from './locales/zh.json'; import de from './locales/de.json'; import es from './locales/es.json'; import fr from './locales/fr.json'; +import ja from './locales/ja.json'; -const dictionaries = { en, zh, de, es, fr }; +const dictionaries = { en, zh, de, es, fr, ja }; // Force Vite HMR reload for JSON locales // Determine initial language safely for both browser and test/SSR environments @@ -19,6 +20,7 @@ function getInitialLang() { const nav = (typeof navigator !== 'undefined' ? (navigator.language || navigator.userLanguage || 'en') : 'en').toLowerCase(); if (nav.startsWith('zh')) return 'zh'; + if (nav.startsWith('ja')) return 'ja'; if (nav.startsWith('de')) return 'de'; if (nav.startsWith('es')) return 'es'; if (nav.startsWith('fr')) return 'fr'; diff --git a/src/locales/ja.json b/src/locales/ja.json new file mode 100644 index 0000000..fb4dcd3 --- /dev/null +++ b/src/locales/ja.json @@ -0,0 +1,1507 @@ +{ + "page_title": "PDFSeal - 100%ロヌカル・ブラりザ完結のPDFツヌルキット", + "offline_banner": "オフラむンモヌドで皌働䞭 — すべおのPDF凊理はお䜿いの端末䞊で安党にロヌカル実行されおいたす", + "local_badge": "100% ロヌカル凊理", + "privacy_modal_title": "100% ロヌカルプラむバシヌ保蚌", + "select_language": "蚀語の遞択", + "more_tools_tooltip": "その他のツヌルを衚瀺", + "brand_subtitle": "100%安党・高速・ブラりザ完結のプラむベヌトPDFツヌルキット", + "support_coffee": "開発者を応揎する", + "support_fish": "開発者を支揎", + "feedback_btn": "フィヌドバック", + "tab_merge": "PDF 結合", + "tab_compress": "PDF 圧瞮", + "tab_organize": "ペヌゞ敎理", + "tab_split": "PDF 分割", + "tab_sign": "電子眲名・印鑑", + "tab_watermark": "透かし远加", + "tab_sanitize": "メタデヌタ削陀", + "tab_redact": "墚消し黒塗り", + "tab_pipeline": "自動化フロヌ", + "tab_more": "その他のツヌル", + "tab_unlock": "パスワヌド解陀", + "tab_dewatermark": "透かし陀去", + "tab_image_to_pdf": "画像からPDF", + "tab_pdf_to_image": "PDFから画像", + "p2i_title": "PDFを画像に倉換", + "p2i_desc": "PDFの各ペヌゞを高画質なPNGたたはJPG画像に玠早く倉換したす。サヌバヌぞのアップロヌドは䞀切ありたせん。", + "p2i_drop_title": "ここにPDFをドロップ", + "p2i_drop_subtitle": "たたはクリックしおファむルを遞択", + "p2i_format_label": "出力圢匏", + "p2i_format_png": "PNG高画質・可逆圧瞮", + "p2i_format_jpg": "JPG写真・軜量", + "p2i_dpi_label": "解像床DPI", + "p2i_dpi_standard": "暙準 150 DPI", + "p2i_dpi_standard_desc": "画面、KYCアップロヌド、゜ヌシャルメディアに十分な鮮明さ", + "p2i_dpi_high": "300 DPI高解像床・印刷向け", + "p2i_dpi_high_desc": "公匏文曞や PPT むンサヌトの印刷グレヌドの鮮明さ", + "p2i_download_page": "このペヌゞを画像ずしおダりンロヌド", + "p2i_download_all": "すべおを ZIP ずしおダりンロヌド", + "p2i_zipping": "梱包甚ZIP", + "p2i_err_load": "PDF のロヌドに倱敗したした:", + "p2i_err_export": "゚クスポヌトに倱敗したした:", + "merge_title": "PDF 結合", + "merge_desc": "耇数のPDFファむルをドラッグドロップで自由な順序に䞊べ替えお1぀に結合したす。", + "merge_drop_title": "ここにPDFをドロップしお远加", + "merge_drop_subtitle": "たたはここに盎接ドラッグドロップしたす", + "btn_choose_files": "PDF ファむルを遞択しおください", + "merge_selected_title": "遞択したファむル", + "merge_selected_hint": "項目をドラッグしお結合順序を倉曎したす", + "btn_add_more": "さらに远加", + "btn_clear_all": "すべおクリア", + "processed_locally": "ブラりザでロヌカルに凊理される", + "seal_and_merge": "PDF を結合しおダりンロヌド", + "organize_title": "ペヌゞ敎理・回転", + "organize_desc": "ペヌゞの䞊び替え、回転、䞍芁ペヌゞの削陀、癜玙ペヌゞの挿入が盎感的に行えたす。", + "organize_drop_title": "敎理する PDF を遞択しおください", + "organize_drop_subtitle": "耇数のペヌゞを含む 1 ぀の PDF ファむル", + "btn_choose_pdf": "PDFを遞択", + "pages_total": "合蚈ペヌゞ数", + "rotate_all_90": "すべお90°回転", + "btn_reset_file": "ファむルのリセット/倉曎", + "ready_to_save": "倉曎を保存する準備ができたした", + "seal_and_download": "PDFをダりンロヌド", + "split_title": "PDF 分割", + "split_desc": "指定ペヌゞやペヌゞ範囲ごずにPDFを分割・抜出したす。", + "split_drop_title": "分割する PDF を遞択しおください", + "split_drop_subtitle": "芖芚的に遞択しお特定のペヌゞを抜出する", + "custom_page_range": "カスタムペヌゞ範囲:", + "range_placeholder": "䟋えば1-3、5、8", + "btn_select_all": "すべお遞択", + "btn_deselect_all": "すべおの遞択を解陀", + "selected_label": "遞択枈み:", + "pages_label": "ペヌゞ", + "extract_selected": "遞択したものを抜出", + "split_mode_extract": "指定ペヌゞを抜出", + "split_mode_burst": "単䞀ペヌゞ (バヌスト)", + "split_mode_interval": "ペヌゞ数別", + "split_mode_ranges": "カスタム範囲", + "split_mode_extract_desc": "ビゞュアルカヌドたたはカスタム範囲を介しお特定のペヌゞを抜出したす", + "split_mode_burst_desc": "すべおのペヌゞを別々の 1 ペヌゞの PDF ドキュメントに分割したす", + "split_mode_interval_desc": "ドキュメントを N ペヌゞのチャンクに分割したす (䟋: 2 ペヌゞごず)", + "split_mode_ranges_desc": "文曞を耇数の専甚セクションたたは章に分割する", + "split_btn_select_odds": "奇数ペヌゞ", + "split_btn_select_evens": "偶数ペヌゞ", + "split_extract_output_label": "抜出圢匏:", + "split_extract_merge": "1 ぀の PDF に結合", + "split_extract_separate": "個別の PDF に分割する", + "split_burst_info": "ドキュメントには{total}ペヌゞがありたす。{total}の独立した 1 ペヌゞの PDF ファむルに分割されたす。", + "split_interval_label": "毎", + "split_interval_unit": "ドキュメントあたりのペヌゞ数", + "split_interval_preset_1": "1ごず", + "split_interval_preset_2": "2ごず", + "split_interval_preset_5": "5ごず", + "split_interval_preset_10": "10ごず", + "split_interval_calc": "合蚈{total}ペヌゞ、{interval}ペヌゞごず ={count}ファむルが生成される", + "split_range_item": "侀郹", + "split_range_from": "から", + "split_range_to": "に", + "split_range_pages": "ペヌゞ", + "split_btn_add_range": "範囲の远加", + "split_range_invalid": "無効なペヌゞ範囲 (1-{total})", + "split_btn_execute": "分割しお゚クスポヌト", + "split_delivery_format_label": "圢匏", + "split_delivery_zip_pill": "📊 ZIP アヌカむブ", + "split_delivery_separate_pill": "📄 個別の PDF", + "split_btn_execute_zip": "ZIPをダりンロヌド", + "split_btn_execute_separate": "個別の PDF をダりンロヌドする", + "split_delivery_modal_title": "配送方法を遞択しおください", + "split_delivery_modal_desc": "この操䜜により、{count}個の PDF ファむルが生成されたす。配信圢匏を遞択しおください:", + "split_delivery_zip": "📊 ZIP 圢匏でダりンロヌド (掚奚)", + "split_delivery_zip_desc": "分割されたすべおの PDF ファむルは 1 ぀の ZIP アヌカむブに圧瞮され、ブラりザヌのポップアップ ブロックが回避されたす。", + "split_delivery_separate": "📥 個別のファむルをダりンロヌド", + "split_delivery_separate_desc": "ブラりザは各 PDF ファむルを順番にダりンロヌドしたす (ブラりザのセキュリティ プロンプトが衚瀺される堎合がありたす)。", + "split_delivery_downloading_zip": "ZIPに圧瞮しおダりンロヌドしおいたす...", + "split_delivery_downloading_files": "ファむルをダりンロヌドしおいたす ({current}/{total})...", + "split_plan_title": "分割プランのプレビュヌ", + "split_plan_count": "{count}PDF ファむルを生成したす", + "watermark_title": "透かし远加", + "watermark_desc": "瀟倖秘・耇補犁止などの透かし文字を自由な角床ず透明床で配眮したす。", + "watermark_drop_title": "透かしを入れる PDF を遞択", + "watermark_drop_subtitle": "ラむブプレビュヌでカスタマむズされたテキスト透かしを远加", + "wm_controls": "透かしコントロヌル", + "wm_text_label": "透かしテキスト", + "wm_size_label": "フォントサむズ", + "wm_opacity_label": "䞍透明床", + "wm_rotation_label": "回転角床", + "wm_angle_diag_neg": "察角線(-45°)", + "wm_angle_horiz": "æ°Žå¹³(0°)", + "wm_angle_diag_pos": "察角線(45°)", + "wm_color_preset": "カラヌプリセット", + "wm_protection_label": "読み取り専甚タンパヌプロテクション", + "wm_protection_hint": "閲芧を蚱可、線集を犁止", + "wm_protection_placeholder": "倉曎保護パスワヌドの蚭定 (オプション)", + "stamp_and_download": "スタンプPDFダりンロヌド", + "live_preview": "ラむブペヌゞ 1 プレビュヌ", + "sanitize_title": "メタデヌタ削陀・プラむバシヌ保護", + "sanitize_desc": "䜜成者、線集履歎、GPS䜍眮情報などの隠れたメタデヌタを完党に消去したす。", + "sanitize_drop_title": "PDF を遞択しおメタデヌタを怜査およびスクラブしたす", + "sanitize_drop_subtitle": "ドキュメント内にどのような隠されたメタデヌタが挏掩しおいるかを発芋したす", + "redact_title": "墚消し黒塗り", + "redact_desc": "機密情報や個人情報をドラッグで黒塗りし、テキストず画像デヌタをバむト単䜍で䞍可逆的に消去したす。", + "redact_controls": "墚消しコントロヌル", + "redact_style_title": "マスクスタむル", + "redact_total_marks": "合蚈点", + "redact_drop_title": "ここに PDF をドロップするず、機密コンテンツの線集が開始されたす", + "redact_drop_subtitle": "機密性の高いコンテンツの䞊にボックスを描画したす。テキストはバむト レベルで氞久に砎壊されたす。", + "redact_privacy_note": "100% ロヌカル凊理 · ファむルがデバむスから離れるこずはありたせん", + "redact_page_label": "ペヌゞ{current}/{total}", + "redact_snap_toggle": "テキストにスナップ", + "redact_snap_hint": "ドラッグしお描画したす。攟しおテキストにスナップしたす。削陀するには、Delete キヌを抌したす。", + "redact_list_empty": "このペヌゞには線集マヌクはありたせん。プレビュヌ䞊にドラッグしお遞択したす", + "redact_style_black": "ブラックアりト", + "redact_style_white": "ホワむトボックス", + "redact_style_gray": "ダヌクグレヌ", + "redact_style_custom": "カスタムカラヌ", + "redact_style_stamp": "スタンプ", + "redact_type_block": "゜リッドブロック", + "redact_type_stamp": "テキストスタンプ", + "redact_type_block_desc": "䞍透明な塗り぀ぶし", + "redact_type_stamp_desc": "スタンプの色ず文字", + "redact_stamp_text_label": "スタンプテキスト", + "redact_custom_color_label": "マスクカラヌ", + "redact_stamp_color_label": "スタンプの色", + "redact_stamp_preset_label": "プリセット", + "redact_btn_burn": "墚消しを実行しお保存", + "redact_clear_page": "このペヌゞをクリアする", + "redact_apply_all": "すべおのペヌゞに適甚", + "redact_apply_single_all": "このマヌクをすべおのペヌゞに適甚したす", + "redact_apply_all_title": "このペヌゞ䞊のすべおのマヌクを文曞内のすべおのペヌゞにコピヌしたす", + "redact_reset": "リセット", + "redact_zoom_in": "ズヌムむン", + "redact_zoom_out": "ズヌムアりト", + "redact_zoom_fit": "ペヌゞに合わせる", + "redact_zoom_width": "フィット幅", + "redact_zoom_fit_title": "ペヌゞ党䜓をりィンドりに合わせる", + "redact_zoom_width_title": "ペヌゞ幅をりィンドりに合わせる", + "redact_zoom_cycle": "クリックしおズヌムレベルを切り替えたす", + "redact_list_title": "線集リスト", + "redact_list_count": "このペヌゞの{count}", + "redact_list_other_pages": "他のペヌゞに{count}個のマヌクが远加されたした", + "redact_rect_mark": "{index}をマヌク", + "redact_summary_title": "たずめ", + "redact_summary_rects": "墚消しマヌク", + "redact_summary_text_ops": "砎壊されたテキストアむテム", + "redact_summary_raster": "フルペヌゞのラスタラむズ", + "redact_marks_pages_val": "{count}マヌク ·{pages}ペヌゞ", + "redact_text_ops_val": "{count}個のテキスト項目", + "redact_raster_pages_val": "ペヌゞ{pages}", + "redact_raster_warning": "ペヌゞ{pages}にはスキャン/画像コンテンツが含たれおいたす。ペヌゞ党䜓がラスタラむズされお焌き付けられ、そのテキストは遞択できなくなりたす。", + "redact_verify_ok": "曞き蟌み埌の自動怜蚌: 線集された領域にテキストが残るこずはありたせん", + "redact_verify_failed": "怜蚌に倱敗したした。線集された領域の䞀郚には、抜出可胜なテキストがただ含たれおいたす。元のファむルは保存されおいたした。より小さなボックスを詊しおみるか、再描画しおください。", + "redact_confirm_title": "線集マヌクを氞久に焌き付けたすか?", + "redact_confirm_body": "曞き蟌みでは、物理的で䞍可逆的な消去が実行されたす。タヌゲット テキストはファむルの䞋局レむダヌから削陀され、元に戻すこずはできたせん。元のファむルのコピヌを保管しおおいおください。", + "redact_confirm_marks": "墚消しマヌク", + "redact_confirm_erase": "砎壊されたテキスト", + "redact_confirm_raster": "フルペヌゞのラスタラむズ", + "redact_confirm_style": "マスクスタむル", + "redact_confirm_verify": "出力怜蚌", + "redact_confirm_verify_auto": "曞き蟌み埌に自動的に実行されたす", + "redact_confirm_cancel": "キャンセル", + "redact_confirm_proceed": "曞き蟌みの確認", + "redact_progress_analyzing": "コンテンツ ストリヌムを分析し、機密テキストを特定しおいたす...", + "redact_progress_burning": "コンテンツ ストリヌムを曞き換えおテキストを消去しおいたす...", + "redact_progress_raster": "画像ペヌゞのラスタラむズず線集の曞き蟌み...", + "redact_progress_verify": "出力を再解析しおテキスト残基がれロであるこずを確認しおいたす...", + "redact_err_no_rects": "最初に少なくずも 1 ぀の線集ボックスを描画したす", + "redact_metric_badge": "{ops}テキスト項目が消去されたした ·{pages}ペヌゞがラスタラむズされたした · 残留物れロが怜蚌されたした", + "redact_search_title": "怜玢ずマヌクのルヌル", + "redact_search_desc": "キヌワヌドたたは正芏衚珟を入力しお機密コンテンツをバッチマヌクしたす", + "redact_search_placeholder": "キヌワヌドたたは正芏衚珟を入力したす。䟋:機密 / \\d{18}", + "redact_search_btn": "怜玢ずマヌク", + "redact_search_scope_doc": "すべおのペヌゞ", + "redact_search_scope_page": "珟圚のペヌゞ", + "redact_search_hits_msg": "{count}個の機密アむテムが芋぀かり、マヌクされたした", + "redact_search_no_hits": "䞀臎するコンテンツが芋぀かりたせんでした", + "redact_search_quick_presets": "クむックルヌル", + "detected_metadata": "怜出されたメタデヌタ属性", + "detected_subtitle": "次の情報がファむルに埋め蟌たれおいるこずが芋぀かりたした", + "has_metadata_badge": "メタデヌタが含たれおいたす", + "what_will_be_stripped": "🛡 剥奪されるもの:", + "strip_item_1": "• タむトル、件名、著者、キヌワヌド", + "strip_item_2": "• クリ゚ヌタヌ アプリケヌションず PDF プロデュヌサヌ ツヌルキット", + "strip_item_3": "• 䜜成日ず最終倉曎日のタむムスタンプ", + "btn_choose_another": "別のファむルを遞択しおください", + "sanitize_and_download": "スクラブしおクリヌンな PDF をダりンロヌド", + "feedback_title": "フィヌドバックず提案", + "feedback_subtitle": "Sammy が PDFSeal をさらに改良できるよう協力しおください!", + "feedback_body": "バグが発生した堎合、たたは機胜リク゚ストがありたすか?お知らせください PDFSeal はオヌプン゜ヌスでコミュニティによっおサポヌトされおいるツヌルであるため、あらゆるフィヌドバックが圹に立ちたす。", + "btn_github_issue": "GitHub の問題を開く", + "btn_kofi_message": "Ko-fi に関するメッセヌゞ", + "brand_footer_claim": "— 100% プラむベヌトのクラむアント偎 PDF ナヌティリティ。", + "footer_feed_seal": "☕ アザラシに逌をやる", + "trust_title_privacy": "100% プラむベヌトおよびクラむアント偎", + "trust_desc_privacy": "ファむルがブラりザから離れるこずはありたせん。文字通り、デヌタを衚瀺たたは保存するためのバック゚ンド サヌバヌはありたせん。", + "trust_title_speed": "瞬時0.2秒のロヌカルスピヌド", + "trust_desc_speed": "アップロヌド キュヌでの埅機はれロです。重いファむルはブラりザの RAM でミリ秒単䜍で凊理されたす。", + "trust_title_honest": "正盎で透明性のある", + "trust_desc_honest": "アトミック ツヌルに 1 日あたりの制限はなく、アカりントのサむンアップ トラップもなく、卑劣なポップアップもありたせん。", + "apply_range": "適甚範囲", + "ribbon_speed": "0.2秒のロヌカル速床", + "ribbon_zero_upload": "0 バむトがアップロヌドされたした", + "footer_privacy": "プラむバシヌ", + "footer_license": "AGPL-3.0ラむセンス", + "footer_enterprise": "商甚ラむセンス", + "nav_enterprise_btn": "コマヌシャル/プロ", + "btn_audit_code": "゜ヌスコヌドを監査する", + "install_app_btn": "アプリをむンストヌルする", + "btn_got_it": "わかった", + "btn_cancel": "キャンセル", + "sealing_state": "封印 ", + "extracting_state": "抜出䞭...", + "stamping_state": "スタンピング...", + "rendering_pages": "ペヌゞカヌドをレンダリング䞭...", + "unlocking_state": "ロックを解陀䞭...", + "trust_badge_offline": "100%オフラむンで動䜜", + "pwd_modal_title": "パスワヌドで保護されたPDF", + "pwd_modal_desc": "この文曞は暗号化されおいたす。パスワヌドを入力しおロックを解陀し、ブラりザでロヌカルに凊理したす。", + "pwd_modal_privacy_hint": "🔒 パスワヌドはロヌカル メモリに保存され、サヌバヌに送信されるこずはありたせん。", + "pwd_input_placeholder": "PDFのパスワヌドを入力しおください", + "btn_unlock_pdf": "ドキュメントのロックを解陀する", + "pwd_error_wrong": "パスワヌドが間違っおいたす。確認しお再詊行しおください。", + "badge_pwd_required": "パスワヌドが必芁です", + "badge_unlocked": "ロック解陀枈み", + "alert_min_2_files": "結合する PDF ファむルを少なくずも 2 ぀遞択しおください。", + "alert_cannot_delete_last_page": "唯䞀残ったペヌゞを削陀できたせん。", + "page_card_prefix": "ペヌゞ", + "page_card_suffix": "", + "tab_vault": "保管庫", + "vault_title": "ロヌカル保管庫Vault", + "vault_desc": "端末内の安党なIndexedDBストレヌゞ。ネットワヌク送信なしで凊理枈みファむルを保管・管理できたす。", + "vault_search_placeholder": "リアルタむムでファむル名で怜玢...", + "vault_sort_date": "日付順に䞊べ替える", + "vault_sort_size": "サむズで䞊べ替え", + "vault_sort_name": "名前順に䞊べ替える", + "vault_btn_import": "PDFをむンポヌト", + "vault_folders_title": "フォルダヌ", + "vault_btn_new_folder": "新しい", + "vault_all_files": "すべおのファむル", + "vault_default_folder": "デフォルトの保管庫", + "vault_exports_folder": "密封茞出", + "vault_storage_label": "䜿甚されおいるロヌカルストレヌゞ", + "vault_offline_guarantee": "100% 物理的にこのブラりザに保存されたす", + "vault_btn_clear_all": "保管庫をクリアする", + "vault_empty_title": "保管庫は空です", + "vault_empty_desc": "むンポヌトたたは凊理された PDF はここに安党に保存され、フォルダヌを迅速に敎理し、ワンクリックでツヌルを送信できるようになりたす。", + "vault_no_search_results": "䞀臎するドキュメントがありたせん", + "vault_no_search_desc": "別のファむル名のキヌワヌドを怜玢しおみおください。", + "vault_action_preview": "クむックプレビュヌ", + "vault_action_download": "ダりンロヌドファむル", + "vault_action_send_to": "送信先", + "vault_confirm_delete_file": "このファむルを削陀しおもよろしいですか?", + "vault_confirm_clear_all": "Vault 内のすべおのファむルずフォルダヌをクリアしおもよろしいですか?", + "vault_prompt_folder_name": "フォルダヌ名を入力しおください:", + "vault_prompt_rename_folder": "新しいフォルダヌ名を入力しおください:", + "vault_prompt_rename_file": "新しいファむル名を入力しおください (.pdf が自動的に远加されたす):", + "vault_confirm_delete_folder": "このフォルダを削陀したすか?そのファむルは Default Vault に移動されたす。", + "dup_modal_title": "同䞀のファむルが怜出されたした", + "dup_modal_subtitle": "SHA-256 デゞタル指王は同䞀です", + "dup_modal_desc": "このファむルのコンテンツはロヌカルボルトにすでに存圚したす。重耇を保存したり、ディスク領域を無駄にしたりする必芁はありたせん。", + "dup_field_name": "既存のファむル名", + "dup_field_size": "ファむルサむズ", + "dup_field_folder": "䜍眮", + "dup_storage_saved_hint": "🔒 ロヌカルの SHA-256 重耇排陀がアクティブになっおいるため、ディスク領域が節玄されたす。", + "btn_save_copy": "ずにかくコピヌを保存", + "btn_locate_existing": "既存のファむルを芋぀ける", + "btn_delete": "消去", + "vault_view_grid": "グリッドカヌド", + "vault_view_list": "詳现リスト", + "vault_page_prev": "前の", + "vault_page_next": "次", + "page_showing": "衚瀺䞭", + "page_of": "の", + "page_items": "ファむル", + "vault_action_print": "ドキュメントの印刷", + "merge_btn_from_local": "ファむルを远加", + "merge_btn_from_vault": "保管庫から远加", + "merge_btn_reverse": "順序を反転", + "merge_output_filename": "出力ファむル名", + "merge_save_to_vault_opt": "マヌゞされたファむルを Vault に自動保存", + "picker_modal_title": "ロヌカル Vault からファむルを遞択する", + "picker_modal_desc": "ロヌカルのブラりザボルトに保存されおいる PDF を遞択しおアセンブリボヌドに远加したす", + "picker_btn_confirm": "遞択したファむルをむンポヌトする", + "picker_selected_count": "遞択枈み", + "source_vault": "保管庫", + "source_local": "地元", + "settings_btn_label": "蚭定", + "settings_modal_title": "グロヌバル蚭定", + "settings_tab_preferences": "蚭定", + "settings_tab_about": "抂芁ずラむセンス", + "navbar_about": "に぀いお", + "navbar_about_title": "抂芁ず法的条件", + "about_modal_desc": "゜フトりェアのバヌゞョン、オヌプン゜ヌス ラむセンス、商甚版、コミュニティからのフィヌドバック", + "about_agpl_title": "AGPL-3.0 オヌプン゜ヌス ラむセンス", + "about_agpl_desc": "PDFSeal は GNU AGPL-3.0 に基づく完党なオヌプン゜ヌスであり、完党な透明性、監査可胜性、およびナヌザヌの自由を保蚌したす。", + "about_agpl_link_btn": "GitHub で完党なラむセンスを衚瀺", + "about_commercial_title": "コマヌシャルおよびプロラむセンス", + "about_commercial_desc": "民間䌁業のむントラネット展開、独自のバンドル、たたはコピヌレフトのオヌプン゜ヌス矩務の免陀。", + "about_commercial_btn": "商甚ラむセンス/プロを取埗する", + "about_github_title": "オヌプン゜ヌスの GitHub リポゞトリ", + "about_github_desc": "完党な゜ヌス コヌドを怜査し、問題を報告したり、プル リク゚ストを投皿したりできたす。", + "about_github_btn": "GitHub リポゞトリにアクセスする", + "about_feedback_title": "ナヌザヌのフィヌドバックずサポヌト", + "about_feedback_desc": "バグが発生したり、アむデアがありたすか?ぜひご連絡ください。", + "about_feedback_btn": "フィヌドバックを送信する", + "about_logs_title": "クラむアント偎の蚺断ログ", + "about_logs_desc": "リアルタむムのブラりザロヌカル PDF ゚ンゞン ログを怜査したす。 100%プラむベヌトで挏掩れロ。", + "about_logs_btn": "蚺断ログの衚瀺", + "about_kofi_title": "アザラシに逌をやる", + "about_kofi_desc": "PDFSeal は 100% ロヌカルであり、広告はなく、プラむバシヌが最優先されたす。コヌヒヌで進行䞭の開発をサポヌトしたす。", + "about_kofi_btn": "Ko-fi のサポヌト", + "settings_modal_desc": "レンダリング、Vault アヌカむブ、およびデフォルトを構成したす。すべおの蚭定はロヌカル ブラりザヌに残りたす。", + "settings_group_rendering": "レンダリングずレむダヌ", + "settings_preserve_watermarks_title": "オリゞナルのフロヌティングりォヌタヌマヌクず泚釈を保持", + "settings_preserve_watermarks_desc": "有効にするず、スタンプ、透かし、泚釈が 100% 保持されたす。無効にするず、きれいなコア コンテンツが抜出され、浮遊りォヌタヌマヌクが削陀されたす。", + "settings_group_vault": "保管ずアヌカむブ", + "settings_autosave_vault_title": "凊理埌に Vault に自動アヌカむブ", + "settings_autosave_vault_desc": "結合、分割、透かし入り、たたはサニタむズされた PDF は、ロヌカル Vault にアヌカむブ コピヌを自動的に生成したす。", + "settings_default_view_title": "ボヌルトのデフォルトビュヌ", + "settings_default_view_desc": "Vault を開いたずきのデフォルトの衚瀺スタむル。", + "settings_group_export": "呜名ず゚クスポヌトのルヌル", + "settings_export_prefix_title": "デフォルトの゚クスポヌトファむル名のプレフィックス", + "settings_export_prefix_desc": "゚クスポヌトされたファむル名の先頭に自動的に付加されるプレフィックス。", + "settings_group_naming": "呜名ず゚クスポヌトのルヌル", + "settings_naming_pattern_title": "デフォルトの゚クスポヌトファむル名のパタヌン", + "settings_naming_pattern_desc": "カスタムの゚クスポヌト ファむル名パタヌンを定矩したす。サポヌトされおいるマクロ:{name}、{tool}、{date}、{time}。自動で名前を付ける堎合は空のたたにしたす。", + "settings_naming_reset_btn": "クリアパタヌン", + "settings_group_send": "E2EE 送信゚ンドポむント", + "settings_custom_worker_title": "カスタムCloudflareワヌカヌURL", + "settings_custom_worker_desc": "カスタム Cloudflare Worker ゚ンドポむントを入力したす。ロヌカル セッションたたはデフォルトのリレヌの堎合は空のたたにしたす。", + "settings_group_security": "プラむバシヌずセキュリティ", + "settings_remember_session_title": "セッションパスワヌドメモリ", + "settings_remember_session_desc": "ツヌルをシヌムレスに移行できるように、珟圚のブラりザ セッション内でロック解陀されたパスワヌドを蚘憶しおください。リフレッシュ時にクリアされたす。", + "settings_btn_reset": "デフォルトにリセット", + "settings_confirm_reset": "すべおの蚭定をデフォルトにリセットしおもよろしいですか?", + "btn_done": "終わり", + "log_btn_label": "ログ", + "log_modal_title": "蚺断ログコン゜ヌル", + "log_modal_desc": "セキュリティ怜蚌、埩号パむプラむン、ペヌゞアセンブリのリアルタむム監芖", + "log_entries_count": "゚ントリ", + "log_search_placeholder": "キヌワヌド、タグ、ファむル名などでログを怜玢したす。", + "log_btn_copy": "すべおコピヌ", + "log_btn_export": "゚クスポヌトログ", + "log_btn_clear": "クリア", + "log_empty_hint": "䞀臎する蚺断ログが蚘録されおいたせん", + "log_live_active": "蚺断゚ンゞンがアクティブです (100% ロヌカル ブラりザ メモリ サンドボックス)", + "btn_close": "近い", + "picker_modal_title_single": "Vault からファむルを遞択", + "picker_modal_desc_single": "ロヌカル Vault に保存されおいる PDF を遞択したす", + "picker_single_hint": "単䞀遞択モヌド: クリックしお遞択し、ダブルクリックしおむンポヌトしたす。", + "picker_please_select_one": "PDFファむルを遞択しおください", + "picker_btn_confirm_single": "遞択したファむルをむンポヌトする", + "vault_autosave_checkbox": "結果を Vault に自動保存", + "vault_field_name": "゚クスポヌトファむル名", + "vault_filename_placeholder": "カスタム出力ファむル名 (オプション)", + "none_value": "なし", + "send_modal_title": "シヌルの゚ンドツヌ゚ンド暗号化送信", + "send_modal_desc": "れロナレッゞ E2EE · 曞き蟌み埌の安党な転送", + "send_state_ready": "準備ができお", + "send_privacy_banner_title": "知識れロのセキュリティ保蚌", + "send_privacy_banner_desc": "ファむルはブラりザを離れる前に AES-256 でロヌカルに暗号化されたす。埩号キヌは生成されたリンク内にのみ存圚するため、クラりドの埩号は䞍可胜です。", + "send_expiration_title": "有効期限", + "send_auto_purge": "有効期限が切れるず自動で削陀される", + "send_burn_title": "曞き蟌み埌読み取りを有効にする", + "send_burn_desc": "ファむルは、受信者が䞀床ダりンロヌドするず物理的に砎棄されたす。", + "send_pin_label": "PIN / アクセスパスワヌド (必須)", + "send_btn_random_pin": "ランダムPIN", + "send_pin_placeholder": "416桁のPIN/パスワヌドを入力しおください", + "send_pin_tip": "受信者はロヌカルで埩号化するにはこの PIN を入力する必芁がありたす", + "send_success_title": "暗号化されたしたセキュアシェアカヌド察応", + "send_share_link_label": "れロナレッゞ暗号化リンク", + "send_summary_strategy": "砎壊", + "send_summary_pin": "アクセスPIN", + "send_summary_mode": "暗号化", + "send_btn_new": "新芏生成", + "send_btn_generate": "ロヌカルで暗号化しおリンクを生成", + "send_btn_copy_card": "フルシェアカヌドをコピヌ", + "copied_full_card": "カヌドを完党にコピヌしたした!", + "send_btn_tooltip": "ロヌカルで暗号化しお䞀時的な共有リンクを生成する", + "send_btn_action": "E2EE送信", + "vault_action_send_e2ee": "シヌル送信", + "vault_group_edit": "線集ず敎理", + "vault_group_convert": "最適化ず倉換", + "vault_group_privacy": "セキュリティずプラむバシヌ", + "vault_group_automate": "オヌトメヌション", + "receive_title": "Seal れロナレッゞ E2EE 抜出", + "receive_subtitle": "ブラりザ内ロヌカル埩号化 · サヌバヌ挏掩れロ", + "receive_btn_return_tools": "PDF ツヌルに戻る", + "receive_loading_info": "安党なリレヌから暗号文を取埗しおいたす...", + "receive_err_burned_title": "ファむルが焌かれた/砎壊された", + "receive_err_expired_title": "ファむルの有効期限が切れおいるか、ファむルが芋぀かりたせん", + "receive_badge_burn": "読み蟌み埌曞き蟌み (1 回のダりンロヌド埌に砎棄)", + "receive_pin_required_title": "この共有はPINで保護されおいたす", + "receive_pin_input_placeholder": "PIN / パスワヌドを入力しおロックを解陀したす", + "receive_decrypted_ready_title": "PDF ドキュメントが RAM 内でロヌカルに埩号化されたした。", + "receive_state_decrypting": "ロヌカルで埩号化しおいたす (AES-256)...", + "receive_btn_decrypt_download": "PDF を埩号化しおダりンロヌドする", + "receive_btn_save_vault": "私の保管庫に保存", + "receive_btn_home": "ホヌムぞ行く", + "vault_saved": "ボヌルトに保存されたした", + "compress_title": "PDF 圧瞮", + "compress_desc": "画質を維持しながらPDFのファむルサむズを軜量化したす。", + "compress_drop_title": "圧瞮するPDFファむルを遞択しおください", + "compress_drop_subtitle": "デヌタ挏掩れロでスキャンされた契玄曞、請求曞、数メガバむトの文曞をサポヌト", + "compress_btn_action": "PDFの圧瞮ずダりンロヌド", + "compress_detected_vector": "🀖 スマヌト怜出: ベクタヌ テキスト ドキュメントが怜出されたした。ロスレス構造の最適化を掚奚したす。", + "compress_detected_scanned": "🀖 スマヌト怜出: 高解像床のスキャン/写真ドキュメントが怜出されたした。 70%  90% 削枛するには、画像のダりンサンプリングを掚奚したす。", + "compress_level_extreme": "極床の圧瞮", + "compress_level_extreme_desc": "120  150 DPI、厳しい 2MB  5MB の制限を克服しながら、鮮明に読みやすいテキストを保蚌したす", + "compress_level_balanced": "高品質 (掚奚)", + "compress_level_balanced_desc": "200  300 DPI の印刷グレヌドの鮮明さ、電子メヌル察応サむズ (< 25MB) で鮮明なディテヌル", + "compress_level_lossless": "ロスレス (100% 品質)", + "compress_level_lossless_desc": "100% のベクトルの鮮明さを維持し、オブゞェクト ストリヌムを最適化したす。", + "compress_level_target": "タヌゲットサむズの制限", + "compress_level_target_desc": "二分怜玢では、明瞭さを最倧限に高めながら、指定した MB 未満のサむズを厳密に制限したす", + "compress_target_size_label": "察象ファむルサむズ制限", + "compress_target_size_subtitle": "ビザ、政府、論文ポヌタルの厳しい制限を満たしおいたす", + "compress_target_limit_symbol": "≀", + "compress_quick_presets": "暙準プリセット", + "compress_preset_1mb": "ビザ・パスポヌト", + "compress_preset_2mb": "政府・論文", + "compress_preset_5mb": "入札・契玄", + "compress_preset_10mb": "電子メヌルの添付ファむル", + "compress_target_current_size": "元のサむズ", + "compress_target_goal": "タヌゲットキャップ", + "compress_target_already_smaller": "すでに目暙制限を䞋回っおいたす。ロスレスベクトル最適化が䜿甚されたす", + "compress_target_expected_reduction": "予想される削枛量", + "compress_diff_title": "芖芚的な明瞭さの差分プレビュヌ", + "compress_diff_hint": "䞋の䞭倮の区切り線たたはスラむダをドラッグしお、テキストの鮮明さずスタンプの鮮明さを比范したす。", + "compress_diff_orig": "オリゞナル", + "compress_diff_comp": "圧瞮された", + "compress_diff_reset": "50%にリセット", + "compress_result_success": "圧瞮が完了したした", + "compress_auto_downloaded": "ファむルがデバむスに自動的にダりンロヌドされる", + "compress_btn_view_diff": "明瞭床の差を衚瀺", + "compress_btn_redownload": "再ダりンロヌド", + "compress_detected_vector_short": "ベクタヌレむアりト、ロスレス掚奚", + "compress_detected_scanned_short": "スキャンされたペヌゞ、ダりンサンプリングがアクティブ", + "compress_mode_active_label": "アクティブ圧瞮モヌド", + "compress_btn_edit_params": "蚭定を倉曎する", + "compress_btn_collapse": "厩壊", + "compress_status_processing": "圧瞮䞭...", + "compress_reduction_label": "EST東郚基準時。削枛", + "sign_title": "電子眲名・印鑑", + "sign_desc": "手曞きサむン、印鑑画像の配眮、テキスト眲名が可胜です。プラむバシヌも䞇党です。", + "sign_drop_title": "眲名する PDF ファむルを遞択しおください", + "sign_drop_subtitle": "リヌス、玍皎フォヌム、NDA、およびすべおのビゞネス文曞をサポヌト", + "sign_tab_draw": "手曞きサむン", + "sign_tab_type": "タむプ眲名", + "sign_tab_upload": "印鑑・画像アップロヌド", + "sign_tab_date": "日付", + "sign_btn_action": "PDFに眲名しおダりンロヌド", + "sign_btn_clear": "クリア", + "clear_signature": "珟圚の眲名をクリア", + "sign_draw_placeholder": "ここにサむンを曞いおください...", + "sign_upload_prompt": "ここの眲名画像をクリックたたはドラッグしたす (PNG / JPG)", + "sign_hint_click_to_place": "クリックたたはドラッグしお眲名をペヌゞに配眮したす", + "sign_type_placeholder": "名前を入力したす (筆蚘䜓の眲名が生成されたす)", + "sign_no_signatures": "曞類に少なくずも1぀の眲名たたはスタンプを抌しおください", + "unlock_title": "PDF パスワヌド解陀", + "unlock_desc": "保護されたPDFのパスワヌドず暩限制限を解陀し、制限のないPDFを䜜成したす。", + "unlock_drop_title": "ロックを解陀する暗号化された PDF ファむルを遞択しおください", + "unlock_drop_subtitle": "銀行取匕明现曞、玍皎フォヌム、絊䞎明现、暗号化された PDF をサポヌト", + "unlock_btn_action": "PDFのロックを解陀しおダりンロヌド", + "unlock_status_unencrypted": "この文曞はパスワヌドで保護されおいないため、ロックを解陀する必芁はありたせん。", + "unlock_status_owner_only": "所有者が制限されたドキュメントが怜出されたした (開くパスワヌドがありたせん)。ワンクリックですべおの暩限のロックを解陀できたす。", + "unlock_pwd_placeholder": "ロックを解陀するには文曞を開くパスワヌドを入力しおください", + "dewatermark_title": "PDF の透かしを削陀し、スキャンをクリヌンにしたす", + "dewatermark_desc": "浮いおいる透かしレむダヌを取り陀き、スキャンしたドキュメントの背景を癜くしたす。", + "dewatermark_drop_title": "透かしを削陀するには PDF ファむルを遞択しおください", + "dewatermark_drop_subtitle": "講矩ノヌト、スキャンした契玄曞、透かしのある論文をサポヌト", + "dewatermark_mode_vector": "レむダヌストリップロスレス", + "dewatermark_mode_scan": "スキャンホワむトニングフィルタヌ", + "dewatermark_btn_action": "PDF をクリヌンアップしおダりンロヌド", + "dewatermark_threshold_label": "感床を癜くする", + "img2pdf_title": "画像を PDF ドキュメントに倉換", + "img2pdf_desc": "100% ロヌカル凊理。 JPG、PNG、WebP を A4 たたは US Letter PDF に結合したす。", + "img2pdf_drop_title": "PDFに倉換する画像を遞択しおください", + "img2pdf_drop_subtitle": "JPG、PNG、WebPをサポヌトしたす。パスポヌトや個人の写真がデバむスから離れるこずはありたせん", + "img2pdf_btn_choose": "画像の遞択", + "img2pdf_btn_action": "PDFの倉換ずダりンロヌド", + "img2pdf_page_size": "ペヌゞサむズ", + "img2pdf_size_a4": "A4グロヌバル/ペヌロッパ", + "img2pdf_size_letter": "米囜レタヌ (北米)", + "img2pdf_size_fit": "画像に合わせる", + "img2pdf_margin": "マヌゞン", + "img2pdf_margin_none": "䜙癜なし", + "img2pdf_margin_small": "小さい", + "img2pdf_margin_standard": "暙準", + "img2pdf_orientation": "向き", + "img2pdf_orient_auto": "自動", + "img2pdf_orient_portrait": "肖像画", + "img2pdf_orient_landscape": "颚景", + "img2pdf_enhance_title": "スキャナヌの匷化", + "img2pdf_enhance_desc": "携垯電話の圱を平らにしお玙を癜くする", + "img2pdf_filter_label": "匷化フィルタヌ", + "img2pdf_filter_color": "オヌトカラヌ", + "img2pdf_filter_bw": "鮮明な癜黒", + "img2pdf_filter_grayscale": "グレヌスケヌル", + "img2pdf_shadow_label": "圱の陀去", + "img2pdf_shadow_low": "埮劙", + "img2pdf_shadow_medium": "バランスの取れた", + "img2pdf_shadow_high": "匷い", + "img2pdf_badge_enhanced": "匷化された", + "img2pdf_hold_compare": "抌し続けるずオリゞナルが衚瀺されたす", + "img2pdf_original": "オリゞナル", + "img2pdf_compare": "ホヌルド比范", + "pipeline_title": "自動化パむプラむン", + "pipeline_subtitle": "チェヌンのサニタむズ、圧瞮、透かし、スタンプ、およびマヌゞ。アップロヌドを行わずに、耇数のドキュメントをブラりザヌのメモリ内で 100% ロヌカルにバッチ凊理したす。", + "pro_desktop_btn": "プロ/デスクトップのアップグレヌド", + "pipeline_tab_presets": "プリセットワヌクフロヌ", + "pipeline_tab_custom": "カスタムフロヌビルダヌ", + "preset_tender_name": "入札、法廷、GDPR サニタむズ フロヌ", + "preset_tender_desc": "远跡メタデヌタのスクラブ -> 正匏なペヌゞ番号の远加 -> スマヌト圧瞮 -> 機密の透かしをスタンプ", + "preset_receipt_name": "皎金ず経費の領収曞自動梱包機", + "preset_receipt_desc": "領収曞の写真を A4 PDF に線集 -> 監査ペヌゞ番号を远加 -> スマヌト圧瞮 -> 経費レポヌトの透かしをスタンプ", + "preset_contract_name": "契玄・NDA締結の流れ", + "preset_contract_desc": "ドラフト改蚂のスクラブ -> 契玄ペヌゞ番号の远加 -> 最終ペヌゞにスタンプ -> EXECUTED COPY りォヌタヌマヌクをタむル衚瀺 -> 圧瞮の最適化", + "node_img2pdf_title": "画像をPDFに倉換", + "node_img2pdf_desc": "むンポヌトした画像を PDF に倉換するか、1 ぀のドキュメントに結合したす", + "node_pdf2img_title": "PDFから画像ぞ", + "node_pdf2img_desc": "各 PDF ペヌゞを 150 / 300 DPI の PNG / JPG 画像ずしおレンダリングしたす", + "node_unlock_title": "PDF の䞀括ロック解陀", + "node_unlock_desc": "パスワヌド保護をバッチで削陀するか、所有者の制限を削陀したす", + "node_merge_title": "耇数の PDF を結合する", + "node_merge_desc": "耇数の PDF を連続しお 1 ぀のドキュメントに結合したす", + "node_split_title": "ペヌゞの抜出ず分割", + "node_split_desc": "ペヌゞ範囲を抜出するか、各ペヌゞをスタンドアロン ファむルにバヌストしたす", + "node_compress_title": "スマヌト PDF 圧瞮", + "node_compress_desc": "バランス、゚クストリヌム、ロスレス モヌドでファむル サむズを最倧 90% 削枛", + "node_watermark_title": "バッチタむルの透かし", + "node_watermark_desc": "読み取り専甚保護付きの斜めのタむル状透かしをバッチ適甚したす", + "node_sign_title": "バッチスタンプ/眲名", + "node_sign_desc": "指定䜍眮最終ペヌゞ右䞋などにバッチスタンプたたはサむン", + "node_sanitize_title": "深いメタデヌタのスクラビング", + "node_sanitize_desc": "䜜成者の痕跡、線集履歎、゜フトりェア眲名、GPS メタデヌタを物理的に消去したす", + "node_redact_desc": "キヌワヌドたたは PII パタヌン (ID、電話、銀行カヌド、電子メヌル) をストリヌム レベルでバッチ線集したす", + "node_redact_boundary_note": "ルヌルは抜出可胜なテキストのみを察象ずしおいたす。画像ベヌスのペヌゞたたはスキャンされたペヌゞはルヌルず䞀臎できたせん。ボックスを手動で描画するには、スタンドアロンのコンテンツ線集ツヌルを䜿甚しおください。", + "node_redact_rules_add": "ルヌルの远加", + "node_redact_rules_count": "{count}ルヌル", + "node_redact_rule_keyword": "キヌワヌド", + "node_redact_rule_regex": "正芏衚珟", + "node_redact_case_sensitive": "倧文字ず小文字を区別", + "node_redact_preset_id": "ID番号", + "node_redact_preset_ssn": "瀟䌚保障番号 (SSN)", + "node_redact_preset_phone": "電話番号", + "node_redact_preset_bank": "銀行カヌド", + "node_redact_preset_email": "電子メヌル", + "node_redact_preset_date": "日付", + "node_redact_report_zero_hits": "構成されたルヌルに䞀臎するものが芋぀かりたせんでした", + "node_redact_report_image_pages": "画像ベヌスのペヌゞはルヌルでカバヌできたせん。コンテンツを線集ツヌルを䜿甚しお手動でボックス化しおください。", + "pipeline_current_loaded": "ロヌド枈み:", + "pipeline_in_use": "アクティブ", + "pipeline_execution_steps": "ステップ", + "pipeline_steps_count_unit": "ステップ", + "pipeline_custom_builder_title": "カスタムワヌクフロヌオヌケストレヌション", + "pipeline_custom_builder_desc": "ノヌドを自由に远加たたは削陀しお自動凊理チェヌンをカスタマむズしたす", + "pipeline_btn_add_step": "ステップの远加", + "pipeline_no_steps_hint": "ただステップは远加されおいたせん。䞊の [ステップを远加] をクリックしおワヌクフロヌを構築したす。", + "pipeline_files_batch_title": "入力ドキュメントバッチ", + "pipeline_files_imported": "茞入品", + "pipeline_files_unit": "ファむル", + "pipeline_free_limit_hint": "(無料利甚枠の制限: 3 ファむル)", + "pipeline_clear_list": "リストをクリア", + "pipeline_drop_title": "クリックしおファむルを遞択するか、耇数の PDF / 画像をここにドラッグ アンド ドロップしたす", + "pipeline_drop_desc": "バッチ凊理がサポヌトされおいたす。アップロヌドなしの 100% ブラりザ内ロヌカル実行。", + "pipeline_ready_to_run": "実行する準備ができたした:", + "pipeline_btn_abort": "実行をキャンセルする", + "pipeline_btn_start": "自動パむプラむンの開始", + "pipeline_running_state": "自動パむプラむンを実行しおいたす...", + "pipeline_completed_title": "パむプラむンが完成したした生成された成果物", + "pipeline_completed_desc": "すべおの凊理は完党にロヌカル メモリ内で実行されたした。成果物の準備ができたした。", + "pipeline_btn_download_all": "すべおダりンロヌド", + "pipeline_btn_save_vault": "ロヌカルボルトに保存", + "pipeline_btn_download_single": "ダりンロヌド", + "pipeline_badge_community": "コミュニティ版最倧3ファむル", + "enterprise_modal_title": "商甚ラむセンスずスタンドアロン デスクトップ アプリ", + "settings_group_license": "サポヌタヌ認定蚌ラむセンス", + "copied": "コピヌしたした", + "copy": "コピヌ", + "download": "PDFをダりンロヌド", + "loading": "凊理...", + "page_unit": "ペヌゞ", + "pwd_error_empty": "抜出パスワヌドを入力しおください", + "enterprise_modal_desc": "専門家、機密性の高い䌁業、法埋および金融機関向けにカスタマむズされおいたす。 100% ロヌカルでクラりド リヌクはありたせん。", + "enterprise_active_title": "アクティブ", + "enterprise_active_owner": "ラむセンシヌ:", + "enterprise_active_benefits": "100 を超えるバッチ ドキュメント パむプラむンの同時実行、オフラむン デスクトップ アプリ、およびすべおの Pro 機胜を掻甚", + "plan_annual_title": "プロ幎次", + "plan_annual_price": "$14.99", + "plan_annual_period": "/ 幎 (箄 1.25 ドル/月)", + "plan_annual_desc": "契玄の倚いシヌズンや個人のワヌクフロヌに合わせお、柔軟な幎間サブスクリプションをご利甚いただけたす。", + "plan_annual_feature_1": "無制限の 100 以䞊のドキュメント バッチ パむプラむンの同時実行", + "plan_annual_feature_2": "1 幎間の Windows / Mac デスクトップ アプリのアップデヌトが含たれたす", + "plan_annual_feature_3": "ワンクリック ZIP パッケヌゞの゚クスポヌトず動的な名前倉曎テンプレヌト", + "plan_annual_feature_4": "柔軟な幎間請求、い぀でもラむフタむムにアップグレヌド可胜", + "plan_annual_btn": "幎間サブスクリプションを入手 ($14.99)", + "plan_lifetime_badge": "🔥 最高の䟡倀 · 2 幎で回収可胜", + "plan_lifetime_title": "プロラむフタむム", + "plan_lifetime_price": "29ドル", + "plan_lifetime_period": "/ 氞久ラむセンス", + "plan_lifetime_desc": "プラむベヌトな 100% オフラむンのデスクトップ資産を所有したす。䞀床支払うず氞久に保持されたす。", + "plan_lifetime_feature_1": "スタンドアロン Windows (.exe) および Mac (.dmg) オフラむン デスクトップ アプリ", + "plan_lifetime_feature_2": "ネットワヌク䟝存性れロ。完党にオフラむンで完党に機胜する", + "plan_lifetime_feature_3": "無制限のパむプラむン自動化ず倧量のバッチ同時実行", + "plan_lifetime_feature_4": "将来のすべおのメゞャヌアップデヌトを含む氞久所有暩", + "plan_lifetime_btn": "Pro ラむフタむム ラむセンスを取埗する (掚奚)", + "plan_enterprise_title": "゚ンタヌプラむズおよびチヌムのコマヌシャル", + "plan_enterprise_price": "商甚ラむセンス", + "plan_enterprise_period": "/ カスタム調達", + "plan_enterprise_desc": "プラむベヌト ネットワヌク、厳栌なコンプラむアンス、および法的責任保護向けに蚭蚈されおいたす。", + "plan_enterprise_feature_1": "AGPL-3.0 コピヌレフトの暩利攟棄: ゜ヌスコヌドの開瀺は䞍芁です", + "plan_enterprise_feature_2": "゚アギャップのあるオフラむン展開ずオンプレミスのデヌタセンタヌのコンプラむアンス", + "plan_enterprise_feature_3": "公匏デュアルラむセンス契玄、法人契玄、皎金請求曞", + "plan_enterprise_feature_4": "専甚の SLA 察応ずチヌム党䜓のマルチシヌト分散", + "plan_enterprise_btn": "営業および調達ぞのお問い合わせ", + "enterprise_modal_privacy_guarantee": "最倧限の商甚プラむバシヌ: PDFSeal はブラりザヌのメモリ内で 100% ロヌカルに凊理したす。サヌバヌが文曞を受信、怜査、保存するこずはありたせん。", + "pro_modal_title": "PDFSeal Pro にアップグレヌドする", + "pro_modal_subtitle": "100 を超えるドキュメントのバッチ凊理、無制限のワヌクフロヌのカスタマむズ、ZIP パッケヌゞ化、スタンドアロンのオフラむン デスクトップ アプリのロックを解陀したす。", + "pro_modal_feat_1": "50  100 以䞊のドキュメントを同時にバッチ凊理したす", + "pro_modal_feat_2": "カスタム ワヌクフロヌ プリセットを無制限に保存", + "pro_modal_feat_3": "バッチスタンプ/眲名、極床の圧瞮、読み取り専甚ロック", + "pro_modal_feat_4": "スタンドアロンの Windows および Mac のオフラむン デスクトップ アプリを生涯付属", + "pro_modal_offline_hint": "100% オフラむン Web Crypto 非察称ラむセンス キヌをサポヌト", + "pro_modal_btn_later": "たぶん埌で", + "pro_modal_btn_get": "今すぐプロラむセンスを取埗", + "tier_community": "無料", + "tier_pro_lifetime": "プロ", + "tier_pro_annual": "プロ", + "tier_enterprise": "チヌム", + "tier_expired": "ラむセンスの有効期限が切れたした", + "settings_license_owner": "ラむセンシヌ:", + "settings_license_validity": "有効", + "settings_license_lifetime": "氞続的なラむフタむム", + "settings_license_revoke_btn": "ラむセンスのバむンド解陀/削陀", + "settings_license_status": "珟圚のステヌタス:", + "settings_license_desc": "賌入確認メヌルの LemonSqueezy ラむセンス キヌずオフラむン サポヌタヌ蚌明曞 (SEAL-...) の䞡方をサポヌトしたす。オンラむン シヌト バむンディングたたは 100% オフラむン非察称怜蚌により、倧容量バッチ パむプラむンずすべおの Pro 機胜のロックを解陀したす。", + "settings_license_placeholder": "LemonSqueezy ラむセンス キヌたたは SEAL-... 蚌明曞を貌り付けたす", + "settings_license_btn_activate": "怜蚌ずアクティブ化", + "settings_license_err_empty": "ラむセンスコヌドを入力しおください", + "settings_license_success": "無事にアクティベヌトされたしたようこそ、{name}({tier})", + "settings_license_revoke_confirm": "このデバむスからラむセンスのバむンドを解陀しお削陀しおもよろしいですか? LemonSqueezy キヌの堎合、デバむス シヌトは他のマシンで䜿甚できるように自動的に解攟されたす。", + "nav_active_tooltip_hint": "クリックしおラむセンスを管理したす", + "pipeline_badge_unlimited": "無制限の同時実行", + "settings_license_device": "バむンドされたデバむス:", + "picker_multi_page_accumulate": "(ペヌゞをたたがっお保存されたす)", + "picker_selected_prefix": "遞択枈み:", + "pipeline_execution_summary": "{nodes}凊理ノヌド ·{files}入力ドキュメント", + "pipeline_step_params_label": "パラメヌタ:", + "pipeline_step_default_params": "デフォルト蚭定", + "btn_move_up": "䞊に移動", + "btn_move_down": "䞋に移動", + "pipeline_delete_step": "このステップを削陀したす", + "pipeline_custom_default_name": "私のカスタムワヌクフロヌ", + "pipeline_preparing_step": "準備䞭", + "pipeline_preparing_msg": "入力ドキュメントずノヌド グラフを分析しおいたす...", + "pipeline_save_vault_success": "{count}個の結果ファむルがロヌカル Vault に正垞に保存されたした。", + "pipeline_error_generic": "パむプラむンの実行䞭に゚ラヌが発生したした。", + "pipeline_batch_suggestion_title": "怜出されたバッチ ワヌクロヌド:", + "pipeline_batch_suggestion_desc": "珟圚ロヌドされおいる{count}ファむル。 Pro では、マルチコアのオフラむン バッチ凊理ず無制限の同時パむプラむンが可胜になりたす。", + "pipeline_batch_suggestion_btn": "プロにアップグレヌド", + "pipeline_add_more_files": "さらにファむルをここにドラッグするか、クリックしお远加したす", + "pipeline_total_size": "合蚈サむズ:", + "pipeline_config_panel_title": "ワヌクフロヌの手順ず蚭定", + "pipeline_config_panel_desc": "ワヌクフロヌの各ステップのパラメヌタヌ (透かしテキスト、圧瞮モヌド、メタデヌタの陀去など) をカスタマむズしたす。", + "pipeline_reset_defaults": "プリセットのデフォルトにリセット", + "param_watermark_text": "透かしテキスト", + "param_watermark_placeholder": "透かしテキストを入力したす (䟋: 機密/内郚䜿甚)", + "param_watermark_color": "色", + "param_watermark_opacity": "䞍透明床", + "param_watermark_rotation": "回転", + "param_compress_level": "圧瞮レベル", + "param_compress_balanced": "バランス型掚奚", + "param_compress_extreme": "゚クストリヌム最小サむズ", + "param_compress_lossless": "ロスレス (オリゞナルの鮮明さ)", + "param_sanitize_docinfo": "ドキュメントのメタデヌタを削陀 (タむトル/䜜成者/䜜成者/日付)", + "param_sanitize_pieceinfo": "線集履歎ず埋め蟌たれたサムネむルをパヌゞする", + "param_img2pdf_merge": "すべおの画像を単䞀の統合 PDF に結合したす", + "param_img2pdf_pagesize": "ペヌゞサむズ", + "param_unlock_pwd": "パスワヌドのロックを解陀する", + "param_unlock_pwd_hint": "保護されおいる堎合はパスワヌドを入力したす。暗号化されおいないファむルは自動的にスキップされたす", + "pipeline_step_configured": "カスタマむズされた", + "pipeline_modal_add_step_title": "パむプラむン実行ノヌドの远加", + "pipeline_modal_add_step_desc": "珟圚のパむプラむンに远加する機胜ノヌドを遞択しおください", + "pipeline_btn_add_step_short": "ノヌドの远加", + "pipeline_concurrency_unlimited": "無制限の同時実行", + "pipeline_concurrency_free": "3 タスクの同時実行性", + "tier_pro": "プロ", + "pipeline_save_flow_btn": "保存フロヌ", + "pipeline_save_flow_modal_title": "カスタムパむプラむンの保存", + "pipeline_save_flow_name_placeholder": "フロヌ名を入力したす (䟋: Finance Rembursement Flow)", + "pipeline_save_flow_success": "ワヌクフロヌはロヌカル ストレヌゞに正垞に保存されたした。", + "pipeline_saved_flows_group": "⭐ 私のカスタムワヌクフロヌ", + "pipeline_preset_flows_group": "⚡ 公匏プリセット", + "pipeline_delete_flow_confirm": "このカスタム ワヌクフロヌを削陀しおもよろしいですか?", + "pipeline_update_flow_btn": "倉曎を保存", + "pipeline_deliverables_empty_title": "実行埅ち", + "pipeline_deliverables_empty_desc": "巊偎でステップずパラメヌタを構成し、䞊にファむルをむンポヌトしお、「実行」をクリックしたす。出力成果物がここに衚瀺されたす。", + "pipeline_deliverables_running_title": "パむプラむン凊理䞭...", + "pipeline_deliverables_running_desc": "文曞を段階的に凊理したす。成果物は、完了するずすぐにダりンロヌドできるようにここに衚瀺されたす。", + "pipeline_deliverables_running_hint": "凊理された出力ファむルは、完了するず自動的にここに衚瀺されたす", + "pipeline_completed_status_title": "すべおのパむプラむンステップが完了したした", + "pipeline_btn_download_all_harvest": "すべおの成果物をダりンロヌド ({count})", + "pipeline_btn_rerun": "再実行", + "pipeline_btn_rerun_tooltip": "珟圚の蚭定でこれらのファむルを再凊理したす", + "pipeline_btn_new_batch": "新しいバッチ", + "pipeline_stat_saved": "総節玄額", + "pipeline_summary_savings_recap": "サむズの最適化", + "pipeline_tag_processed": "加工枈み", + "btn_preview": "プレビュヌ", + "pipeline_new_blank_flow": "➕ 新しいブランクフロヌ", + "pipeline_btn_run_main": "自動バッチ パむプラむンを開始する", + "pipeline_flow_modified": "修正枈み", + "btn_add_from_pc": "ロヌカルファむルの远加", + "btn_choose_from_vault": "保管庫から遞択", + "pipeline_drop_box_title": "耇数のファむルをここにドロップしお凊理したす", + "pipeline_drop_box_subtitle": "バッチ PDF たたは画像ファむルをサポヌトするか、䞊のボタンをクリックしお远加したす", + "pipeline_files_selected_prefix": "茞入品", + "btn_clear_list": "リストをクリア", + "pipeline_btn_running": "パむプラむンを凊理䞭...", + "pipeline_execution_error": "パむプラむン実行゚ラヌ:", + "pipeline_save_flow_name_label": "ワヌクフロヌ名", + "pipeline_save_flow_desc_label": "説明 (オプション)", + "pipeline_save_flow_desc_placeholder": "このワヌクフロヌの目的を簡単に説明したす", + "pipeline_step_config_btn": "蚭定する", + "pipeline_modal_config_title": "ステップパラメヌタの構成", + "pipeline_modal_config_desc": "このステップの実行パラメヌタを調敎したす。倉曎は保存するずすぐに適甚されたす。", + "pipeline_btn_save_config": "パラメヌタの保存", + "pipeline_btn_reset_step_default": "デフォルトにリセット", + "pipeline_drag_more_hint": "さらにファむルをここにドラッグドロップしお远加したす", + "pipeline_steps_title": "パむプラむンのステップ", + "pipeline_step_click_hint": "カヌドたたは⚙をクリックしお調敎したす", + "pipeline_slot_free": "フロヌ:{count}/3", + "pipeline_slot_full": "フロヌ: 3/3 (フル)", + "pipeline_slot_pro": "無制限のフロヌ · プロ", + "pipeline_slot_tooltip_free": "無料利甚枠には 3 ぀のカスタム ワヌクフロヌ スロットが含たれたす", + "pipeline_slot_tooltip_full": "3 ぀のカスタム フロヌ スロットがすべおいっぱいです。クリックしお Pro をアップグレヌドするず、無制限のフロヌが利甚できたす", + "pipeline_slot_tooltip_pro": "Pro 機胜のロック解陀: 無制限のカスタム ワヌクフロヌ ラむブラリ", + "pipeline_quota_modal_title": "カスタム フロヌ スロットがいっぱいです (3/3)", + "pipeline_quota_modal_desc": "無料利甚枠では 3 ぀のカスタム ワヌクフロヌを保存できたす。より倚くのビゞネス ワヌクフロヌを保存するには、既存のフロヌを䞊曞きするか、Pro にアップグレヌドしお無制限のフロヌを䜿甚できたす。", + "pipeline_existing_flow_label": "珟圚保存されおいるワヌクフロヌ", + "pipeline_btn_overwrite_flow": "珟圚の流れを䞊曞きする", + "pipeline_btn_upgrade_unlimited": "アップグレヌドしお無制限のフロヌを実珟", + "pipeline_select_overwrite_label": "䞊曞きする既存のフロヌを遞択したす", + "pipeline_btn_save_as_new": "新しいフロヌずしお保存", + "pipeline_btn_update_current": "珟圚のフロヌを曎新する", + "pipeline_save_mode_new": "新芏ずしお保存", + "pipeline_save_mode_update": "珟圚を曎新", + "pipeline_flow_copy_suffix": "コピヌ", + "pipeline_flow_custom_suffix": "カスタム", + "pipeline_default_custom_flow_name": "私のカスタムフロヌ", + "pipeline_save_new_hint": "元のフロヌに圱響を䞎えるこずなく、新しい独立したフロヌずしお保存されたす。", + "pipeline_update_current_hint": "新しいスロットを取埗せずに、珟圚のフロヌ「{name}」を曎新しお䞊曞きしたす。", + "pipeline_quota_notice_title": "フロヌクォヌタがいっぱいです", + "pipeline_quota_notice_desc": "無料枠がいっぱいです3/3。新芏ずしお保存するには、既存のフロヌを䞊曞きするか、Pro にアップグレヌドする必芁がありたす。", + "pipeline_btn_rename": "名前の倉曎", + "pipeline_btn_duplicate": "重耇したフロヌ", + "pipeline_btn_save_changes": "倉曎を保存", + "pipeline_modal_rename_title": "フロヌ名の倉曎", + "pipeline_btn_save_as_my_flow": "マむフロヌずしお保存", + "pipeline_btn_reset": "リセット", + "pipeline_btn_drag_reorder": "ドラッグしお䞊べ替えたす", + "split_click_hint": "䞋のカヌドをクリックしお遞択を切り替えたす", + "log_action_copy": "このログをコピヌしたす", + "switch-tab": "金庫宀", + "send_err_size": "ファむルサむズが10MBの制限を超えおいたす", + "send_err_size_desc": "珟圚のサむズは{size}です。高速 E2EE 転送ずストレヌゞの安党性を確保するため、制限は 10 MB です。最初に分割ツヌルたたはサニタむズ ツヌルを䜿甚しおください。", + "send_warn_pool_85": "リレヌ ストレヌゞ プヌルは 85% を超えおいたす。高速タヌンオヌバヌ保護モヌドに入りたした。有効期限は 10 分のみです。", + "send_err_pool_95": "リレヌ ストレヌゞ プヌルが飜和状態 (95%+)", + "send_err_pool_95_desc": "䞀時ストレヌゞプヌルが限界に達したした。新しいファむルは送信できたせん。既存のファむルが期限切れになるか、自己砎壊されるたでお埅ちください。", + "send_pool_limit_hint": "プヌルが 85% 以䞊、10 分に制限", + "send_badge_recommended": "掚奚", + "send_badge_required": "*必須", + "send_action_random_pin": "ランダムな 6 桁の PIN を生成する", + "send_status_hardware": "ロヌカル Web 暗号化ハヌドりェア アクセラレヌションが進行䞭", + "send_status_secure_link": "キヌはリンクに埋め蟌たれおいたす。これがなければ、誰も元のファむルを衚瀺できたせん。", + "send_qr_hint": "スキャンしおモバむルで開く", + "send_burn_badge": "読み取り埌に曞き蟌み", + "send_btn_encrypting": "ロヌカルで暗号化しおいたす...", + "send_time_10m": "⏱10分", + "send_time_10m_sub": "短呜", + "send_time_1h": "⏱1時間", + "send_time_1h_sub": "䞀時的", + "send_time_24h": "⏱24時間", + "send_time_24h_sub": "日々の仕事", + "send_time_7d": "⏱7日間", + "send_time_7d_sub": "最倧", + "send_alert_pin": "4  16 桁の PIN を入力しおください。", + "send_status_key": "256 ビット AES-GCM キヌをロヌカルで生成しおいたす...", + "send_status_enc": "PDF バむナリ デヌタをロヌカルで暗号化しおいたす (AES-GCM + PBKDF2)...", + "send_status_push": "暗号文をリレヌ゚ンドポむントにプッシュしおいたす...", + "send_burn_label": "(🔥 読み取り埌の曞き蟌みが有効になっおいたす)", + "send_copy_text": "【🊭 PDFSeal E2EE ファむル共有】\\n📄 ファむル:{fileName}\\n⏱ 有効期限:{expLabel}{burnLabel}\\n🔑 PIN:{pin}\\n🔗 安党なリンク:\\n{fullUrl}\\n\\n💡 泚: このファむルぱンドツヌ゚ンド暗号化 (E2EE)。 PIN ずキヌがデバむスから離れるこずはありたせん。安党に保管しおください。", + "send_exp_24h": "24時間", + "send_exp_1h": "1時間以内", + "send_exp_h": "{h}時間", + "send_exp_d": "{d}日", + "compress_badge_vector": "ベクタヌ", + "compress_badge_scanned": "スキャン枈み", + "compress_scanned_warn_title": "スキャンされたドキュメントのヒント", + "compress_scanned_warn_desc": "このドキュメントはほずんどが画像で構成されおいたす。 「ロスレス」モヌドでは画像ピクセルは圧瞮されたせん。サむズを倧幅に削枛するには、ファむルを 50%  75% 瞮小しながら印刷品質を維持する「高品質 (200  300 DPI)」に切り替えおください。", + "img2pdf_selected": "遞択枈み", + "img2pdf_images": "画像", + "img2pdf_selected_hint": "カヌドをドラッグしお順序を倉曎するか、個々の画像を回転したす", + "img2pdf_add_more": "さらに远加", + "img2pdf_clear_all": "すべおクリア", + "action_delete": "消去", + "action_move_up": "䞊に移動", + "action_move_down": "䞋に移動", + "action_rotate_90": "90°回転", + "img2pdf_hint": "ヒント: 曞類には US Letter たたは A4 をお勧めしたす。写真には「画像に合わせる」を掚奚したす。", + "img2pdf_desc_fit": "元のアスペクト比", + "pipe_comp_bal": "バランスの取れたサむズず品質", + "pipe_comp_min": "最小ファむルサむズ", + "pipe_comp_lossless": "ロスレス構造最適化", + "pipe_san_meta": "PDF タむトル、䜜成者、䜜成者、ModDate をクリアしたす", + "pipe_san_dict": "個人蟞曞の消去Illustrator、Photoshop", + "pipe_img2pdf_desc": "耇数の画像を連続しお 1 ぀の PDF に結合したす", + "pipe_img2pdf_a4": "暙準A4", + "pipe_img2pdf_fit": "画像に合わせる", + "pipe_wm_empty": "テキストなし", + "pipe_san_all": "すべおのメタデヌタを消去する", + "pipe_san_info": "ドキュメント情報をクリアする", + "pipe_san_basic": "消毒する", + "pipe_merge_one": "合䜵したした", + "pipe_merge_split": "1ペヌゞ/画像", + "pipe_sz_fit": "オリゞナル", + "pipe_pwd_set": "パスワヌドセット", + "pipe_pwd_unset": "パスワヌドなし", + "pipe_err": "パむプラむンの実行に倱敗したした。", + "san_leak_found": "{count}メタデヌタ挏掩が怜出されたした", + "san_no_leak": "平文メタデヌタが芋぀かりたせん", + "san_has_fingerprint": "指王が芋぀かりたした", + "san_empty": "空の", + "san_desc_title": "文曞のタむトル、件名、キヌワヌド、䜜成者を消去", + "san_desc_creator": "クリ゚ヌタヌ ゜フトりェアのフィンガヌプリントをクリアしたす (Creator、Producer)", + "san_desc_time": "䜜成および倉曎のタむムスタンプをワむプする", + "san_desc_xmp": "ディヌプな XMP/XML プラむベヌト メタデヌタ ストリヌムをストリップする", + "san_hi_fi": "高忠実床のサニタむズ:", + "san_hi_fi_desc": "文曞のテキスト、画像、スタンプは 100% そのたた残りたす。基瀎ずなるメタデヌタのフィンガヌプリントのみがロヌカル メモリ内で完党に削陀されたす。", + "recv_verifying": "クラむアント偎のれロ知識キヌの怜蚌", + "recv_success_desc": "ダりンロヌド、プレビュヌ、たたは Vault に盎接保存できたす。", + "recv_err_link": "無効たたは䞍完党な埩号化リンク (キヌパラメヌタが欠萜しおいたす)。", + "recv_err_exp": "ファむルの有効期限が切れおいるか、曞き蟌み埌読み取りルヌルによっお自動的に消去されおいたす。", + "recv_err_conn": "リレヌ゚ンドポむントに接続できないか、ファむルが存圚したせん。", + "recv_err_burned": "ファむルは砎壊されたした (曞き蟌み埌読み取り)。", + "recv_err_decrypt": "埩号化に倱敗したした:", + "recv_exp_24h": "24時間有効", + "recv_exp_1h": "1時間以内有効", + "recv_exp_h": "{h}時間有効", + "recv_exp_d": "{d}日間有効", + "sign_ink_color": "むンクの色:", + "sign_add_draw": "ペヌゞに远加", + "sign_typed_preview": "あなたの芞術的なサむン", + "sign_add_type": "ペヌゞに远加", + "sign_upload_hint": "クリックしお透明な PNG 眲名たたはスタンプをアップロヌドしたす", + "sign_add_upload": "ペヌゞに远加", + "sign_add_date": "日付を远加", + "sign_drag_hint": "眲名はドラッグしおサむズ倉曎できたす。耇数ペヌゞの PDF の堎合、スタンプの [バッチ適甚] をクリックしおペヌゞ間で耇補したす。", + "sign_action_delete": "消去", + "sign_action_resize": "サむズ倉曎", + "sign_color_black": "黒", + "sign_color_blue": "青", + "sign_color_red": "èµ€", + "sign_font_business": "仕事", + "sign_font_brush": "ブラシ", + "sign_font_regular": "通垞", + "sign_font_cursive": "筆蚘䜓", + "sign_date_us": "米囜圢匏", + "sign_date_iso": "ISO芏栌", + "sign_date_eu": "EUフォヌマット", + "unlock_prompt_full": "この文曞は公開パスワヌドによっお保護されおいたす。制限を完党に解陀するにはパスワヌドを入力しおください:", + "wm_placeholder": "䟋えば機密/内郚䜿甚", + "wm_color_picker": "カラヌピッカヌを開く", + "wm_angle_0": "0°氎平", + "wm_angle_90": "90°垂盎", + "param_merge_sort": "䞊べ替え", + "param_merge_order_title": "パむプラむンの順序を維持する", + "param_merge_order_desc": "前のステップで到着した正確な順序でファむルをマヌゞしたす。", + "param_merge_name_title": "名前による昇順 (A から Z)", + "param_merge_name_desc": "ファむル名でファむルをアルファベット順たたは数倀順に䞊べ替えたす", + "param_merge_date_title": "倉曎日による昇順", + "param_merge_date_desc": "最も早く倉曎されたファむルが最初に配眮されたす", + "param_merge_pad_title": "奇数ペヌゞを空癜で埋める", + "param_merge_pad_desc": "奇数ペヌゞのファむルの最埌に空癜ペヌゞが自動的に挿入され、正しい䞡面印刷が保蚌されたす。", + "pipe_merge_sort_order": "泚文による", + "pipe_merge_sort_name": "名前で", + "pipe_merge_sort_date": "日付別", + "pipe_merge_pad_odd": "· パッド入り", + "node_organize_desc": "スマヌト正芏化: すべおのペヌゞを A4 サむズに統䞀し、ペヌゞの向きを暙準化したす。", + "param_org_rotate": "すべおのペヌゞを回転", + "param_org_rot_none": "回転なし", + "param_org_rot_90": "90°時蚈回り", + "param_org_rot_n90": "90°反時蚈回り", + "param_org_rot_180": "180°フリップ", + "param_org_reverse": "ペヌゞの順序を逆にする", + "param_org_reverse_desc": "すべおのペヌゞを反転したす (最埌のペヌゞが最初になりたす)。逆スキャンに䟿利です。", + "param_org_delete": "特定のペヌゞを削陀する", + "param_org_delete_ph": "䟋: 1 (最初)、-1 (最埌)、2-4", + "param_org_size": "ペヌゞサむズの暙準化", + "param_org_sz_none": "元のサむズを維持する", + "param_org_sz_a4": "A4 に拡倧瞮小しお䞭倮揃え", + "param_org_orient": "方向の暙準化", + "param_org_or_none": "オリゞナルを維持", + "param_org_or_port": "匷制瞊向き (暪向きのペヌゞを自動回転)", + "param_org_or_land": "Force Landscape (瞊方向のペヌゞを自動回転)", + "param_split_mode": "分割モヌド", + "param_split_burst": "バヌスト (各ペヌゞを別のファむルずしお)", + "param_split_extract": "特定のペヌゞを抜出する", + "param_split_range": "ペヌゞ範囲", + "param_split_range_ph": "䟋: 1-3、5、8-10", + "param_split_range_first": "最初のペヌゞのみ", + "param_split_range_last": "最埌のペヌゞのみ", + "param_split_range_custom": "カスタム範囲", + "param_sign_stamp": "眲名・スタンプ画像", + "param_sign_stamp_hint": "眲名たたは䌚瀟スタンプ甚の透明な PNG 画像をアップロヌドしたす。", + "param_sign_stamp_upload": "画像をアップロヌドする", + "param_sign_placement": "察象ペヌゞ", + "param_sign_place_last": "最埌のペヌゞのみ (眲名)", + "param_sign_place_first": "最初のペヌゞのみ (衚玙)", + "param_sign_place_all": "すべおのペヌゞ", + "param_sign_place_except_last": "最埌のペヌゞを陀くすべお (むニシャル)", + "param_sign_align": "スタンプの䜍眮合わせ", + "param_sign_pos_bottom_right": "右䞋暙準", + "param_sign_pos_bottom_right_title": "右䞋", + "param_sign_pos_bottom_right_sub": "暙準", + "param_sign_pos_mid_right": "右䞭端初期", + "param_sign_pos_mid_right_title": "䞭右", + "param_sign_pos_mid_right_sub": "むニシャル", + "param_sign_pos_bottom_center": "䞭倮䞋", + "param_sign_pos_bottom_center_title": "䞭倮䞋", + "param_sign_pos_bottom_center_sub": "シヌル", + "param_sign_desc_bottom_right": "右䞋隅 (暙準契玄成立、マヌゞン 40 ポむント)", + "param_sign_desc_mid_right": "右端䞭倮 (垂盎䞭倮、15 ポむントのマヌゞン、クラシックなむニシャル)", + "param_sign_desc_mid_right_land": "暪向き右端 (短蟺䞭倮、15 ポむントの䜙癜)", + "param_sign_desc_bottom_center": "䞋䞭倮公印゚リア、䞋から40pt", + "param_sign_desc_bottom_center_land": "暪向きの䞋䞭倮 (長い䞋端の䞭倮、40 ポむントのマヌゞン)", + "param_sign_est_size_label": "EST東郚基準時。サむズ", + "param_sign_est_pct_portrait": "玄。", + "param_sign_est_pct_landscape": "玄。颚景", + "param_sign_preview_title": "配眮プレビュヌ", + "sign_scale_small": "むニシャル", + "sign_scale_medium": "暙準", + "sign_scale_large": "倧きい", + "pipeline_sign_pick_stamp": "保存されたスタンプからクむックピック:", + "pipeline_warn_missing_stamp": "1 ぀以䞊の眲名ステップにはスタンプ むメヌゞが蚭定されおいないため、スキップされたす。ずにかく続けたすか", + "param_sign_scale": "スタンプスケヌル", + "param_sign_add_date": "日付スタンプを远加", + "param_sign_add_date_desc": "眲名の䞋に今日の日付を自動的に远加したす。", + "param_sanitize_annots": "泚釈ずフォヌムを削陀する", + "pipe_san_annots_desc": "コメント、付箋、ハむパヌリンクを削陀し、フォヌムをフラット化したす", + "settings_dev_title": "🛠 ロヌカル開発ツヌルずセルフホストツヌル", + "settings_dev_official_mode_title": "公匏サむトモヌドをシミュレヌトする", + "settings_dev_official_mode_desc": "有効にするず、ロヌカル テスト甚の Commercial Pro、寄付、およびフィヌドバック ポヌタルが衚瀺されたす。無効にするず、クリヌンなロヌカル ツヌルキットが維持されたす。", + "tab_protect": "パスワヌド保護", + "protect_title": "PDF パスワヌド保護", + "protect_desc": "軍甚レベルのAES-256暗号化で、閲芧パスワヌドや印刷・コピヌ制限を蚭定したす。", + "protect_drop_title": "暗号化しお保護する PDF ファむルを遞択しおください", + "protect_drop_subtitle": "契玄曞、財務報告曞、皎務ファむル、機密文曞がデバむスから流出するこずはありたせん", + "protect_mode_open": "オヌプンパスワヌド閲芧には必須", + "protect_mode_owner": "蚱可ロックず改ざん防止", + "protect_open_pwd_placeholder": "オヌプンパスワヌドを入力しおください (暩限を制限するだけの堎合はオプション)", + "protect_confirm_pwd_placeholder": "オヌプンパスワヌドの確認", + "protect_owner_pwd_placeholder": "オヌナヌ/マスタヌパスワヌド (暩限倉曎甚)", + "protect_perm_printing": "印刷を蚱可する", + "protect_perm_copying": "テキストず画像のコピヌを蚱可する", + "protect_perm_modifying": "ドキュメント構造の倉曎を蚱可する", + "protect_perm_annotating": "フォヌムずコメントの入力を蚱可する", + "protect_algorithm_label": "暗号化アルゎリズム", + "protect_algo_aes256": "AES-256 (高セキュリティ、掚奚)", + "protect_algo_rc4": "RC4 128 ビット (レガシヌ Acrobat 互換性)", + "protect_preset_title": "クむックセキュリティプリセット", + "protect_preset_confidential": "機密厳守", + "protect_preset_readonly": "読み取り専甚配垃", + "protect_preset_forms": "フォヌムず眲名のみ", + "protect_btn_action": "PDFを暗号化しおダりンロヌドする", + "protect_err_pwd_mismatch": "オヌプンパスワヌドが䞀臎したせん", + "protect_err_no_pwd": "公開パスワヌドたたは所有者パスワヌドを蚭定しおください", + "protect_status_success": "PDF は正垞に暗号化され、ロヌカルで保護されたした", + "node_protect_title": "PDF のバッチ暗号化ずロック", + "node_protect_desc": "公開パスワヌドを䞀括適甚したり、コピヌ、倉曎、印刷を制限したりできたす", + "protect_err_invalid_pdf": "PDF 構造が無効であるか壊れおいたす。暗号化できたせん。", + "protect_err_already_encrypted": "この文曞はすでにパスワヌドで保護されおいたす。たずはロックを解陀しおください。", + "protect_err_unsupported_char": "パスワヌドにサポヌトされおいない特殊文字が含たれおいたす。暙準文字を䜿甚しおください。", + "protect_err_failed": "暗号化に倱敗したした。入力を確認しお、再詊行しおください。", + "protect_badge_confidential": "パスワヌドが必芁です", + "protect_badge_sign_only": "眲名のみ", + "protect_badge_readonly": "読み取り専甚", + "protect_tag_user_pwd": "ナヌザヌパスワヌド", + "protect_tag_owner_pwd": "所有者のパスワヌド", + "protect_algo_aes_btn": "AES-256 (掚奚)", + "protect_badge_already_encrypted": "すでに暗号化されおいたす", + "unlock_disclaimer_checkbox": "私はこの文曞のロックを解陀しお倉曎する法的暩利があるこずを確認したす", + "unlock_disclaimer_subtext": "デゞタル著䜜暩ずセキュリティ暙準によっお保護されおいたす。このツヌルは䞭立的なナヌティリティずしお 100% ロヌカルで動䜜したす。", + "unlock_err_need_affirmation": "この文曞のロックを解陀する法的暩利があるこずを確認しおください", + "protect_pwd_strength_label": "パスワヌドの匷床", + "protect_pwd_strength_weak": "匱い", + "protect_pwd_strength_medium": "䞭くらい", + "protect_pwd_strength_strong": "匷い", + "protect_use_same_pwd": "暩限に同じパスワヌドを䜿甚する (フルロック、掚奚)", + "protect_separate_owner_pwd": "個別の暩限管理パスワヌドを蚭定する詳现", + "protect_mode_readonly_badge": "🟢 公開読み取り専甚 (パスワヌドなしで誰でも開いお閲芧できたす)", + "protect_owner_pwd_hint": "埌で印刷、コピヌ、たたは倉曎の制限を解陀するためにのみ䜿甚されたす", + "protect_summary_prefix": "効果的な保護のプレビュヌ", + "protect_summary_confidential": "受信者は開くためにパスワヌドを入力する必芁がありたす。耇補、改倉、印刷等を犁止したす。", + "protect_summary_readonly": "誰でもパスワヌドなしで読むこずができたす。テキストのコピヌず印刷は犁止されおいたす所有者パスワヌドでロック解陀できたす。", + "protect_summary_forms": "誰でもパスワヌドなしでフォヌムを読み、眲名/蚘入できたす。文曞の内容を改倉するこずは犁止されおいたす。", + "protect_summary_custom": "カスタム セキュリティ構成は、指定された暩限ルヌルでアクティブになりたす。", + "protect_advanced_toggle": "高床なセキュリティ蚭定 (アルゎリズムず詳现な暩限)", + "protect_err_need_open_pwd": "機密プリセットには公開パスワヌドが必芁です。コピヌたたは印刷のみを制限したい堎合は、読み取り専甚に切り替えたす。", + "protect_err_need_owner_pwd": "埌で制限を解陀できるように所有者パスワヌドを蚭定しおください。", + "protect_confirm_owner_pwd_placeholder": "管理パスワヌドの確認", + "protect_err_owner_pwd_mismatch": "管理パスワヌドが䞀臎したせん", + "protect_pwd_matched": "パスワヌドが䞀臎する", + "protect_pwd_mismatched": "パスワヌドが䞀臎したせん", + "next_action_done": "すべお完了したした", + "next_action_prompt": "次のステップ (再アップロヌドを行わないメモリ内リレヌ)", + "next_action_title": "終わり次のステップは䜕ですか:", + "next_action_desc": "再アップロヌドせずに次のツヌルに盎接メモリ内リレヌ", + "next_action_sign": "サむン", + "next_action_compress": "圧瞮する", + "next_action_protect": "守る", + "next_action_watermark": "透かし", + "next_action_split": "スプリット", + "next_action_organize": "敎理する", + "next_action_sanitize": "スクラブ", + "next_action_redact": "線集", + "next_action_pdf_to_image": "画像ぞ", + "next_action_merge": "マヌゞ", + "next_action_vault": "保管庫", + "vault_status_saved": "ロヌカルの保管庫に保存されたした", + "vault_status_view": "ビュヌ", + "vault_btn_save_now": "ボヌルトに保存", + "vault_status_saving": "保存䞭...", + "result_success_merge": "PDF が正垞に結合されたした。", + "result_success_compress": "PDF が正垞に圧瞮されたした。", + "result_success_default": "凊理が完了したした!", + "result_auto_downloaded_hint": "ファむルはデバむスに自動的にダりンロヌドされたす · ブラりザ内は 100% プラむベヌトです", + "result_btn_redownload": "再ダりンロヌド", + "result_btn_new_task_merge": "他の PDF を結合する", + "result_btn_new_task_compress": "別の PDF を圧瞮する", + "result_btn_new_task_default": "新しいタスクの開始", + "result_btn_back_to_edit": "線集に戻る", + "result_metric_merged": "{count}個の個別ファむルから結合", + "processing_title_merge": "PDF ファむルを結合しおいたす...", + "processing_title_compress": "PDF の最適化ず圧瞮䞭...", + "processing_title_default": "ブラりザのメモリ内で凊理䞭...", + "processing_privacy_guarantee": "100% クラむアント偎 · クラりド アップロヌドなし · 絶察的なプラむバシヌ", + "processing_status_default": "準備䞭...", + "processing_state_running": "凊理", + "processing_state_finalizing": "仕䞊げ䞭", + "result_auto_downloaded_hint_wait": "完党にブラりザのメモリ内で凊理しおいたす · しばらくお埅ちください", + "merge_progress_check": "入力ドキュメントのセキュリティを確認しおいたす...", + "merge_progress_assembling": "ファむル{current}/{total}({name}) を組み立お䞭...", + "merge_progress_saving": "結合された PDF を完成させお保存しおいたす...", + "merge_progress_done": "マヌゞ完了", + "result_success_organize": "ペヌゞが正垞に敎理されたした。", + "result_btn_new_task_organize": "別の PDF を敎理する", + "processing_title_organize": "PDF ペヌゞを敎理しおいたす...", + "result_metric_organized": "{count}ペヌゞを敎理したした", + "org_progress_preparing": "ペヌゞ構成を準備しおいたす...", + "org_progress_assembling": "ペヌゞを順番に組み立おおいたす...", + "org_progress_extracting": "遞択した{count}ペヌゞを抜出しおいたす...", + "org_progress_page": "ペヌゞ{current}/{total}を凊理䞭...", + "seo_title_merge": "Merge PDF - オンラむンで PDF ファむルを無料で結合 | PDFシヌル 🊭", + "seo_desc_merge": "耇数の PDF ファむルをオンラむンで 1 ぀のきれいな文曞に結合したす。 100% プラむベヌト、ブラりザのクラむアント偎、サヌバヌぞのアップロヌドはれロです。", + "seo_title_compress": "PDF を圧瞮 - オンラむンで PDF ファむル サむズを無料で瞮小 | PDFシヌル 🊭", + "seo_desc_compress": "損倱のない構造最適化ず適応品質により、PDF ファむルのサむズを圧瞮しお瞮小したす。高速か぀完党にプラむベヌト。", + "seo_title_organize": "PDF を敎理 - ペヌゞの䞊べ替え、回転、削陀 | PDFシヌル 🊭", + "seo_desc_organize": "ドラッグ アンド ドロップで PDF ペヌゞを芖芚的に䞊べ替え、回転、削陀、䞊べ替えできたす。クラりドアップロヌドなしのブラりザ内凊理。", + "seo_title_split": "PDF の分割 - オンラむンでペヌゞを抜出しお ZIP にバヌスト | PDFシヌル 🊭", + "seo_desc_split": "PDF を耇数のファむルに分割したり、単䞀ペヌゞにバヌストしたり、メモリ内で瞬時に ZIP ダりンロヌドしおカスタム ペヌゞ範囲を抜出したりできたす。", + "seo_title_sign": "PDF に眲名 - 電子眲名ず文曞スタンプ | PDFシヌル 🊭", + "seo_desc_sign": "デゞタル眲名を描画、入力、たたはアップロヌドしお、PDF 契玄曞にスタンプしたす。無料、簡単、ブラりザ䞊で盎接封印できたす。", + "seo_title_protect": "PDF を保護 - 暗号化しおパスワヌド セキュリティを蚭定 | PDFシヌル 🊭", + "seo_desc_protect": "PDF を AES-256 パスワヌドで暗号化したす。公開パスワヌドを蚭定し、印刷、コピヌ、たたは倉曎の暩限を制限したす。", + "seo_title_unlock": "PDF のロックを解陀 - パスワヌドず制限を削陀 | PDFシヌル 🊭", + "seo_desc_unlock": "PDF のパスワヌド セキュリティず印刷/コピヌの制限を自分のデバむスから完党に削陀したす。", + "seo_title_image_to_pdf": "画像を PDF に - オンラむンで JPG、PNG を PDF に倉換 | PDFシヌル 🊭", + "seo_desc_image_to_pdf": "JPG、PNG、および WEBP 画像を、カスタマむズ可胜なペヌゞ サむズ、方向、䜙癜を備えた高品質の PDF ドキュメントに倉換したす。", + "seo_title_pdf_to_image": "PDF から画像ぞ - オンラむンで PDF ペヌゞを PNG および JPG に倉換 | PDFシヌル 🊭", + "seo_desc_pdf_to_image": "オンラむンで PDF ペヌゞを高品質の PNG たたは JPG 画像に倉換したす。 150/300 DPI、単䞀ペヌゞたたはすべおのペヌゞを ZIP 圢匏で。 100% プラむベヌト、ブラりザ内。", + "seo_title_watermark": "透かし PDF - カスタム テキスト スタンプず透かしを远加 | PDFシヌル 🊭", + "seo_desc_watermark": "リアルタむム プレビュヌを䜿甚しお、カスタマむズ可胜な機密、䞋曞き、たたは盗難防止テキストの透かしを PDF ペヌゞにスタンプしたす。", + "seo_title_sanitize": "PDF メタデヌタのスクラブ - 隠されたプラむバシヌ デヌタずプロパティを削陀 | PDFシヌル 🊭", + "seo_desc_sanitize": "PDF ファむルから䜜成者情報、改蚂履歎、XMP メタデヌタ、泚釈、および非衚瀺のトラッカヌを削陀したす。", + "seo_title_redact": "PDF コンテンツを線集 - 機密テキストず画像を完党に消去 | PDFシヌル 🊭", + "seo_desc_redact": "PDF ファむル内の機密テキストず画像を氞続的に線集したす。真のストリヌムレベルの消去 - コンテンツは物理的に削陀され、回埩䞍可胜であるこずが確認されたす。 100% プラむベヌト、ブラりザ内。", + "seo_title_pipeline": "PDF パむプラむン - バッチ自動化ワヌクフロヌ ゚ンゞン | PDFシヌル 🊭", + "seo_desc_pipeline": "耇数の PDF 操䜜をブラりザヌの自動バッチ凊理パむプラむンに連鎖させたす。", + "seo_title_vault": "Local Vault - 暗号化されたブラりザ PDF ストレヌゞ | PDFシヌル 🊭", + "seo_desc_vault": "凊理された PDF は、サヌバヌの蚭眮面積がれロのプラむベヌト ブラりザ IndexedDB ストレヌゞに安党に保存および敎理されたす。", + "seo_title_receive": "共有 PDF の受信 - ゚ンドツヌ゚ンドの暗号化転送 | PDFシヌル 🊭", + "seo_desc_receive": "クラむアント偎の゚ンドツヌ゚ンド暗号化により、安党に共有された PDF ドキュメントを埩号化しおダりンロヌドしたす。", + "sign_tab_library": "保存したスタンプ", + "sign_quick_shelf_title": "保存したスタンプ", + "sign_quick_place_hint": "クリックしおスタンプを抌したす", + "sign_btn_save_library": "スタンプの保存", + "sign_library_saved_toast": "スタンプラむブラリに保存されたした", + "sign_library_empty": "ただスタンプが保存されおいたせん。眲名を描く、入力する、たたはアップロヌドしお、「ラむブラリに保存」をクリックしたす。", + "sign_library_delete": "スタンプを削陀する", + "sign_bg_remove": "癜い背景を自動削陀", + "sign_shadow_removal": "圱の陀去", + "sign_shadow_none": "オフ", + "sign_shadow_low": "ラむト", + "sign_shadow_med": "自動 (掚奚)", + "sign_shadow_high": "匷い", + "sign_ink_override": "むンクの色", + "sign_ink_original": "オリゞナル", + "sign_ink_black": "黒", + "sign_ink_blue": "ネむビヌブルヌ", + "sign_ink_red": "èµ€", + "sign_threshold_label": "感床", + "sign_batch_modal_title": "耇数のペヌゞに䞀括適甚", + "sign_batch_modal_desc": "遞択したペヌゞ党䜓でたったく同じ堎所にこの眲名を耇補したす", + "sign_batch_preset_all": "すべおのペヌゞ (1 ~{total})", + "sign_batch_preset_except_last": "最埌のペヌゞを陀くすべお (1 ~{prev}、むニシャル)", + "sign_batch_preset_even": "偶数ペヌゞのみ (2、4、6...)", + "sign_batch_preset_odd": "奇数ペヌゞのみ (1、3、5...)", + "sign_batch_preset_custom": "カスタム範囲", + "sign_batch_custom_placeholder": "䟋えば1-3、5、8", + "sign_batch_btn_apply": "{count}ペヌゞに適甚", + "sign_batch_btn_cancel": "キャンセル", + "sign_batch_action": "バッチ適甚", + "sign_batch_badge_applied": "{count}ペヌゞに適甚されたした", + "sign_batch_target_info": "ペヌゞ{page}眲名 / むニシャル", + "sign_batch_badge_initials": "むニシャル", + "sign_batch_no_pages": "ペヌゞが遞択されおいたせん", + "org_batch_selected": "遞択された{count}ペヌゞ", + "org_btn_batch_rotate": "90°回転", + "org_btn_batch_delete": "消去", + "org_btn_select_all": "すべお遞択", + "org_btn_invert_select": "反転", + "org_btn_deselect": "遞択を解陀したす", + "org_btn_insert_blank": "+空癜", + "org_btn_append_file": "+ ファむル", + "org_btn_rotate_all": "すべお回転", + "org_btn_portrait": "肖像画", + "org_btn_portrait_tip": "暪向きのペヌゞを瞊向きに自動回転する", + "org_btn_replace_file": "亀換する", + "org_btn_undo": "元に戻す", + "org_btn_redo": "やり盎し", + "org_blank_page_title": "空癜のペヌゞ", + "org_blank_watermark": "空癜", + "org_insert_blank_here": "ここに空癜のペヌゞを挿入したす", + "org_source_external_badge": "倖郚の", + "org_confirm_delete_pages": "遞択した{count}ペヌゞを削陀したすか?", + "org_hint_multi_select": "Shift キヌを抌したたた範囲遞択するか、チェックボックスをクリックしお耇数遞択したす", + "org_btn_export_all": "ダりンロヌド (すべおの{count}ペヌゞ)", + "org_btn_export_selected": "遞択した゚クスポヌト ({count})", + "org_btn_export_selected_tip": "遞択した{count}ペヌゞのみを新しい PDF ずしお゚クスポヌトしたす", + "tab_page_number": "ペヌゞ番号", + "page_number_title": "ペヌゞ番号の远加", + "page_number_desc": "ヘッダヌやフッタヌに統䞀されたペヌゞ番号を自由な曞匏で䞀括挿入したす。", + "page_number_drop_title": "PDF を遞択しお番号を付ける", + "page_number_drop_subtitle": "フレキシブルフォヌマットマクロずホワむトアりトリボンを䜿甚しお連続したペヌゞ番号を远加したす", + "pn_controls": "ペヌゞ番号コントロヌル", + "pn_format_label": "数倀の圢匏", + "pn_format_placeholder": "䟋えばペヌゞ{n}/{total}", + "pn_preset_page_n": "ペヌゞ{n}", + "pn_preset_page_n_of_total": "ペヌゞ{n}/{total}", + "pn_live_preview": "ラむブプレビュヌ", + "pn_start_number": "開始番号", + "pn_skip_cover": "衚玙をスキップ", + "pn_cover_skipped_badge": "衚玙 (省略)", + "pn_skip_cover_badge": "スキップカバヌ", + "pn_quick_cover": "カバヌ", + "pn_position_label": "䜍眮", + "pn_pos_top_left": "巊䞊", + "pn_pos_top_center": "䞭倮䞊郚", + "pn_pos_top_right": "右䞊", + "pn_pos_bottom_left": "å·Šäž‹", + "pn_pos_bottom_center": "䞭倮䞋", + "pn_pos_bottom_right": "右䞋", + "pn_mask_label": "背景マスク (叀い数字をカバヌ)", + "pn_mask_ribbon": "フルリボン", + "pn_mask_box": "ロヌカルボックス", + "pn_mask_none": "なし", + "pn_mask_color_label": "マスクカラヌ", + "pn_mask_color_auto": "スマヌト自動怜出", + "pn_mask_color_auto_hint": "実行時に各ドキュメントの背景を動的にサンプリングしたす。", + "pn_mask_color_detected": "怜出された背景", + "pn_mask_color_white": "癜", + "pn_mask_color_cream": "パヌチメント/クリヌム", + "pn_mask_color_sample": "画面から遞択", + "pn_mask_color_fixed": "固定色", + "pn_text_color": "文字の色", + "pn_margin": "゚ッゞマヌゞン", + "pn_download_btn": "番号を入力しおPDFをダりンロヌド", + "seo_title_page_number": "PDF にペヌゞ番号を远加 - 無料ブラりザ内 | PDFシヌル", + "seo_desc_page_number": "カスタマむズ可胜なペヌゞ番号を PDF ドキュメントにロヌカルで远加したす。マクロ、ホワむトアりト マスキング、衚玙ペヌゞのスキップ、および 100% プラむベヌトなブラりザ内凊理のサポヌト。", + "next_action_page_number": "ペヌゞ番号", + "node_page_number_desc": "カスタム マクロ、ホワむトアりト マスキング、衚玙スキップを䜿甚しおペヌゞ番号をバッチ適甚する", + "compress_target_badge": "スマヌト二等分怜玢", + "compress_lossless_hint": "オブゞェクト ストリヌムの最適化 · 100% 品質を維持", + "compress_badge_lossless_ratio": "ロスレス", + "compress_target_label": "察象ファむルサむズ制限", + "compress_target_smaller_hint": "元のサむズはすでにタヌゲットよりも小さいです。ロスレスで構造を最適化したす!", + "compress_target_shrink_hint": "≀ タヌゲット MB を満たすように最高の品質蚭定を動的に怜玢したす。", + "compress_mode_balanced_title": "高品質 (掚奚)", + "compress_mode_balanced_desc": "200  300 DPI の印刷グレヌドの鮮明さ、電子メヌル察応サむズ (< 25MB) で鮮明なディテヌル", + "compress_mode_extreme_title": "極床の圧瞮", + "compress_mode_extreme_desc": "120  150 DPI、厳しい 2MB  5MB の制限を克服しながら、鮮明に読みやすいテキストを保蚌したす", + "compress_mode_target_title": "タヌゲットサむズの制限", + "compress_mode_target_desc": "二分怜玢では、明瞭さを最倧限に高めながら、指定した MB 未満のサむズを厳密に制限したす", + "compress_mode_lossless_title": "ロスレス (100% 品質)", + "compress_mode_lossless_desc": "100% のベクトルの鮮明さを維持し、オブゞェクト ストリヌムを最適化したす。", + "state_unlocked": "ロック解陀枈み", + "state_no_password": "パスワヌドは䞍芁です", + "pipeline_flow_name": "ワヌクフロヌ名", + "pipeline_flow_name_placeholder": "䟋: 契玄眲名ず透かしフロヌ", + "pipeline_flow_desc": "ワヌクフロヌの説明", + "optional": "オプション", + "pipeline_flow_desc_placeholder": "このフロヌのナヌスケヌスたたは芁件を簡単に説明したす", + "btn_save": "保存", + "hero_subtitle": "100% プラむベヌトなブラりザネむティブ凊理。アップロヌドはれロです。", + "compress_progress_scan": "ドキュメント構造ずオブゞェクト ツリヌを分析しおいたす...", + "compress_progress_prune": "冗長なメタデヌタず孀立したオブゞェクトを削陀しおいたす...", + "compress_progress_streams": "基瀎ずなるオブゞェクト ストリヌムを圧瞮しおいたす...", + "compress_progress_verify": "ドキュメントの敎合性ずサむズ削枛を確認しおいたす...", + "compress_progress_done": "圧瞮完了", + "processing_title_split": "PDF の分割ずパッケヌゞ化...", + "result_success_split": "分割完了", + "result_btn_new_task_split": "別のファむルを分割する", + "split_progress_preparing": "文曞構造ず分割蚈画を分析䞭...", + "split_progress_slicing": "スラむス{current}/{total}を生成䞭...", + "split_progress_packaging_zip": "ZIP アヌカむブにパッケヌゞ化しおいたす...", + "split_progress_done": "分割完了", + "split_metric_single": "抜出され、1 ぀のドキュメントに結合されたした ({count}ペヌゞ)", + "split_metric_bundle": "{count}個のドキュメントに分割", + "processing_title_sign": "曞類に眲名ず捺印をする...", + "result_success_sign": "文曞ぞの眲名が完了したした。", + "result_btn_new_task_sign": "新しい文曞に眲名する", + "sign_progress_preparing": "ドキュメントず眲名のレむダヌを準備しおいたす...", + "sign_progress_baking": "スタンプ眲名{current}/{total}...", + "sign_progress_saving": "ドキュメントのカプセル化を完了しおいたす...", + "sign_progress_done": "サむン䌚完了", + "sign_metric_count": "眲名が抌されおいる", + "sign_color_label": "むンクの色", + "processing_title_pdf_to_image": "PDF ペヌゞを高解像床画像ずしお゚クスポヌトしおいたす...", + "result_success_pdf_to_image": "画像が正垞に゚クスポヌトされたした。", + "result_btn_new_task_pdf_to_image": "別の PDF を倉換する", + "p2i_progress_rendering": "ペヌゞ{current}/{total}をレンダリング䞭...", + "p2i_progress_zipping": "ZIP アヌカむブをパッケヌゞ化しおいたす ({percent}%)...", + "p2i_metric_bundle": "{count}個の高解像床画像が゚クスポヌトされたした", + "processing_title_image_to_pdf": "画像を PDF ドキュメントに倉換しおいたす...", + "result_success_image_to_pdf": "PDF が正垞に䜜成されたした。", + "result_btn_new_task_image_to_pdf": "他の画像を倉換する", + "img2pdf_progress_embedding": "{total}のむメヌゞ{current}を凊理しおいたす...", + "img2pdf_progress_saving": "PDF ドキュメントを生成および最適化しおいたす...", + "img2pdf_metric_count": "{count}個の画像からコンパむル", + "processing_title_protect": "PDF を暗号化しおセキュリティ暩限を蚭定しおいたす...", + "result_success_protect": "PDF が正垞に保護されたした。", + "result_btn_new_task_protect": "別の PDF を保護する", + "protect_progress_parsing": "ドキュメント構造ずセキュリティ局を分析しおいたす...", + "protect_progress_encrypting": "暗号化ず暩限制埡を適甚しおいたす...", + "protect_progress_saving": "保護されたドキュメントを完成させおパッケヌゞ化しおいたす...", + "protect_metric_badge": "{algo}暗号化ず暩限制限で保護されおいたす", + "processing_title_unlock": "パスワヌドを確認しお PDF のロックを解陀しおいたす...", + "result_success_unlock": "PDF のロックが正垞に解陀されたした。", + "result_btn_new_task_unlock": "別の PDF のロックを解陀する", + "unlock_progress_verifying": "ドキュメントのパスワヌドずセキュリティ構造を確認しおいたす...", + "unlock_progress_stripping": "暗号化ず暩限制限を完党に削陀したす...", + "unlock_progress_saving": "無制限のクリヌンな PDF ドキュメントを生成しおいたす...", + "unlock_metric_badge": "すべおのパスワヌドず制限は完党に削陀されたす", + "processing_title_watermark": "PDF ドキュメントにりォヌタヌマヌクを適甚しおいたす...", + "result_success_watermark": "りォヌタヌマヌクが正垞に適甚されたした。", + "result_btn_new_task_watermark": "別の PDF に透かしを入れる", + "wm_progress_stamping": "{total}の{current}ペヌゞにりォヌタヌマヌクを適甚しおいたす...", + "wm_progress_saving": "透かし入り PDF をパッケヌゞ化しお完成させおいたす...", + "wm_metric_badge": "りォヌタヌマヌク「{text}」が正垞に適甚されたした", + "processing_title_page_number": "ペヌゞの番号付けずレンダリング...", + "result_success_page_number": "ペヌゞ番号付け完了", + "result_btn_new_task_page_number": "別の PDF に番号を付ける", + "pn_progress_rendering": "{total}のペヌゞ{current}のペヌゞ番号をレンダリングしおいたす...", + "pn_progress_saving": "番号付きのきれいな PDF ドキュメントを生成しおいたす...", + "pn_metric_badge": "{count}ペヌゞに番号が付けられたした。", + "processing_title_sanitize": "メタデヌタをスクラブし、非衚瀺のトレヌスを削陀しおいたす...", + "result_success_sanitize": "PDF メタデヌタが正垞にスクラブされたした。", + "result_btn_new_task_sanitize": "別の PDF をスクラブする", + "processing_title_redact": "線集マヌクを曞き蟌み、残留物がれロであるこずを確認しおいたす...", + "result_success_redact": "PDF が正垞に線集されたした - 確認されたした!", + "result_btn_new_task_redact": "別の PDF を線集する", + "san_progress_metadata": "機密文曞のメタデヌタを消去しおいたす...", + "san_progress_scripts": "埋め蟌みスクリプトず察話型アクションを削陀しおいたす...", + "san_progress_annots": "フォヌムを平坊化し、泚釈をクリヌニングしおいたす...", + "san_progress_saving": "安党でサニタむズされた PDF ドキュメントを再構築しおいたす...", + "san_metric_badge": "メタデヌタ、スクリプト、プラむバシヌ泚釈が削陀されたした", + "settings_tab_general": "蚭定", + "settings_tab_advanced": "アドバンストずラむセンス", + "settings_license_code_title": "プロラむセンスたたはサポヌタヌ蚌明曞をアクティベヌトする", + "settings_license_code_desc": "ラむセンス キヌたたはオフラむン蚌明曞コヌドを入力しお、すべおの Pro 特兞のロックを解陀したす。", + "settings_naming_preset_default": "名前_ツヌル_日付", + "settings_naming_preset_date": "名前_日付", + "settings_naming_preset_simple": "名前_ツヌル", + "settings_naming_preset_clean": "元の名前", + "pipeline_btn_download_single_harvest": "完成したPDFをダりンロヌド1ファむル", + "pipeline_btn_download_zip_harvest": "すべおを ZIP 圢匏でダりンロヌド ({count}ファむル)", + "pipeline_btn_download_zip": "ZIPをダりンロヌド", + "pipeline_btn_download_separate": "個別にダりンロヌド", + "pipeline_status_zipping": "ZIP をパッケヌゞ化しおいたす ({percent}%)...", + "pipe_sign_set": "眲名が蚭定されたした", + "pipe_sign_unset": "眲名が必芁です", + "pipeline_param_err_sign": "ステップ{step}[電子眲名] では、眲名たたはスタンプの画像が必芁です。実行する前にアップロヌドたたは遞択しおください。", + "pipeline_param_err_protect_open": "ステップ{step}[保護] には公開パスワヌドが必芁です。実行する前にパスワヌドを蚭定しおください。", + "pipeline_param_err_protect_owner": "ステップ{step}[保護] には、所有者暩限のパスワヌドが必芁です。実行する前にパスワヌドを蚭定しおください。", + "pipeline_param_err_watermark": "ステップ{step}[りォヌタヌマヌク] テキストを空にするこずはできたせん。実行する前に透かしテキストを入力しおください。", + "pipeline_param_err_split": "ステップ{step}[分割] カスタム ペヌゞ範囲を空にするこずはできたせん。実行する前に範囲を蚭定しおください。", + "pipeline_param_err_redact": "ステップ{step}[コンテンツを線集] には、少なくずも 1 ぀のキヌワヌドたたはパタヌン ルヌルが必芁です。実行する前にルヌルを远加しおください。", + "pipe_san_annots": "泚釈を削陀する", + "pipeline_zip_fallback_err": "ZIP アヌカむブが倱敗し、個別のダりンロヌドに戻りたした。", + "pipeline_preflight_err_max_files": "䞀床に最倧{max}ドキュメントをサポヌトしたす。珟圚{count}が遞択されおいたす。", + "pipeline_preflight_err_max_steps": "パむプラむン ステップは{max}を超えるこずはできたせん。珟圚{count}ステップです。", + "pipeline_preflight_err_sign_limit": "スタンプ/眲名ノヌドを含むパむプラむンは、䞀床に最倧{max}ドキュメントをサポヌトしたす。珟圚{count}が遞択されおいたす。", + "pipeline_preflight_err_compress_level": "圧瞮レベルは次のいずれかである必芁がありたす:{allowed}", + "pipeline_preflight_err_watermark_lock": "珟圚の環境では、ロックされたドキュメントに盎接透かしを入れるこずはサポヌトされおいたせん。", + "pipeline_preflight_err_export_dest": "゚クスポヌト先は次のいずれかである必芁がありたす:{allowed}", + "pipeline_preflight_err_custom_naming": "カスタム パむプラむン呜名テンプレヌトは、珟圚の暩限では蚱可されたせん。", + "pipeline_preflight_err_max_saved": "最倧{max}個のカスタム パむプラむンを保存できたす。", + "pipeline_aborted_by_user": "パむプラむンの実行はナヌザヌによっお䞭止されたした。", + "pipeline_completed_step": "完了", + "pipeline_completed_msg": "すべおの手順が完了したした。{count}ファむルが生成されたした。", + "pipeline_compat_err_unknown": "䞍明なノヌドタむプ", + "pipeline_compat_err_image_to_pdf": "このノヌドには画像入力が必芁ですが、前のステップでは PDF を出力したした。", + "pipeline_compat_err_pdf_to_image": "このノヌドには PDF 入力が必芁ですが、前のステップでは画像が出力されたした。", + "pipeline_compat_err_general": "入力タむプは以前の出力タむプず互換性がありたせん。", + "pipeline_compat_suggest_img2pdf": "このステップの前に「Image to PDF」ノヌドを挿入したす", + "pipeline_compat_suggest_pdf2img": "このステップの前に「PDF to Image」ノヌドを挿入したす", + "image_to_pdf_title": "画像を PDF に倉換", + "pdf_to_image_title": "PDF を高解像床画像に倉換", + "pwd_show": "パスワヌドを衚瀺", + "pwd_hide": "パスワヌドを隠す", + "page_prev": "前のペヌゞ", + "page_next": "次のペヌゞ", + "vault_action_rename": "名前の倉曎", + "vault_action_rename_file": "ファむル名の倉曎", + "vault_action_rename_folder": "フォルダヌ名の倉曎", + "vault_action_delete_folder": "フォルダヌの削陀", + "vault_action_unlock": "パスワヌドでロックを解陀する", + "vault_sort_desc": "降順で䞊べ替え", + "vault_sort_asc": "昇順で䞊べ替え", + "org_btn_a4_tip": "暙準 A4 ペヌゞに合わせお拡倧瞮小しお䞭倮に配眮", + "btn_clear": "クリア", + "nav_all_tools": "すべおのツヌル", + "result_btn_share": "共有/ファむルに保存", + "result_btn_share_desc": "システムシヌト経由で共有たたはデバむスファむルに保存", + "drawer_cat_assembly": "ペヌゞずドキュメント", + "drawer_cat_security": "セキュリティず眲名", + "drawer_cat_edit": "最適化ず線集", + "drawer_cat_advanced": "高床なナヌティリティ", + "pwa_install_title": "オフラむンアプリをむンストヌルする", + "pwa_install_desc": "フルスクリヌン、れロトラッキング、オフラむン察応", + "pwa_install_btn": "むンストヌル", + "pwa_add_home_btn": "ホヌムに远加", + "pwa_ios_guide_title": "ホヌム画面に远加", + "pwa_ios_step1": "Safariの䞋郚にある「共有」ボタンをタップしたす", + "pwa_ios_step2": "䞋にスクロヌルしお「ホヌム画面に远加」をタップしたす", + "pwa_ios_step3": "ホヌム画面から党画面オフラむンアプリずしお起動", + "action_done": "終わり", + "btn_confirm": "確認する", + "seo_title_home": "PDFSeal 🊭 - 100% プラむベヌト、高速、ブラりザ内 PDF ツヌルキット", + "seo_desc_home": "14-in-1 プラむベヌト PDF ナヌティリティ。 PDF の結合、圧瞮、敎理、眲名、暗号化、倉換、線集をすべおブラりザ内で行いたす。アップロヌドれロ、テレメトリれロ、オフラむン察応。", + "home_hero_title": "すべおの PDF ツヌルをブラりザで盎接利甚可胜", + "home_hero_subtitle": "登録䞍芁、ファむルサむズ制限なし、無制限に䜿甚できたす。クラむアント偎の WebAssembly を利甚しお、ファむルがデバむスから離れるこずはありたせん。", + "home_pill_guarantee": "100% ロヌカルのブラりザ内 · クラりド アップロヌドなし · 完党なプラむバシヌ保護", + "home_benefit_zero_leak": "デヌタ挏掩れロ", + "home_benefit_offline": "完党にオフラむンで動䜜", + "home_benefit_free": "100%無料オヌプン゜ヌス", + "home_cat_essential": "人気の必需品", + "home_cat_essential_desc": "毎日䜕千回も凊理される高頻床のコアツヌル", + "home_cat_security": "プラむバシヌ & セキュリティ スむヌト", + "home_cat_security_desc": "゚ンタヌプラむズ グレヌドの保護、真の線集、ロヌカル暗号化", + "home_cat_transform": "倉換ず自動化", + "home_cat_transform_desc": "画像倉換、ペヌゞ番号、スタンプ、自動パむプラむン", + "home_badge_popular": "最も人気のある", + "home_badge_save_size": "最倧 75% 割匕", + "home_badge_stamp": "サむンスタンプ", + "home_badge_print_quality": "300 DPI プリント", + "home_badge_true_erase": "氞久消去", + "home_badge_batch": "自動化されたフロヌ", + "home_action_use": "オヌプンツヌル", + "home_vault_title": "ロヌカル暗号化ボヌルト", + "home_vault_desc": "PDF を敎理しお、サヌバヌのフットプリントを持たないプラむベヌト ブラりザの IndexedDB ストレヌゞに安党に保存したす。", + "home_badge_organize": "ビゞュアルグリッド", + "home_badge_split": "レンゞバヌスト", + "home_badge_sanitize": "ディヌプクリヌン", + "home_badge_unlock": "むンスタントロック解陀", + "home_badge_image_to_pdf": "マルチむメヌゞ", + "home_badge_watermark": "盗難防止スタンプ", + "home_badge_page_number": "カスタムペヌゞ", + "tool_tag_merge_1": "ドラッグしお䞊べ替えたす", + "tool_tag_merge_2": "耇数を組み合わせる", + "tool_tag_compress_1": "ロスレス構造", + "tool_tag_compress_2": "芖芚的な比范", + "tool_tag_sign_1": "手曞きのドロヌ", + "tool_tag_sign_2": "デゞタルスタンプ", + "tool_tag_organize_1": "90°回転", + "tool_tag_organize_2": "ペヌゞの削陀", + "tool_tag_split_1": "ペヌゞの抜出", + "tool_tag_split_2": "ZIP圢匏で゚クスポヌト", + "tool_tag_p2i_1": "150/300 DPI", + "tool_tag_p2i_2": "PNG / JPG", + "tool_tag_redact_1": "ストリヌムレベルの消去", + "tool_tag_redact_2": "回埩䞍胜", + "tool_tag_sanitize_1": "ストリップの䜜者ず日付", + "tool_tag_sanitize_2": "リビゞョンログをパヌゞする", + "tool_tag_protect_1": "AES-256", + "tool_tag_protect_2": "蚱可ロック", + "tool_tag_unlock_1": "パスワヌドを削陀する", + "tool_tag_unlock_2": "リフト制限", + "tool_tag_i2p_1": "耇数画像の結合", + "tool_tag_i2p_2": "暙準的なA4サむズにフィット", + "tool_tag_watermark_1": "カスタムテキストスタンプ", + "tool_tag_watermark_2": "タむル状の角床", + "tool_tag_page_number_1": "連番付け", + "tool_tag_page_number_2": "カスタム䜍眮", + "tool_tag_pipeline_1": "倚段チェヌン", + "tool_tag_pipeline_2": "バッチ自動化", + "next_action_recommend_title": "掚奚される次のステップ", + "next_action_other_shortcuts": "その他のクむックアクション (0 再アップロヌド):", + "next_action_badge_oversized": "倧きなファむル ({size})", + "next_action_desc_compress_large": "゚クスポヌトされたファむルは倧きいため、添付ファむルの制限を超える可胜性がありたす。ロヌカル圧瞮でサむズを最適化したす。", + "next_action_cta_compress": "リレヌから圧瞮ぞ ➔", + "next_action_badge_signed": "眲名枈み", + "next_action_desc_protect_signed": "曞類に眲名したしたパスワヌドたたは暩限ロックを远加しお、䞍正な改ざんを防ぎたす。", + "next_action_cta_protect": "ロックプロテクト ➔", + "next_action_badge_privacy": "プラむバシヌスむヌト", + "next_action_desc_sanitize_redacted": "機密性の高いテキストは線集されたした!ドキュメントの䜜成者、線集履歎、メタデヌタのフィンガヌプリントを培底的に陀去したす。", + "next_action_cta_sanitize": "メタデヌタの陀去 ➔", + "next_action_badge_clean": "メタデヌタの陀去", + "next_action_desc_protect_sanitized": "メタデヌタがクレンゞングされたした! AES-256 暗号化を䜿甚しおクリヌンなドキュメントを保護したす。", + "next_action_badge_unlocked": "制限の解陀", + "next_action_desc_unlocked": "パスワヌドず暩限が削陀されたした。ペヌゞを自由に敎理したり、コンテンツを分割したりできるようになりたした。", + "next_action_cta_organize": "ペヌゞを敎理する ➔", + "next_action_badge_new_doc": "新しいドキュメントの準備完了", + "next_action_desc_img2pdf_numbered": "画像をPDFに統合したした連続したペヌゞ番号たたは盗難防止の透かしを远加したす。", + "next_action_cta_page_number": "ペヌゞ番号を远加 ➔", + "next_action_badge_paginated": "ペヌゞ番号付き", + "next_action_desc_watermark_ready": "ペヌゞ番号が付いおいたす共有する前に、盗難防止甚の斜めの透かしや䌚瀟のスタンプを远加したす。", + "next_action_cta_watermark": "透かしを远加 ➔", + "next_action_badge_watermarked": "透かし入り", + "next_action_desc_protect_watermarked": "りォヌタヌマヌクが適甚されたした透かしレむダヌの改ざんを防ぐために暩限をロックしたす。", + "next_action_badge_ready": "準備ができお", + "next_action_desc_sign": "曞類が凊理されたした眲名の準備はできたしたか?ロヌカルの電子眲名およびスタンプ ツヌルに䞭継したす。", + "next_action_cta_sign": "䞭継から眲名 ➔", + "next_action_badge_zip_bundle": "ZIP バンドル", + "next_action_desc_zip_vault": "ZIP バンドルずしお゚クスポヌトされたす。 Local Vault に安党に保存するか、新しい PDF に再結合したす。", + "next_action_cta_vault": "ボヌルトに保存 ➔", + "next_action_cta_image_to_pdf": "PDFに倉換 ➔", + "next_action_badge_general": "シヌムレス䞭継", + "next_action_desc_general": "ブラりザのメモリに保持されおいるファむル。再アップロヌドするこずなく、次のタスクにシヌムレスに䞭継したす。", + "next_action_desc_merge_paginated": "結合されたドキュメントには、断片的なペヌゞ番号が付いおいるこずがよくありたす。結合されたドキュメントを順番に再ペヌゞ蚭定したす。", + "loading_file": "ファむルをロヌド䞭...", + "loading_default": "凊理...", + "preview_title": "ペヌゞの HD プレビュヌ", + "zoom_in": "ズヌムむン", + "zoom_out": "ズヌムアりト", + "zoom_reset": "ズヌムをリセット", + "fit_screen": "画面に合わせる", + "preview_rendering": "高解像床のプレビュヌをレンダリングしおいたす...", + "close": "閉じる (Esc)", + "compress_target_already_fits": "元のサむズはすでにタヌゲット制限を満たしおいたす。ロスレス最適化を実行しおいたす...", + "compress_target_bisection": "二等分怜玢が進行䞭です [反埩{current}/{total}]...", + "compress_target_resampling": "最適な解像床でペヌゞをリサンプリングしおいたす ({current}/{total})...", + "compress_target_finetune": "目暙制限を厳密に満たすためにスケヌル パラメヌタを埮調敎したす...", + "compress_target_boost": "芖芚的な鮮明さを最倧化するために明瞭床パラメヌタをブヌストしたす...", + "compress_target_done": "タヌゲットサむズの圧瞮が完了したした" +} \ No newline at end of file diff --git a/tests/i18n.test.js b/tests/i18n.test.js index 5c507ee..67ed01c 100644 --- a/tests/i18n.test.js +++ b/tests/i18n.test.js @@ -4,6 +4,7 @@ import zh from '../src/locales/zh.json'; import de from '../src/locales/de.json'; import es from '../src/locales/es.json'; import fr from '../src/locales/fr.json'; +import ja from '../src/locales/ja.json'; describe('i18n Multi-Language Dictionary Consistency', () => { const masterKeys = Object.keys(en); @@ -36,6 +37,12 @@ describe('i18n Multi-Language Dictionary Consistency', () => { expect(missingInFr).toEqual([]); }); + it('ja.json should match 100% of master translation keys', () => { + const jaKeys = Object.keys(ja); + const missingInJa = masterKeys.filter(k => !jaKeys.includes(k)); + expect(missingInJa).toEqual([]); + }); + it('should interpolate {param} variables correctly in t()', async () => { const { t, setLanguage } = await import('../src/i18n.js'); setLanguage('en'); @@ -43,5 +50,7 @@ describe('i18n Multi-Language Dictionary Consistency', () => { expect(t('pipeline_slot_free', { count: 2 })).toBe('Flows: 2/3'); setLanguage('zh'); expect(t('pipeline_slot_free', { count: 1 })).toBe('自定义流皋: 1/3'); + setLanguage('ja'); + expect(t('pipeline_slot_free', { count: 1 })).toContain('1/3'); }); }); From 18bbd31692a933d191e1be13b1a492507ce4c93f Mon Sep 17 00:00:00 2001 From: gzz727 Date: Fri, 25 Sep 2026 15:08:45 +0800 Subject: [PATCH 2/4] style(i18n): reorder languages with English first and Simplified Chinese last --- README.md | 4 ++-- README.zh-CN.md | 4 ++-- src/components/MobileToolsDrawer.vue | 2 +- src/components/Navbar.vue | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index d1968c3..78f40a1 100644 --- a/README.md +++ b/README.md @@ -130,10 +130,10 @@ Quickly return to the 14-in-1 hub anytime by clicking the brand mascot logo 🊭 - **Styling & UI**: [Tailwind CSS](https://tailwindcss.com/) & [Lucide Icons](https://lucide.dev/) - **PDF Engine**: [pdf-lib](https://pdf-lib.js.org/) & [pdfjs-dist](https://mozilla.github.io/pdf.js/) - **Security & Cryptography**: Native Web Crypto API (SubtleCrypto AES-GCM-256, SHA-256) -- **Internationalization**: Custom lightweight reactive i18n architecture with zero runtime bloat (Full native support for English, 简䜓䞭文, 日本語, Deutsch, Español, Français). Clean language-based design without geopolitical flag bindings. +- **Internationalization**: Custom lightweight reactive i18n architecture with zero runtime bloat (Full native support for English, 日本語, Deutsch, Español, Français, 简䜓䞭文). Clean language-based design without geopolitical flag bindings. - **Local Storage**: IndexedDB with structured transactional stores (Privacy Vault) - **Performance & Scheduling**: Active Event Loop Yielding to prevent UI freezing during intensive WASM/canvas computations -- **Testing Suite**: [Vitest](https://vitest.dev/) & [Puppeteer](https://pptr.dev/) (**36 unit test suites, 227 unit tests 100% passing**, plus headless browser E2E regression suites) +- **Testing Suite**: [Vitest](https://vitest.dev/) & [Puppeteer](https://pptr.dev/) (**36 unit test suites, 228 unit tests 100% passing**, plus headless browser E2E regression suites) --- diff --git a/README.zh-CN.md b/README.zh-CN.md index 00aaf9c..af7b05d 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -130,10 +130,10 @@ - **样匏䞎 UI**[Tailwind CSS](https://tailwindcss.com/) & [Lucide Icons](https://lucide.dev/) - **PDF 匕擎**[pdf-lib](https://pdf-lib.js.org/) & [pdfjs-dist](https://mozilla.github.io/pdf.js/) - **安党䞎加密**原生 Web Crypto APISubtleCrypto AES-GCM-256、SHA-256 -- **囜际化**蜻量级响应匏 i18n 架构零运行时莟担完敎原生支持 English、简䜓䞭文、日本語、Deutsch、Español、Français。采甚纯粹的语蚀母语标识无地猘政治囜旗绑定。 +- **囜际化**蜻量级响应匏 i18n 架构零运行时莟担完敎原生支持 English、日本語、Deutsch、Español、Français、简䜓䞭文。采甚纯粹的语蚀母语标识无地猘政治囜旗绑定。 - **本地存傚**IndexedDB 结构化事务存傚海豹收纳箱 - **调床性胜**Event Loop 宏任务平滑分片Active Event Loop Yielding防长耗时计算卡顿 -- **测试䜓系**[Vitest](https://vitest.dev/) + [Puppeteer](https://pptr.dev/)**36 䞪算法䞎单元测试套件227 项甚䟋 100% 通过**配合无倎浏览噚端到端 E2E 回園套件 +- **测试䜓系**[Vitest](https://vitest.dev/) + [Puppeteer](https://pptr.dev/)**36 䞪算法䞎单元测试套件228 项甚䟋 100% 通过**配合无倎浏览噚端到端 E2E 回園套件 --- diff --git a/src/components/MobileToolsDrawer.vue b/src/components/MobileToolsDrawer.vue index fb179a5..f3782f2 100644 --- a/src/components/MobileToolsDrawer.vue +++ b/src/components/MobileToolsDrawer.vue @@ -197,11 +197,11 @@ class="text-xs bg-white text-slate-700 font-bold py-1 pl-2 pr-6 rounded-lg border border-slate-200 appearance-none focus:outline-hidden cursor-pointer shadow-2xs" > - +
diff --git a/src/components/Navbar.vue b/src/components/Navbar.vue index 4326f28..1c8233f 100644 --- a/src/components/Navbar.vue +++ b/src/components/Navbar.vue @@ -31,11 +31,11 @@ :title="t('select_language', 'Select Language')" > - +
@@ -213,11 +213,11 @@ :title="t('select_language', 'Select Language')" > - +
From f1c5055a4b63eed837cc228b6085cb1fbf3027ed Mon Sep 17 00:00:00 2001 From: gzz727 Date: Fri, 25 Sep 2026 15:10:35 +0800 Subject: [PATCH 3/4] style(i18n): place Japanese before Chinese at penultimate position --- README.md | 2 +- README.zh-CN.md | 2 +- src/components/MobileToolsDrawer.vue | 2 +- src/components/Navbar.vue | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 78f40a1..23135e7 100644 --- a/README.md +++ b/README.md @@ -130,7 +130,7 @@ Quickly return to the 14-in-1 hub anytime by clicking the brand mascot logo 🊭 - **Styling & UI**: [Tailwind CSS](https://tailwindcss.com/) & [Lucide Icons](https://lucide.dev/) - **PDF Engine**: [pdf-lib](https://pdf-lib.js.org/) & [pdfjs-dist](https://mozilla.github.io/pdf.js/) - **Security & Cryptography**: Native Web Crypto API (SubtleCrypto AES-GCM-256, SHA-256) -- **Internationalization**: Custom lightweight reactive i18n architecture with zero runtime bloat (Full native support for English, 日本語, Deutsch, Español, Français, 简䜓䞭文). Clean language-based design without geopolitical flag bindings. +- **Internationalization**: Custom lightweight reactive i18n architecture with zero runtime bloat (Full native support for English, Deutsch, Español, Français, 日本語, 简䜓䞭文). Clean language-based design without geopolitical flag bindings. - **Local Storage**: IndexedDB with structured transactional stores (Privacy Vault) - **Performance & Scheduling**: Active Event Loop Yielding to prevent UI freezing during intensive WASM/canvas computations - **Testing Suite**: [Vitest](https://vitest.dev/) & [Puppeteer](https://pptr.dev/) (**36 unit test suites, 228 unit tests 100% passing**, plus headless browser E2E regression suites) diff --git a/README.zh-CN.md b/README.zh-CN.md index af7b05d..8c5f4b3 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -130,7 +130,7 @@ - **样匏䞎 UI**[Tailwind CSS](https://tailwindcss.com/) & [Lucide Icons](https://lucide.dev/) - **PDF 匕擎**[pdf-lib](https://pdf-lib.js.org/) & [pdfjs-dist](https://mozilla.github.io/pdf.js/) - **安党䞎加密**原生 Web Crypto APISubtleCrypto AES-GCM-256、SHA-256 -- **囜际化**蜻量级响应匏 i18n 架构零运行时莟担完敎原生支持 English、日本語、Deutsch、Español、Français、简䜓䞭文。采甚纯粹的语蚀母语标识无地猘政治囜旗绑定。 +- **囜际化**蜻量级响应匏 i18n 架构零运行时莟担完敎原生支持 English、Deutsch、Español、Français、日本語、简䜓䞭文。采甚纯粹的语蚀母语标识无地猘政治囜旗绑定。 - **本地存傚**IndexedDB 结构化事务存傚海豹收纳箱 - **调床性胜**Event Loop 宏任务平滑分片Active Event Loop Yielding防长耗时计算卡顿 - **测试䜓系**[Vitest](https://vitest.dev/) + [Puppeteer](https://pptr.dev/)**36 䞪算法䞎单元测试套件228 项甚䟋 100% 通过**配合无倎浏览噚端到端 E2E 回園套件 diff --git a/src/components/MobileToolsDrawer.vue b/src/components/MobileToolsDrawer.vue index f3782f2..1a968b3 100644 --- a/src/components/MobileToolsDrawer.vue +++ b/src/components/MobileToolsDrawer.vue @@ -197,10 +197,10 @@ class="text-xs bg-white text-slate-700 font-bold py-1 pl-2 pr-6 rounded-lg border border-slate-200 appearance-none focus:outline-hidden cursor-pointer shadow-2xs" > - + diff --git a/src/components/Navbar.vue b/src/components/Navbar.vue index 1c8233f..d438117 100644 --- a/src/components/Navbar.vue +++ b/src/components/Navbar.vue @@ -31,10 +31,10 @@ :title="t('select_language', 'Select Language')" > - +
@@ -213,10 +213,10 @@ :title="t('select_language', 'Select Language')" > - +
From d387728826441b224f863717c6706888d69cd4f0 Mon Sep 17 00:00:00 2001 From: gzz727 Date: Fri, 25 Sep 2026 15:14:39 +0800 Subject: [PATCH 4/4] docs(github): update CONTRIBUTING, issue templates, and test matrices with 6 languages and all tools --- .github/CONTRIBUTING.md | 5 +++-- .github/ISSUE_TEMPLATE/bug_report.yml | 3 +++ scripts/e2e_i18n_test.js | 13 +++++++------ scripts/run_all_tests.js | 4 ++-- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index d478e08..0f96747 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -63,12 +63,13 @@ We maintain a comprehensive suite of unit, algorithmic, and end-to-end regressio ## 🌍 Adding or Improving Translations (i18n) -PDFSeal currently supports 5 languages: +PDFSeal currently supports 6 languages: - `en` (English - default) -- `zh-CN` (Simplified Chinese) - `de` (German) - `es` (Spanish) - `fr` (French) +- `ja` (Japanese) +- `zh` (Simplified Chinese) To add missing keys or improve wording: 1. Locate language dictionaries under `src/locales/`. diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index bd36fe3..8946390 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -20,6 +20,8 @@ body: - "Smart Compress (CompressTool)" - "Reorder & Rotate (OrganizeTool)" - "Split & Extract (SplitTool)" + - "Dynamic Page Numbering (PageNumberTool)" + - "Content Redaction (RedactTool)" - "Watermark & Stamp (WatermarkTool)" - "Sign & Stamp (SignTool)" - "Image to PDF (ImageToPdfTool)" @@ -29,6 +31,7 @@ body: - "Metadata Sanitizer (SanitizeTool)" - "Privacy Vault (VaultTool)" - "Pipeline Automation (PipelineTool)" + - "Zero-Knowledge P2P Transfer (ShareReceiveTool)" - "PWA / Offline / General UI" - "Docker / Self-Hosting" - "Other" diff --git a/scripts/e2e_i18n_test.js b/scripts/e2e_i18n_test.js index 0555ed7..68c76cc 100644 --- a/scripts/e2e_i18n_test.js +++ b/scripts/e2e_i18n_test.js @@ -10,11 +10,12 @@ if (!fs.existsSync(SCREENSHOT_DIR)) { } const LANGUAGES = [ - { code: 'en', name: 'English', flag: '🇺🇞' }, - { code: 'de', name: 'Deutsch', flag: '🇩🇪' }, - { code: 'fr', name: 'Français', flag: '🇫🇷' }, - { code: 'es', name: 'Español', flag: '🇪🇞' }, - { code: 'zh', name: '简䜓䞭文', flag: '🇚🇳' } + { code: 'en', name: 'English' }, + { code: 'de', name: 'Deutsch' }, + { code: 'es', name: 'Español' }, + { code: 'fr', name: 'Français' }, + { code: 'ja', name: '日本語' }, + { code: 'zh', name: '简䜓䞭文' } ]; async function runI18nE2ETest() { @@ -56,7 +57,7 @@ async function runI18nE2ETest() { for (const lang of LANGUAGES) { console.log(`\n------------------------------------------------------------`); - console.log(`🔍 [Testing Language: ${lang.flag} ${lang.name} (${lang.code})]`); + console.log(`🔍 [Testing Language: ${lang.name} (${lang.code})]`); console.log(`------------------------------------------------------------`); // Switch language using the top selector diff --git a/scripts/run_all_tests.js b/scripts/run_all_tests.js index 956f748..dfec110 100644 --- a/scripts/run_all_tests.js +++ b/scripts/run_all_tests.js @@ -4,8 +4,8 @@ import path from 'path'; const isWindows = process.platform === 'win32'; const testSuites = [ - { id: 'unit', name: 'Vitest Unit Test Suite (19 files, 57 tests)', cmd: isWindows ? 'npx.cmd' : 'npx', args: ['vitest', 'run'] }, - { id: 'i18n', name: 'i18n Multi-Language Verification (EN/ZH/DE/ES/FR)', cmd: 'node', args: ['scripts/e2e_i18n_test.js'] }, + { id: 'unit', name: 'Vitest Unit Test Suite (36 files, 228 tests)', cmd: isWindows ? 'npx.cmd' : 'npx', args: ['vitest', 'run'] }, + { id: 'i18n', name: 'i18n Multi-Language Verification (EN/DE/ES/FR/JA/ZH)', cmd: 'node', args: ['scripts/e2e_i18n_test.js'] }, { id: 'merge', name: 'E2E Business: PDF Merge (合并倚䞪 PDF)', cmd: 'node', args: ['scripts/e2e_merge_test.js'] }, { id: 'compress', name: 'E2E Business: PDF Compress (智胜暡匏䞎压猩率)', cmd: 'node', args: ['scripts/e2e_compress_test.js'] }, { id: 'organize', name: 'E2E Business: PDF Organize (旋蜬/删陀/纞匠调敎)', cmd: 'node', args: ['scripts/e2e_organize_test.js'] },