From db5b9b436409b4d24eccfabf8963d2ed36da3a48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=E1=BA=A7n=20Nh=E1=BA=ADt=20Duy?= <3275987+duydev@users.noreply.github.com> Date: Thu, 15 Oct 2026 13:21:11 +0700 Subject: [PATCH] M14: add Vietnamese interface and date localization (#1712) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * G14: Vietnamese catalog — menus, file and shell chrome Add the Vietnamese (vi) TSV catalog header and translations for menus, File/Edit/Help chrome, clipboard and common shell labels. PhotoCraft and VectorCraft catalogs used only as translation memory when English source and context matched. ATTRIBUTION records the asset hash. Co-authored-by: Cursor * G14: Vietnamese catalog — forms, signatures and pages Translate form/Fill & Sign/certificate wording and page organize/rotate/ extract/split labels. Keep product and format names unchanged. Co-authored-by: Cursor * G14: Vietnamese catalog — comments, view, a11y and contexts Translate comments/markup, view/zoom/preferences tools, accessibility and preflight sentences, plus contextual rows (certificate, calendar, keys, scroll speed, signature pad, action wizard, @plural one-form). Co-authored-by: Cursor * G14: Vietnamese catalog — remaining dialogs and notices Complete the Vietnamese catalog to every (context, English) key in the bundled union (2,580 entries). No unapproved English UI fallbacks remain outside the documented VI_KEEP_AS_IS list. Co-authored-by: Cursor * G14: restore complete Vietnamese catalog key order Replace the domain-appended catalog with the verified 2,580-entry union in stable key order so coverage matches every bundled reference key. Co-authored-by: Cursor * G14: register Vietnamese interface and date language Add `vi` / Tiếng Việt to LANGUAGES and DATE_LANGUAGES with plural_none and rtl false. Locale tags vi, vi-VN and vi_VN.UTF-8 resolve. Calendar uses Tháng Một / tháng Một; Fill & Sign refuses non-WinAnsi month names. Coverage tests require full command, literal, key and credits coverage. Co-authored-by: Cursor * G14: document Vietnamese localization Record Vietnamese at 100% catalog coverage in localization-parity and ROADMAP, list Tiếng Việt in Preferences/docs, and note the G14 catalog in the progress log. Engine/OS details, document contents, filenames, CLI/MCP and external help remain out of scope by design. Co-authored-by: Cursor * G14: use ASCII > in Vietnamese preference paths Inter lacks U+25B8 (▸). Match other Latin catalogs and write preference paths as "Tùy chọn > …" so the glyph coverage test stays green. Co-authored-by: Cursor * G14: finalize Vietnamese terminology and current coverage Disambiguate theme Appearance (Giao diện) from object look (Diện mạo), normalize form Field to Trường, make redaction apply wording permanent, use numeric calendar months, close the GoToR/digital-ID key gap, and pin regression assertions. Refresh the vi.tsv attribution hash. Co-authored-by: Cursor * G14: align localization docs with Vietnamese coverage Recompute the twelve-language mean (≈59% → ≈68%), document 23 interface languages, and remove stale claims that Vietnamese is missing. Co-authored-by: Cursor * G14: cover Wayland title-bar strings in Vietnamese Translate Minimize/Maximize/Restore and the system title-bar preference added on upstream main, and refresh the catalog attribution hash and counts. Co-authored-by: Cursor * G14: correct current union key count in localization docs Co-authored-by: Cursor * G14: prepare Vietnamese localization for review Trim the vi.tsv header to maintainer-oriented notes, record native-speaker community review in attribution and localization docs, and refresh the weighted readiness arithmetic (localization ≈68% → ≈50%). Co-authored-by: Cursor --------- Co-authored-by: DUY Tran Nhat (SAE-KIDS) Co-authored-by: Cursor --- ATTRIBUTION.md | 3 +- ATTRIBUTION.toml | 12 + ROADMAP.md | 22 +- crates/engine/src/dates.rs | 59 +- crates/ui-egui/src/appearance.rs | 2 +- crates/ui-egui/src/i18n/mod.rs | 242 ++- crates/ui-egui/src/i18n/vi.tsv | 2601 ++++++++++++++++++++++++++++++ crates/ui-egui/tests/fonts.rs | 1 + docs/gaps.md | 15 +- docs/localization-parity.md | 34 +- docs/localization.md | 13 +- docs/target-app-parity.md | 18 +- 12 files changed, 2971 insertions(+), 51 deletions(-) create mode 100644 crates/ui-egui/src/i18n/vi.tsv diff --git a/ATTRIBUTION.md b/ATTRIBUTION.md index 3b451f246d..d35b663209 100644 --- a/ATTRIBUTION.md +++ b/ATTRIBUTION.md @@ -4,7 +4,7 @@ Every asset PdfCraft includes, bundles or uses to build its published material, with its author, source and licence. The policy is in [AGENTS.md](AGENTS.md) §1. The machine-readable list, with SHA-256 hashes, is [ATTRIBUTION.toml](ATTRIBUTION.toml). Licence texts are kept beside the assets and summarised in [NOTICE](NOTICE). -## In this repository (270) +## In this repository (271) | Asset | Title | Author | Licence | Source | Used for | |---|---|---|---|---|---| @@ -28,6 +28,7 @@ Every asset PdfCraft includes, bundles or uses to build its published material, | `crates/ui-egui/src/i18n/ar.tsv` | Arabic interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Arabic UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/tr.tsv` | Turkish interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Turkish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/lt.tsv` | Lithuanian interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels and user-facing messages; reviewed by a native Lithuanian-speaking contributor | Lithuanian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | +| `crates/ui-egui/src/i18n/vi.tsv` | Vietnamese interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels; PhotoCraft and VectorCraft Vietnamese catalogs used only as translation memory when English source and semantic context matched; reviewed by a native Vietnamese-speaking contributor | Vietnamese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `assets/icons/accessibility.svg` | Lucide icon "accessibility" | Lucide Contributors (portions Cole Bemis, Feather) | ISC | https://github.com/lucide-icons/lucide (npm lucide-static 1.49.0, icons/accessibility.svg) | UI icon, embedded via crates/ui-egui/src/icon_data.rs | | `assets/icons/align-left.svg` | Lucide icon "align-left" | Lucide Contributors (portions Cole Bemis, Feather) | ISC | https://github.com/lucide-icons/lucide (npm lucide-static 1.49.0, icons/align-left.svg) | UI icon, embedded via crates/ui-egui/src/icon_data.rs | | `assets/icons/align-center.svg` | Lucide icon "align-center" | Lucide Contributors (portions Cole Bemis, Feather) | ISC | https://github.com/lucide-icons/lucide (npm lucide-static 1.49.0, icons/align-center.svg) | UI icon, embedded via crates/ui-egui/src/icon_data.rs | diff --git a/ATTRIBUTION.toml b/ATTRIBUTION.toml index 6715f7b4ce..5e17018c31 100644 --- a/ATTRIBUTION.toml +++ b/ATTRIBUTION.toml @@ -230,6 +230,18 @@ kind = "translation" usage = "Lithuanian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" sha256 = "2daa34aacddccdbe9862932c5c6f0a0d8bdb86b07cc385a82f0ceaf9f1c4f333" + +[[asset]] +path = "crates/ui-egui/src/i18n/vi.tsv" +title = "Vietnamese interface translation catalog" +author = "PdfCraft contributors" +source = "Contributor-original: clean-room translations of PdfCraft's English UI labels; PhotoCraft and VectorCraft Vietnamese catalogs used only as translation memory when English source and semantic context matched; reviewed by a native Vietnamese-speaking contributor" +licence = "MIT OR Apache-2.0" +licence_file = "LICENSE-MIT" +kind = "translation" +usage = "Vietnamese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" +sha256 = "f9b0694f684bea95e20bd33bef33fedfd92e28c62f2c140193c89e0ed7a18b97" + [[asset]] path = "assets/icons/accessibility.svg" title = "Lucide icon \"accessibility\"" diff --git a/ROADMAP.md b/ROADMAP.md index 242afd39db..284e87419c 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,6 +1,6 @@ # PdfCraft roadmap -**Stage: alpha** · next: beta, ~26% (ready for real work 49% → 75%) and ~400–700 h away +**Stage: alpha** · next: beta, ~25% (ready for real work 50% → 75%) and ~400–700 h away > **Last reviewed:** 2026-10-13 · **Last updated:** 2026-10-13 · **Change:** minor (M3 candidate: native opens retain chosen tools through password retries and defer startup intake while preparation is pending; estimates unchanged) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) > **Last reviewed:** 2026-10-12 · **Last updated:** 2026-10-12 · **Change:** minor (M4 #1310 #1311 #1312: undo, revert and the next save keep the last saved revision; estimates unchanged) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) @@ -49,7 +49,7 @@ and add a line to the [progress log](#progress-log); when a gap closes, remove i |---|---|---| | **Feature breadth** | **≈ 67%** tier-weighted (56.9% unweighted: 423 shipped + 74 partial of 808; P0 94.2%) | measured, `parity/acrobat-features.toml` | | Feature breadth, mainstream practitioner | ≈ 70% tier-weighted (63.2% unweighted; P0 95.3%) | measured ([split](docs/target-app-parity.md#mainstream-practitioner-vs-full-acrobat-pro)) | -| **Ready for real work**, full Acrobat Pro | **≈ 49%** (45–53%) | estimated, weighted sum over [dimensions](#by-dimension) | +| **Ready for real work**, full Acrobat Pro | **≈ 50%** (45–53%) | estimated, weighted sum over [dimensions](#by-dimension) | | **Ready for real work**, mainstream practitioner | **≈ 55%** (50–60%) | estimated ([split](docs/target-app-parity.md#mainstream-practitioner-vs-full-acrobat-pro)) | | **Ready for real work**, essentials user | **≈ 66%** (60–70%) | estimated ([method](docs/target-app-parity.md#essentials-user)) | | Remaining to **beta** | ≈ 400–700 Opus 5.5 agent-hours | estimated | @@ -66,7 +66,7 @@ and 245 open issues keep it far from beta. | Audience | Ready | Opus 5.5 agent-hours to ≈ 95% | Work that dominates | |---|---|---|---| -| Full Acrobat Pro (ready for real work) | ≈ 49% | ≈ 780–1,400 h (≈ 300–550 h wall clock with 3–5 agents; 60–70% parallelizes) | Own renderer and fidelity harness, editing existing content, OCR and Office conversion, Preflight and PDF/A/X/UA, accessibility tagging, signatures for institutions | +| Full Acrobat Pro (ready for real work) | ≈ 50% | ≈ 780–1,400 h (≈ 300–550 h wall clock with 3–5 agents; 60–70% parallelizes) | Own renderer and fidelity harness, editing existing content, OCR and Office conversion, Preflight and PDF/A/X/UA, accessibility tagging, signatures for institutions | | Mainstream practitioner | ≈ 55% | ≈ 500–900 h (≈ 200–400 h wall clock; ≈ 60% parallelizes) | Rendering fidelity, editing existing text (CJK, RTL, subsets), conversion (Word layout, Excel, PowerPoint, Office→PDF), OCR languages, the bug backlog | | Essentials user | ≈ 66% | ≈ 180–330 h (≈ 90–180 h wall clock; ≈ 50% parallelizes) | Rendering fidelity on everyday files, launch and GPU stability, simple text fixes, Word export layout, Chinese UI glyphs | @@ -81,13 +81,13 @@ Hours are calibrated as in [Effort and calibration](docs/target-app-parity.md#ef | File formats and conversion | ≈ 40% | 12% | 120–220 (within features) | [file-format-parity.md](docs/file-format-parity.md) | | PDF specification and standards | ≈ 60% | 8% | 150–260 (within features) | [pdf-spec-parity.md](docs/pdf-spec-parity.md) | | Hardware | ≈ 35% | 4% | 25–50 | [hardware-parity.md](docs/hardware-parity.md) | -| Localization | ≈ 59% | 5% | 35–60 | [localization-parity.md](docs/localization-parity.md) | +| Localization | ≈ 68% | 5% | 35–60 | [localization-parity.md](docs/localization-parity.md) | | Performance | ≈ 40% | 6% | 25–45 | [gaps.md](docs/gaps.md) gap 13 | | Stability | ≈ 50% | 8% | 45–80 | [gaps.md](docs/gaps.md) gap 6 | | Platforms | ≈ 70% | 5% | 15–30 | [hardware-parity.md](docs/hardware-parity.md#platforms) | | Ecosystem and plug-ins | ≈ 30% | 1% | 10–20 (within features) | [gaps.md](docs/gaps.md) | | AI features | ≈ 0% (in scope: local providers) | 1% | 20–40 (within features) | [gaps.md](docs/gaps.md) gap 23 | -| **Total (weighted sum)** | **≈ 49%** | 100% | **≈ 780–1,400** | | +| **Total (weighted sum)** | **≈ 50%** | 100% | **≈ 780–1,400** | | ## Features @@ -112,8 +112,8 @@ What's strong and missing in each: [target-app-parity.md](docs/target-app-parity ## Languages -Measured from `crates/ui-egui/src/i18n/*.tsv` (2,143 keys). Detail and script notes: -[localization-parity.md](docs/localization-parity.md). +Twelve key languages (historical % snapshot vs 2,143 keys, except Vietnamese vs the current +union). Detail and script notes: [localization-parity.md](docs/localization-parity.md). | Language | Code | Strings | Status | |---|---|---|---| @@ -128,10 +128,11 @@ Measured from `crates/ui-egui/src/i18n/*.tsv` (2,143 keys). Detail and script no | Japanese | `ja` | 99.1% | partial | | German | `de` | 99.3% | partial | | Korean | `ko` | 0% | none | -| Vietnamese | `vi` | 0% | none | +| Vietnamese | `vi` | 100% of current union | partial (dialogs / tooltips; no help) | -Also shipped: Traditional Chinese, Russian, Bulgarian, Telugu, Hungarian, Ukrainian, Italian -(94–100%) and Czech (menus only): **8 more languages**. +Also shipped: Traditional Chinese, Russian, Bulgarian, Telugu, Hungarian, Ukrainian, Italian, +Kazakh, Polish, Slovenian, Greek, Turkish, Lithuanian and Czech (menus only): **14 more catalogs** +(23 interface languages including English). ## Upcoming @@ -150,6 +151,7 @@ Ranked; detail and the full milestone table in [docs/roadmap.md](docs/roadmap.md | 8 | 1.0 polish: performance, right-to-left, missing languages, keyboard-only (M14) | 55–95 | ## Progress log +- **2026-10-13 (G14, Vietnamese localization):** Added Vietnamese (`vi`, Tiếng Việt) as an interface and date language with a 2,591-entry catalog (`plural_none`) covering 100% of the current localizable key union (plus `theme`/`Appearance`). Locale tags `vi` / `vi-VN` / `vi_VN.UTF-8` resolve; calendar months use numeric `Tháng 1`…`12` / `tháng 1`…`12`. Native-speaker community review recorded. The twelve-language localization mean moves from ≈59% to ≈68%; weighted readiness ≈49% → ≈50%. Status stays `partial`: engine/OS details, document contents, filenames, CLI/MCP and external help stay outside the catalog by design. - **2026-10-13 (M2, page-unit transform precision):** Preserve small transform coefficients in page marks, added content and print output. Regression cases cover accepted page units of 4096 and 75000; existing page-unit interpretation and estimates are unchanged. - **2026-10-14 (M5, PR #1457 branch refresh):** Merged upstream main and reconciled roadmap entries while preserving comment submission shortcuts. Estimates unchanged. diff --git a/crates/engine/src/dates.rs b/crates/engine/src/dates.rs index e26d9ec60a..c3f9a50861 100644 --- a/crates/engine/src/dates.rs +++ b/crates/engine/src/dates.rs @@ -56,7 +56,7 @@ const AR_DAYS: [&str; 7] = ["الأحد", "الاثنين", "الثلاثاء", /// The languages month and weekday names can be written in (Preferences ▸ Date format ▸ Language): /// the interface languages, in the same order and with the same names. -pub static DATE_LANGUAGES: [DateLanguage; 22] = [ +pub static DATE_LANGUAGES: [DateLanguage; 23] = [ DateLanguage { code: "en", name: "English", @@ -360,6 +360,44 @@ pub static DATE_LANGUAGES: [DateLanguage; 22] = [ days: ["sekmadienis", "pirmadienis", "antradienis", "trečiadienis", "ketvirtadienis", "penktadienis", "šeštadienis"], days_short: ["sk", "pr", "an", "tr", "kt", "pn", "št"], }, + // Vietnamese: numeric month forms (`tháng 1` with a day, `Tháng 1` standing alone). + // Fill & Sign still refuses any format whose final text fails the existing WinAnsi check + // (for example weekday names); `dd.mm.yyyy` remains writable. + DateLanguage { + code: "vi", + name: "Tiếng Việt", + months: [ + "Tháng 1", + "Tháng 2", + "Tháng 3", + "Tháng 4", + "Tháng 5", + "Tháng 6", + "Tháng 7", + "Tháng 8", + "Tháng 9", + "Tháng 10", + "Tháng 11", + "Tháng 12", + ], + months_with_day: Some([ + "tháng 1", + "tháng 2", + "tháng 3", + "tháng 4", + "tháng 5", + "tháng 6", + "tháng 7", + "tháng 8", + "tháng 9", + "tháng 10", + "tháng 11", + "tháng 12", + ]), + months_short: ["Thg 1", "Thg 2", "Thg 3", "Thg 4", "Thg 5", "Thg 6", "Thg 7", "Thg 8", "Thg 9", "Thg 10", "Thg 11", "Thg 12"], + days: ["Chủ Nhật", "Thứ Hai", "Thứ Ba", "Thứ Tư", "Thứ Năm", "Thứ Sáu", "Thứ Bảy"], + days_short: ["CN", "T2", "T3", "T4", "T5", "T6", "T7"], + }, ]; /// The date language for `code` (any case), or `None` when there's none. @@ -683,6 +721,25 @@ mod tests { assert_eq!(s.date_language(), None); } + #[test] + fn vietnamese_month_and_weekday_names() { + let mut s = Session::new().with_clock(|| 1_700_000_000); + s.set_date_language(Some("vi")).unwrap(); + assert_eq!(s.date_language(), Some("vi")); + s.set_date_format("d mmmm yyyy").unwrap(); + assert_eq!(s.today_text(None, None).as_deref(), Ok("14 tháng 11 2023")); + s.set_date_format("mmmm yyyy").unwrap(); + assert_eq!(s.today_text(None, None).as_deref(), Ok("Tháng 11 2023")); + s.set_date_format("ddd, d mmm").unwrap(); + assert_eq!(s.today_text(None, None).as_deref(), Ok("T3, 14 Thg 11")); + // Encoding follows the spelled text: `14 tháng 11 2023` is WinAnsi-representable; + // a weekday name such as `Thứ Ba` is not, so Fill & Sign refuses that format. + assert_eq!(s.today_text_for_pdf(Some("d mmmm yyyy"), Some("vi")).as_deref(), Ok("14 tháng 11 2023")); + let e = s.today_text_for_pdf(Some("dddd d mmmm yyyy"), Some("vi")).unwrap_err(); + assert!(e.contains("can't be written into the PDF yet") && e.contains("dd.mm.yyyy"), "{e}"); + assert!(s.today_text_for_pdf(Some("dd.mm.yyyy"), Some("vi")).is_ok()); + } + #[test] fn dates_the_pdf_cannot_hold_are_refused_not_damaged() { assert_eq!(unwritable("8. října 2026"), "ř"); diff --git a/crates/ui-egui/src/appearance.rs b/crates/ui-egui/src/appearance.rs index 5782b3d590..e279399270 100644 --- a/crates/ui-egui/src/appearance.rs +++ b/crates/ui-egui/src/appearance.rs @@ -111,7 +111,7 @@ fn card(ui: &mut egui::Ui, t: &Tokens, title: &str, active: bool, themes: &[(The /// The Appearance section of Preferences. pub fn preferences_section(ui: &mut egui::Ui, app: &mut PdfCraftApp, t: &Tokens) { - ui.label(RichText::new(tl!("Appearance")).font(theme::semibold(13.0))); + ui.label(RichText::new(tl_ctx!("theme", "Appearance")).font(theme::semibold(13.0))); ui.horizontal(|ui| { ui.label(tl!("Appearance mode")); egui::ComboBox::from_id_salt("appearance-mode").selected_text(tl!(mode_label(app.theme_preference))).show_ui(ui, |ui| { diff --git a/crates/ui-egui/src/i18n/mod.rs b/crates/ui-egui/src/i18n/mod.rs index 18a0fc54bf..b9a264f216 100644 --- a/crates/ui-egui/src/i18n/mod.rs +++ b/crates/ui-egui/src/i18n/mod.rs @@ -147,7 +147,7 @@ fn plural_sl(n: u64) -> usize { } /// The registry. English first: it is the fallback and the source language. -pub static LANGUAGES: [LangInfo; 22] = [ +pub static LANGUAGES: [LangInfo; 23] = [ LangInfo { code: "en", name: "English", source: "", plural: plural_one_other, rtl: false, catalog: OnceLock::new() }, LangInfo { code: "ja", name: "日本語", source: include_str!("ja.tsv"), plural: plural_none, rtl: false, catalog: OnceLock::new() }, // Simplified Chinese; `zh`, `zh-CN`, `zh-SG` and `zh-Hans-*` locales resolve here (see `candidates`). @@ -207,6 +207,9 @@ pub static LANGUAGES: [LangInfo; 22] = [ LangInfo { code: "tr", name: "Türkçe", source: include_str!("tr.tsv"), plural: plural_none, rtl: false, catalog: OnceLock::new() }, // Lithuanian; every `lt-*` locale (`lt-LT`, `lt_LT.UTF-8`) resolves here. Three plural forms (one, few, other). LangInfo { code: "lt", name: "Lietuvių", source: include_str!("lt.tsv"), plural: plural_lithuanian, rtl: false, catalog: OnceLock::new() }, + // Vietnamese; every `vi-*` locale (`vi-VN`, `vi_VN.UTF-8`) resolves here. CLDR `vi` counts have + // one form ("other"), so `@plural` entries list a single form. + LangInfo { code: "vi", name: "Tiếng Việt", source: include_str!("vi.tsv"), plural: plural_none, rtl: false, catalog: OnceLock::new() }, ]; impl LangInfo { @@ -2259,6 +2262,243 @@ mod tests { ); } + #[test] + fn vietnamese_is_registered_and_persists() { + let vi = Lang::from_code("vi").expect("vi registered"); + assert_eq!(vi.name(), "Tiếng Việt"); + assert_eq!(normalize_pref("Vi"), Some("vi")); + for tag in ["vi", "vi-VN", "vi_VN.UTF-8", "VI-vn"] { + assert_eq!(lang_from_tag(tag), Some(vi), "{tag}"); + } + assert_eq!(first_supported("vi-VN\r\nen-US"), Some(vi)); + assert_eq!(tr(vi, "File"), "Tệp"); + assert_eq!(tr(vi, "Edit"), "Chỉnh sửa"); + assert_eq!(tr(vi, "Save"), "Lưu"); + assert_eq!(tr(vi, "Save as…"), "Lưu thành…"); + assert_eq!(tr(vi, "Bookmarks"), "Dấu trang"); + assert_eq!(tr(vi, "Fill & Sign"), "Điền & Ký"); + assert_eq!(tr(vi, "Interface language"), "Ngôn ngữ giao diện"); + assert_eq!((0..=3).map(|n| (vi.0.plural)(n)).collect::>(), [0, 0, 0, 0]); + for n in [0, 1, 2, 5] { + assert_eq!(trn(vi, n, "{n} page", "{n} pages"), format!("{n} trang")); + assert_eq!(trn(vi, n, "{n} field", "{n} fields"), format!("{n} trường")); + } + let mut app = crate::PdfCraftApp::default(); + app.set_option("language", "vi").unwrap(); + assert_eq!(app.language, "vi"); + let mut restored = crate::PdfCraftApp::default(); + restored.restore(&app.persist()); + assert_eq!(restored.language, "vi"); + assert!(restored.set_option("language", "xx").is_err()); + assert_eq!(restored.language, "vi"); + } + + #[test] + fn vietnamese_covers_commands_and_catalogue() { + let vi = Lang::from_code("vi").expect("vi registered"); + let mut missing = std::collections::BTreeSet::new(); + for command in pdfcraft_engine::commands::COMMANDS { + if !has(vi, command.label) { + missing.insert(command.label); + } + if let Some(menu) = command.menu + && !has(vi, menu) + { + missing.insert(menu); + } + } + for group in pdfcraft_engine::catalog::TOOL_GROUPS { + if !has(vi, group.label) { + missing.insert(group.label); + } + for section in group.sections { + if !has(vi, section.title) { + missing.insert(section.title); + } + for item in section.items { + if !has(vi, item.label) { + missing.insert(item.label); + } + } + } + } + assert!(missing.is_empty(), "Vietnamese misses commands/tools: {missing:#?}"); + } + + #[test] + fn vietnamese_covers_ui_literals() { + let vi = Lang::from_code("vi").expect("vi registered"); + let literals = scan_ui_literals(true); + let missing: Vec<_> = literals.iter().filter(|label| !has(vi, label)).collect(); + assert!(missing.is_empty(), "Untranslated Vietnamese UI labels: {missing:#?}"); + } + + #[test] + fn vietnamese_covers_contextual_calendar_certificate_and_preference_labels() { + let vi = Lang::from_code("vi").expect("vi registered"); + assert_eq!(tr_ctx(vi, "comment menu", "Edit"), "Sửa"); + assert_eq!(tr_ctx(vi, "signature pad", "Type"), "Nhập chữ"); + assert_eq!(tr_ctx(vi, "action wizard", "Start"), "Bắt đầu"); + assert_eq!(["Slow", "Normal", "Fast"].map(|label| tr_ctx(vi, "scroll speed", label)), ["Chậm", "Bình thường", "Nhanh"]); + let months = [ + ("January", "Tháng 1", "tháng 1"), + ("February", "Tháng 2", "tháng 2"), + ("March", "Tháng 3", "tháng 3"), + ("April", "Tháng 4", "tháng 4"), + ("May", "Tháng 5", "tháng 5"), + ("June", "Tháng 6", "tháng 6"), + ("July", "Tháng 7", "tháng 7"), + ("August", "Tháng 8", "tháng 8"), + ("September", "Tháng 9", "tháng 9"), + ("October", "Tháng 10", "tháng 10"), + ("November", "Tháng 11", "tháng 11"), + ("December", "Tháng 12", "tháng 12"), + ]; + for (source, standalone, in_date) in months { + assert_eq!(tr(vi, source), standalone); + assert_eq!(tr_ctx(vi, "calendar date", source), in_date); + } + assert_eq!( + ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"].map(|day| tr_ctx(vi, "calendar weekday", day)), + ["CN", "T2", "T3", "T4", "T5", "T6", "T7"] + ); + assert_eq!(tr_ctx(vi, "certificate", "Subject"), "Chủ thể chứng chỉ"); + assert_eq!(tr(vi, "Subject"), "Chủ đề"); + // Appearance: object/comment/signature look vs Preferences theme section. + assert_eq!(tr(vi, "Appearance"), "Diện mạo"); + assert_eq!(tr_ctx(vi, "theme", "Appearance"), "Giao diện"); + // PDF form Field — never the visual-box sense "ô". + assert_eq!(tr(vi, "Field"), "Trường"); + assert_eq!(tr(vi, "Fields"), "Các trường"); + assert_eq!(tr(vi, "Form fields"), "Các trường biểu mẫu"); + assert_eq!(tr(vi, "Text field"), "Trường văn bản"); + assert_eq!(tr(vi, "Date field"), "Trường ngày"); + assert_eq!(tr(vi, "Image field"), "Trường hình ảnh"); + assert_eq!(tr(vi, "Field properties"), "Thuộc tính trường"); + assert_eq!(tr(vi, "Field list"), "Danh sách trường"); + assert_eq!(tr(vi, "{kind} field"), "Trường {kind}"); + // Redaction: permanent removal, not temporary cover. + assert_eq!(tr(vi, "Mark for redaction"), "Đánh dấu để xóa"); + assert_eq!(tr(vi, "Apply redactions"), "Xóa vĩnh viễn nội dung đã đánh dấu"); + assert_eq!(tr(vi, "Redact text and images"), "Xóa nội dung nhạy cảm trong văn bản và hình ảnh"); + assert_eq!(tr(vi, "Clear form"), "Xóa dữ liệu biểu mẫu"); + // Fill & Sign tool section title — fill-in, not paint fill. + assert_eq!(tr(vi, "Fill"), "Điền"); + assert_eq!(tr(vi, "Fill & Sign"), "Điền & Ký"); + assert_eq!( + tr(vi, "Remove \"{name}\" from this list? The file itself is not deleted."), + "Gỡ \"{name}\" khỏi danh sách này? Bản thân tệp không bị xóa." + ); + for field in [ + "Issued to", + "Issued by", + "Valid from", + "Valid to", + "Intended usage", + "Serial number", + "Issuer", + "Validity starts", + "Validity ends", + "Public key", + "Basic constraints", + "Key usage", + "Self-signed", + "SHA-1 digest", + "SHA-256 digest", + ] { + assert_ne!(tr_ctx(vi, "certificate", field), field, "certificate field remains untranslated: {field}"); + } + } + + #[test] + fn vietnamese_covers_bundled_catalog_keys() { + let vi = Lang::from_code("vi").expect("vi registered"); + let mut missing = std::collections::BTreeSet::new(); + for reference in LANGUAGES.iter().filter(|language| language.code != "vi") { + let (entries, errors) = catalog::parse_entries(reference.source, reference.plural_forms()); + assert!(errors.is_empty(), "{}: invalid reference catalog: {errors:?}", reference.code); + for entry in entries { + let translated = match entry.context.as_str() { + "" => vi.catalog().plain(&entry.source), + "@id" => vi.catalog().id(&entry.source), + "@plural" => entry.source.split_once('|').and_then(|(one, other)| vi.catalog().plural(one, other, 0)), + context => vi.catalog().contextual(context, &entry.source), + }; + if translated.is_none() { + missing.insert((entry.context, entry.source)); + } + } + } + assert!(missing.is_empty(), "Vietnamese misses bundled catalog keys: {missing:#?}"); + } + + #[test] + fn vietnamese_covers_credits_labels() { + let vi = Lang::from_code("vi").expect("vi registered"); + let labels = crate::credits::NameMode::ALL + .iter() + .map(|mode| mode.label()) + .chain(crate::credits::SortKey::ALL.iter().flat_map(|key| { + let (menu, heading) = key.label(); + [menu, heading] + })) + .chain(crate::credits::MODEL_COLUMNS.iter().copied()); + let missing: Vec<_> = labels.filter(|label| !has(vi, label)).collect(); + assert!(missing.is_empty(), "Vietnamese misses credits labels: {missing:#?}"); + } + + #[test] + fn vietnamese_leaves_no_unapproved_english_fallbacks() { + let vi = Lang::from_code("vi").expect("vi registered"); + // Authoritative allowlist for intentional English-identical Vietnamese rows. + const KEEP_AS_IS: &[&str] = &[ + "OK", + "Digital ID", + "ZIP", + "JavaScript", + "Microsoft Word (.docx)", + "PDF/A…", + "PostScript / EPS", + "Rich Text Format (.rtf)", + "CheckBox", + "Combo", + "Home / End", + "PushButton", + "Radio", + "Standard Business", + "Keychain · ", + "{0}: {1}", + "{field}: {e}", + "{month} {y}", + "{n} {kind}", + "{rule} - {status}", + "+LOC", + "−LOC", + "ΔLOC", + "+Bin", + "−Bin", + "`{command}` {when}", + "English", + ]; + const KEY_CAPS: &[&str] = &["Ctrl", "Shift", "Delete", "Esc", "Home", "End", "Space"]; + let (entries, errors) = catalog::parse_entries(vi.0.source, vi.0.plural_forms()); + assert!(errors.is_empty(), "{errors:?}"); + let edges = |s: &str| (s.len() - s.trim_start().len(), s.len() - s.trim_end().len()); + let mut unchanged = Vec::new(); + for e in &entries { + let key_cap = e.context == "key" && KEY_CAPS.contains(&e.source.as_str()); + if e.source == e.translation && !KEEP_AS_IS.contains(&e.source.as_str()) && !key_cap { + unchanged.push((e.context.clone(), e.source.clone())); + } + assert!(!e.translation.contains("..."), "use … rather than three dots: {:?}", e.translation); + assert_eq!(edges(&e.translation), edges(&e.source), "stray whitespace: {:?}", e.translation); + if e.context == "@plural" { + assert!(!e.translation.contains('|'), "Vietnamese @plural is one form: {:?}", e.translation); + } + } + assert!(unchanged.is_empty(), "unapproved English Vietnamese catalog entries: {unchanged:#?}"); + } + #[test] fn slovene_is_registered_and_persists() { let sl = Lang::from_code("sl").expect("sl registered"); diff --git a/crates/ui-egui/src/i18n/vi.tsv b/crates/ui-egui/src/i18n/vi.tsv new file mode 100644 index 0000000000..9136fdfb4b --- /dev/null +++ b/crates/ui-egui/src/i18n/vi.tsv @@ -0,0 +1,2601 @@ +# Vietnamese (vi) catalog. Columns, separated by a TAB: context source translation +# +# Clean-room translations from PdfCraft's English UI labels. Reviewed by a native +# Vietnamese-speaking contributor. PhotoCraft/VectorCraft Vietnamese catalogs were used only as +# translation memory when the English source and its meaning in context matched. Product and +# format names (PdfCraft, PDF, PDF/A, OCR, XFA, Word…) remain names where appropriate. +# Plural rule: `plural_none` — every @plural row lists exactly one form. +# Context-sensitive wording and intentional unchanged strings are regression-tested in i18n/mod.rs. +# + Menu Trình đơn + Edit Chỉnh sửa + Pages Trang + View Xem + Help Trợ giúp + Zoom Thu phóng + Actual size Kích thước thực + Zoom to page level Thu phóng vừa trang + Fit to width Vừa chiều rộng + Display theme Chủ đề hiển thị + Side panels Bảng bên + Preferences Tùy chọn + Preferences… Tùy chọn… + Interface language Ngôn ngữ giao diện + Interface size Kích thước giao diện + Auto ({percent}%) Tự động ({percent}%) + Identity Danh tính + Name on new comments Tên trên bình luận mới + Open… Mở… + Open Recent Mở gần đây + Clear Recent Files Xóa tệp gần đây + Remove from Recent Xóa khỏi Gần đây + No recent files Không có tệp gần đây + New blank PDF PDF trống mới + Create PDF from file… Tạo PDF từ tệp… + Create PDF from images… Tạo PDF từ hình ảnh… + Create PDF from multiple files… Tạo PDF từ nhiều tệp… + Create separate PDFs… Tạo các PDF riêng biệt… + Create PDF from clipboard Tạo PDF từ bảng tạm + Combine files… Kết hợp tệp… + Save Lưu + Save as… Lưu thành… + Close file Đóng tệp + Close all Đóng tất cả + Revert Hoàn nguyên + Print… In… + Document properties… Thuộc tính tài liệu… + Find… Tìm… + Advanced search… Tìm nâng cao… + Copy Sao chép + Cut Cắt + Paste Dán + Delete Xóa + Select all Chọn tất cả + Cancel Hủy + OK OK + Apply Áp dụng + Close Đóng + Back Quay lại + Next Tiếp theo + Previous Trước + Name Tên + File name Tên tệp + Location Vị trí + Browse… Duyệt… + Choose… Chọn… + Search Tìm + Clear Xóa + Refresh Làm mới + Loading… Đang tải… + Save changes? Lưu các thay đổi? + Don't save Không lưu + Page Trang + Page {n} Trang {n} + of trên + Fit one full page Vừa một trang đầy đủ + Single page Một trang + Two-page view Chế độ hai trang + Continuous scrolling Cuộn liên tục + Page display Hiển thị trang + Default page display Hiển thị trang mặc định + Default zoom Thu phóng mặc định + Full screen mode Chế độ toàn màn hình + Read mode Chế độ đọc + Comments Bình luận + Comment Bình luận + Add comment Thêm bình luận + Delete comment Xóa bình luận + Reply Trả lời + Highlight Tô sáng + Underline Gạch chân + Strikethrough Gạch ngang + Text Văn bản + Font Phông chữ + Size Kích thước + Color Màu + Opacity Độ mờ + Width Chiều rộng + Height Chiều cao + Rotation Xoay + More Thêm + Settings Cài đặt + General Chung + Language Ngôn ngữ + Appearance Diện mạo +theme Appearance Giao diện + Theme Chủ đề + Light Sáng + Dark Tối + System Hệ thống + Open file Mở tệp + Save file Lưu tệp + Export Xuất + Import Nhập + Export to image… Xuất ra hình ảnh… + Export to text… Xuất ra văn bản… + Export to Word… Xuất ra Word… + Export to HTML… Xuất ra HTML… + Export to RTF… Xuất ra RTF… + Reduce file size… Giảm kích thước tệp… + Optimize PDF… Tối ưu hóa PDF… + Protect using password… Bảo vệ bằng mật khẩu… + Remove security Gỡ bảo mật + Security properties… Thuộc tính bảo mật… + Organize pages Sắp xếp trang + Rotate pages… Xoay trang… + Delete pages Xóa trang + Insert blank page Chèn trang trống + Insert pages from file… Chèn trang từ tệp… + Replace pages… Thay thế trang… + Extract pages… Trích xuất trang… + Split document… Tách tài liệu… + Number pages… Đánh số trang… + Bookmarks Dấu trang + New bookmark Dấu trang mới + Forms Biểu mẫu + Form fields Các trường biểu mẫu + Signatures Chữ ký + Sign Ký + Fill & Sign Điền & Ký + Accessibility Trợ năng + Help… Trợ giúp… + Check for updates… Kiểm tra bản cập nhật… + About PdfCraft Giới thiệu PdfCraft + Automatically Tự động + Never Không bao giờ + Always Luôn luôn + Yes Có + No Không + On Bật + Off Tắt + Enabled Đã bật + Disabled Đã tắt + Required Bắt buộc + Optional Không bắt buộc + None Không có + Unknown Không rõ + Error Lỗi + Warning Cảnh báo + Information Thông tin + Success Thành công + Failed Thất bại + File Tệp + Folder Thư mục + Choose a file… Chọn một tệp… + Choose a folder… Chọn một thư mục… + Open folder Mở thư mục + Create folder Tạo thư mục + Remove Gỡ bỏ + Rename Đổi tên + Duplicate Nhân bản + Move Di chuyển + Copy to clipboard Sao chép vào bảng tạm + Copied to clipboard Đã sao chép vào bảng tạm + Undo Hoàn tác + Redo Làm lại + Keyboard shortcuts Phím tắt + Find tools and commands… Tìm công cụ và lệnh… + Take a snapshot Chụp ảnh nhanh + Organize Sắp xếp + Comment and review Bình luận và duyệt + Prepare a form Chuẩn bị biểu mẫu + Protect Bảo vệ + Print In + Create Tạo + Convert Chuyển đổi + Optimize Tối ưu hóa + Measure Đo + Redact Xóa nội dung nhạy cảm + Search results Kết quả tìm + No results Không có kết quả + Page {n} of {total} Trang {n} trên {total} + {n} pages selected Đã chọn {n} trang + · not fixable here · không thể sửa tại đây + (page {p}) (trang {p}) + (searching… {s} of {p} pages) (đang tìm… {s} trên {p} trang) + ({n} at {dpi} dpi, the largest size they can be drawn at) ({n} ở {dpi} dpi, kích thước lớn nhất có thể vẽ) + ({s} not exported: {first}) ({s} chưa được xuất: {first}) + on page {p} trên trang {p} + · password-protected · được bảo vệ bằng mật khẩu + (none) (không có) + , Expires: , Hết hạn: + 1 difference found Tìm thấy 1 điểm khác biệt + 1 file 1 tệp + 1 file done 1 tệp đã xong + 1 file needs attention 1 tệp cần chú ý + 1 instance 1 lần xuất hiện + 1 issue 1 vấn đề + 1 mark 1 dấu + 1 page 1 trang + 1 page selected Đã chọn 1 trang + 1 page selected. Đã chọn 1 trang. + 180 degrees 180 độ + 9 digit, A letter, O letter or digit, X any character 9 chữ số, A chữ cái, O chữ cái hoặc chữ số, X ký tự bất kỳ + ; 1 page already had text ; 1 trang đã có văn bản + ; failed: {list} ; thất bại: {list} + ; {n} pages already had text ; {n} trang đã có văn bản + ? of {n} ? trên {n} + A clean-room, open-source PDF application written in Rust. MIT OR Apache-2.0. Ứng dụng PDF mã nguồn mở, viết lại độc lập (clean-room) bằng Rust. MIT OR Apache-2.0. + Accessibility Checker Trình kiểm tra trợ năng + Accessibility Checker Options Tùy chọn trình kiểm tra trợ năng + Acrobat 3.0 and later (40-bit RC4) Acrobat 3.0 trở lên (RC4 40 bit) + Acrobat 5.0 and later (128-bit RC4) Acrobat 5.0 trở lên (RC4 128 bit) + Acrobat 7.0 and later (128-bit AES) Acrobat 7.0 trở lên (AES 128 bit) + Acrobat X and later (256-bit AES) Acrobat X trở lên (AES 256 bit) + Action name: Tên hành động: + Actions Hành động + Active Đang dùng + Actual Size Kích thước thực + Actual text Văn bản thực tế + Add Thêm + Add Step Thêm bước + Add a comment Thêm bình luận + Add a reply Thêm câu trả lời + Add a sticky note here Thêm ghi chú dán tại đây + Add an Action Thêm hành động + Add at least two files Thêm ít nhất hai tệp + Add files… Thêm tệp… + Add folder Thêm thư mục + Add folder and subfolders Thêm thư mục và thư mục con + Add folder and subfolders… Thêm thư mục và thư mục con… + Add folder… Thêm thư mục… + Add open documents Thêm tài liệu đang mở + Add the choices people pick from. Thêm các lựa chọn để người dùng chọn. + Add the files to combine Thêm các tệp cần kết hợp + Add the steps this action runs, in order. Thêm các bước mà hành động này chạy, theo thứ tự. + Add to Trusted Certificates Thêm vào Chứng chỉ tin cậy + Add to trusted certificates Thêm vào chứng chỉ tin cậy + Added 1 comment Đã thêm 1 bình luận + Added more than once Đã thêm nhiều lần + Added {n} comments Đã thêm {n} bình luận + Adds invisible text over each word; the page image is not changed Thêm văn bản ẩn lên từng từ; hình ảnh trang không bị thay đổi + Advanced Nâng cao + Advanced Options {chevron} Tùy chọn nâng cao {chevron} + Align Căn chỉnh + Align left Căn trái + Align right Căn phải + Alignment: Căn lề: + All Tất cả + All document contents Toàn bộ nội dung tài liệu + All document contents except metadata Toàn bộ nội dung tài liệu trừ siêu dữ liệu + All open documents Tất cả tài liệu đang mở + All pages Tất cả các trang + All pages in document Tất cả các trang trong tài liệu + All pages in range Tất cả các trang trong phạm vi + Allow Cho phép + Allow Rich Text Formatting Cho phép định dạng văn bản phong phú + Allow user to enter custom text Cho phép người dùng nhập văn bản tùy ý + Also recognize pages that already have text Nhận dạng cả các trang đã có văn bản + Alternate text Văn bản thay thế + An action with this name already exists. Đã có hành động với tên này. + An open-source PDF workbench — local, private, and scriptable. Bộ công cụ PDF mã nguồn mở — chạy cục bộ, riêng tư và có thể viết kịch bản. + Angle Góc + Animation effects Hiệu ứng hoạt họa + Annotations, form fill-in, and digital signatures Chú thích, điền biểu mẫu và chữ ký số + Any Bất kỳ + Any except extracting pages Bất kỳ trừ trích xuất trang + Anyone opening the document will need this password. It's applied when you save. Bất kỳ ai mở tài liệu đều cần mật khẩu này. Mật khẩu được áp dụng khi bạn lưu. + Appear behind page Hiện phía sau trang + Appear on top of page Hiện phía trên trang + Appearance mode Chế độ giao diện + Appearance settings… Cài đặt giao diện… + Applies to 1 page Áp dụng cho 1 trang + Applies to {n} pages Áp dụng cho {n} trang + Apply redactions Xóa vĩnh viễn nội dung đã đánh dấu + Apply scale Áp dụng tỷ lệ + Asks GitHub for the latest release. Nothing is downloaded or installed automatically. Hỏi GitHub về bản phát hành mới nhất. Không có gì được tải xuống hoặc cài đặt tự động. + At most Tối đa + Attachments Tệp đính kèm + Attachments Panel and Page Bảng Tệp đính kèm và trang + Audit space usage… Kiểm tra dung lượng sử dụng… + Author Tác giả + Auto Tự động + Auto follows the system's text size. Pages always render at the display's full resolution. Chế độ Tự động theo kích thước chữ của hệ thống. Các trang luôn được hiển thị ở độ phân giải đầy đủ của màn hình. + Auto portrait/landscape Tự động dọc/ngang + Auto-rotate pages Tự động xoay trang + Auto-size text to fit redaction region Tự động chỉnh cỡ chữ vừa vùng xóa + Available Có sẵn + Back side only Chỉ mặt sau + Back to all tools Quay lại tất cả công cụ + Back to the document Quay lại tài liệu + Before each selected page (select pages in Organize) Trước mỗi trang đã chọn (chọn trang trong Sắp xếp) + Before the number Trước số + Bicubic downsampling to Giảm mẫu song khối (Bicubic) xuống + Binding Đóng gáy + Binding: Đóng gáy: + Black and white Đen trắng + Bold Đậm + Booklet Sách nhỏ + Booklet subset: Tập con sách nhỏ: + Bookmark options Tùy chọn dấu trang + Bookmarks Panel and Page Bảng Dấu trang và trang + Border Color: Màu viền: + Borders and Colors Viền và màu + Both sides Cả hai mặt + Bottom Dưới cùng + Bottom: Dưới: + Box Hộp + Browser's print dialog Hộp thoại in của trình duyệt + Butt Cụt + Button is checked by default Nút được chọn theo mặc định + Buttons with the same name and value are selected in unison Các nút có cùng tên và giá trị được chọn đồng thời + Bytes Byte + Calibrate from two points Hiệu chuẩn từ hai điểm + Can't be read: {e} Không thể đọc: {e} + Cancelling… Đang hủy… + Case-sensitive Phân biệt chữ hoa/thường + Category: Danh mục: + Center Giữa + Center window on screen Căn giữa cửa sổ trên màn hình + Centre Giữa + Certify Chứng nhận + Change settings… Thay đổi cài đặt… + Change the colour of line art as well as text Đổi màu của nét vẽ đường cũng như văn bản + Change {what} Thay đổi {what} + Changes allowed Các thay đổi được phép + Character limit 0 means no limit. A comb of characters needs a limit. Giới hạn ký tự bằng 0 nghĩa là không giới hạn. Ô dạng lược ký tự cần có giới hạn. + Character spacing Khoảng cách ký tự + Check Again Kiểm tra lại + Check again Kiểm tra lại + Check box is checked by default Hộp kiểm được chọn theo mặc định + Check for updates Kiểm tra bản cập nhật + Check spelling Kiểm tra chính tả + Check the pages Kiểm tra các trang + Check the pages of {name}: {why} Kiểm tra các trang của {name}: {why} + Checking Options ({on} of 32 in all categories) Tùy chọn kiểm tra ({on} trên 32 ở tất cả danh mục) + Checking for a newer version… Đang kiểm tra phiên bản mới hơn… + Choose a PNG or JPEG image (up to 4 MiB). Transparency is preserved. Chọn ảnh PNG hoặc JPEG (tối đa 4 MiB). Độ trong suốt được giữ nguyên. + Choose a folder for the exported files Chọn thư mục cho các tệp đã xuất + Choose a folder for the extracted pages Chọn thư mục cho các trang đã trích xuất + Choose a folder for the results Chọn thư mục cho kết quả + Choose a folder for the searchable files Chọn thư mục cho các tệp có thể tìm kiếm + Choose a layout: Chọn bố cục: + Choose a stamp, then click on the page to place it. Chọn một con dấu, sau đó bấm vào trang để đặt. + Choose an image Chọn một hình ảnh + Choose images Chọn hình ảnh + Choose image… Chọn hình ảnh… + Choose photo… Chọn ảnh… + Choose the digital ID that you want to use for signing: Chọn Digital ID mà bạn muốn dùng để ký: + Circle Hình tròn + Clean Up Dọn dẹp + Clean-up Dọn dẹp + Clear All Xóa tất cả + Clear all Xóa tất cả + Clear selection / close find Bỏ chọn / đóng tìm + Click on the page to add text; each click starts a new box, and ✓ finishes. Drag items to move them, drag a corner to resize, double-click text to edit it. Bấm vào trang để thêm văn bản; mỗi lần bấm sẽ tạo một khung mới, và ✓ để hoàn tất. Kéo các mục để di chuyển, kéo một góc để đổi kích thước, bấm đúp vào văn bản để chỉnh sửa. + Click the first point to begin. Bấm vào điểm đầu tiên để bắt đầu. + Click to sort, drag to move the column. Drag its edge to resize it. Bấm để sắp xếp, kéo để di chuyển cột. Kéo cạnh cột để đổi kích thước. + Click vertices. Enter or double-click finishes a perimeter or area. Click the first point to close an area. Bấm vào các đỉnh. Nhấn Enter hoặc bấm đúp để kết thúc chu vi hoặc diện tích. Bấm vào điểm đầu tiên để đóng một vùng diện tích. + Clockwise 90 degrees Theo chiều kim đồng hồ 90 độ + Close (Esc) Đóng (Esc) + Close Tab Đóng thẻ + Close panel Đóng bảng + Closed arrow Mũi tên đóng + Collapse Thu gọn + Collapse all Thu gọn tất cả + Collapse all bookmarks Thu gọn tất cả dấu trang + Collapse tag Thu gọn thẻ + Collate Sắp theo bộ + Color: Màu: + Colour Màu + Colours are remapped while rendering; the document itself never changes. Màu được ánh xạ lại khi hiển thị; bản thân tài liệu không bao giờ thay đổi. + Comb of Dạng lược gồm + Combine the rest Kết hợp phần còn lại + Combined {n} files Đã kết hợp {n} tệp + Coming in milestone Sẽ có ở cột mốc + Comment and form data Dữ liệu bình luận và biểu mẫu + Commenting, filling in form fields, and signing existing signature fields Bình luận, điền các trường biểu mẫu và ký vào các trường chữ ký có sẵn + Comments & Forms Bình luận & Biểu mẫu + Comments only Chỉ bình luận + Commit selected value immediately Lưu giá trị đã chọn ngay lập tức + Common Properties Thuộc tính chung + Compare Files So sánh tệp + Compare this file with an older version: Compare files… in All tools. So sánh tệp này với phiên bản cũ hơn: So sánh tệp… trong Tất cả công cụ. + Compatibility Tương thích + Compress document structure (object streams) Nén cấu trúc tài liệu (luồng đối tượng) + Compression Nén + Configure New Digital ID Cấu hình Digital ID mới + Confirm Password Xác nhận mật khẩu + Conformance level: Mức tuân thủ: + Continue Tiếp tục + Copies, two-sided printing and colour are chosen in the browser's print dialog. Số bản sao, in hai mặt và màu được chọn trong hộp thoại in của trình duyệt. + Copies: Số bản sao: + Copy selected text Sao chép văn bản đã chọn + Copy text Sao chép văn bản + Couldn't check for updates: {e} Không thể kiểm tra bản cập nhật: {e} + Couldn't open the printer's preferences: {e} Không thể mở tùy chọn của máy in: {e} + Counterclockwise 90 degrees Ngược chiều kim đồng hồ 90 độ + Country/Region Quốc gia/Khu vực + Create Custom Stamp Tạo con dấu tùy chỉnh + Create Link Tạo liên kết + Create PDF Comment Summary Tạo bản tóm tắt bình luận PDF + Create PDF comment summary… Tạo bản tóm tắt bình luận PDF… + Create PDF from images Tạo PDF từ hình ảnh + Create a new Digital ID (self-signed, saved to a password-protected file) Tạo Digital ID mới (tự ký, lưu vào tệp được bảo vệ bằng mật khẩu) + Create accessibility report Tạo báo cáo trợ năng + Create custom stamp… Tạo con dấu tùy chỉnh… + Create {what} Tạo {what} + Created a PDF from {n} files Đã tạo một PDF từ {n} tệp + Created a PDF from {n} files; left out: {names} Đã tạo một PDF từ {n} tệp; đã bỏ qua: {names} + Creates 1 file from {n} pages. Tạo 1 tệp từ {n} trang. + Creates {f} files from {n} pages. Tạo {f} tệp từ {n} trang. + Crop (% trimmed from each side) Cắt xén (% bị cắt từ mỗi cạnh) + Currency symbol: Ký hiệu tiền tệ: + Current page Trang hiện tại + Current page ({n}) Trang hiện tại ({n}) + Current page — type a page number or label (such as iv) and press Enter Trang hiện tại — nhập số trang hoặc nhãn (như iv) rồi nhấn Enter + Custom Tùy chỉnh + Custom scale: Tỷ lệ tùy chỉnh: + Custom text: Văn bản tùy chỉnh: + Custom: Tùy chỉnh: + Cut and stack Cắt và xếp chồng + Cut marks Dấu cắt + DPI sets the printed page size without resampling the image. DPI đặt kích thước trang in mà không lấy mẫu lại hình ảnh. + Dark theme Chủ đề tối + Date format Định dạng ngày + Decimal places: Số chữ số thập phân: + Decimals Số thập phân + Declared conformance: {shown} Tuân thủ đã khai báo: {shown} + Decorative figure Hình trang trí + Default Mặc định + Default Value: Giá trị mặc định: + Default workspace mode Chế độ không gian làm việc mặc định + Default: Mặc định: + Delete page {label} Xóa trang {label} + Delete pages (Delete) Xóa trang (Delete) + Delete pages after extracting Xóa trang sau khi trích xuất + Delete selected pages (Organize) Xóa các trang đã chọn (Sắp xếp) + Delete stamp Xóa con dấu + Delete {o} Xóa {o} + Describe the figure Mô tả hình + Description Mô tả + Description: Mô tả: + Details Chi tiết + Diamond Hình thoi + Digital ID Digital ID + Digital ID password Mật khẩu Digital ID + Direction: Hướng: + Discard Loại bỏ + Discard Objects Loại bỏ đối tượng + Discard User Data Loại bỏ dữ liệu người dùng + Discard alternate images Loại bỏ hình ảnh thay thế + Discard document tags Loại bỏ thẻ tài liệu + Discard embedded page thumbnails Loại bỏ hình thu nhỏ trang nhúng + Discard embedded print settings Loại bỏ cài đặt in nhúng + Discard this text (Esc) Loại bỏ văn bản này (Esc) + Dismiss Đóng + Distinguished name Tên phân biệt + Distribute Phân bố + Document Tài liệu + Document Properties Thuộc tính tài liệu + Document Title Tiêu đề tài liệu + Document and markups Tài liệu và chú thích đánh dấu + Document and stamps Tài liệu và con dấu + Document language Ngôn ngữ tài liệu + Document properties ({key}) Thuộc tính tài liệu ({key}) + Documents and view Tài liệu và chế độ xem + Done Xong + Done adding text Đã thêm văn bản xong + Download Tải xuống + Downsample to Giảm mẫu xuống + Drag the selection to move it. Esc clears the selection. Kéo vùng chọn để di chuyển. Esc để bỏ chọn. + Drag to reorder Kéo để sắp xếp lại + Draw Vẽ + Draw your {what} below. Vẽ {what} của bạn bên dưới. + Drawing scale changes. Use Actual size for full-scale plans. Tỷ lệ bản vẽ thay đổi. Dùng Kích thước thực cho các bản vẽ tỷ lệ đầy đủ. + Drop PDFs, images, text files or folders here, or choose them. Thả PDF, hình ảnh, tệp văn bản hoặc thư mục vào đây, hoặc chọn chúng. + Duplicate "{name}" onto: Nhân bản "{name}" sang: + Duplicate Field Nhân bản trường + Duplicate… Nhân bản… + Dynamic Động + Dynamic XFA form laid out from its template: {pages}, {fields}. Biểu mẫu XFA động được bố trí từ mẫu của nó: {pages}, {fields}. + Each file holds as many of the {n} pages as fit. Mỗi tệp chứa càng nhiều trang trong số {n} trang càng tốt. + Each image is measured where pages draw it; an image is replaced only if the result is smaller. Mỗi hình ảnh được đo tại nơi các trang vẽ nó; hình ảnh chỉ được thay thế nếu kết quả nhỏ hơn. + Each image once, named after the document and page. JPEG images are saved unchanged; others as PNG. Mỗi hình ảnh một lần, đặt tên theo tài liệu và trang. Ảnh JPEG được lưu nguyên vẹn; các ảnh khác lưu dưới dạng PNG. + Earlier in tab order Sớm hơn theo thứ tự tab + Edit Action Chỉnh sửa hành động + Edit image Chỉnh sửa hình ảnh + Edit text… Chỉnh sửa văn bản… + Edit… Chỉnh sửa… + Email Address Địa chỉ email + Enable Acrobat JavaScript Bật Acrobat JavaScript + Enable copying of text, images, and other content Cho phép sao chép văn bản, hình ảnh và nội dung khác + Enable text access for screen reader devices for the visually impaired Cho phép truy cập văn bản cho thiết bị đọc màn hình dành cho người khiếm thị + Encrypt Mã hóa + Endpoints Điểm cuối + Enhance page Nâng cao chất lượng trang + Enter the password that opens it Nhập mật khẩu để mở tài liệu + Enter the permissions password to allow combining Nhập mật khẩu quyền hạn để cho phép kết hợp + Entire page Toàn bộ trang + Even Pages Only Chỉ các trang chẵn + Even and Odd Pages Các trang chẵn và lẻ + Even pages only Chỉ các trang chẵn + Every PDF, image and text file in the folder Mọi tệp PDF, hình ảnh và văn bản trong thư mục + Every PDF, image and text file in the folder and the folders inside it Mọi tệp PDF, hình ảnh và văn bản trong thư mục và các thư mục con của nó + Example: {sample} Ví dụ: {sample} + Exclude images smaller than Loại trừ hình ảnh nhỏ hơn + Expand Mở rộng + Expand all Mở rộng tất cả + Expand all bookmarks Mở rộng tất cả dấu trang + Expand tag Mở rộng thẻ + Expand top-level bookmarks Mở rộng các dấu trang cấp cao nhất + Explain Giải thích + Export All Images Xuất tất cả hình ảnh + Export Value: {on} Giá trị xuất: {on} + Export all to data file… Xuất tất cả ra tệp dữ liệu… + Export certificate… Xuất chứng chỉ… + Export comments Xuất bình luận + Export form data Xuất dữ liệu biểu mẫu + Export stopped: {e} Việc xuất đã dừng: {e} + Export to Image Xuất ra hình ảnh + Export to Text Xuất ra văn bản + Exported 1 image Đã xuất 1 hình ảnh + Exported the text of 1 page Đã xuất văn bản của 1 trang + Exported the text of {n} pages Đã xuất văn bản của {n} trang + Exported {n} images Đã xuất {n} hình ảnh + Exporting… {d} of {t} Đang xuất… {d} trên {t} + Export… Xuất… + Extract pages as separate files Trích xuất trang thành các tệp riêng + Extract pages to a new document Trích xuất trang sang tài liệu mới + Extracted 1 page Đã trích xuất 1 trang + Extracted {n} pages Đã trích xuất {n} trang + Field is used for file selection Trường được dùng để chọn tệp + Field names (comma-separated) Tên trường (phân tách bằng dấu phẩy) + Field names with + - * / and parentheses; put \\ before spaces in names. Tên trường với + - * / và dấu ngoặc đơn; đặt \\ trước dấu cách trong tên. + + Field value is in range: Giá trị trường nằm trong phạm vi: + Field value is not validated Giá trị trường không được kiểm tra hợp lệ + Field: {field} on page {p} Trường: {field} trên trang {p} + Fields to reset (comma-separated; empty: all) Các trường cần đặt lại (phân tách bằng dấu phẩy; để trống: tất cả) + Figure {i} of {n}{page} Hình {i} trên {n}{page} + File (.p12, .pfx) Tệp (.p12, .pfx) + File Name Tên tệp + File size Kích thước tệp + Files are combined from top to bottom. Leave Pages empty to take every page. Các tệp được kết hợp từ trên xuống dưới. Để trống mục Trang để lấy mọi trang. + Files are combined in the order shown. Drag them to change it. Các tệp được kết hợp theo thứ tự hiển thị. Kéo chúng để thay đổi. + Files for {name} Tệp cho {name} + Files you open in PdfCraft appear here. Drop a PDF anywhere to open it. Các tệp bạn mở trong PdfCraft sẽ xuất hiện ở đây. Thả một PDF vào bất kỳ đâu để mở. + Fill & Sign dates Ngày của Điền & Ký + Fill & Sign signature Chữ ký của Điền & Ký + Fill Color: Màu tô: + Fill colour Màu tô + Fill colour: none Màu tô: không có + Filling in form fields and signing existing signature fields Điền các trường biểu mẫu và ký vào các trường chữ ký có sẵn + Filter comments Lọc bình luận + Find a tag Tìm một thẻ + Find options Tùy chọn tìm + Find text Tìm văn bản + Find tools and commands Tìm công cụ và lệnh + Finding document fonts… Đang tìm phông chữ của tài liệu… + Finish or discard the text being edited before selecting several objects. Hãy hoàn tất hoặc loại bỏ văn bản đang chỉnh sửa trước khi chọn nhiều đối tượng. + First / last page Trang đầu / cuối + Fit Vừa khớp + Fit Height Vừa chiều cao + Fit Page Vừa trang + Fit Visible Vừa vùng hiển thị + Fit Width Vừa chiều rộng + Fit to height Vừa chiều cao + Fit to page Vừa trang + Fix Sửa lỗi + Fixed what could be fixed; 1 problem remains Đã sửa những gì có thể sửa; còn lại 1 vấn đề + Fixed what could be fixed; {n} problems remain Đã sửa những gì có thể sửa; còn lại {n} vấn đề + Flatten Fill & Sign when saving Làm phẳng Điền & Ký khi lưu + Flip Horizontal Lật ngang + Flip Vertical Lật dọc + Flip horizontal Lật ngang + Flip on long edge Lật theo cạnh dài + Flip on short edge Lật theo cạnh ngắn + Flip vertical Lật dọc + Folders Thư mục + Font Size: Cỡ chữ: + Font colour: Màu chữ: + Font size 0 uses automatic sizing. Cỡ chữ 0 sẽ dùng kích thước tự động. + Font size: Cỡ chữ: + Font: Phông chữ: + Font: Helvetica Phông chữ: Helvetica + Fonts Phông chữ + For page sizes and margins. Dành cho kích thước trang và lề. + Form data and PDF forms Dữ liệu biểu mẫu và biểu mẫu PDF + Form fields are flattened: their values stay visible. Saving rewrites the whole file. Các trường biểu mẫu được làm phẳng: giá trị của chúng vẫn hiển thị. Việc lưu sẽ ghi lại toàn bộ tệp. + Form fields only Chỉ các trường biểu mẫu + Form fill-in and digital signatures Điền biểu mẫu và chữ ký số + Format Định dạng + Format text Định dạng văn bản + Format: Định dạng: + From Từ + From a PDF page or an image Từ một trang PDF hoặc một hình ảnh + From colour Từ màu + From {file} Từ {file} + From: Từ: + Front side only Chỉ mặt trước + Get help, share feedback and follow development on Discord. Nhận trợ giúp, chia sẻ phản hồi và theo dõi quá trình phát triển trên Discord. + Go to a page view Đi tới một chế độ xem trang + Go to page {p} Đi tới trang {p} + Go to the page Đi tới trang + Go to this result Đi tới kết quả này + Graphic Đồ họa + Greyscale Thang xám + Grid view Dạng lưới + Hand (H) Bàn tay (H) + Has JavaScript actions (run in M6) Có các hành động JavaScript (chạy ở M6) + Height: Chiều cao: + Hide field highlights Ẩn tô sáng trường + Hide layer Ẩn lớp + Hide menu bar Ẩn thanh trình đơn + Hide password Ẩn mật khẩu + Hide toolbars Ẩn thanh công cụ + Hide window controls Ẩn các nút điều khiển cửa sổ + High Resolution Độ phân giải cao + High resolution Độ phân giải cao + Highlight Style: Kiểu tô sáng: + Highlight fields Tô sáng các trường + Home Trang chủ + Horizontal Ngang + Horizontal reversed Ngang đảo ngược + Horizontal scale Tỷ lệ ngang + Icon Biểu tượng + Images and text Hình ảnh và văn bản + Images and text (converted to PDF) Hình ảnh và văn bản (đã chuyển thành PDF) + Import list… Nhập danh sách… + Includes unsaved changes Bao gồm các thay đổi chưa lưu + Indent Thụt lề + Initial View Chế độ xem ban đầu + Ink sensitivity Độ nhạy nét mực + Insert Date Chèn ngày + Insert Page Number Chèn số trang + Insert a blank page after the selection Chèn một trang trống sau vùng chọn + Insert a file at the end Chèn một tệp vào cuối + Insert a file before page {label} Chèn một tệp trước trang {label} + Insert pages from a file… Chèn trang từ một tệp… + Inserting, deleting, and rotating pages Chèn, xóa và xoay trang + Installed fonts… Phông chữ đã cài đặt… + Intersections Giao điểm + Invisible Rectangle Hình chữ nhật ẩn + Issued by: Cấp bởi: + Italic Nghiêng + Item List Danh sách mục + Item: Mục: + Items marked Ready work today. Các mục được đánh dấu Sẵn sàng hoạt động ngay hôm nay. + Its security settings don't allow copying pages Cài đặt bảo mật của nó không cho phép sao chép trang + JavaScript Console Bảng điều khiển JavaScript + JavaScript is turned off (Preferences ▸ JavaScript). JavaScript đã bị tắt (Tùy chọn > JavaScript). + JavaScript, e.g. getField("total").value JavaScript, ví dụ getField("total").value + Join our Discord Tham gia Discord của chúng tôi + Join the ArtCraft community Tham gia cộng đồng ArtCraft + Justify Căn đều + Keep source fonts Giữ phông chữ nguồn + Keep tool selected Giữ công cụ được chọn + Keep tool selected: on Giữ công cụ được chọn: bật + Key Algorithm Thuật toán khóa + Keychain · Keychain · + Label Nhãn + Labels Nhãn + Labels: {preview}. Later pages keep their labels. Nhãn: {preview}. Các trang sau giữ nhãn của chúng. + Landscape Ngang + Landscape Pages Trang ngang + Landscape and Portrait Pages Trang ngang và dọc + Larger pages Trang lớn hơn + Later Để sau + Later in tab order Muộn hơn theo thứ tự tab + Layers Các lớp + Layers Panel and Page Bảng Các lớp và trang + Layout and Magnification Bố cục và độ phóng đại + Leave out files that can't be read? Bỏ qua các tệp không đọc được? + Left Trái + Left Edge Cạnh trái + Left out: {names} Đã bỏ qua: {names} + Left: Trái: + Light theme Chủ đề sáng + Limit of Giới hạn + Line Style: Kiểu đường: + Line Thickness: Độ dày đường: + Line ending Kiểu đầu đường + Line spacing Giãn dòng + Line thickness Độ dày đường + Link Action Hành động liên kết + Link Appearance Diện mạo liên kết + Link Properties Thuộc tính liên kết + Link Type: Loại liên kết: + List view Dạng danh sách + Load font… Tải phông chữ… + Locked Đã khóa + Looking for PDFs… Đang tìm PDF… + Looking for printers… Đang tìm máy in… + Low Resolution (150 dpi) Độ phân giải thấp (150 dpi) + Low resolution Độ phân giải thấp + Magnification Độ phóng đại + Make Current Properties Default Đặt thuộc tính hiện tại làm mặc định + Margins Lề + Mark Page Range Đánh dấu phạm vi trang + Mark as comments Đánh dấu là bình luận + Mark with checkmark Đánh dấu bằng dấu kiểm + Marked Đã đánh dấu + Mask: Mặt nạ: + Match page at 100% Khớp trang ở mức 100% + Medium Vừa + Midpoints Điểm giữa + Mixed Hỗn hợp + Modified Đã sửa đổi + More options Thêm tùy chọn + More options: Thêm tùy chọn: + More ways to add files Thêm cách để thêm tệp + Mouse wheel scroll speed Tốc độ cuộn bánh xe chuột + Move down Chuyển xuống + Move earlier Chuyển lên trước + Move later Chuyển ra sau + Move up Chuyển lên + Multi-line Nhiều dòng + Multiple Nhiều + Multiple selection Chọn nhiều + Multiple words or phrases Nhiều từ hoặc cụm từ + Name: Tên: + Navigation tab Thẻ điều hướng + Needs manual check Cần kiểm tra thủ công + Negative number style: Kiểu số âm: + New Action Hành động mới + New Action… Hành động mới… + New bookmark ({key}) Dấu trang mới ({key}) + New file: Tệp mới: + Next ({key}) Tiếp theo ({key}) + Next / previous match Kết quả khớp tiếp theo / trước đó + Next figure Hình tiếp theo + Next month Tháng sau + Next page Trang tiếp theo + Next sheet Tờ tiếp theo + Next view Chế độ xem tiếp theo + No PDFs in this folder yet Chưa có PDF nào trong thư mục này + No actions Không có hành động + No changes allowed Không cho phép thay đổi + No changes to save Không có thay đổi để lưu + No check has run yet. Chưa chạy lần kiểm tra nào. + No color Không màu + No colour Không màu + No comments match. Không có bình luận nào khớp. + No comments yet. Chưa có bình luận. + No differences in the text. Không có khác biệt trong văn bản. + No digital IDs yet. Chưa có Digital ID nào. + No documents are open Không có tài liệu nào đang mở + No file chosen Chưa chọn tệp + No fill Không tô + No fonts are referenced by the pages. Không có phông chữ nào được các trang tham chiếu. + No issues found Không tìm thấy vấn đề + No limit Không giới hạn + No matches Không có kết quả khớp + No matches. Không có kết quả khớp. + No matching tools Không có công cụ phù hợp + No openly licensed document fonts found. Load a font file. Không tìm thấy phông chữ tài liệu có giấy phép mở. Hãy tải một tệp phông chữ. + No pages selected Chưa chọn trang + No photo chosen Chưa chọn ảnh + No preview Không có bản xem trước + No problems found: the document conforms to {level}. Không tìm thấy vấn đề: tài liệu tuân thủ {level}. + No security Không có bảo mật + No sheets Không có tờ + No signature was found in the frame. Move the frame over the signature or raise the ink sensitivity. Không tìm thấy chữ ký trong khung. Hãy di chuyển khung lên chữ ký hoặc tăng độ nhạy nét mực. + No status has been set. Chưa đặt trạng thái. + None (prefix only) Không có (chỉ tiền tố) + None found Không tìm thấy + None — everything is allowed Không có — mọi thứ đều được phép + Not allowed Không được phép + Not present Không có mặt + Nothing to redo Không có gì để làm lại + Nothing to undo Không có gì để hoàn tác + Number Số + Number of pages Số trang + Number pages Đánh số trang + Odd Pages Only Chỉ các trang lẻ + Odd pages only Chỉ các trang lẻ + Offset from centre Độ lệch so với tâm + Old file: Tệp cũ: + One word or phrase per line Mỗi dòng một từ hoặc cụm từ + One {f} file per page, named after the document. Mỗi trang một tệp {f}, đặt tên theo tài liệu. + Only change the colour of black text or line art Chỉ đổi màu văn bản hoặc nét vẽ đường màu đen + Only checked properties will change. Mixed means the selected fields have different values. Chỉ các thuộc tính được đánh dấu mới thay đổi. Hỗn hợp nghĩa là các trường đã chọn có giá trị khác nhau. + Only the page content changes: links, comments, form fields and bookmarks on the original pages stay. Chỉ nội dung trang thay đổi: liên kết, bình luận, trường biểu mẫu và dấu trang trên các trang gốc được giữ nguyên. + Open Mở + Open a PDF ({key}) Mở một PDF ({key}) + Open a PDF to measure it. Mở một PDF để đo. + Open a document first Hãy mở một tài liệu trước + Open a web page Mở một trang web + Open arrow Mũi tên mở + Open email app Mở ứng dụng email + Open in Full Screen mode Mở ở chế độ toàn màn hình + Open in a new tab Mở trong thẻ mới + Open link Mở liên kết + Open the file as it was saved then Mở tệp như khi nó được lưu lúc đó + Open the older version first Hãy mở phiên bản cũ hơn trước + Open this web page? Mở trang web này? + Open to page Mở tại trang + Opened, but its security settings don't allow combining. Enter the permissions password. Đã mở, nhưng cài đặt bảo mật của nó không cho phép kết hợp. Hãy nhập mật khẩu quyền hạn. + Opens the printer driver's preferences. They are saved for every print from this computer; the copies, two-sided, grayscale and paper chosen here still apply. Mở tùy chọn của trình điều khiển máy in. Các tùy chọn này được lưu cho mọi lần in từ máy tính này; số bản sao, in hai mặt, thang xám và giấy được chọn ở đây vẫn được áp dụng. + Optimizing… cleaning up Đang tối ưu hóa… dọn dẹp + Optimizing… image {d} of {t} Đang tối ưu hóa… hình ảnh {d} trên {t} + Optimizing… merging identical objects Đang tối ưu hóa… gộp các đối tượng giống nhau + Optimizing… removing user data Đang tối ưu hóa… xóa dữ liệu người dùng + Optimizing… writing the copy Đang tối ưu hóa… ghi bản sao + Optional: needs an AI provider you configure Không bắt buộc: cần nhà cung cấp AI mà bạn cấu hình + Options… Tùy chọn… + Organization Name Tên tổ chức + Organizational Unit Đơn vị tổ chức + Orientation: Hướng: + Original Bản gốc + Original: replace pages Bản gốc: thay thế trang + Other colour… Màu khác… + Outdent Giảm thụt lề + Output Đầu ra + Output appears here. Đầu ra xuất hiện ở đây. + Output intent: {list} Mục đích đầu ra: {list} + Overlap: Chồng lấp: + Owner password (no restrictions apply) Mật khẩu chủ sở hữu (không áp dụng hạn chế) + PDF Optimizer Trình tối ưu hóa PDF + PDF or image PDF hoặc hình ảnh + PDF page: {size} Trang PDF: {size} + PDF scale: {scale}% Tỷ lệ PDF: {scale}% + PDF, images and text PDF, hình ảnh và văn bản + Page Only Chỉ trang + Page Range Options Tùy chọn phạm vi trang + Page Sizing & Handling Định cỡ & xử lý trang + Page background Nền trang + Page display: {layout} Hiển thị trang: {layout} + Page layout Bố cục trang + Page navigation Điều hướng trang + Page number Số trang + Page order: Thứ tự trang: + Page size Khổ trang + Page {label} Trang {label} + Page {p} of {n} Trang {p} trên {n} + Pages Panel and Page Bảng Trang và trang + Pages from Các trang từ + Pages of {name} to combine, e.g. 1-3, 6 Các trang của {name} cần kết hợp, ví dụ 1-3, 6 + Pages per file Số trang mỗi tệp + Pages per sheet: Số trang mỗi tờ: + Pages to Print Các trang cần in + Pages: Trang: + Pages: {k} of {n} Trang: {k} trên {n} + Paper: Giấy: + Part of Một phần của + Password Mật khẩu + Password required Yêu cầu mật khẩu + Password security Bảo mật bằng mật khẩu + Password-protected Được bảo vệ bằng mật khẩu + Paste after Dán sau + Paths Đường dẫn + Pattern Họa tiết + Patterns Họa tiết + Patterns (graphics objects) Họa tiết (đối tượng đồ họa) + PdfCraft didn't shut down normally. These documents had changes that were autosaved: PdfCraft không đóng bình thường. Các tài liệu này có thay đổi đã được tự động lưu: + PdfCraft works offline. No telemetry, no account, and no cloud processing unless you add a provider. PdfCraft hoạt động ngoại tuyến. Không thu thập dữ liệu sử dụng, không cần tài khoản, và không xử lý đám mây trừ khi bạn thêm nhà cung cấp. + PdfCraft {c} is up to date. PdfCraft {c} đã là bản mới nhất. + PdfCraft {v} is available. PdfCraft {v} đã có sẵn. + Percentage Phần trăm + Permissions password Mật khẩu quyền hạn + Permitted actions after certifying Các hành động được phép sau khi chứng nhận + Photo Ảnh + Pick a tool in the quick bar, or type above. Chọn một công cụ trên thanh nhanh, hoặc nhập ở phía trên. + Pictures on those pages are recognized too; words already in the page's text are not added again Hình ảnh trên các trang đó cũng được nhận dạng; các từ đã có trong văn bản của trang sẽ không được thêm lại + Pin a folder to Home Ghim một thư mục vào Trang chủ + Pin a folder to list its newest PDFs here, such as where your scanner or a synced cloud drive saves them. Ghim một thư mục để liệt kê các PDF mới nhất của nó tại đây, chẳng hạn nơi máy quét hoặc ổ đám mây đồng bộ lưu chúng. + Pin a folder… Ghim một thư mục… + Plain text in reading order; pages are separated by form feeds. Văn bản thuần theo thứ tự đọc; các trang được phân tách bằng ký tự sang trang. + Planned Đã lên kế hoạch + Planned for milestone Dự kiến ở cột mốc + Points from the page's bottom-left corner. Điểm tính từ góc dưới bên trái của trang. + Portrait Dọc + Portrait Pages Trang dọc + Post Đăng + Poster Áp phích + Prefix Tiền tố + Preview Xem trước + Preview unavailable: {e} Không có bản xem trước: {e} + Preview: page {p} of {n} Xem trước: trang {p} trên {n} + Previous ({key}) Trước ({key}) + Previous / next page Trang trước / tiếp theo + Previous figure Hình trước + Previous month Tháng trước + Previous page Trang trước + Previous sheet Tờ trước + Previous view Chế độ xem trước + Print ({key}) In ({key}) + Print in grayscale In thang xám + Print page border In viền trang + Print, NextPage, PrevPage, FirstPage or LastPage Print, NextPage, PrevPage, FirstPage hoặc LastPage + Printer paper and scaling may differ. Check driver settings. Giấy in và tỷ lệ của máy in có thể khác. Hãy kiểm tra cài đặt trình điều khiển. + Printer properties Thuộc tính máy in + Printer: Máy in: + Printing allowed Cho phép in + Privacy Quyền riêng tư + Properties… Thuộc tính… + Protect Using Password Bảo vệ bằng mật khẩu + Protected: the combined file won't keep its security settings Đã bảo vệ: tệp kết hợp sẽ không giữ cài đặt bảo mật của chúng + Quality Chất lượng + Read Only Chỉ đọc + Reading colours Màu khi đọc + Ready Sẵn sàng + Reason Lý do + Recent Gần đây + Recent colours Màu gần đây + Recognize Text Nhận dạng văn bản + Recognized 1 word Đã nhận dạng 1 từ + Recognized {n} words Đã nhận dạng {n} từ + Recognized {w} words in 1 file Đã nhận dạng {w} từ trong 1 tệp + Recognized {w} words in {n} files Đã nhận dạng {w} từ trong {n} tệp + Recognizing text… file {d} of {t} Đang nhận dạng văn bản… tệp {d} trên {t} + Recognizing text… page {d} of {t} Đang nhận dạng văn bản… trang {d} trên {t} + Recommended tools Công cụ được đề xuất + Recover Khôi phục + Recover unsaved documents? Khôi phục các tài liệu chưa lưu? + Redact all Xóa tất cả nội dung đã đánh dấu + Redacted area fill colour: Màu tô vùng đã xóa: + Redaction Tool Properties Thuộc tính công cụ xóa nội dung nhạy cảm + Redaction code: Mã xóa nội dung nhạy cảm: + Reload Tải lại + Reload documents when their files change on disk Tải lại tài liệu khi tệp của chúng thay đổi trên đĩa + Remove checkmark Bỏ dấu kiểm + Remove invalid links and bookmarks Gỡ các liên kết và dấu trang không hợp lệ + Remove page Gỡ trang + Remove unreferenced named destinations Gỡ các đích đến có tên không được tham chiếu + Remove unused objects and merge identical ones Gỡ các đối tượng không dùng và gộp các đối tượng giống nhau + Remove {name} Gỡ {name} + Remove {name} from Recent Xóa {name} khỏi Gần đây + Remove {n} files Gỡ {n} tệp + Remove {n} pages Gỡ {n} trang + Reopen Closed Tab Mở lại thẻ đã đóng + Reopen the files that were open when PdfCraft last closed Mở lại các tệp đã mở khi PdfCraft đóng lần trước + Repair log Nhật ký sửa chữa + Repeat overlay text Lặp lại văn bản phủ + Replace Image… Thay thế hình ảnh… + Replace Pages Thay thế trang + Replace document colours Thay thế màu của tài liệu + Replace image Thay thế hình ảnh + Replacement text Văn bản được thay vào + Replacement: pages of {name} Thay thế: các trang của {name} + Replaces the existing one on those pages. Thay thế cái hiện có trên các trang đó. + Report Báo cáo + Report… Báo cáo… + Requires user to enter a password for: Yêu cầu người dùng nhập mật khẩu cho: + Reset columns Đặt lại các cột + Reset page size Đặt lại khổ trang + Reset to printer defaults Đặt lại về mặc định của máy in + Resize window to initial page Đổi kích thước cửa sổ theo trang ban đầu + Resolution Độ phân giải + Retain existing Giữ nguyên hiện có + Reveal in File Explorer Hiện trong File Explorer + Reveal in Finder Hiện trong Finder + Reverse closed arrow Mũi tên đóng đảo ngược + Reverse open arrow Mũi tên mở đảo ngược + Reverse pages Đảo ngược các trang + Revert changes Hoàn nguyên các thay đổi + Revert to the previously saved version of “{name}”? Changes since then can't be undone afterwards. Hoàn nguyên về phiên bản đã lưu trước đó của “{name}”? Sau đó sẽ không thể hoàn tác các thay đổi kể từ lúc ấy. + Review History Lịch sử duyệt + Revisions Các bản sửa đổi + Right Phải + Right Edge Cạnh phải + Rotate Clockwise Xoay theo chiều kim đồng hồ + Rotate Counterclockwise Xoay ngược chiều kim đồng hồ + Rotate Pages Xoay trang + Rotate clockwise Xoay theo chiều kim đồng hồ + Rotate counterclockwise Xoay ngược chiều kim đồng hồ + Rotate view Xoay chế độ xem + Rotate view clockwise Xoay chế độ xem theo chiều kim đồng hồ + Rotate view clockwise ({key}) Xoay chế độ xem theo chiều kim đồng hồ ({key}) + Rotate view counterclockwise Xoay chế độ xem ngược chiều kim đồng hồ + Rotate: Xoay: + Rotation: Xoay: + Running action… file {d} of {t} Đang chạy hành động… tệp {d} trên {t} + Same as interface ({language}) Giống giao diện ({language}) + Sanitizing removes hidden information from the document: metadata, file attachments, comments, form fields (flattened), hidden text and layers, bookmarks, links, actions and scripts, and private application data. Làm sạch sẽ loại bỏ thông tin ẩn khỏi tài liệu: siêu dữ liệu, tệp đính kèm, bình luận, trường biểu mẫu (được làm phẳng), văn bản và lớp ẩn, dấu trang, liên kết, hành động và script, cùng dữ liệu riêng của ứng dụng. + Save & Close Lưu & Đóng + Save ({key}) Lưu ({key}) + Save Image As… Lưu hình ảnh thành… + Copy Image Sao chép hình ảnh + The image has been copied ({w} × {h} pixels) Đã sao chép hình ảnh ({w} × {h} điểm ảnh) + Couldn't copy the image: {e} Không thể sao chép hình ảnh: {e} + Copy Image in Original Format Sao chép hình ảnh ở định dạng gốc + The image has been copied as a {ext} file Đã sao chép hình ảnh dưới dạng tệp {ext} + The page has changed; select the image again Trang đã thay đổi; hãy chọn lại hình ảnh + Save as PDF Lưu dưới dạng PDF + Save attachment… Lưu tệp đính kèm… + Save changes to “{name}” before closing? Lưu các thay đổi của “{name}” trước khi đóng? + Save pages Lưu trang + Save tag properties Lưu thuộc tính thẻ + Save the accessibility report Lưu báo cáo trợ năng + Save the document afterwards: saving rewrites the whole file so no trace of the removed content stays in it. Hãy lưu tài liệu sau đó: việc lưu sẽ ghi lại toàn bộ tệp để không còn dấu vết nội dung đã gỡ. + Save the document afterwards; saving rewrites the whole file so nothing removed stays in it. Hãy lưu tài liệu sau đó; việc lưu sẽ ghi lại toàn bộ tệp để không còn nội dung đã gỡ nào sót lại. + Save the spreadsheet Lưu bảng tính + Save these pages as one PDF Lưu các trang này thành một PDF + Saved measurements Đã lưu các phép đo + Saved measurements. Đã lưu các phép đo. + Scale relative to target page Tỷ lệ so với trang đích + Scan Quét + Script Name: Tên script: + Script: Nội dung script: + Scripts run in a sandbox without file or network access. A script that asks to open a web page needs your permission first. With JavaScript off, Acrobat's standard format, validate and calculate functions still work. Script chạy trong hộp cát không có quyền truy cập tệp hoặc mạng. Script yêu cầu mở một trang web cần có sự cho phép của bạn trước. Khi tắt JavaScript, các hàm định dạng, xác thực và tính toán chuẩn của Acrobat vẫn hoạt động. + Scroll long text Cuộn văn bản dài + Scroll tabs left Cuộn các thẻ sang trái + Scroll tabs right Cuộn các thẻ sang phải + Search comments Tìm bình luận + Search tools and commands… Tìm công cụ và lệnh… + Searchable Image (Exact) Ảnh có thể tìm kiếm (Chính xác) + Searching… {s} of {p} pages Đang tìm… {s} trên {p} trang + Searching… {s}/{p} Đang tìm… {s}/{p} + Security Bảo mật + Security settings Cài đặt bảo mật + Select (V) Chọn (V) + Select Action: Chọn hành động: + Select All Chọn tất cả + Select Icon Chọn biểu tượng + Select Trigger: Chọn trình kích hoạt: + Select a file first Hãy chọn một tệp trước + Select a file for the stamp Chọn một tệp cho con dấu + Select a password-protected file first Hãy chọn một tệp được bảo vệ bằng mật khẩu trước + Select a word Chọn một từ + Select all pages (Organize) Chọn tất cả trang (Sắp xếp) + Select at most 1000 objects at a time. Chọn tối đa 1000 đối tượng mỗi lần. + Select data files to merge Chọn các tệp dữ liệu cần gộp + Select format category: Chọn danh mục định dạng: + Select page {label} Chọn trang {label} + Select pages Chọn trang + Select the items to remove from this document. Chọn các mục cần gỡ khỏi tài liệu này. + Selected image files: {count} Tệp hình ảnh đã chọn: {count} + Selected pages Các trang đã chọn + Selection Vùng chọn + Sending to {printer}… Đang gửi đến {printer}… + Sensitivity Độ nhạy + Sent to {printer} Đã gửi đến {printer} + Sent to {printer}: {msg} Đã gửi đến {printer}: {msg} + Separator style: Kiểu dấu phân cách: + Set Alternate Text Đặt văn bản thay thế + Set Fields to Same Size Đặt các trường về cùng kích thước + Set Page Boxes Đặt các hộp trang + Set layer visibility Đặt chế độ hiển thị lớp + Set status Đặt trạng thái + Set to current page ({n}) Đặt thành trang hiện tại ({n}) + Set to zero Đặt về 0 + Shared Field Properties Thuộc tính trường dùng chung + Sheet {s} of {n} Tờ {s} trên {n} + Shift constrains to 45 degrees. Backspace removes a vertex. Escape cancels. Shift giới hạn ở góc 45 độ. Backspace xóa một đỉnh. Escape để hủy. + Shift- or Ctrl/Command-click to select several fields. Nhấn Shift hoặc Ctrl/Command khi bấm để chọn nhiều trường. + Shift-click to select several objects. Drag empty space to select an area. Nhấn Shift khi bấm để chọn nhiều đối tượng. Kéo vùng trống để chọn một khu vực. + Show Report Hiện báo cáo + Show all Hiện tất cả + Show all comments Hiện tất cả bình luận + Show certificate… Hiện chứng chỉ… + Show layer Hiện lớp + Show less Hiện ít hơn + Show password Hiện mật khẩu + Show the accessibility report Hiện báo cáo trợ năng + Show this dialog when the Checker starts Hiện hộp thoại này khi Trình kiểm tra khởi động + Show {n} more Hiện thêm {n} + Show: Hiện: + Shrink oversized pages Thu nhỏ các trang quá khổ + Sign Here Ký tại đây + Sign this field… Ký vào trường này… + Sign yourself Tự ký + Signature Details Chi tiết chữ ký + Signature is INVALID: Chữ ký KHÔNG HỢP LỆ: + Signature is valid: Chữ ký hợp lệ: + Signature panel Bảng chữ ký + Signature validity is UNKNOWN: Tính hợp lệ của chữ ký KHÔNG RÕ: + Signer's name Tên người ký + Simplified field notation: Ký hiệu trường rút gọn: + Single Page Một trang + Single Page Continuous Một trang liên tục + Single word or phrase Một từ hoặc cụm từ + Skip Rule Bỏ qua quy tắc + Skipped Đã bỏ qua + Slash Dấu gạch chéo + Smaller pages Trang nhỏ hơn + Snap to drawing Bắt dính vào bản vẽ + Some bookmarks are not shown here: the panel lists a limited number, nested a limited depth. Một số dấu trang không được hiển thị ở đây: bảng chỉ liệt kê một số lượng giới hạn, lồng ở độ sâu giới hạn. + Some page content couldn't be read; snapping uses the rest. Một số nội dung trang không đọc được; việc bắt dính dùng phần còn lại. + Sort by Sắp xếp theo + Sort comments by: Sắp xếp bình luận theo: + Sort items Sắp xếp các mục + Source Nguồn + Space Audit Kiểm tra dung lượng + Special Đặc biệt + Split document Tách tài liệu + Split into files… Tách thành các tệp… + Square Hình vuông + Standard Business Standard Business + Start Bắt đầu + Start Checking Bắt đầu kiểm tra + Start page number Số trang bắt đầu + Status Trạng thái + Steps Các bước + Strength: {s} Độ mạnh: {s} + Style Kiểu + Subject Chủ đề + Subset Tập con + Summarize Options Tùy chọn tóm tắt + Summary Tóm tắt + Switch to List view to change the pages it takes. Chuyển sang dạng danh sách để thay đổi các trang mà nó lấy. + Switch to two-page view first to show the cover page Hãy chuyển sang chế độ hai trang trước để hiển thị trang bìa + Tab order: move a field with its arrows. Thứ tự tab: di chuyển một trường bằng các mũi tên của nó. + Tag type Loại thẻ + Tags Thẻ + Text Color: Màu văn bản: + Text alignment: Căn chỉnh văn bản: + Text in images isn't found; recognise text (OCR) first. Văn bản trong hình ảnh không được tìm thấy; hãy nhận dạng văn bản (OCR) trước. + Text is compared word by word; the differences are shown on the new file. Văn bản được so sánh từng từ; các khác biệt được hiển thị trên tệp mới. + Text recognition isn't installed: its model files are missing. Reinstall PdfCraft, or set PDFCRAFT_MODELS to the folder that holds them. Tính năng nhận dạng văn bản chưa được cài đặt: thiếu các tệp mô hình. Hãy cài đặt lại PdfCraft, hoặc đặt PDFCRAFT_MODELS thành thư mục chứa chúng. + Text to find Văn bản cần tìm + Text to insert Văn bản cần chèn + Text used as a clipping path cannot be moved with this selection. Văn bản dùng làm đường cắt xén không thể di chuyển cùng vùng chọn này. + Text, marks and signatures become part of the page. Other comments stay editable. Văn bản, dấu và chữ ký trở thành một phần của trang. Các bình luận khác vẫn có thể chỉnh sửa. + Thai and Arabic use regular fallback fonts when available. Tiếng Thái và tiếng Ả Rập dùng phông chữ dự phòng thông thường khi có. + The PDF text fonts can't draw “{c}” ({code}). Choose supported text. Phông chữ văn bản PDF không thể vẽ “{c}” ({code}). Hãy chọn văn bản được hỗ trợ. + The checker found 1 problem which may prevent the document from being fully accessible. Trình kiểm tra tìm thấy 1 vấn đề có thể khiến tài liệu không thể tiếp cận đầy đủ. + The checker found no problems in this document. Trình kiểm tra không tìm thấy vấn đề nào trong tài liệu này. + The checker found {n} problems which may prevent the document from being fully accessible. Trình kiểm tra tìm thấy {n} vấn đề có thể khiến tài liệu không thể tiếp cận đầy đủ. + The document now conforms to {level}; save it to keep the changes Tài liệu hiện tuân thủ {level}; hãy lưu để giữ các thay đổi + The document opens without a password; this password is needed to change the restrictions. It's applied when you save. Tài liệu mở không cần mật khẩu; mật khẩu này cần để thay đổi các hạn chế. Mật khẩu được áp dụng khi bạn lưu. + The document's security settings don't allow copying text and images Cài đặt bảo mật của tài liệu không cho phép sao chép văn bản và hình ảnh + The document's security settings don't allow this change Cài đặt bảo mật của tài liệu không cho phép thay đổi này + The existing action will be preserved. Hành động hiện có sẽ được giữ nguyên. + The fonts PdfCraft writes with can't draw “{c}” ({code}), so it shows as ? in every PDF viewer. The text is saved. Phông chữ mà PdfCraft dùng để ghi không thể vẽ “{c}” ({code}), nên nó hiển thị là ? trong mọi trình xem PDF. Văn bản vẫn được lưu. + The key is in the Windows certificate store, which may ask to allow PdfCraft to use it. Khóa nằm trong kho chứng chỉ Windows, nơi có thể yêu cầu cho phép PdfCraft sử dụng nó. + The key is in the macOS Keychain, which may ask to allow PdfCraft to use it. Khóa nằm trong macOS Keychain, nơi có thể yêu cầu cho phép PdfCraft sử dụng nó. + The newest {n} of {total} PDFs {n} PDF mới nhất trong tổng số {total} + The password is only used to read the file; it isn't saved. Mật khẩu chỉ được dùng để đọc tệp; nó không được lưu. + The printer driver's own settings for this print: paper tray, paper type, finishing and more. Cài đặt riêng của trình điều khiển máy in cho lần in này: khay giấy, loại giấy, hoàn thiện và nhiều hơn nữa. + The replacement file doesn't have that many pages. Tệp thay thế không có nhiều trang như vậy. + The same password is tried on each file. Cùng một mật khẩu được thử trên từng tệp. + The signature will be invisible. Chữ ký sẽ không hiển thị. + The text is the same Văn bản giống nhau + The value is shown as typed. Giá trị được hiển thị như đã nhập. + There are no redaction marks (mark text, areas or pages first) Không có dấu đánh dấu xóa nào (hãy đánh dấu văn bản, vùng hoặc trang trước) + These files can't be read, so they won't be in the combined PDF: Không đọc được các tệp này, nên chúng sẽ không có trong PDF kết hợp: + These objects could not be moved. Select them again and try a smaller move. Không thể di chuyển các đối tượng này. Hãy chọn lại chúng và thử di chuyển ít hơn. + Thick Dày + Thickness Độ dày + Thin Mỏng + This area has too many overlapping paths; intersection snapping is limited. Vùng này có quá nhiều đường chồng lên nhau; việc bắt dính giao điểm bị giới hạn. + This certificate is in your list of trusted certificates. Chứng chỉ này nằm trong danh sách chứng chỉ tin cậy của bạn. + This certificate is not trusted. Signatures made with it show an unknown identity. Chứng chỉ này không được tin cậy. Các chữ ký tạo bằng nó hiển thị danh tính không rõ. + This certificate is trusted through a certificate above it in the chain. Chứng chỉ này được tin cậy thông qua một chứng chỉ ở cấp trên trong chuỗi. + This comment's appearance can't be changed yet. Chưa thể thay đổi diện mạo của bình luận này. + This dialog shows the details of a certificate and its chain. Hộp thoại này hiển thị chi tiết của một chứng chỉ và chuỗi chứng chỉ của nó. + This document contains {n} interactive form fields. Tài liệu này chứa {n} trường biểu mẫu tương tác. + This document has no comments to flatten Tài liệu này không có bình luận nào để làm phẳng + This document has no document-level scripts. Tài liệu này không có script cấp tài liệu. + This document has no editable structure tags. Tài liệu này không có thẻ cấu trúc có thể chỉnh sửa. + This document has no form fields to flatten Tài liệu này không có trường biểu mẫu nào để làm phẳng + This document has no form fields you can fill in Tài liệu này không có trường biểu mẫu nào bạn có thể điền + This document has no pages. Tài liệu này không có trang nào. + This document has no restrictions to lift Tài liệu này không có hạn chế nào để gỡ bỏ + This document has no signatures. Tài liệu này không có chữ ký. + This document has no tagged figures. Tài liệu này không có hình nào được gắn thẻ. + This document has no {kind} to change Tài liệu này không có {kind} để thay đổi + This document hasn't been checked yet. Tài liệu này chưa được kiểm tra. + This document is secured. Some changes are restricted by its security settings. Tài liệu này được bảo mật. Một số thay đổi bị hạn chế bởi cài đặt bảo mật của nó. + This document isn't password-protected Tài liệu này không được bảo vệ bằng mật khẩu + This drawing exceeds the snapping limit; only the first paths are used. Bản vẽ này vượt quá giới hạn bắt dính; chỉ các đường đầu tiên được sử dụng. + This field is locked. Unlock it to change its properties. Trường này đã bị khóa. Hãy mở khóa để thay đổi thuộc tính của nó. + This file changed on disk. Reload it to see the new version; your unsaved changes will be lost. Tệp này đã thay đổi trên đĩa. Hãy tải lại để xem phiên bản mới; các thay đổi chưa lưu của bạn sẽ bị mất. + This file was damaged and has been repaired. Saving keeps the repaired version. Tệp này bị hỏng và đã được sửa chữa. Việc lưu sẽ giữ phiên bản đã sửa. + This folder isn't available right now. It may have moved, or its drive or cloud sync is offline. Thư mục này hiện không khả dụng. Nó có thể đã bị di chuyển, hoặc ổ đĩa hay đồng bộ đám mây của nó đang ngoại tuyến. + This form's scripts are turned off because one ran too long. Reopen the document to run them again. Các script của biểu mẫu này đã bị tắt vì một script chạy quá lâu. Hãy mở lại tài liệu để chạy chúng lại. + This is a dynamic XFA form, which PdfCraft can't display yet. What you see is the file's placeholder page. Đây là biểu mẫu XFA động, mà PdfCraft chưa thể hiển thị. Những gì bạn thấy là trang giữ chỗ của tệp. + This measurement needs at least {n} points. Phép đo này cần ít nhất {n} điểm. + This page contains objects that cannot be selected together. Trang này chứa các đối tượng không thể chọn cùng nhau. + This page couldn't be displayed.\n{e} Không thể hiển thị trang này.\n{e} + This printer offers no settings of its own. Máy in này không có cài đặt riêng. + This printer's driver doesn't take two-sided settings from other programs, so its own setting applies. Change it in Properties… Trình điều khiển của máy in này không nhận cài đặt in hai mặt từ các chương trình khác, nên cài đặt riêng của nó được áp dụng. Hãy thay đổi trong Thuộc tính… + This web address mixes letters from different alphabets, a common way to imitate another site's name. Địa chỉ web này trộn lẫn các chữ cái từ nhiều bảng chữ cái khác nhau, một cách phổ biến để giả mạo tên của trang khác. + This web address uses letters from another alphabet, which can look like familiar ones. Địa chỉ web này dùng chữ cái từ một bảng chữ cái khác, có thể trông giống các chữ quen thuộc. + Tile scale: Tỷ lệ lát: + Time Thời gian + Title Tiêu đề + To change locked fields, also set Locked to No. Để thay đổi các trường đã khóa, hãy đặt thêm Đã khóa thành Không. + To: Đến: + Today: {date} Hôm nay: {date} + Toggle fit page / fit width Chuyển đổi vừa trang / vừa chiều rộng + Tool Công cụ + Tools panel side Phía của bảng công cụ + Tooltip: Chú giải công cụ: + Top Trên + Top-level bookmarks ({n}) Dấu trang cấp cao nhất ({n}) + Total Tổng + Trust Tin cậy + Try the form as people filling it in will see it Dùng thử biểu mẫu như người điền sẽ thấy + Two-Up (Cover Page) Hai trang (Có trang bìa) + Two-Up (Facing) Hai trang (Đối diện) + Two-Up Continuous (Cover Page) Hai trang liên tục (Có trang bìa) + Two-Up Continuous (Facing) Hai trang liên tục (Đối diện) + Two-sided: Hai mặt: + Type Loại + Type text Nhập văn bản + Type the web address. Nhập địa chỉ web. + Type your {what}. Nhập {what} của bạn. + URL to submit to URL để gửi đến + Unit Đơn vị + Units Đơn vị + Unknown author Tác giả không rõ + Unlock Mở khóa + Unlock {name} Mở khóa {name} + Unlock {n} files Mở khóa {n} tệp + Unlocked: the combined file won't be password-protected Đã mở khóa: tệp kết hợp sẽ không được bảo vệ bằng mật khẩu + Unlock… Mở khóa… + Unpin Bỏ ghim + Unpin {folder} Bỏ ghim {folder} + Unplaced Chưa đặt + Unsupported measurements Các phép đo không được hỗ trợ + Up Lên + Update Cập nhật + Use 72 DPI (one point per pixel) Dùng 72 DPI (một điểm cho mỗi điểm ảnh) + Use Flate to encode streams that are not encoded Dùng Flate để mã hóa các luồng chưa được mã hóa + Use a Digital ID from a file Dùng Digital ID từ một tệp + Use custom DPI Dùng DPI tùy chỉnh + Use each image's embedded DPI; use 72 DPI when it is absent. Dùng DPI nhúng của từng hình ảnh; dùng 72 DPI khi không có. + Use image resolution Dùng độ phân giải hình ảnh + Use now Dùng ngay + Use overlay text Dùng văn bản phủ + Used when a PDF doesn't ask for a layout or zoom. Continuous scrolling never snaps between pages. Được dùng khi PDF không yêu cầu bố cục hoặc mức thu phóng. Cuộn liên tục không bao giờ bắt dính giữa các trang. + Used when opening PDFs. An explicit launch or control mode takes precedence for the session. Được dùng khi mở PDF. Chế độ khởi chạy hoặc điều khiển chỉ định rõ sẽ được ưu tiên trong phiên làm việc. + User Interface Options Tùy chọn giao diện người dùng + User password Mật khẩu người dùng + Valid for 5 years, for digital signatures. Self-signed IDs are usually not trusted by others. Có hiệu lực trong 5 năm, dùng cho chữ ký số. Các ID tự ký thường không được người khác tin cậy. + Validate all Xác thực tất cả + Value is not calculated Giá trị không được tính toán + Value is the Giá trị là + Value: Giá trị: + Verify Xác minh + Verify to see what the document needs. Hãy xác minh để biết tài liệu cần gì. + Version {v} Phiên bản {v} + Vertical Dọc + Vertical reversed Dọc đảo ngược + Vertical text cannot be moved with this selection. Văn bản dọc không thể di chuyển cùng vùng chọn này. + View revision {n} Xem bản sửa đổi {n} + View signed version Xem phiên bản đã ký + Viewport Khung nhìn + Viewport rectangle in page points (x, y, width, height) Hình chữ nhật khung nhìn theo điểm trang (x, y, chiều rộng, chiều cao) + Visible Rectangle Hình chữ nhật hiển thị + Visual Trực quan + Warnings Cảnh báo + Welcome to PdfCraft Chào mừng đến với PdfCraft + What word or phrase would you like to search for? Bạn muốn tìm từ hoặc cụm từ nào? + Whole words only Chỉ khớp toàn bộ từ + Width: Chiều rộng: + Window Options Tùy chọn cửa sổ + Windows store · Kho Windows · + Write this email? Soạn email này? + Wrong password Sai mật khẩu + XFA form: its fields and its XFA data are kept in step, so other viewers show what you fill in. Biểu mẫu XFA: các trường và dữ liệu XFA của nó được giữ đồng bộ, nên các trình xem khác hiển thị những gì bạn điền. + You are about to apply 1 redaction mark. Text, images and drawings under the marks, and comments and form fields that overlap them, are removed permanently. Bạn sắp áp dụng 1 dấu xóa. Văn bản, hình ảnh và bản vẽ nằm dưới các dấu, cũng như bình luận và trường biểu mẫu chồng lên chúng, sẽ bị xóa vĩnh viễn. + You are about to apply {n} redaction marks. Text, images and drawings under the marks, and comments and form fields that overlap them, are removed permanently. Bạn sắp áp dụng {n} dấu xóa. Văn bản, hình ảnh và bản vẽ nằm dưới các dấu, cũng như bình luận và trường biểu mẫu chồng lên chúng, sẽ bị xóa vĩnh viễn. + You have version {c}. All releases are listed at {page}. Bạn đang dùng phiên bản {c}. Tất cả các bản phát hành được liệt kê tại {page}. + You have version {c}. Download the new version from its release page. Bạn đang dùng phiên bản {c}. Hãy tải phiên bản mới từ trang phát hành của nó. + Your changes will be lost if you don't save them. Các thay đổi của bạn sẽ bị mất nếu bạn không lưu. + ZIP ZIP + Zoom in Phóng to + Zoom in ({key}) Phóng to ({key}) + Zoom in / out (also pinch or {key}-scroll) Phóng to / thu nhỏ (cũng có thể chụm ngón tay hoặc {key}-cuộn) + Zoom out Thu nhỏ + Zoom out ({key}) Thu nhỏ ({key}) + already a PDF đã là PDF + and {n} more và {n} mục nữa + background nền + characters ký tự + e.g. My stamps ví dụ: Con dấu của tôi + e.g. en-US ví dụ: en-US + for images above cho hình ảnh lớn hơn + header or footer đầu trang hoặc chân trang + initials chữ viết tắt + is available có sẵn + is not available yet chưa có sẵn + just now vừa xong + yesterday hôm qua + needs an AI provider (off by default) cần nhà cung cấp AI (mặc định tắt) + no output folder was chosen chưa chọn thư mục đầu ra + no unused output name không có tên đầu ra chưa dùng + none không có + of the following fields: trong các trường sau: + AI assistant Trợ lý AI + Action Wizard Trình hướng dẫn hành động + Action Wizard… Trình hướng dẫn hành động… + Actions list Danh sách hành động + Add Bates numbering… Thêm đánh số Bates… + Add a button Thêm một nút + Add a callout Thêm một khung chú thích + Add a checkbox Thêm một hộp kiểm + Add a date field Thêm một trường ngày + Add a digital signature field Thêm một trường chữ ký số + Add a drop-down list Thêm một danh sách thả xuống + Add a list box Thêm một hộp danh sách + Add a radio button Thêm một nút radio + Add a stamp Thêm một con dấu + Add a sticky note Thêm một ghi chú dán + Add a text box Thêm một khung văn bản + Add a text field Thêm một trường văn bản + Add alternate text Thêm văn bản thay thế + Add alternate text… Thêm văn bản thay thế… + Add an image field Thêm một trường hình ảnh + Add background… Thêm nền… + Add comments Thêm bình luận + Add content Thêm nội dung + Add files to combine Thêm tệp để kết hợp + Add form components Thêm thành phần biểu mẫu + Add header & footer… Thêm đầu trang & chân trang… + Add image… Thêm hình ảnh… + Add or edit links Thêm hoặc chỉnh sửa liên kết + Add printer marks Thêm dấu máy in + Add search index Thêm chỉ mục tìm kiếm + Add text Thêm văn bản + Add watermark… Thêm hình mờ… + Advanced optimization Tối ưu hóa nâng cao + Advanced options Tùy chọn nâng cao + Apply PDF standards Áp dụng chuẩn PDF + Apply redactions… Xóa vĩnh viễn nội dung đã đánh dấu… + Archive documents Lưu trữ tài liệu + Area Diện tích + Arrow Mũi tên + ArtCraft website Trang web ArtCraft + Ask about this document Hỏi về tài liệu này + Attach a file Đính kèm một tệp + Attach file Đính kèm tệp + Audit space usage Kiểm tra dung lượng sử dụng + Automatically tag PDF Tự động gắn thẻ PDF + Background Nền + Bates numbering Đánh số Bates + Blank page Trang trống + Bring your own model (off by default) Dùng mô hình của riêng bạn (mặc định tắt) + Button Nút + Certificates Chứng chỉ + Certify (invisible signature) Chứng nhận (chữ ký ẩn) + Certify (visible signature) Chứng nhận (chữ ký hiển thị) + Change initials Đổi chữ viết tắt + Change reading options Thay đổi tùy chọn đọc + Change reading options… Thay đổi tùy chọn đọc… + Change signature Đổi chữ ký + Check for accessibility Kiểm tra trợ năng + Check for accessibility… Kiểm tra trợ năng… + Checkbox Hộp kiểm + Checkmark Dấu kiểm + Clear form Xóa dữ liệu biểu mẫu + Clear redaction marks Xóa các dấu đánh dấu + Clipboard Bảng tạm + Cloud Đám mây + Column select Chọn cột + Combine Kết hợp + Combine files Kết hợp tệp + Comment list Danh sách bình luận + Comments panel Bảng bình luận + Compare So sánh + Compare files So sánh tệp + Compare files… So sánh tệp… + Compress a PDF Nén một PDF + Console Bảng điều khiển + Convert colors Chuyển đổi màu + Copy pages Sao chép trang + Correct recognized text Sửa văn bản đã nhận dạng + Create a PDF Tạo một PDF + Create from Tạo từ + Create links from URLs Tạo liên kết từ URL + Crop pages Cắt xén trang + Cross Dấu chéo + Cut pages Cắt trang + Dark gray Xám đậm + Date Ngày + Date field Trường ngày + Detect form fields Phát hiện trường biểu mẫu + Digital signature Chữ ký số + Digitally sign Ký số + Distance Khoảng cách + Document JavaScripts JavaScript của tài liệu + Document JavaScripts… JavaScript của tài liệu… + Document actions Hành động của tài liệu + Dot Dấu chấm + Draw a cloud Vẽ một đám mây + Draw a line Vẽ một đường thẳng + Draw a polygon Vẽ một đa giác + Draw a rectangle Vẽ một hình chữ nhật + Draw an arrow Vẽ một mũi tên + Draw an oval Vẽ một hình bầu dục + Draw connected lines Vẽ các đường nối liền + Draw freehand Vẽ tự do + Drawing Bản vẽ + Drawing scale Tỷ lệ bản vẽ + Drop-down list Danh sách thả xuống + Duplicate pages Nhân bản trang + Edit a PDF Chỉnh sửa một PDF + Edit text & images Chỉnh sửa văn bản & hình ảnh + Encrypt with certificate Mã hóa bằng chứng chỉ + Enhance camera image Nâng cao chất lượng ảnh chụp từ máy ảnh + Enhance scanned file Nâng cao chất lượng tệp quét + Enter permissions password… Nhập mật khẩu quyền hạn… + Erase drawings Xóa bản vẽ + Export a PDF Xuất một PDF + Export all comments to data file… Xuất tất cả bình luận ra tệp dữ liệu… + Export all images Xuất tất cả hình ảnh + Export all images… Xuất tất cả hình ảnh… + Export data Xuất dữ liệu + Export form data… Xuất dữ liệu biểu mẫu… + Export measurements Xuất các phép đo + Export measurements as CSV Xuất các phép đo dưới dạng CSV + Export to Xuất ra + Export to PowerPoint… Xuất ra PowerPoint… + Extract Trích xuất + Extract pages Trích xuất trang + Field list Danh sách trường + Field properties Thuộc tính trường + Field properties… Thuộc tính trường… + Fields Các trường + Fill Điền + Fill & Sign: add text Điền & Ký: thêm văn bản + Fill & Sign: change initials Điền & Ký: đổi chữ viết tắt + Fill & Sign: change signature Điền & Ký: đổi chữ ký + Fill & Sign: checkmark Điền & Ký: dấu kiểm + Fill & Sign: cross Điền & Ký: dấu chéo + Fill & Sign: date Điền & Ký: ngày + Fill & Sign: dot Điền & Ký: dấu chấm + Fill & Sign: initials Điền & Ký: chữ viết tắt + Fill & Sign: line Điền & Ký: đường thẳng + Fill & Sign: remove saved initials Điền & Ký: xóa chữ viết tắt đã lưu + Fill & Sign: remove saved signature Điền & Ký: xóa chữ ký đã lưu + Fill & Sign: sign Điền & Ký: ký + Find text and redact Tìm văn bản và đánh dấu xóa + Find text and redact… Tìm văn bản và đánh dấu xóa… + Fit to width scrolling Cuộn vừa chiều rộng + Fit visible Vừa vùng hiển thị + Fix hairlines Sửa các đường siêu mảnh + Fix reading order Sửa thứ tự đọc + Flatten comments Làm phẳng bình luận + Flatten form fields Làm phẳng trường biểu mẫu + Form fields panel Bảng trường biểu mẫu + Geospatial location Vị trí địa lý + Go to page… Đi tới trang… + HTML web page Trang web HTML + Header and footer Đầu trang và chân trang + Hide all comments Ẩn tất cả bình luận + Highlight text Tô sáng văn bản + Image Hình ảnh + Image (PNG) Hình ảnh (PNG) + Image field Trường hình ảnh + Images Hình ảnh + Import comments… Nhập bình luận… + Import data Nhập dữ liệu + Import form data… Nhập dữ liệu biểu mẫu… + In multiple files Trong nhiều tệp + In this file Trong tệp này + Index Chỉ mục + Initials Chữ viết tắt + Insert Chèn + Insert pages Chèn trang + Insert text Chèn văn bản + JavaScript JavaScript + JavaScript console… Bảng điều khiển JavaScript… + Join the ArtCraft Discord Tham gia Discord của ArtCraft + Light gray Xám nhạt + Line Đường thẳng + Link Liên kết + List box Hộp danh sách + Make accessible Cải thiện khả năng tiếp cận + Manage embedded index Quản lý chỉ mục nhúng + Markup Chú thích đánh dấu + Marquee zoom Thu phóng theo vùng chọn + Measure area Đo diện tích + Measure distance Đo khoảng cách + Measure objects Đo đối tượng + Measure perimeter Đo chu vi + Measurement information Thông tin phép đo + Measurement snapping Bắt dính phép đo + Merge data files into spreadsheet… Gộp các tệp dữ liệu vào bảng tính… + Microsoft Word (.docx) Microsoft Word (.docx) + Modify page Sửa đổi trang + Multiple files Nhiều tệp + New bookmarks from structure Dấu trang mới từ cấu trúc + Open accessibility report Mở báo cáo trợ năng + Optimize scanned documents Tối ưu hóa tài liệu quét + Optimize scanned documents… Tối ưu hóa tài liệu quét… + Output preview Xem trước đầu ra + Oval Hình bầu dục + PDF/A… PDF/A… + Page grid Lưới trang + Page labels Nhãn trang + Page options Tùy chọn trang + Page transitions Hiệu ứng chuyển trang + Paste pages Dán trang + PdfCraft on GitHub PdfCraft trên GitHub + PdfCraft web page Trang web PdfCraft + Perimeter Chu vi + Pin folder to Home… Ghim thư mục vào Trang chủ… + PostScript / EPS PostScript / EPS + Preflight Kiểm tra trước in + Prepare for accessibility Chuẩn bị cho trợ năng + Prepare for distribution Chuẩn bị để phân phối + Prepare for distribution… Chuẩn bị để phân phối… + Presentation (.pptx) Bản trình bày (.pptx) + Print production Sản xuất in ấn + Protect a PDF Bảo vệ một PDF + Protect with password Bảo vệ bằng mật khẩu + Radio button Nút radio + Recognize text Nhận dạng văn bản + Recognize text in multiple files… Nhận dạng văn bản trong nhiều tệp… + Recognize text… Nhận dạng văn bản… + Rectangle Hình chữ nhật + Redact a PDF Xóa nội dung nhạy cảm trong PDF + Redact pages Xóa nội dung nhạy cảm trên trang + Redact pages… Xóa nội dung nhạy cảm trên trang… + Redact text and images Xóa nội dung nhạy cảm trong văn bản và hình ảnh + Redaction properties… Thuộc tính xóa nội dung nhạy cảm… + Reduce file size Giảm kích thước tệp + Remove all links Gỡ tất cả liên kết + Remove background Gỡ nền + Remove header & footer Gỡ đầu trang & chân trang + Remove hidden information Gỡ thông tin ẩn + Remove hidden information… Gỡ thông tin ẩn… + Remove watermark Gỡ hình mờ + Replace Thay thế + Replace text Thay thế văn bản + Reset panel layout Đặt lại bố cục bảng + Review Duyệt + Rich Text Format (.rtf) Rich Text Format (.rtf) + Rotate Xoay + Rotate pages Xoay trang + Rotate pages clockwise Xoay trang theo chiều kim đồng hồ + Rotate pages counterclockwise Xoay trang ngược chiều kim đồng hồ + Sanitize document Làm sạch tài liệu + Sanitize document… Làm sạch tài liệu… + Save as PDF/A Lưu thành PDF/A + Save as PDF/UA Lưu thành PDF/UA + Save as PDF/X Lưu thành PDF/X + Scan & OCR Quét & OCR + Security properties Thuộc tính bảo mật + Select files to compare Chọn các tệp để so sánh + Separate PDFs Các PDF riêng biệt + Set measurement scale Đặt tỷ lệ đo + Set page boxes Đặt các hộp trang + Set page boxes… Đặt các hộp trang… + Set properties Đặt thuộc tính + Show cover page in two-page view Hiện trang bìa ở chế độ hai trang + Signature Chữ ký + Signatures panel Bảng chữ ký + Single file Một tệp + Snapping Bắt dính + Split Tách + Spreadsheet (.xlsx) Bảng tính (.xlsx) + Squiggly underline Gạch chân lượn sóng + Squiggly underline text Gạch chân lượn sóng cho văn bản + Stamp Con dấu + Stamp palette Bảng chọn con dấu + Stamps Con dấu + Standards Chuẩn + Sticky note Ghi chú dán + Strikethrough text Gạch ngang văn bản + Summarize Tóm tắt + Summarize comments Tóm tắt bình luận + Switch light / dark theme Chuyển chủ đề sáng / tối + Tab order by columns Thứ tự tab theo cột + Tab order by rows Thứ tự tab theo hàng + Tab order: by columns Thứ tự tab: theo cột + Tab order: by document structure Thứ tự tab: theo cấu trúc tài liệu + Tab order: by rows Thứ tự tab: theo hàng + Tags panel Bảng thẻ + Text (plain) Văn bản (thuần) + Text box Khung văn bản + Text field Trường văn bản + Timestamp Dấu thời gian + Translate Dịch + Underline text Gạch chân văn bản + Update background… Cập nhật nền… + Update header & footer… Cập nhật đầu trang & chân trang… + Update watermark… Cập nhật hình mờ… + Use JavaScript Dùng JavaScript + Use a certificate Dùng chứng chỉ + Use guided actions Dùng hành động có hướng dẫn + Use print production Dùng sản xuất in ấn + Use system setting Dùng cài đặt hệ thống + Validate all signatures Xác thực tất cả chữ ký + Watermark Hình mờ + Move object Di chuyển đối tượng + Move objects Di chuyển các đối tượng + All tools Tất cả công cụ + Read Đọc + E-Sign Ký điện tử + Tools Công cụ + Inspector Trình thanh tra + on page {label} trên trang {label} + A font isn't embedded Một phông chữ chưa được nhúng + A {} action isn't allowed Hành động {} không được phép + A {} annotation has additional actions Chú thích {} có các hành động bổ sung + A {} annotation has no appearance stream Chú thích {} không có luồng diện mạo + A {} annotation isn't set to print, or is hidden Chú thích {} không được đặt để in, hoặc bị ẩn + Accessibility Report Báo cáo trợ năng + Add the PDFs to combine Thêm các PDF cần kết hợp + Added the first {n} PDFs in {folder} Đã thêm {n} PDF đầu tiên trong {folder} + CRL Signing Ký CRL + Certificate Signing Ký chứng chỉ + Change Author Đổi tác giả + Change Keywords Đổi từ khóa + Change Subject Đổi chủ đề + Change Title Đổi tiêu đề + Choose a digital ID. Chọn một Digital ID. + Create links Tạo liên kết + Creator Ứng dụng tạo + Cut and stack needs Two-sided: Off. Print single-sided sheets. Cắt và xếp chồng cần đặt Hai mặt: Tắt. Hãy in các tờ một mặt. + Data Encipherment Mã hóa dữ liệu + Decipher Only Chỉ giải mã + Detailed Report Báo cáo chi tiết + DeviceCMYK is used, but the PDF/A output intent isn't a CMYK profile DeviceCMYK được dùng, nhưng mục đích đầu ra PDF/A không phải là hồ sơ CMYK + DeviceRGB is used, but the PDF/A output intent isn't an RGB profile DeviceRGB được dùng, nhưng mục đích đầu ra PDF/A không phải là hồ sơ RGB + Digital Signature Chữ ký số + Document properties (⌘D) Thuộc tính tài liệu (⌘D) + Drop PDFs or folders here, or choose them. Thả PDF hoặc thư mục vào đây, hoặc chọn chúng. + Encipher Only Chỉ mã hóa + English English + Enter a URL Nhập một URL + Enter a name. Nhập một tên. + Enter a page number Nhập một số trang + Enter the field names Nhập tên các trường + Every PDF in the folder Mọi PDF trong thư mục + Every PDF in the folder and the folders inside it Mọi PDF trong thư mục và các thư mục con của nó + Field "{}" on page {p} has no description (tooltip) Trường "{}" trên trang {p} không có mô tả (chú giải công cụ) + Filename Tên tệp + Flatten Fill & Sign Làm phẳng Điền & Ký + Font (unnamed) on page {p} doesn't map its characters to Unicode Phông chữ (không tên) trên trang {p} không ánh xạ các ký tự của nó sang Unicode + Font {} on page {p} doesn't map its characters to Unicode Phông chữ {} trên trang {p} không ánh xạ các ký tự của nó sang Unicode + Form field on page {p} isn't tagged Trường biểu mẫu trên trang {p} chưa được gắn thẻ + H{n} follows an H{d}; headings should not skip levels H{n} theo sau H{d}; các đề mục không nên bỏ qua cấp + Inserted text Văn bản được chèn + Key Agreement Thỏa thuận khóa + Key Encipherment Mã hóa khóa + Margins (in) Lề (inch) + New bookmark (⌘B) Dấu trang mới (⌘B) + Next (⌘G) Tiếp theo (⌘G) + No PDFs found in {folder} Không tìm thấy PDF nào trong {folder} + No document language is set Chưa đặt ngôn ngữ cho tài liệu + No page has text: the document appears to be images of pages Không trang nào có văn bản: tài liệu có vẻ là hình ảnh của các trang + Non-Repudiation Chống chối bỏ + Only the document's owner can change its security (open it with the permissions password) Chỉ chủ sở hữu tài liệu mới có thể thay đổi bảo mật của nó (hãy mở bằng mật khẩu quyền hạn) + Open a PDF (⌘O) Mở một PDF (⌘O) + Page {p} doesn't tab in structure order Trang {p} không chuyển tab theo thứ tự cấu trúc + Page {p}: {n} untagged content item Trang {p}: {n} mục nội dung chưa gắn thẻ + Page {p}: {n} untagged content items Trang {p}: {n} mục nội dung chưa gắn thẻ + Page {} has additional actions Trang {} có các hành động bổ sung + Panel layout could not be restored: {error} Không thể khôi phục bố cục bảng: {error} + Panel move was not applied: {error} Việc di chuyển bảng chưa được áp dụng: {error} + PdfCraft can't check this signature yet: {}. PdfCraft chưa thể kiểm tra chữ ký này: {}. + Previous (⇧⌘G) Trước (⇧⌘G) + Print (⌘P) In (⌘P) + Producer Ứng dụng sản xuất + Redo {action} Làm lại {action} + Rendering… Đang kết xuất… + Report created Đã tạo báo cáo + Rev. {rev}: Certified by an unknown signer Bản sửa đổi {rev}: Được chứng nhận bởi người ký không rõ + Rev. {rev}: Certified by {name} Bản sửa đổi {rev}: Được chứng nhận bởi {name} + Rev. {rev}: Signed by an unknown signer Bản sửa đổi {rev}: Được ký bởi người ký không rõ + Rev. {rev}: Signed by {name} Bản sửa đổi {rev}: Được ký bởi {name} + Rotate view clockwise (⇧⌘+) Xoay chế độ xem theo chiều kim đồng hồ (⇧⌘+) + Rule Name Tên quy tắc + Save (M4) Lưu (M4) + Save as {level} Lưu thành {level} + Signature is invalid Chữ ký không hợp lệ + Signature is valid Chữ ký hợp lệ + Signature validity is unknown Không rõ tính hợp lệ của chữ ký + Signing time is from the clock on the signer's computer. Thời gian ký lấy từ đồng hồ trên máy tính của người ký. + Still rendering — this page is unusually complex… Vẫn đang kết xuất — trang này phức tạp bất thường… + The ECDSA signature is not in canonical DER (trailing bytes, padding or a missing sign byte); it was read anyway. Chữ ký ECDSA không ở dạng DER chuẩn (có byte thừa ở cuối, phần đệm hoặc thiếu byte dấu); nó vẫn được đọc. + The ECDSA signature is the raw r and s values instead of a DER sequence; it was read anyway. Chữ ký ECDSA là các giá trị r và s thô thay vì một chuỗi DER; nó vẫn được đọc. + The RSA signature value does not have the length of the key's modulus (leading zero bytes dropped or added); it was read anyway. Giá trị chữ ký RSA không có độ dài bằng môđun của khóa (các byte không ở đầu bị bỏ hoặc thêm); nó vẫn được đọc. + The RSA signature's DigestInfo has no NULL parameter (older signers write it so); it was read anyway. DigestInfo của chữ ký RSA không có tham số NULL (các trình ký cũ ghi như vậy); nó vẫn được đọc. + The certificate of {} does not allow this many CA certificates below it (path length), so it is not used to vouch for {}. Chứng chỉ của {} không cho phép có nhiều chứng chỉ CA ở dưới nó như vậy (độ dài đường dẫn), nên nó không được dùng để bảo chứng cho {}. + The certificate of {} is not a CA certificate that may issue certificates, so it is not used to vouch for {}. Chứng chỉ của {} không phải là chứng chỉ CA được phép cấp chứng chỉ, nên nó không được dùng để bảo chứng cho {}. + The certificate of {} was not valid at the time of signing, so it is not used to vouch for {}. Chứng chỉ của {} không hợp lệ tại thời điểm ký, nên nó không được dùng để bảo chứng cho {}. + The checker found problems which may prevent the document from being fully accessible. Trình kiểm tra tìm thấy các vấn đề có thể khiến tài liệu không thể tiếp cận đầy đủ. + The document has been altered or corrupted since the signature was applied. Tài liệu đã bị thay đổi hoặc hỏng kể từ khi chữ ký được áp dụng. + The document has been altered or corrupted since the timestamp was applied. Tài liệu đã bị thay đổi hoặc hỏng kể từ khi dấu thời gian được áp dụng. + The document has been altered since this signature was applied in ways it does not permit ({}). Tài liệu đã bị thay đổi kể từ khi chữ ký này được áp dụng theo những cách mà nó không cho phép ({}). + The document has been altered since this timestamp was applied in ways it does not permit ({}). Tài liệu đã bị thay đổi kể từ khi dấu thời gian này được áp dụng theo những cách mà nó không cho phép ({}). + The document has been modified since this signature was applied, but the changes are permitted ({}). Tài liệu đã được sửa đổi kể từ khi chữ ký này được áp dụng, nhưng các thay đổi được phép ({}). + The document has been modified since this timestamp was applied, but the changes are permitted ({}). Tài liệu đã được sửa đổi kể từ khi dấu thời gian này được áp dụng, nhưng các thay đổi được phép ({}). + The document has no tags (structure tree) Tài liệu không có thẻ (cây cấu trúc) + The document has no title Tài liệu không có tiêu đề + The document isn't marked as tagged (MarkInfo Marked) Tài liệu không được đánh dấu là có gắn thẻ (MarkInfo Marked) + The document isn't tagged, so none of its content is Tài liệu chưa được gắn thẻ, nên không nội dung nào của nó được gắn thẻ + The document's embedded revocation information shows that the signer's certificate has not been revoked. Thông tin thu hồi được nhúng trong tài liệu cho thấy chứng chỉ của người ký chưa bị thu hồi. + The embedded timestamp token is valid and its authority is trusted; trusted time is {}. Mã thông báo dấu thời gian được nhúng hợp lệ và cơ quan cấp nó được tin cậy; thời gian tin cậy là {}. + The font {} isn't embedded Phông chữ {} chưa được nhúng + The metadata doesn't identify the file as {} Siêu dữ liệu không xác định tệp là {} + The password is incorrect. Mật khẩu không đúng. + The password must have at least 6 characters. Mật khẩu phải có ít nhất 6 ký tự. + The passwords do not match. Các mật khẩu không khớp. + The security settings don't allow screen readers to read the text Cài đặt bảo mật không cho phép trình đọc màn hình đọc văn bản + The signature algorithm and the SignerInfo's digest algorithm name different hashes; the signature was made with the SignerInfo's. Thuật toán chữ ký và thuật toán băm của SignerInfo chỉ định các hàm băm khác nhau; chữ ký được tạo bằng hàm băm của SignerInfo. + The signature carries an unverified timestamp ({}): the timestamp authority is not in your list of trusted certificates, so the signing time claimed by the signer is used instead. Chữ ký mang một dấu thời gian chưa được xác minh ({}): cơ quan cấp dấu thời gian không nằm trong danh sách chứng chỉ tin cậy của bạn, nên thời gian ký do người ký tuyên bố được dùng thay thế. + The signature contents are not hexadecimal. Nội dung chữ ký không phải là thập lục phân. + The signature could not be checked ({}). Không thể kiểm tra chữ ký ({}). + The signature could not be read ({}). Không thể đọc chữ ký ({}). + The signature could not be verified ({}). Không thể xác minh chữ ký ({}). + The signature has no valid byte range. Chữ ký không có dải byte hợp lệ. + The signature includes an embedded timestamp. Chữ ký bao gồm một dấu thời gian được nhúng. + The signature is BER-encoded (indefinite lengths) rather than DER; it was read leniently. Chữ ký được mã hóa BER (độ dài không xác định) thay vì DER; nó được đọc một cách khoan dung. + The signature uses the legacy adbe.x509.rsa_sha1 format. Chữ ký dùng định dạng cũ adbe.x509.rsa_sha1. + The signature value does not match the signer's certificate: the signature is corrupt. Giá trị chữ ký không khớp với chứng chỉ của người ký: chữ ký bị hỏng. + The signature's byte range does not exclude exactly its contents. Dải byte của chữ ký không loại trừ chính xác nội dung của nó. + The signature's byte range does not match the file. Dải byte của chữ ký không khớp với tệp. + The signature's timestamp token could not be verified ({}). Không thể xác minh mã thông báo dấu thời gian của chữ ký ({}). + The signature's timestamp token does not cover the signature value. Mã thông báo dấu thời gian của chữ ký không bao phủ giá trị chữ ký. + The signed content is a constructed (segmented) OCTET STRING, as BER allows; it was read anyway. Nội dung được ký là một OCTET STRING dạng cấu trúc (phân đoạn), như BER cho phép; nó vẫn được đọc. + The signer's certificate does not allow digital signatures (its key usage has neither digital signature nor non-repudiation). Chứng chỉ của người ký không cho phép chữ ký số (mục đích sử dụng khóa của nó không có chữ ký số cũng không có chống chối bỏ). + The signer's certificate has been revoked ({}). Chứng chỉ của người ký đã bị thu hồi ({}). + The signer's certificate has critical extensions PdfCraft does not recognize ({}). Chứng chỉ của người ký có các phần mở rộng quan trọng mà PdfCraft không nhận ra ({}). + The signer's certificate is not in the signature. Chứng chỉ của người ký không có trong chữ ký. + The signer's certificate is not issued for signing documents (its extended key usage has no document-signing purpose). Chứng chỉ của người ký không được cấp để ký tài liệu (mục đích sử dụng khóa mở rộng của nó không có mục đích ký tài liệu). + The signer's certificate was not valid at the time of signing. Chứng chỉ của người ký không hợp lệ tại thời điểm ký. + The signer's identity is unknown because it has not been included in your list of trusted certificates and none of its parent certificates are trusted certificates. Danh tính của người ký không rõ vì nó chưa được đưa vào danh sách chứng chỉ tin cậy của bạn và không chứng chỉ cấp trên nào của nó là chứng chỉ tin cậy. + The signer's identity is valid. Danh tính của người ký hợp lệ. + The timestamp authority's certificate was not valid at the time of timestamping. Chứng chỉ của cơ quan cấp dấu thời gian không hợp lệ tại thời điểm đóng dấu thời gian. + The timestamp contents are not hexadecimal. Nội dung dấu thời gian không phải là thập lục phân. + The timestamp has no valid byte range. Dấu thời gian không có dải byte hợp lệ. + The timestamp token could not be read ({}). Không thể đọc mã thông báo dấu thời gian ({}). + The timestamp token is valid and its authority is trusted. Mã thông báo dấu thời gian hợp lệ và cơ quan cấp nó được tin cậy. + The timestamp token is valid, but the timestamp authority is not in your list of trusted certificates. Mã thông báo dấu thời gian hợp lệ, nhưng cơ quan cấp dấu thời gian không nằm trong danh sách chứng chỉ tin cậy của bạn. + The timestamp's byte range does not exclude exactly its contents. Dải byte của dấu thời gian không loại trừ chính xác nội dung của nó. + The timestamp's byte range does not match the file. Dải byte của dấu thời gian không khớp với tệp. + The window shows the file name, not the title (Initial View > Show) Cửa sổ hiển thị tên tệp, không phải tiêu đề (Chế độ xem ban đầu > Hiện) + There is no folder to save the digital ID in. Không có thư mục nào để lưu Digital ID. + This document has not been modified since this signature was applied. Tài liệu này chưa bị sửa đổi kể từ khi chữ ký này được áp dụng. + This document has not been modified since this timestamp was applied. Tài liệu này chưa bị sửa đổi kể từ khi dấu thời gian này được áp dụng. + This signature uses RIPEMD-160, a legacy 160-bit hash algorithm that is no longer recommended for signatures. It still validates, but it should not be relied on. Chữ ký này dùng RIPEMD-160, một thuật toán băm 160 bit cũ không còn được khuyến nghị cho chữ ký. Nó vẫn xác thực được, nhưng không nên dựa vào nó. + This signature uses SHA-1, a weak hash algorithm: collisions in it have been demonstrated. It still validates because many documents signed years ago use it, but it should not be relied on. Chữ ký này dùng SHA-1, một thuật toán băm yếu: các va chạm trong nó đã được chứng minh. Nó vẫn xác thực được vì nhiều tài liệu được ký từ nhiều năm trước dùng nó, nhưng không nên dựa vào nó. + Undo {action} Hoàn tác {action} + Unsigned signature field Trường chữ ký chưa ký + Unsigned signature field: {name} Trường chữ ký chưa ký: {name} + Zoom in (⌘+) Phóng to (⌘+) + Zoom in / out (also pinch or ⌘-scroll) Phóng to / thu nhỏ (cũng có thể chụm ngón tay hoặc ⌘-cuộn) + Zoom out (⌘−) Thu nhỏ (⌘−) + alternate text hides an annotation inside it văn bản thay thế che khuất một chú thích bên trong nó + alternate text on an element with no page content văn bản thay thế trên phần tử không có nội dung trang + comments bình luận + document security store kho bảo mật tài liệu + document structure cấu trúc tài liệu + form fill điền biểu mẫu + its alternate text is inside another element's and will never be read văn bản thay thế của nó nằm trong văn bản thay thế của phần tử khác và sẽ không bao giờ được đọc + links liên kết + metadata siêu dữ liệu + no alternate text không có văn bản thay thế + no header cells (TH) không có ô tiêu đề (TH) + no summary không có tóm tắt + not in a TR không nằm trong TR + not in a Table, THead, TBody or TFoot không nằm trong Table, THead, TBody hoặc TFoot + not in an L (list) không nằm trong L (danh sách) + not in an LI (list item) không nằm trong LI (mục danh sách) + other changes các thay đổi khác + page content nội dung trang + page {n} is out of range (1–{count}) trang {n} nằm ngoài phạm vi (1–{count}) + pages added or removed trang được thêm hoặc xóa + rows have between {min} and {max} columns các hàng có từ {min} đến {max} cột + the first heading is an H{n}; headings should not skip levels đề mục đầu tiên là H{n}; các đề mục không nên bỏ qua cấp + the signed version could not be read không thể đọc phiên bản đã ký + {n} pages and no bookmarks {n} trang và không có dấu trang + {page} is not a page number or label {page} không phải là số trang hoặc nhãn + {ty} element on page {p}: {what} Phần tử {ty} trên trang {p}: {what} + {ty} element: {what} Phần tử {ty}: {what} + {who}, certificate issued by an unknown issuer. {who}, chứng chỉ do tổ chức không rõ cấp. + {who}, certificate issued by {issuer}. {who}, chứng chỉ do {issuer} cấp. + {} annotation on page {p} isn't tagged Chú thích {} trên trang {p} chưa được gắn thẻ + {} annotations aren't allowed Chú thích {} không được phép + … and {n} more … và {n} mục nữa +@plural Delete {n} field|Delete {n} fields Xóa {n} trường +@plural {n} byte|{n} bytes {n} byte +@plural {n} image optimized|{n} images optimized Đã tối ưu hóa {n} hình ảnh +@plural {n} item discarded|{n} items discarded Đã loại bỏ {n} mục +@plural {n} pixel|{n} pixels {n} điểm ảnh +action wizard Start Bắt đầu +comment menu Edit Sửa + A button Một nút + A diagonal CONFIDENTIAL watermark on every page. Hình mờ CONFIDENTIAL nằm chéo trên mọi trang. + A document needs at least one page: copy instead Một tài liệu cần ít nhất một trang: hãy sao chép thay vào đó + A form field has additional actions Một trường biểu mẫu có các hành động bổ sung + A link Một liên kết + A script Một script + A selected field has no widget on any page, so the fields can't be edited together. Một trường đã chọn không có widget trên trang nào, nên các trường không thể được chỉnh sửa cùng nhau. + A stream refers to an external file Một luồng tham chiếu đến tệp bên ngoài + A stream uses LZW compression Một luồng dùng nén LZW + A summary describes the table's purpose and layout. Add a Summary attribute to each table. Phần tóm tắt mô tả mục đích và bố cục của bảng. Hãy thêm thuộc tính Summary cho mỗi bảng. + About Giới thiệu + Accepted Đã chấp nhận + Accessibility permission flag Cờ quyền trợ năng + Accessibility permission flag is set Cờ quyền trợ năng đã được đặt + Add Page Numbers Thêm số trang + Add arrow Thêm mũi tên + Add background Thêm nền + Add bookmark Thêm dấu trang + Add callout Thêm khung chú thích + Add checkmark Thêm dấu kiểm + Add cloud Thêm đám mây + Add connected lines Thêm các đường nối liền + Add cross Thêm dấu chéo + Add dot Thêm dấu chấm + Add drawing Thêm bản vẽ + Add field Thêm trường + Add file attachment Thêm tệp đính kèm + Add footer Thêm chân trang + Add header Thêm đầu trang + Add header & footer Thêm đầu trang & chân trang + Add highlight Thêm tô sáng + Add image Thêm hình ảnh + Add inserted text Thêm văn bản được chèn + Add line Thêm đường thẳng + Add link Thêm liên kết + Add oval Thêm hình bầu dục + Add polygon Thêm đa giác + Add rectangle Thêm hình chữ nhật + Add redaction mark Thêm dấu đánh dấu xóa + Add signature Thêm chữ ký + Add squiggly underline Thêm gạch chân lượn sóng + Add stamp Thêm con dấu + Add sticky note Thêm ghi chú dán + Add strikethrough Thêm gạch ngang + Add text box Thêm khung văn bản + Add underline Thêm gạch chân + Add watermark Thêm hình mờ + Add {what} Thêm {what} + Added the first {n} files in {folder} Đã thêm {n} tệp đầu tiên trong {folder} + Adding images arrives on the web with file pickers for images Việc thêm hình ảnh sẽ có trên web cùng với bộ chọn tệp hình ảnh + Algorithm Thuật toán + Align fields Căn chỉnh các trường + All annotations are tagged Tất cả chú thích đã được gắn thẻ + All form fields are tagged Tất cả trường biểu mẫu đã được gắn thẻ + All form fields have description Tất cả trường biểu mẫu đều có mô tả + All multimedia objects are tagged Tất cả đối tượng đa phương tiện đã được gắn thẻ + All page content is tagged Tất cả nội dung trang đã được gắn thẻ + Allowed Được phép + Alternate Text Văn bản thay thế + Alternate text inside an element that already has alternate text is never read. Remove the inner alternate text. Văn bản thay thế bên trong phần tử đã có văn bản thay thế sẽ không bao giờ được đọc. Hãy gỡ văn bản thay thế bên trong. + Alternate text must be associated with some content Văn bản thay thế phải được liên kết với một nội dung nào đó + Alternate text on an element that contains a link or field hides that annotation from assistive technology. Move the alternate text. Văn bản thay thế trên phần tử chứa liên kết hoặc trường sẽ che chú thích đó khỏi công nghệ hỗ trợ. Hãy chuyển văn bản thay thế. + Alternate text on an element without page content is never reached. Remove it or attach the element to content. Văn bản thay thế trên phần tử không có nội dung trang sẽ không bao giờ được truy cập tới. Hãy gỡ nó hoặc gắn phần tử vào nội dung. + Alternate text should not hide annotation Văn bản thay thế không nên che chú thích + Alternate text that will never be read Văn bản thay thế sẽ không bao giờ được đọc + An action is already running Một hành động đang chạy + An embedded file has no AFRelationship Một tệp nhúng không có AFRelationship + An image asks to be interpolated Một hình ảnh yêu cầu được nội suy + An image has alternates or OPI information Một hình ảnh có bản thay thế hoặc thông tin OPI + Animation that flashes can cause seizures. Check scripts and media for flicker. Hoạt ảnh nhấp nháy có thể gây co giật. Hãy kiểm tra script và phương tiện xem có nhấp nháy không. + Another file dialog is still open. Finish with it first. Một hộp thoại tệp khác vẫn đang mở. Hãy hoàn tất nó trước. + Application Ứng dụng + Applied 1 redaction mark. Save to remove the content from the file. Đã áp dụng 1 dấu xóa. Hãy lưu để loại bỏ nội dung khỏi tệp. + Applied {n} redaction marks. Save to remove the content from the file. Đã áp dụng {n} dấu xóa. Hãy lưu để loại bỏ nội dung khỏi tệp. + Appropriate nesting Lồng ghép phù hợp + Arbitrary Mask Mặt nạ tùy ý + Associated with content Được liên kết với nội dung + At least one signature has problems. Ít nhất một chữ ký có vấn đề. + At least one signature is invalid. Ít nhất một chữ ký không hợp lệ. + Attachment Tệp đính kèm + Basic constraints Ràng buộc cơ bản + Beveled Vát cạnh + Black Đen + Black on white Đen trên nền trắng + Blue Xanh dương + Bookmarks are present in large documents Dấu trang có mặt trong các tài liệu lớn + Both Cả hai + Button Properties Thuộc tính nút + Button Style: Kiểu nút: + Calculate Tính toán + Callout Khung chú thích + Cancelled Đã hủy + Center Footer Text Văn bản chân trang giữa + Center Header Text Văn bản đầu trang giữa + Center horizontally Căn giữa theo chiều ngang + Center vertically Căn giữa theo chiều dọc + Certificate Viewer Trình xem chứng chỉ + Certified by {by} Được chứng nhận bởi {by} + Change comment properties Thay đổi thuộc tính bình luận + Change document properties Thay đổi thuộc tính tài liệu + Change field properties Thay đổi thuộc tính trường + Change initial view Thay đổi chế độ xem ban đầu + Change link properties Thay đổi thuộc tính liên kết + Change tag properties Thay đổi thuộc tính thẻ + Change {key} Thay đổi {key} + Changing the document Thay đổi tài liệu + Character encoding Mã hóa ký tự + Character limit: Giới hạn ký tự: + Check Đánh dấu chọn + Check Box Properties Thuộc tính hộp kiểm + Check Box Style: Kiểu hộp kiểm: + Check that the tags read in the order a sighted reader would. Use the Reading Order tool or the Tags panel to correct it. Hãy kiểm tra rằng các thẻ được đọc theo thứ tự mà người đọc nhìn thấy được sẽ đọc. Dùng công cụ Thứ tự đọc hoặc bảng Thẻ để sửa. + CheckBox CheckBox + Checked Đã đánh dấu chọn + Choose a folder for the split files Chọn thư mục cho các tệp đã tách + Choose a folder on this computer to pin Chọn một thư mục trên máy tính này để ghim + Click on the page to add a {tool}, or drag to set its size Bấm vào trang để thêm {tool}, hoặc kéo để đặt kích thước + Click text or an image to edit it Bấm vào văn bản hoặc hình ảnh để chỉnh sửa + Color Images Ảnh màu + Color Spaces Không gian màu + Color contrast Độ tương phản màu + Comb of characters Dạng lược gồm các ký tự + Combo Combo + Coming in milestone {m}. Items marked Ready work today. Sẽ có ở cột mốc {m}. Các mục được đánh dấu Sẵn sàng hoạt động ngay hôm nay. + Command Lệnh + Commenting Bình luận + Comments and markups Bình luận và chú thích đánh dấu + Comments, links and fields must be in the tag tree to be announced. Tag the annotations. Bình luận, liên kết và trường phải nằm trong cây thẻ để được đọc to. Hãy gắn thẻ cho các chú thích. + Completed Đã hoàn thành + Configure a Digital ID for Signing Cấu hình Digital ID để ký + Connected lines Các đường nối liền + Content Streams Luồng nội dung + Content copying Sao chép nội dung + Content copying for accessibility Sao chép nội dung cho trợ năng + Contributors Người đóng góp + Copied {what} Đã sao chép {what} + Copy or cut pages first Hãy sao chép hoặc cắt trang trước + Could not save: {e} Không thể lưu: {e} + Couldn't add {name}: {e} Không thể thêm {name}: {e} + Couldn't combine files: {e} Không thể kết hợp các tệp: {e} + Couldn't create a PDF: {e} Không thể tạo PDF: {e} + Couldn't download {name}: {e} Không thể tải xuống {name}: {e} + Couldn't extract pages: {e} Không thể trích xuất trang: {e} + Couldn't fit the visible content: {e} Không thể làm vừa nội dung hiển thị: {e} + Couldn't follow linked PDF: {reason} Không thể theo liên kết đến PDF: {reason} + Couldn't import the signature image: {e} Không thể nhập hình ảnh chữ ký: {e} + Couldn't open revision {n}: {e} Không thể mở bản sửa đổi {n}: {e} + Couldn't open the result: {e} Không thể mở kết quả: {e} + Couldn't open the signed version: {e} Không thể mở phiên bản đã ký: {e} + Couldn't open {name}: {e} Không thể mở {name}: {e} + Couldn't optimize the file Không thể tối ưu hóa tệp + Couldn't optimize the file: {e} Không thể tối ưu hóa tệp: {e} + Couldn't print from the browser ({e}); downloaded {name} to print instead Không thể in từ trình duyệt ({e}); đã tải {name} xuống để in thay thế + Couldn't read {name}: {e} Không thể đọc {name}: {e} + Couldn't recover {name}: {e} Không thể khôi phục {name}: {e} + Couldn't reload {name}: {e} Không thể tải lại {name}: {e} + Couldn't save the image: {e} Không thể lưu hình ảnh: {e} + Couldn't save {name}: {e} Không thể lưu {name}: {e} + Couldn't save: {e} Không thể lưu: {e} + Couldn't show the file picker. Please try again. Không thể hiển thị bộ chọn tệp. Vui lòng thử lại. + Couldn't split: {e} Không thể tách: {e} + Couldn't summarize comments: {e} Không thể tóm tắt bình luận: {e} + Couldn't take the snapshot: {e} Không thể chụp ảnh nhanh: {e} + Couldn't unlock {name}: {e} Không thể mở khóa {name}: {e} + Couldn't use the photo: {e} Không thể dùng ảnh: {e} + Couldn't use {name}: {e} Không thể dùng {name}: {e} + Couldn't write {name}: {e} Không thể ghi {name}: {e} + Couldn't write {path}: {e} Không thể ghi {path}: {e} + Create link Tạo liên kết + Created 1 link Đã tạo 1 liên kết + Created a PDF from the first {n} files Đã tạo một PDF từ {n} tệp đầu tiên + Created a comment summary Đã tạo bản tóm tắt bình luận + Created {n} links Đã tạo {n} liên kết + Credit Cards Thẻ tín dụng + Crop page Cắt xén trang + Custom font Phông chữ tùy chỉnh + Custom stamps arrive on the web with file pickers for images Con dấu tùy chỉnh sẽ có trên web cùng với bộ chọn tệp hình ảnh + Cut {what} Đã cắt {what} + Dark gray theme Chủ đề xám đậm + Dashed Nét đứt + Dates Ngày tháng + Delete bookmark Xóa dấu trang + Delete content Xóa nội dung + Delete document JavaScript Xóa JavaScript của tài liệu + Delete field Xóa trường + Delete image Xóa hình ảnh + Delete link Xóa liên kết + Delete page Xóa trang + Delete selected fields Xóa các trường đã chọn + Deleted Đã xóa + Detected 1 form field Đã phát hiện 1 trường biểu mẫu + Detected {n} form fields Đã phát hiện {n} trường biểu mẫu + Device colour is used, but there is no PDF/A output intent Màu thiết bị được dùng, nhưng không có mục đích đầu ra PDF/A + DeviceCMYK is used: it needs a CMYK output intent (not added automatically) DeviceCMYK được dùng: cần có mục đích đầu ra CMYK (không được thêm tự động) + Diagnostic details Chi tiết chẩn đoán + Digital Signature Properties Thuộc tính chữ ký số + Discard all comments, forms and multimedia Loại bỏ tất cả bình luận, biểu mẫu và đa phương tiện + Discard all links, actions and JavaScript Loại bỏ tất cả liên kết, hành động và JavaScript + Discard all object data (file attachments) Loại bỏ tất cả dữ liệu đối tượng (tệp đính kèm) + Discard bookmarks Loại bỏ dấu trang + Discard document information and metadata Loại bỏ thông tin tài liệu và siêu dữ liệu + Discard hidden layer content Loại bỏ nội dung lớp ẩn + Discard hidden text Loại bỏ văn bản ẩn + Discard private data of other applications Loại bỏ dữ liệu riêng của các ứng dụng khác + Distribute fields Phân bố các trường + Document Overhead Chi phí cấu trúc tài liệu + Document assembly Lắp ráp tài liệu + Document has appropriate color contrast Tài liệu có độ tương phản màu phù hợp + Document is not image-only PDF Tài liệu không phải PDF chỉ có hình ảnh + Document is tagged PDF Tài liệu là PDF có gắn thẻ + Document sanitized. Save to finish: saving rewrites the whole file. Đã làm sạch tài liệu. Hãy lưu để hoàn tất: việc lưu sẽ ghi lại toàn bộ tệp. + Document structure provides a logical reading order Cấu trúc tài liệu cung cấp thứ tự đọc hợp lý + Document title is showing in title bar Tiêu đề tài liệu đang hiển thị trên thanh tiêu đề + Documents of more than 20 pages need bookmarks for navigation. Add bookmarks for the main sections. Tài liệu có hơn 20 trang cần dấu trang để điều hướng. Hãy thêm dấu trang cho các phần chính. + Double-click Bấm đúp + Downloaded {name} Đã tải xuống {name} + Downloading attachments on the web arrives with M3.10 ({n} bytes ready) Việc tải tệp đính kèm trên web sẽ có cùng M3.10 (đã sẵn sàng {n} byte) + Drag a rectangle around the area to copy Kéo một hình chữ nhật quanh vùng cần sao chép + Drag a rectangle on a page to crop it; double-click a page for Set Page Boxes Kéo một hình chữ nhật trên trang để cắt xén; bấm đúp vào trang để mở Đặt các hộp trang + Drag a rectangle to create a link; double-click a link to edit it Kéo một hình chữ nhật để tạo liên kết; bấm đúp vào liên kết để chỉnh sửa + Drag the corners onto the document's edges, then choose Enhance page. Kéo các góc vào cạnh của tài liệu, rồi chọn Nâng cao chất lượng trang. + Drag to draw the area where the signature should appear. Kéo để vẽ vùng nơi chữ ký sẽ xuất hiện. + Dropdown Properties Thuộc tính danh sách thả xuống + Duplicate field Nhân bản trường + Duplicate page Nhân bản trang + Each field needs a tooltip that says what to enter. Add one in Field Properties > General > Tooltip. Mỗi trường cần có chú giải công cụ nói rõ cần nhập gì. Hãy thêm trong Thuộc tính trường > Chung > Chú giải công cụ. + Edit comment Chỉnh sửa bình luận + Edit content Chỉnh sửa nội dung + Edit document JavaScript Chỉnh sửa JavaScript của tài liệu + Edit fields Chỉnh sửa các trường + Edit script of {name} Chỉnh sửa script của {name} + Edit text Chỉnh sửa văn bản + Editing Chỉnh sửa + Email Addresses Địa chỉ email + Embedded Files Tệp nhúng + Embedded files must be PDF/A files themselves (use PDF/A-3 for others) Các tệp nhúng phải tự là tệp PDF/A (dùng PDF/A-3 cho các tệp khác) + Encryption Mã hóa + Endpoint Điểm cuối + Erase Tẩy + Eraser Cục tẩy + Even pages Các trang chẵn + Everything on a page must be tagged or marked as an artifact (decoration, headers, footers). Tag the untagged content. Mọi thứ trên trang phải được gắn thẻ hoặc đánh dấu là phần trang trí (trang trí, đầu trang, chân trang). Hãy gắn thẻ cho nội dung chưa gắn thẻ. + Execute a menu item Thực thi một mục trình đơn + Export certificate Xuất chứng chỉ + Exported to {path} Đã xuất ra {path} + Extended Graphics States Trạng thái đồ họa mở rộng + Field Trường + Field descriptions Mô tả trường + Figures alternate text Văn bản thay thế của hình + Figures require alternate text Hình yêu cầu văn bản thay thế + File attachments Tệp đính kèm + Files are combined in this order. Leave Pages empty to take every page. Các tệp được kết hợp theo thứ tự này. Để trống mục Trang để lấy mọi trang. + Fill in {name} Điền {name} + Filling of form fields Điền trường biểu mẫu + Flatten Làm phẳng + Flip image Lật hình ảnh + Fonts must map their characters to Unicode so text can be read and copied. Fix the fonts or recreate the PDF. Phông chữ phải ánh xạ ký tự của chúng sang Unicode để văn bản có thể được đọc và sao chép. Hãy sửa phông chữ hoặc tạo lại PDF. + Form fields must be in the tag tree (Form tags) to be announced. Tag the form fields. Trường biểu mẫu phải nằm trong cây thẻ (thẻ Form) để được đọc to. Hãy gắn thẻ cho các trường biểu mẫu. + Formulas and similar non-text elements need alternate text. Add alternate text to them. Công thức và các phần tử không phải văn bản tương tự cần có văn bản thay thế. Hãy thêm văn bản thay thế cho chúng. + Gray Xám + Grayscale Images Ảnh thang xám + Green Xanh lá + Green on black Xanh lá trên nền đen + H / Space (hold) H / Space (giữ) + Header cells (TH) tell listeners what each column or row holds. Mark the header cells. Ô tiêu đề (TH) cho người nghe biết mỗi cột hoặc hàng chứa gì. Hãy đánh dấu các ô tiêu đề. + Headers Tiêu đề đầu mục + Heading levels shouldn't skip (an H1 followed by an H3). Retag the headings. Cấp đề mục không nên bị bỏ qua (H1 theo sau là H3). Hãy gắn thẻ lại các đề mục. + Headings Đề mục + Hidden layers Lớp ẩn + Hidden text Văn bản ẩn + Hide a field Ẩn một trường + Hides annotation Che chú thích + High Cao + Home / End Home / End + Horizontally Theo chiều ngang + Image-only PDF PDF chỉ có hình ảnh + Import {name} Nhập {name} + Importing data arrives on the web with file pickers for data files Việc nhập dữ liệu sẽ có trên web cùng với bộ chọn tệp dữ liệu + Incorrect password. Try again. Mật khẩu không đúng. Hãy thử lại. + Insert pages from {name} Chèn trang từ {name} + Insert pages from {name} — 1 field renamed Chèn trang từ {name} — 1 trường được đổi tên + Insert pages from {name} — fields renamed Chèn trang từ {name} — các trường được đổi tên + Inserted Đã chèn + Inset Lõm + Intended usage Mục đích sử dụng + Intersection Giao điểm + Invert Đảo màu + Irregular tables confuse cell navigation. Give every row the same number of cells (counting spans). Các bảng không đều gây khó cho việc điều hướng ô. Hãy cho mọi hàng cùng số ô (tính cả các ô gộp). + Issued by Cấp bởi + Issued to Cấp cho + Issuer Tổ chức cấp + Key usage Mục đích sử dụng khóa + Keywords Từ khóa + LI must be a child of L LI phải là con của L + Landscape pages Các trang ngang + Lbl and LBody Lbl và LBody + Lbl and LBody must be children of LI Lbl và LBody phải là con của LI + Left Footer Text Văn bản chân trang trái + Left Header Text Văn bản đầu trang trái + Light blue Xanh lam nhạt + Links, actions and JavaScripts Liên kết, hành động và JavaScript + List Danh sách + List Box Properties Thuộc tính hộp danh sách + List items Mục danh sách + List items belong in a list. Fix the list's tags. Các mục danh sách phải nằm trong một danh sách. Hãy sửa thẻ của danh sách. + List labels and bodies belong in a list item. Fix the list's tags. Nhãn và nội dung danh sách phải nằm trong một mục danh sách. Hãy sửa thẻ của danh sách. + Lists Danh sách + Load document font Tải phông chữ của tài liệu + Local cross-PDF links require the desktop app Liên kết PDF cục bộ giữa các tệp yêu cầu ứng dụng máy tính + Lock comment Khóa bình luận + Logical Reading Order Thứ tự đọc hợp lý + Low Thấp + Make scans searchable, then make them smaller. Làm cho bản quét có thể tìm kiếm được, rồi làm cho chúng nhỏ hơn. + Mark all Đánh dấu tất cả + Mark as Confidential Đánh dấu là Bí mật + Mark differences Đánh dấu khác biệt + Mark figure as decorative Đánh dấu hình là trang trí + Mark for redaction Đánh dấu để xóa + Mark pages for redaction Đánh dấu trang để xóa + Match field sizes Khớp kích thước trường + Maximum Tối đa + Measuring tool Công cụ đo + Merged 1 file into {path} Đã gộp 1 tệp vào {path} + Merged {n} files into {path} Đã gộp {n} tệp vào {path} + Merging data files needs the desktop app Việc gộp tệp dữ liệu yêu cầu ứng dụng máy tính + Metadata Siêu dữ liệu + Midpoint Điểm giữa + Minimum Tối thiểu + Models Mô hình + Mouse Down Nhấn chuột + Mouse Enter Chuột vào + Mouse Exit Chuột ra + Mouse Up Nhả chuột + Move bookmark Di chuyển dấu trang + Move comment Di chuyển bình luận + Move image Di chuyển hình ảnh + Move page Di chuyển trang + Move pages Di chuyển các trang + Named Destinations Đích đến có tên + Navigation links Liên kết điều hướng + Navigation links are not repetitive Liên kết điều hướng không lặp lại + Nested alternate text Văn bản thay thế lồng nhau + New {tool} comments will look like this one Các bình luận {tool} mới sẽ trông giống bình luận này + No PDFs, images or text files found in {folder} Không tìm thấy PDF, hình ảnh hoặc tệp văn bản nào trong {folder} + No form fields were detected Không phát hiện trường biểu mẫu nào + No inaccessible scripts Không có script không thể tiếp cận + No links to remove Không có liên kết nào để gỡ + No pages match those choices Không có trang nào khớp với các lựa chọn đó + No unlinked web addresses were found in the text Không tìm thấy địa chỉ web nào chưa được liên kết trong văn bản + None of those files can be made into a PDF; use PDFs, images or .txt files Không tệp nào trong số đó có thể chuyển thành PDF; hãy dùng PDF, hình ảnh hoặc tệp .txt + Note Ghi chú + Number every page in the footer. Đánh số mọi trang ở chân trang. + Odd pages Các trang lẻ + On Blur Khi mất tiêu điểm + On Focus Khi có tiêu điểm + On the web, open or drop an image to convert it Trên web, hãy mở hoặc thả một hình ảnh để chuyển đổi + Open a web link Mở một liên kết web + Opened with Mở bằng + Opening the browser's print dialog… Đang mở hộp thoại in của trình duyệt… + Optimization cancelled Đã hủy tối ưu hóa + Optimization is already running Việc tối ưu hóa đang chạy + Optimize Scanned Documents Tối ưu hóa tài liệu quét + Options Tùy chọn + Orange Cam + Other elements alternate text Văn bản thay thế của các phần tử khác + Other elements that require alternate text Các phần tử khác cần văn bản thay thế + Outline Đường bao + PDF producer Ứng dụng sản xuất PDF + PDF version Phiên bản PDF + Page Content Nội dung trang + Page Range Phạm vi trang + Page does not require timed responses Trang không yêu cầu phản hồi có giới hạn thời gian + Page thumbnails Hình thu nhỏ trang + Page will not cause screen flicker Trang sẽ không gây nhấp nháy màn hình + Pages that are only pictures of text can't be read aloud or searched. Recognize text (OCR) to add a text layer. Các trang chỉ là hình chụp của văn bản không thể được đọc to hoặc tìm kiếm. Hãy nhận dạng văn bản (OCR) để thêm lớp văn bản. + Pages with links, comments or fields should tab in structure order. The fix sets each page's tab order to Use Document Structure. Các trang có liên kết, bình luận hoặc trường nên chuyển tab theo thứ tự cấu trúc. Cách sửa đặt thứ tự tab của mỗi trang thành Dùng cấu trúc tài liệu. + Passed Đạt + Password protection will be applied when you save Bảo vệ bằng mật khẩu sẽ được áp dụng khi bạn lưu + Path Đường dẫn + PdfCraft is drawing without a graphics processor, so it may be slow. Updating the graphics driver may help. PdfCraft đang vẽ mà không có bộ xử lý đồ họa, nên có thể chậm. Cập nhật trình điều khiển đồ họa có thể giúp ích. + People may need more time to respond. Check that nothing has a time limit. Mọi người có thể cần thêm thời gian để phản hồi. Hãy kiểm tra rằng không có gì bị giới hạn thời gian. + Phone Number Số điện thoại + Phone Numbers Số điện thoại + Pictures need alternate text that describes them, or must be marked decorative. Add alternate text to each figure. Hình ảnh cần văn bản thay thế mô tả chúng, hoặc phải được đánh dấu là trang trí. Hãy thêm văn bản thay thế cho mỗi hình. + Pink Hồng + Pinned folders need the desktop app Thư mục được ghim yêu cầu ứng dụng máy tính + Pinned {folder} to Home Đã ghim {folder} vào Trang chủ + Place saved {what} Đặt {what} đã lưu + Planned for milestone {m} — open to see what it will include Dự kiến ở cột mốc {m} — mở để xem nó sẽ bao gồm những gì + Planned · {m} Đã lên kế hoạch · {m} + Polygon Đa giác + Polyline Đa tuyến + Portable mode is off: {folder} can't be written ({error}). Settings are kept in your user folder instead. Chế độ di động đang tắt: không thể ghi vào {folder} ({error}). Cài đặt được lưu trong thư mục người dùng của bạn thay thế. + Portrait pages Các trang dọc + Position Vị trí + PostScript XObjects aren't allowed PostScript XObject không được phép + Prepare for Distribution Chuẩn bị để phân phối + Preparing sheet {done} of {total} for printing… Đang chuẩn bị tờ {done} trên {total} để in… + Preparing {n} sheets for printing… Đang chuẩn bị {n} tờ để in… + Primary language Ngôn ngữ chính + Printing In ấn + Private data of other applications Dữ liệu riêng của các ứng dụng khác + Public key Khóa công khai + Purple Tím + PushButton PushButton + Radio Radio + Radio Button Properties Thuộc tính nút radio + Re-type Password Nhập lại mật khẩu + Red Đỏ + Redid {label} Đã làm lại {label} + Regularity Tính đều đặn + Rejected Đã từ chối + Reliable character encoding is provided Có mã hóa ký tự đáng tin cậy + Remove hidden information and flatten comments and form fields, so recipients see only the pages. Gỡ thông tin ẩn và làm phẳng bình luận cùng trường biểu mẫu, để người nhận chỉ thấy các trang. + Remove hidden information, metadata, scripts and embedded content, and rewrite the files. Gỡ thông tin ẩn, siêu dữ liệu, script và nội dung nhúng, rồi ghi lại các tệp. + Remove redaction marks Gỡ các dấu đánh dấu + Remove saved {what} Xóa {what} đã lưu + Removed 1 hidden item. Save to remove them from the file. Đã gỡ 1 mục ẩn. Hãy lưu để xóa chúng khỏi tệp. + Removed 1 link Đã gỡ 1 liên kết + Removed {n} hidden items. Save to remove them from the file. Đã gỡ {n} mục ẩn. Hãy lưu để xóa chúng khỏi tệp. + Removed {n} links Đã gỡ {n} liên kết + Rename bookmark Đổi tên dấu trang + Rendering: hayro (bootstrap) · UI: egui · Icons: Lucide (ISC) · Fonts: Inter, JetBrains Mono, Dancing Script (OFL) Kết xuất: hayro (khởi tạo) · Giao diện: egui · Biểu tượng: Lucide (ISC) · Phông chữ: Inter, JetBrains Mono, Dancing Script (OFL) + Repairs Sửa chữa + Repeated navigation links should be skippable. Check links that appear on every page. Các liên kết điều hướng lặp lại nên có thể bỏ qua được. Hãy kiểm tra các liên kết xuất hiện trên mọi trang. + Replace page Thay thế trang + Replace pages Thay thế trang + Replaced Đã thay thế + Replacing images arrives on the web with image file pickers Việc thay thế hình ảnh sẽ có trên web cùng với bộ chọn tệp hình ảnh + Replacing images on page {p} arrives on the web with image pickers ({i}) Việc thay thế hình ảnh trên trang {p} sẽ có trên web cùng với bộ chọn hình ảnh ({i}) + Report Options Tùy chọn báo cáo + Reset a form Đặt lại một biểu mẫu + Resize comment Đổi kích thước bình luận + Restrictions Hạn chế + Restrictions lifted Đã gỡ các hạn chế + Reverted to the last saved version Đã hoàn nguyên về phiên bản đã lưu gần nhất + Right Footer Text Văn bản chân trang phải + Right Header Text Văn bản đầu trang phải + Rotate image Xoay hình ảnh + Rotate page Xoay trang + Rotate page {label} clockwise Xoay trang {label} theo chiều kim đồng hồ + Rotate page {label} counterclockwise Xoay trang {label} ngược chiều kim đồng hồ + Rows Hàng + Run Chạy + Run JavaScript Chạy JavaScript + Run a JavaScript Chạy một JavaScript + Run form script Chạy script biểu mẫu + SHA-1 digest Giá trị băm SHA-1 + SHA-256 digest Giá trị băm SHA-256 + Sanitize Làm sạch + Sanitize Documents Làm sạch tài liệu + Save as PDF/A-1b Lưu thành PDF/A-1b + Save as PDF/A-2b Lưu thành PDF/A-2b + Save as PDF/A-3b Lưu thành PDF/A-3b + Save image Lưu hình ảnh + Save or revert changes before selecting another tag. Hãy lưu hoặc hoàn nguyên các thay đổi trước khi chọn thẻ khác. + Saved the print-ready PDF to {path} Đã lưu PDF sẵn sàng in vào {path} + Saved {name} Đã lưu {name} + Saved {place}: {before} → {after} (not smaller){detail} Đã lưu {place}: {before} → {after} (không nhỏ hơn){detail} + Saved {place}: {before} → {after} ({pct}% smaller){detail} Đã lưu {place}: {before} → {after} (nhỏ hơn {pct}%){detail} + Saved, but reopening failed: {e} Đã lưu, nhưng mở lại thất bại: {e} + Screen flicker Nhấp nháy màn hình + Screen readers choose their voice from the document's language. Set it in Document Properties > Advanced > Language. Trình đọc màn hình chọn giọng đọc dựa trên ngôn ngữ của tài liệu. Hãy đặt trong Thuộc tính tài liệu > Nâng cao > Ngôn ngữ. + Scripted content must be usable with a keyboard and assistive technology. Check the document's scripts. Nội dung có script phải dùng được bằng bàn phím và công nghệ hỗ trợ. Hãy kiểm tra các script của tài liệu. + Scripts Script + Scripts run in a sandbox without file or network access. With JavaScript off, Acrobat's standard format, validate and calculate functions still work. Script chạy trong hộp cát không có quyền truy cập tệp hoặc mạng. Khi tắt JavaScript, các hàm định dạng, xác thực và tính toán chuẩn của Acrobat vẫn hoạt động. + Security method Phương thức bảo mật + Security settings must allow assistive technology to read the content ("Enable text access for screen reader devices"). Change the document's security to allow it. Cài đặt bảo mật phải cho phép công nghệ hỗ trợ đọc nội dung ("Cho phép truy cập văn bản cho thiết bị đọc màn hình"). Hãy thay đổi bảo mật của tài liệu để cho phép. + Security will be removed when you save Bảo mật sẽ bị gỡ khi bạn lưu + Self-signed Tự ký + Serial number Số sê-ri + Set alternate text Đặt văn bản thay thế + Set bookmark destination Đặt đích của dấu trang + Set document title Đặt tiêu đề tài liệu + Set status Accepted Đặt trạng thái Đã chấp nhận + Set status Cancelled Đặt trạng thái Đã hủy + Set status Completed Đặt trạng thái Đã hoàn thành + Set status None Đặt trạng thái Không có + Set status Rejected Đặt trạng thái Đã từ chối + Set status Unmarked Đặt trạng thái Chưa đánh dấu + Set tab order Đặt thứ tự tab + Set the image of {name} Đặt hình ảnh của {name} + Shadings Chuyển sắc + Show a field Hiện một trường + Sign with a Digital ID Ký bằng Digital ID + Signed and all signatures are valid. Đã ký và tất cả chữ ký đều hợp lệ. + Signed and saved to {path} Đã ký và lưu vào {path} + Signer Người ký + Signing time Thời gian ký + Social Security Number Số an sinh xã hội + Social Security Numbers Số an sinh xã hội + Solid Liền + Squiggly Lượn sóng + Star Ngôi sao + Strong Mạnh + Structure Info Thông tin cấu trúc + Submit a form Gửi một biểu mẫu + TH and TD TH và TD + TH and TD must be children of TR TH và TD phải là con của TR + TR must be a child of Table, THead, TBody, or TFoot TR phải là con của Table, THead, TBody hoặc TFoot + Tab order Thứ tự tab + Tab order is consistent with structure order Thứ tự tab nhất quán với thứ tự cấu trúc + Table cells belong in a row. Fix the table's tags. Các ô bảng phải nằm trong một hàng. Hãy sửa thẻ của bảng. + Table rows belong directly in a table or its head, body or foot. Fix the table's tags. Các hàng bảng phải nằm trực tiếp trong bảng hoặc phần đầu, thân hay chân của nó. Hãy sửa thẻ của bảng. + Tables Bảng + Tables must contain the same number of columns in each row and rows in each column Bảng phải có cùng số cột trong mỗi hàng và cùng số hàng trong mỗi cột + Tables must have a summary Bảng phải có phần tóm tắt + Tables should have headers Bảng nên có ô tiêu đề + Tagged PDF PDF có gắn thẻ + Tagged annotations Chú thích có gắn thẻ + Tagged content Nội dung có gắn thẻ + Tagged form fields Trường biểu mẫu có gắn thẻ + Tagged multimedia Đa phương tiện có gắn thẻ + Tags give the document a logical structure that assistive technology follows. Tag the document (Automatically tag PDF). Thẻ cung cấp cho tài liệu một cấu trúc hợp lý mà công nghệ hỗ trợ dựa theo. Hãy gắn thẻ cho tài liệu (Tự động gắn thẻ PDF). + Text Field Properties Thuộc tính trường văn bản + Text language is specified Đã chỉ định ngôn ngữ văn bản + Text must contrast enough with its background for people with low vision. Check the colours by eye or with a contrast tool. Văn bản phải đủ tương phản với nền để người kém thị lực nhìn được. Hãy kiểm tra màu bằng mắt hoặc bằng công cụ đo độ tương phản. + Text recognition is already running Việc nhận dạng văn bản đang chạy + Text recognition isn't installed: its models are missing (run `cargo xtask models`, or set PDFCRAFT_MODELS). Tính năng nhận dạng văn bản chưa được cài đặt: thiếu các mô hình (hãy chạy `cargo xtask models`, hoặc đặt PDFCRAFT_MODELS). + That didn't work: an internal error stopped it ({m}). Không thành công: một lỗi nội bộ đã dừng nó ({m}). + That didn't work: an internal error stopped it ({m}). Your documents are unchanged. Không thành công: một lỗi nội bộ đã dừng nó ({m}). Các tài liệu của bạn không thay đổi. + The Keychain's digital IDs couldn't be listed: {e} Không thể liệt kê các Digital ID của Keychain: {e} + The Windows store's digital IDs couldn't be listed: {e} Không thể liệt kê các Digital ID của kho Windows: {e} + The clipboard has no image or text Bảng tạm không có hình ảnh hoặc văn bản + The document changed while you were choosing a file, so nothing was changed. Tài liệu đã thay đổi trong lúc bạn chọn tệp, nên không có gì bị thay đổi. + The document changed while you were editing field properties. Tài liệu đã thay đổi trong lúc bạn chỉnh sửa thuộc tính trường. + The document has additional actions (/AA) Tài liệu có các hành động bổ sung (/AA) + The document has document-level JavaScript Tài liệu có JavaScript cấp tài liệu + The document has no XMP metadata Tài liệu không có siêu dữ liệu XMP + The document is encrypted Tài liệu đã được mã hóa + The document is no longer open. Tài liệu không còn được mở. + The document was closed before it could be saved. Tài liệu đã bị đóng trước khi kịp lưu. + The document's security settings don't allow filling in form fields Cài đặt bảo mật của tài liệu không cho phép điền các trường biểu mẫu + The field properties could not be changed. Không thể thay đổi thuộc tính của trường. + The field properties dialog is no longer open. Hộp thoại thuộc tính trường không còn được mở. + The form asks to be submitted to {u}; PdfCraft doesn't send form data. Save the document to keep your entries. Biểu mẫu yêu cầu được gửi đến {u}; PdfCraft không gửi dữ liệu biểu mẫu. Hãy lưu tài liệu để giữ các mục bạn đã nhập. + The form asks viewers to make appearances (NeedAppearances) Biểu mẫu yêu cầu trình xem tạo diện mạo (NeedAppearances) + The linked PDF opened, but its named destination was not applied. PDF được liên kết đã mở, nhưng đích đến có tên của nó chưa được áp dụng. + The linked PDF opened, but its page destination was out of range. PDF được liên kết đã mở, nhưng đích đến trang của nó nằm ngoài phạm vi. + The operation failed. Thao tác thất bại. + The pages were extracted but not deleted, because the document changed while you were choosing a folder. Các trang đã được trích xuất nhưng chưa bị xóa, vì tài liệu đã thay đổi trong lúc bạn chọn thư mục. + The passwords don't match. Các mật khẩu không khớp. + The selected area has been copied ({w} × {h} pixels) Đã sao chép vùng đã chọn ({w} × {h} điểm ảnh) + The selected fields could not be found. Select them again. Không tìm thấy các trường đã chọn. Hãy chọn lại. + The standard fonts can't draw “{c}” ({code}). Only Western European characters can be added as text for now. Phông chữ chuẩn không thể vẽ “{c}” ({code}). Hiện chỉ có thể thêm các ký tự Tây Âu làm văn bản. + The title in the metadata and the document information differ Tiêu đề trong siêu dữ liệu và trong thông tin tài liệu khác nhau + The window should show a meaningful title rather than the file name. Set a title and Initial View > Show: Document Title. Cửa sổ nên hiển thị một tiêu đề có ý nghĩa thay vì tên tệp. Hãy đặt tiêu đề và Chế độ xem ban đầu > Hiện: Tiêu đề tài liệu. + There are no redaction marks to apply Không có dấu đánh dấu xóa nào để áp dụng + This PDF uses the unsupported {s} action. PDF này dùng hành động {s} chưa được hỗ trợ. + This compatibility level supports only plain ASCII passwords. Mức tương thích này chỉ hỗ trợ mật khẩu ASCII thuần. + This document can't be checked: it couldn't be read for editing Không thể kiểm tra tài liệu này: không đọc được để chỉnh sửa + This document has no attachments. Tài liệu này không có tệp đính kèm. + This document has no bookmarks. Tài liệu này không có dấu trang. + This document has no form fields. Tài liệu này không có trường biểu mẫu. + This document has no layers. Tài liệu này không có lớp. + This file is already as small as it can be made ({size}). No copy was saved. Tệp này đã nhỏ hết mức có thể ({size}). Không có bản sao nào được lưu. + This form also contains XFA data, which PdfCraft doesn't read yet. You can fill its fields, but Acrobat may show the XFA values instead. Biểu mẫu này còn chứa dữ liệu XFA mà PdfCraft chưa đọc được. Bạn có thể điền các trường của nó, nhưng Acrobat có thể hiển thị giá trị XFA thay thế. + Thumbnails Hình thu nhỏ + Timed responses Phản hồi có giới hạn thời gian + Type Password Nhập mật khẩu + Type a password. Nhập một mật khẩu. + Typewriter Máy đánh chữ + Unchecked Chưa đánh dấu chọn + Undid {label} Đã hoàn tác {label} + Unlock comment Mở khóa bình luận + Unlocked {n} of {m} files Đã mở khóa {n} trên {m} tệp + Update background Cập nhật nền + Update header & footer Cập nhật đầu trang & chân trang + Update watermark Cập nhật hình mờ + Use {what} Dùng {what} + Valid Hợp lệ + Valid from Có hiệu lực từ + Valid to Có hiệu lực đến + Validate Xác thực + Validity ends Hiệu lực kết thúc + Validity starts Hiệu lực bắt đầu + Vertically Theo chiều dọc + Video, sound and rich media must be tagged to be announced. Tag the multimedia annotations. Video, âm thanh và đa phương tiện phong phú phải được gắn thẻ để được đọc to. Hãy gắn thẻ cho các chú thích đa phương tiện. + Viewing Xem + Weak Yếu + White on black Trắng trên nền đen + Wrote 1 file to {dir} Đã ghi 1 tệp vào {dir} + Wrote {n} files to {dir} Đã ghi {n} tệp vào {dir} + X Object Forms Đối tượng biểu mẫu X + Yellow Vàng + Yellow on black Vàng trên nền đen + You can pin up to {n} folders. Unpin one first. Bạn có thể ghim tối đa {n} thư mục. Hãy bỏ ghim một thư mục trước. + Your name Tên của bạn + Zip Code Mã bưu chính + Zip Code + 4 Mã bưu chính + 4 + `{command}` {when} `{command}` {when} + a bookmark cannot be moved inside itself không thể di chuyển dấu trang vào bên trong chính nó + a document must keep at least one page tài liệu phải giữ ít nhất một trang + average trung bình + maximum tối đa + minimum tối thiểu + no such document không có tài liệu như vậy + nothing in the file matches this document không có gì trong tệp khớp với tài liệu này + nothing to redo không có gì để làm lại + nothing to undo không có gì để hoàn tác + pages trang + product (x) tích (x) + sum (+) tổng (+) + the document has no form fields tài liệu không có trường biểu mẫu + the document has no page tree tài liệu không có cây trang + the document has no tags tài liệu không có thẻ + the document is protected by a password tài liệu được bảo vệ bằng mật khẩu + the image is empty hình ảnh trống + the password is incorrect mật khẩu không đúng + the text recognition models are not installed (reinstall PdfCraft, or set PDFCRAFT_MODELS to the folder that holds them) các mô hình nhận dạng văn bản chưa được cài đặt (hãy cài đặt lại PdfCraft, hoặc đặt PDFCRAFT_MODELS thành thư mục chứa chúng) + the title must not be empty tiêu đề không được để trống + there are no pages to print không có trang nào để in + there are no redaction marks to apply không có dấu đánh dấu xóa nào để áp dụng + this document is signed: rewriting it would invalidate its signatures (save it incrementally instead) tài liệu này đã được ký: việc ghi lại nó sẽ làm mất hiệu lực các chữ ký của nó (hãy lưu tăng dần thay vào đó) + this file isn't XFDF, FDF, XML or text form data tệp này không phải dữ liệu biểu mẫu XFDF, FDF, XML hoặc văn bản + {0}: {1} {0}: {1} + {field}: {e} {field}: {e} + {file} is too large for a stamp (at most {n} MB) {file} quá lớn để làm con dấu (tối đa {n} MB) + {folder} is already pinned to Home {folder} đã được ghim vào Trang chủ + {label} failed: {e} {label} thất bại: {e} + {name} has no action {name} không có hành động + {name} is too large for a word list (at most 1 MB). {name} quá lớn để làm danh sách từ (tối đa 1 MB). + {name} submits the form to {url}; PdfCraft doesn't send form data. Save the document to keep your entries. {name} gửi biểu mẫu đến {url}; PdfCraft không gửi dữ liệu biểu mẫu. Hãy lưu tài liệu để giữ các mục bạn đã nhập. + {name}: choosing images arrives on the web with file pickers for images {name}: việc chọn hình ảnh sẽ có trên web cùng với bộ chọn tệp hình ảnh + {name}: the {other} action isn't supported yet {name}: hành động {other} chưa được hỗ trợ + {who} in this document tried to open an address PdfCraft won't open: {e}. {who} trong tài liệu này đã cố mở một địa chỉ mà PdfCraft sẽ không mở: {e}. + {who} in this document tried to open an address PdfCraft won't open: {e}. Only web (http, https) and email (mailto) links open from documents. {who} trong tài liệu này đã cố mở một địa chỉ mà PdfCraft sẽ không mở: {e}. Chỉ các liên kết web (http, https) và email (mailto) mới được mở từ tài liệu. +animation effects Off Tắt +animation effects On Bật + View more Xem thêm + View less Xem ít hơn + Only continue if you trust this document. An address can carry information from the document, such as what you typed into its form. Chỉ tiếp tục nếu bạn tin cậy tài liệu này. Một địa chỉ có thể mang thông tin từ tài liệu, chẳng hạn những gì bạn đã nhập vào biểu mẫu của nó. + Print single-sided. Keep the sheets in order, cut at the marks, then stack the piles left to right, top to bottom. In một mặt. Giữ các tờ theo thứ tự, cắt theo các dấu, rồi xếp các chồng từ trái sang phải, từ trên xuống dưới. + Sign a sheet of white paper and take a photo of it in bright, even light (use the flash). Choose the photo or drop it here: PdfCraft finds the signature and removes the paper. Hãy ký lên một tờ giấy trắng và chụp ảnh dưới ánh sáng sáng, đều (dùng đèn flash). Chọn ảnh hoặc thả vào đây: PdfCraft sẽ tìm chữ ký và loại bỏ phần giấy. + This field's font can't draw “{c}” ({code}), so PdfCraft shows ? in its place. The value is saved, and other PDF viewers redraw the field from it. Phông chữ của trường này không thể vẽ “{c}” ({code}), nên PdfCraft hiển thị ? thay thế. Giá trị vẫn được lưu, và các trình xem PDF khác vẽ lại trường từ giá trị đó. + {chars} can't be written into the PDF yet: Fill & Sign text is Western European only. Pick a numeric format such as dd.mm.yyyy. Chưa thể ghi {chars} vào PDF: văn bản của Điền & Ký chỉ hỗ trợ ký tự Tây Âu. Hãy chọn định dạng số như dd.mm.yyyy. + January Tháng 1 + February Tháng 2 + March Tháng 3 + April Tháng 4 + May Tháng 5 + June Tháng 6 + July Tháng 7 + August Tháng 8 + September Tháng 9 + October Tháng 10 + November Tháng 11 + December Tháng 12 +calendar date January tháng 1 +calendar date February tháng 2 +calendar date March tháng 3 +calendar date April tháng 4 +calendar date May tháng 5 +calendar date June tháng 6 +calendar date July tháng 7 +calendar date August tháng 8 +calendar date September tháng 9 +calendar date October tháng 10 +calendar date November tháng 11 +calendar date December tháng 12 +calendar weekday Su CN +calendar weekday Mo T2 +calendar weekday Tu T3 +calendar weekday We T4 +calendar weekday Th T5 +calendar weekday Fr T6 +calendar weekday Sa T7 +signature pad Type Nhập chữ +scroll speed Slow Chậm +scroll speed Normal Bình thường +scroll speed Fast Nhanh +certificate Subject Chủ thể chứng chỉ +certificate Issued to Cấp cho +certificate Issued by Cấp bởi +certificate Valid from Có hiệu lực từ +certificate Valid to Có hiệu lực đến +certificate Intended usage Mục đích sử dụng +certificate Version Phiên bản +certificate Serial number Số sê-ri +certificate Issuer Tổ chức cấp +certificate Validity starts Hiệu lực bắt đầu +certificate Validity ends Hiệu lực kết thúc +certificate Public key Khóa công khai +certificate Basic constraints Ràng buộc cơ bản +certificate Key usage Mục đích sử dụng khóa +certificate Self-signed Tự ký +certificate SHA-1 digest Giá trị băm SHA-1 +certificate SHA-256 digest Giá trị băm SHA-256 + Certificate authority Tổ chức chứng thực + End entity Thực thể cuối + Float panel Cho bảng nổi + Move to group Chuyển vào nhóm + Panels Bảng + Resize panel window Đổi kích thước cửa sổ bảng + Resize panels Đổi kích thước các bảng + Grab bag Tổng hợp + No contributor data was built into this copy. Bản sao này không có dữ liệu người đóng góp. + No model credits were built into this copy. Bản sao này không có ghi công mô hình. + Reverse the order Đảo thứ tự + Show Hiện + Sort Sắp xếp + Table Bảng + The field {name} no longer exists. Trường {name} không còn tồn tại. + {n} contributors · {c} commits {n} người đóng góp · {c} commit + Username Tên người dùng + Display name Tên hiển thị + Real name Tên thật + Name (A–Z) Tên (A–Z) + Merged PRs PR đã gộp + PRs PR + Commits Commit + Lines added Dòng thêm + +LOC +LOC + Lines deleted Dòng xóa + −LOC −LOC + Line delta Chênh lệch dòng + ΔLOC ΔLOC + Binary assets added Tài nguyên nhị phân đã thêm + +Bin +Bin + Binary assets removed Tài nguyên nhị phân đã xóa + −Bin −Bin + First commit Commit đầu tiên + First Đầu tiên + Last commit Commit cuối cùng + Last Cuối cùng + Company Công ty + Model Mô hình + Version Phiên bản + % of all commits % tổng số commit + Lines +/− Dòng +/− + @{login}: {prs} PRs, {commits} commits, +{added} / −{deleted} lines (Δ {delta}), +{bin_added} / −{bin_deleted} binary assets, {first} – {last} @{login}: {prs} PR, {commits} commit, +{added} / −{deleted} dòng (Δ {delta}), +{bin_added} / −{bin_deleted} tài nguyên nhị phân, {first} – {last} + of {name} của {name} + of {pages} trên {pages} + on page {label} trên trang {label} + open to see what it will include mở để xem nó sẽ bao gồm những gì + ships in milestone {m} sẽ phát hành ở cột mốc {m} + signature chữ ký + sorted ascending sắp xếp tăng dần + sorted descending sắp xếp giảm dần + to đến + to {n} đến {n} + watermark hình mờ + yyyy or yy year · m or mm month · mmm or mmmm month name · d or dd day · ddd or dddd weekday. H, h, M, s and t are time letters and can't be used on their own: put {escape} before a letter to show it as is. yyyy hoặc yy năm · m hoặc mm tháng · mmm hoặc mmmm tên tháng · d hoặc dd ngày · ddd hoặc dddd thứ trong tuần. H, h, M, s và t là các chữ cái chỉ thời gian và không thể dùng riêng lẻ: hãy đặt {escape} trước một chữ cái để hiển thị nguyên văn. + {c} of {n}{more} {c} trên {n}{more} + {dpi} pixels/inch {dpi} điểm ảnh/inch + {kind} Properties Thuộc tính {kind} + {kind} field Trường {kind} + {kind} · page {p} {kind} · trang {p} + {kind} — click to show it on the page {kind} — bấm để hiển thị nó trên trang + {k} of {n} {k} trên {n} + {label} (1 issue) {label} (1 vấn đề) + {label} ({n} issues) {label} ({n} vấn đề) + {month} {day}, {y} {day} {month}, {y} + {month} {y} {month} {y} + {msg} to {dir} {msg} vào {dir} + {name} (default) {name} (mặc định) + {name} can't be combined: {why} Không thể kết hợp {name}: {why} + {name} is read-only {name} chỉ đọc + {name} — unsaved changes {name} — có thay đổi chưa lưu + {n} days ago {n} ngày trước + {n} differences found Tìm thấy {n} điểm khác biệt + {n} fields selected Đã chọn {n} trường + {n} files {n} tệp + {n} files done {n} tệp đã xong + {n} files need attention {n} tệp cần chú ý + {n} h ago {n} giờ trước + {n} instances {n} lần xuất hiện + {n} issues {n} vấn đề + {n} marks {n} dấu + {n} match(es) marked for redaction. Đã đánh dấu {n} kết quả khớp để xóa. + {n} measurements use an unsupported format and are left out. {n} phép đo dùng định dạng không được hỗ trợ và bị bỏ qua. + {n} min ago {n} phút trước + {n} pages {n} trang + {n} pages selected. Đã chọn {n} trang. + {n} selected Đã chọn {n} + {n} tags {n} thẻ + {n} word(s) or phrase(s) {n} từ hoặc cụm từ + {n} {kind} {n} {kind} + {rule} - {status} {rule} - {status} + {s} action Hành động {s} + {verb} Background {verb} nền + {verb} Header and Footer {verb} đầu trang và chân trang + {verb} Watermark {verb} hình mờ + {verb} as "{name}" {verb} thành "{name}" + {who} in this document wants to open this address in your browser: {who} trong tài liệu này muốn mở địa chỉ này trong trình duyệt của bạn: + {who} in this document wants to open your email app with this address: {who} trong tài liệu này muốn mở ứng dụng email của bạn với địa chỉ này: + {words} on {pages} {words} trên {pages} + — (protection is applied when you save) — (việc bảo vệ được áp dụng khi bạn lưu) + “{name}” has security restrictions. Enter its permissions password to lift them. “{name}” có các hạn chế bảo mật. Hãy nhập mật khẩu quyền hạn của nó để gỡ bỏ chúng. + “{name}” is protected. Enter a password to open it. “{name}” được bảo vệ. Hãy nhập mật khẩu để mở. +@plural {n} page|{n} pages {n} trang +@plural {n} file|{n} files {n} tệp +@plural {n} field|{n} fields {n} trường +@plural {n} comment|{n} comments {n} bình luận +@plural {n} result|{n} results {n} kết quả +@plural {n} field name collides with earlier files and will be renamed: {list}|{n} field names collide with earlier files and will be renamed: {list} {n} tên trường trùng với các tệp trước và sẽ được đổi tên: {list} +@plural {n} object selected|{n} objects selected Đã chọn {n} đối tượng +@plural Downloaded {n} PDF|Downloaded {n} PDFs Đã tải xuống {n} PDF +key Ctrl Ctrl +key Shift Shift +key Delete Delete +key Esc Esc +key Home Home +key End End +key Space Space + Move tag earlier Chuyển thẻ lên trước + Move tag later Chuyển thẻ ra sau + Only allow this if you trust the source document. Chỉ cho phép nếu bạn tin tưởng tài liệu nguồn. + Open this local PDF? Mở PDF cục bộ này? + This document is trying to open a local file: Tài liệu này đang cố mở một tệp cục bộ: + Remove "{name}" from this list? The file itself is not deleted. Gỡ "{name}" khỏi danh sách này? Bản thân tệp không bị xóa. + Minimize Thu nhỏ + Maximize Phóng to + Restore Khôi phục + Use system title bar Dùng thanh tiêu đề hệ thống + Show a basic title bar for the window buttons instead of the tab strip. GNOME doesn't draw title bars for apps, so this one doesn't follow its theme. Hiện thanh tiêu đề đơn giản cho các nút cửa sổ thay vì dải tab. GNOME không vẽ thanh tiêu đề cho ứng dụng, nên thanh này không theo chủ đề của nó. diff --git a/crates/ui-egui/tests/fonts.rs b/crates/ui-egui/tests/fonts.rs index 3ec478255f..258abe89c4 100644 --- a/crates/ui-egui/tests/fonts.rs +++ b/crates/ui-egui/tests/fonts.rs @@ -313,6 +313,7 @@ fn primary_ui_fonts_cover_latin_and_cyrillic_catalogs() { ("tr", include_str!("../src/i18n/tr.tsv")), ("sl", include_str!("../src/i18n/sl.tsv")), ("lt", include_str!("../src/i18n/lt.tsv")), + ("vi", include_str!("../src/i18n/vi.tsv")), ] { let mut text = String::from("áčďéěíňóřšťúůýžÁČĎÉĚÍŇÓŘŠŤÚŮÝŽãõçâêôàÃÕÇÂÊÔÀñÑüÜäÄöÖőűß„“¿¡«»…ґҐєЄіІїЇәғқңөұүһӘҒҚҢӨҰҮҺ"); for line in catalog.lines().filter(|l| !l.starts_with('#')) { diff --git a/docs/gaps.md b/docs/gaps.md index 34efa4eff1..9f016bf0de 100644 --- a/docs/gaps.md +++ b/docs/gaps.md @@ -1,6 +1,6 @@ # Where PdfCraft falls short of Acrobat Pro -> **Last reviewed:** 2026-10-12 · **Last updated:** 2026-10-12 · **Change:** minor (gap 6: #1398 stamps read upright on rotated pages; estimates unchanged) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) +> **Last reviewed:** 2026-10-12 · **Last updated:** 2026-10-13 · **Change:** minor (gap 14: Vietnamese catalog shipped; Hindi/Indonesian/Korean and Arabic RTL remain) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) > **Last reviewed:** 2026-10-12 · **Last updated:** 2026-10-12 · **Change:** minor (gap 6: #1317, #1327, #1302, #1315 and #1340; estimates unchanged) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) > **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-12 · **Change:** minor (#1316: replacing a line keeps a neighbouring line whose glyph box overlaps; gap 3 remains) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) > **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-12 · **Change:** gap 4 closed: the web build prints through the browser's print dialog; exclusive image-crop resize follow-up; minor (Word invoice regression coverage, #773; Office fidelity still partial; gap 2: hayro patch counts after the native-gradient backport) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) @@ -38,7 +38,7 @@ update the numbers. | 11 | Accessibility: checker only, no tagging tools | feature | 40–70 | [target-app-parity.md](target-app-parity.md) | | 12 | No measured fidelity harness against Acrobat | quality | (in 2) | [target-app-parity.md](target-app-parity.md) | | 13 | Performance budgets and lazy loading of very large files | performance | 25–45 | this file | -| 14 | Arabic not mirrored; no Hindi, Indonesian, Korean, Vietnamese | localization | 30–50 | [localization-parity.md](localization-parity.md) | +| 14 | Arabic not mirrored; no Hindi, Indonesian, Korean | localization | 25–45 | [localization-parity.md](localization-parity.md) | | 15 | Forms: JavaScript object model, actions, submit, XFA depth | feature | 40–75 | [pdf-spec-parity.md](pdf-spec-parity.md) | | 16 | UI precision gaps (multi-select move, rulers, accelerators, windows) | UI/UX | 30–60 | [ui-parity.md](ui-parity.md) | | 17 | Certificate security and other protect gaps | feature, spec | 15–30 | [pdf-spec-parity.md](pdf-spec-parity.md) | @@ -272,14 +272,15 @@ update the numbers. to edit. - **Estimate:** 25–45 h. **Doc:** this file. -### 14. Arabic not mirrored; no Hindi, Indonesian, Korean, Vietnamese +### 14. Arabic not mirrored; no Hindi, Indonesian, Korean - **Missing:** a right-to-left layout (panels, menus, alignment), bidirectional text in the text - layout itself (wrapping, typed text); catalogs for Hindi, Indonesian, Korean and Vietnamese - (Acrobat ships Korean; it ships Arabic in its Middle East edition; it ships none of the other - three). + layout itself (wrapping, typed text); catalogs for Hindi, Indonesian and Korean (Acrobat ships + Korean; it ships Arabic in its Middle East edition; it ships none of Hindi or Indonesian). + Vietnamese ships as a catalog (`vi`, 100% of the current localizable union) but stays `partial` + like other non-English languages (no translated help; engine/OS details stay English). - **Evidence:** [localization.md](localization.md) §Arabic; `misc.rtl-ui` planned. -- **Estimate:** 30–50 h (Arabic RTL 20–35, four catalogs 10–15 plus review). **Doc:** +- **Estimate:** 25–45 h (Arabic RTL 20–35, three catalogs 8–12 plus review). **Doc:** [localization-parity.md](localization-parity.md). ### 15. Forms: JavaScript object model, actions, submit, XFA depth diff --git a/docs/localization-parity.md b/docs/localization-parity.md index ccd5f88b90..d4a9a166c4 100644 --- a/docs/localization-parity.md +++ b/docs/localization-parity.md @@ -1,6 +1,6 @@ # Localization parity -> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-12 · **Change:** minor (list all registered interface languages; preserve the original coverage snapshot) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) +> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-13 · **Change:** minor (Vietnamese 100% of current key union; native-speaker community review; twelve-language mean ≈68%) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) Per-language status of PdfCraft's interface against Acrobat Pro's. How translations work and how to add a language: [localization.md](localization.md). Summary in [ROADMAP.md](../ROADMAP.md). @@ -8,10 +8,11 @@ add a language: [localization.md](localization.md). Summary in [ROADMAP.md](../R ## How this was measured - **Strings translated** is measured: the catalogs in `crates/ui-egui/src/i18n/.tsv`, counted - as distinct `(context, English)` keys with a non-empty translation. The denominator is the union - of keys across all catalogs, **2,143**. Cross-check: of the 1,151 distinct `tl!("…")` literals in - `crates/ui-egui/src`, every full catalog covers 96.5–99.4% (7 literals are in no catalog yet). - English is built in. + as distinct `(context, English)` keys with a non-empty translation. The **current** denominator is + the union of keys across all catalogs (**2,590** plain keys as of 2026-10-13, plus language-specific + context rows such as Vietnamese `theme`/`Appearance`). The twelve-language percentage table below + still quotes the **historical 2,143-key snapshot** from 2026-10-10 for every language except + Vietnamese (re-measured against the current union). English is built in. - **Not counted:** error details from the engine and the operating system, which are shown in English inside a translated frame; there is no translated user documentation or help yet (Acrobat ships localized help). @@ -38,15 +39,17 @@ add a language: [localization.md](localization.md). Summary in [ROADMAP.md](../R | Japanese | `ja` | 2,123 (99.1%) | dialogs and tooltips; no help | BIZ UDPGothic from craft-fonts; IME patched on macOS, Windows, X11, Wayland; vertical text renders but can't be edited | no | partial | yes | 4–8 | | German | `de` | 2,128 (99.3%) | dialogs and tooltips; no help | Latin | community, in progress (#828: terminology, clipping) | partial | yes | 2–4 | | Korean | `ko` | 0 | none | Hangul IME patched (Microsoft and Apple Korean, `vendor/README.md` winit 3, 6, 9, 10); no Hangul UI face in craft-fonts | no | none | yes | 6–10 | -| Vietnamese | `vi` | 0 | none | Latin with stacked diacritics; bundled Inter covers them (not tested) | no | none | no | 3–5 | +| Vietnamese | `vi` | 2,591 (100% of current union + theme Appearance) | dialogs and tooltips; no help | Latin with stacked diacritics; bundled Inter covers them (fonts test) | community | partial | no | 2–4 | -**Localization dimension ≈ 59%**: the mean over the twelve, counting a catalog's percentage but only -60% for Chinese and Arabic until their script problems are fixed, and 0 for the four missing -languages. **≈ 60–115 h** to bring all twelve to `full`, of which ≈ 35–60 h is engineering (Hans -face, RTL layout, bidi text) and the rest catalogs and fixes; native-speaker review needs humans. +**Localization dimension ≈ 68%**: the mean over the twelve, counting a catalog's percentage but only +60% for Chinese and Arabic until their script problems are fixed, and 0 for Hindi, Indonesian and +Korean (still missing). Vietnamese moved from 0% to 100% in that mean (59% → 68%). **≈ 55–110 h** +to bring all twelve to `full`, of which ≈ 35–60 h is engineering (Hans face, RTL layout, bidi text) +and the rest catalogs and fixes; native-speaker review needs humans. No language is `full` except English: every catalog leaves engine error details in English, and -none has translated help. +none has translated help. Vietnamese's **To `full`** hours are therefore residual help/docs polish +(catalog and script work are already done), not missing UI strings. ## Other shipped languages @@ -65,15 +68,16 @@ none has translated help. | Slovenian | `sl` | 2,324 entries | partial | no | | Greek | `el` | 2,341 entries | partial | no | | Turkish | `tr` | 2,313 entries | partial | yes | -| Lithuanian | `lt` | 2,578 entries | partial; community native-speaker review ([#1401](https://github.com/storytold/pdfcraft/pull/1401)) | no | +| Lithuanian | `lt` | 2,585 entries | partial; community native-speaker review ([#1401](https://github.com/storytold/pdfcraft/pull/1401)) | no | -**14 other languages** ship (21 catalogs plus English, 22 interface languages in Preferences). -The entry counts without percentages were measured on 2026-10-12; they are not percentages of the older 2,143-key snapshot above. Their presence does not imply a detailed linguistic or runtime review. -Acrobat languages PdfCraft lacks: Danish, Dutch, Finnish, Norwegian, Swedish, Hebrew. +**14 other languages** ship (22 catalogs plus English = **23** interface languages in Preferences). +The entry counts without percentages were measured on 2026-10-12–13; they are not percentages of the older 2,143-key snapshot above. Their presence does not imply a detailed linguistic or runtime review. +Acrobat languages PdfCraft lacks: Danish, Dutch, Finnish, Norwegian, Swedish, Hebrew. Vietnamese is shipped here but not by Acrobat. ## Revision history | Date | Change | Summary | |---|---|---| +| 2026-10-13 | minor | Vietnamese (`vi`) catalog: 2,591 entries (100% of current key union + `theme`/`Appearance`); twelve-language mean ≈ 68%; native-speaker community review; registered with `plural_none` | | 2026-10-12 | minor | Added current counts for Kazakh, Polish, Slovenian, Greek, Turkish and Lithuanian; retained existing language assessments and the original percentage snapshot | | 2026-10-10 | major | Created. Catalog counts measured from `crates/ui-egui/src/i18n/*.tsv` against the 2,143-key union; Acrobat's localizations from its bundle's `.lproj` and Sequences folder names | diff --git a/docs/localization.md b/docs/localization.md index 05240cafbf..89ef2d74d6 100644 --- a/docs/localization.md +++ b/docs/localization.md @@ -1,10 +1,10 @@ # Interface language -Choose **Menu > Edit > Preferences…** (Command-comma on macOS, Ctrl-comma elsewhere) **> Interface language** and select **Auto**, **English**, **日本語**, **简体中文**, **繁體中文**, **Čeština**, **Português (Brasil)**, **Deutsch**, **Español**, **Français**, **Русский**, **Қазақша**, **Български**, **తెలుగు**, **Magyar**, **Українська**, **Italiano**, **العربية**, **Polski**, **Slovenščina**, **Ελληνικά**, **Türkçe** or **Lietuvių**. The change applies immediately and persists between launches. Command ids, document contents and file names are unchanged. +Choose **Menu > Edit > Preferences…** (Command-comma on macOS, Ctrl-comma elsewhere) **> Interface language** and select **Auto**, **English**, **日本語**, **简体中文**, **繁體中文**, **Čeština**, **Português (Brasil)**, **Deutsch**, **Español**, **Français**, **Русский**, **Қазақша**, **Български**, **తెలుగు**, **Magyar**, **Українська**, **Italiano**, **العربية**, **Polski**, **Slovenščina**, **Ελληνικά**, **Türkçe**, **Lietuvių** or **Tiếng Việt**. The change applies immediately and persists between launches. Command ids, document contents and file names are unchanged. Displayed keyboard shortcuts use the same active interface language. For example, German shows `Strg+K` and `Strg+Umschalt+S` in the toolbar, menus, command palette, tooltips and Keyboard shortcuts dialog; macOS keeps its modifier symbols (`⌘`, `⇧`, `⌃`). Key names have their own `key` catalog context, so the Delete key can read `Entf` while the command remains `Löschen`. A missing key-name entry falls back to the English key name. Actual bindings and machine-facing command ids remain stable. -**Auto** (the default) follows the system language: `LC_ALL`, `LC_MESSAGES` or `LANG`, then the preferred-languages list on macOS. Any Portuguese locale (`pt_BR`, `pt_PT`) uses the Brazilian catalog, any French locale (`fr`, `fr_FR`, `fr_CA`, `fr_BE`) the French one, any German locale (`de`, `de_DE`, `de_AT`, `de_CH`) the German one, and Chinese locales for Taiwan, Hong Kong and Macau (`zh_TW`, `zh_HK`, `zh_MO`, `zh-Hant`) the Traditional Chinese one; other Chinese locales (`zh`, `zh_CN`, `zh_SG`, `zh-Hans`) the Simplified Chinese one. Telugu locales (`te`, `te_IN`) use the Telugu catalog, Bulgarian locales (`bg`, `bg_BG`) the Bulgarian one, and Hungarian locales (`hu`, `hu_HU`) the Hungarian one, and Ukrainian locales (`uk`, `uk_UA`) the Ukrainian one, and Italian locales (`it`, `it_IT`, `it_CH`) the Italian one, and Arabic locales (`ar`, `ar_MA`, `ar_EG`, `ar_SA`, …) the Arabic one, and Turkish locales (`tr`, `tr_TR`) the Turkish one, and Slovenian locales (`sl`, `sl_SI`) the Slovenian one. A system language without a catalog shows English. On Windows, **Auto** uses the Windows display languages, in preference order, when no supported locale is selected by those environment variables. Neutral `C`/`POSIX` locale values (including `C.UTF-8`) inherited from a launcher do not override the Windows display language; explicitly named supported locales such as `fr_FR.UTF-8` still do. The query asks Windows directly (`GetUserPreferredUILanguages`, through the `sys-locale` crate) without starting a process, and is cached for the process. If detection fails or the display language has no catalog, PdfCraft shows English. +**Auto** (the default) follows the system language: `LC_ALL`, `LC_MESSAGES` or `LANG`, then the preferred-languages list on macOS. Any Portuguese locale (`pt_BR`, `pt_PT`) uses the Brazilian catalog, any French locale (`fr`, `fr_FR`, `fr_CA`, `fr_BE`) the French one, any German locale (`de`, `de_DE`, `de_AT`, `de_CH`) the German one, and Chinese locales for Taiwan, Hong Kong and Macau (`zh_TW`, `zh_HK`, `zh_MO`, `zh-Hant`) the Traditional Chinese one; other Chinese locales (`zh`, `zh_CN`, `zh_SG`, `zh-Hans`) the Simplified Chinese one. Telugu locales (`te`, `te_IN`) use the Telugu catalog, Bulgarian locales (`bg`, `bg_BG`) the Bulgarian one, and Hungarian locales (`hu`, `hu_HU`) the Hungarian one, and Ukrainian locales (`uk`, `uk_UA`) the Ukrainian one, and Italian locales (`it`, `it_IT`, `it_CH`) the Italian one, and Arabic locales (`ar`, `ar_MA`, `ar_EG`, `ar_SA`, …) the Arabic one, and Turkish locales (`tr`, `tr_TR`) the Turkish one, and Slovenian locales (`sl`, `sl_SI`) the Slovenian one, and Vietnamese locales (`vi`, `vi_VN`) the Vietnamese one. A system language without a catalog shows English. On Windows, **Auto** uses the Windows display languages, in preference order, when no supported locale is selected by those environment variables. Neutral `C`/`POSIX` locale values (including `C.UTF-8`) inherited from a launcher do not override the Windows display language; explicitly named supported locales such as `fr_FR.UTF-8` still do. The query asks Windows directly (`GetUserPreferredUILanguages`, through the `sys-locale` crate) without starting a process, and is cached for the process. If detection fails or the display language has no catalog, PdfCraft shows English. The control channel exposes the setting through `ui.set`: @@ -12,16 +12,17 @@ The control channel exposes the setting through `ui.set`: {"method":"ui.set","params":{"key":"language","value":"ja"}} ``` -The value is `auto` or a language code (`en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr`, `lt`), in any case. `ui.state` reports `language` as written in the preferences (`auto`, `en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr` or `lt`). Unknown values return an error without changing the current setting. Preferences saved before this setting existed follow the system language. +The value is `auto` or a language code (`en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr`, `lt` or `vi`), in any case. `ui.state` reports `language` as written in the preferences (`auto`, `en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr`, `lt` or `vi`). Unknown values return an error without changing the current setting. Preferences saved before this setting existed follow the system language. -Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Japanese, Traditional Chinese, Simplified Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Italian, Brazilian Portuguese and Arabic translate them (about 2,000–2,140 entries each); Czech and Turkish cover the menus so far. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). -Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Japanese, Traditional Chinese, Simplified Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Italian, Brazilian Portuguese, Arabic and Slovenian translate them (about 2,000–2,190 entries each); Czech covers the menus so far. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). +Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Most shipped catalogs (Japanese, Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Italian, Brazilian Portuguese, Arabic, Slovenian, Kazakh, Polish, Greek, Turkish, Lithuanian, Vietnamese and others) cover the current localizable surface (about 2,000–2,600 entries each); Czech still covers mainly the menus. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Document contents, filenames, CLI/MCP/control protocol strings and external help stay outside the catalog. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). Whole sentences that the layers below word — what the accessibility checker found, what the PDF/A verifier reports, what a signature's details say, what is wrong with the pages to print, what an edit is called in the history — are translated too, because those layers hand the sentence over apart from the document's own words. See [Sentences the engine words](#sentences-the-engine-words). The Ukrainian catalog has 2,047 entries, written from the meaning of the English labels using Ukrainian computing vocabulary. Commands use infinitives; fixed-count messages use count-neutral wording. Plural-aware messages use the three [CLDR Ukrainian integer forms](https://www.unicode.org/cldr/charts/48/supplemental/language_plural_rules.html#uk): `1 сторінка`, `2 сторінки`, `5 сторінок`; 11–14 take the third form, while 21 and 22 return to the first and second. Calendar dates use genitive month names (`9 жовтня 2026`), while headings use standalone names (`Жовтень 2026`). Home recommendation cards grow to fit translated text; the toolbar search hint truncates before the shortcut, with the full label available on hover. -The Lithuanian catalog has 2,578 entries and three integer plural forms. Calendar headings use standalone month names; dates use genitive forms. Coverage tests check commands/tools, scanned literal and direct lookups, and source/context keys in the other bundled catalogs. Calendar, inspector and password-dialog UI regressions check dynamic labels and preserve document values. A native Lithuanian-speaking contributor has reviewed the translation. +The Lithuanian catalog has 2,585 entries and three integer plural forms. Calendar headings use standalone month names; dates use genitive forms. Coverage tests check commands/tools, scanned literal and direct lookups, and source/context keys in the other bundled catalogs. Calendar, inspector and password-dialog UI regressions check dynamic labels and preserve document values. A native Lithuanian-speaking contributor has reviewed the translation. + +The Vietnamese catalog has 2,591 entries and one plural form (`plural_none`). Preferences theme `Appearance` uses context `theme` → `Giao diện`; object/comment/signature appearance stays plain `Diện mạo`. Form fields use `Trường`; redaction apply wording states permanent removal. Calendar months are numeric (`Tháng 1`…`12` / `tháng 1`…`12`). Coverage tests require every current command, UI literal, bundled key and credit label. A native Vietnamese-speaking contributor has reviewed the translation. Status stays `partial`: no translated help, and engine/OS details stay English inside a translated frame. Edit text reads Hebrew lines in typing order and writes them back in drawing order (`crates/edit/src/bidi.rs`); letters the page's own font lacks are drawn with the craft-fonts `Hebr` face (Noto Sans Hebrew) as Type 3 glyphs, and a build without one says so. Hebrew points (niqqud) can't be written yet. The craft-fonts revision pinned for CI and releases has no `Hebr` face yet, so until one is added releases report that error instead of drawing the missing letters. diff --git a/docs/target-app-parity.md b/docs/target-app-parity.md index 85d6f5a8b6..e7698baeef 100644 --- a/docs/target-app-parity.md +++ b/docs/target-app-parity.md @@ -1,6 +1,6 @@ # PdfCraft parity with Adobe Acrobat Pro -> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-12 · **Change:** web printing shipped, gap 4 closed, scores not re-judged; exclusive image-crop resize follow-up; minor (document-font subset completion, source styles and curved/shared image clips in the contributor fork; closed issues synced, scores not re-judged: #774, #756, #740, #759, #799–#821, #825, #844; earlier: readiness table with hours per audience; full number restated as the standard's additive weighted sum, 47% → 49%; earlier: second look: cross-cutting double count removed, mainstream-practitioner number added, core-workflow gate applied → alpha) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) +> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-13 · **Change:** minor (localization ≈59% → ≈68%; weighted readiness 49.25 → 49.7 ≈ 50%) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) The authoritative assessment of how close PdfCraft is to Acrobat Pro. [ROADMAP.md](../ROADMAP.md) summarizes it; [gaps.md](gaps.md) lists every shortfall one by one; the deep-dive checklists are @@ -21,7 +21,7 @@ Approved Trust List) are out of scope: 23 such features are tracked as `na` in | Feature breadth, unweighted | 56.9% (423 shipped + 74 partial of 808) | measured (`cargo xtask parity` arithmetic) | | Must-have (P0) features | 94.2% (226 + 23 partial of 252) | measured | | Feature breadth, mainstream practitioner | ≈ 70% tier-weighted (63.2% unweighted: 292 + 44 partial of 497; P0 95.3%) | measured ([split below](#mainstream-practitioner-vs-full-acrobat-pro)) | -| **Ready for real work**, full Acrobat Pro | **≈ 49%** (range 45–53%) | estimated (weighted sum over dimensions, [below](#by-dimension)) | +| **Ready for real work**, full Acrobat Pro | **≈ 50%** (range 45–53%) | estimated (weighted sum over dimensions, [below](#by-dimension)) | | **Ready for real work**, mainstream practitioner | **≈ 55%** (range 50–60%) | estimated ([split below](#mainstream-practitioner-vs-full-acrobat-pro)) | | **Ready for real work**, essentials user | **≈ 66%** (range 60–70%) | estimated ([below](#essentials-user)) | | **Stage** | **alpha** (passes the core-workflow gate) | see [Stage](#stage) | @@ -32,7 +32,7 @@ Approved Trust List) are out of scope: 23 such features are tracked as `na` in | Audience | Ready | Opus 5.5 agent-hours to ≈ 95% | Work that dominates | |---|---|---|---| -| Full Acrobat Pro (ready for real work) | ≈ 49% | ≈ 780–1,400 h (≈ 300–550 h wall clock with 3–5 agents; 60–70% parallelizes) | Own renderer and fidelity harness, editing existing content, OCR and Office conversion, Preflight and PDF/A/X/UA, accessibility tagging, signatures for institutions | +| Full Acrobat Pro (ready for real work) | ≈ 50% | ≈ 780–1,400 h (≈ 300–550 h wall clock with 3–5 agents; 60–70% parallelizes) | Own renderer and fidelity harness, editing existing content, OCR and Office conversion, Preflight and PDF/A/X/UA, accessibility tagging, signatures for institutions | | Mainstream practitioner | ≈ 55% | ≈ 500–900 h (≈ 200–400 h wall clock; ≈ 60% parallelizes) | Rendering fidelity, editing existing text (CJK, RTL, subsets), conversion (Word layout, Excel, PowerPoint, Office→PDF), OCR languages, the bug backlog | | Essentials user | ≈ 66% | ≈ 180–330 h (≈ 90–180 h wall clock; ≈ 50% parallelizes) | Rendering fidelity on everyday files, launch and GPU stability, simple text fixes, Word export layout, Chinese UI glyphs | @@ -86,8 +86,8 @@ The **full ready-for-real-work number is an additive weighted sum over the dimen method; weights by what decides whether a professional can switch): features 40%, file formats and conversion 12%, UI/UX 10%, PDF specification 8%, stability 8%, performance 6%, localization 5%, platforms 5%, hardware 4%, ecosystem 1%, AI 1%: -0.40 × 49 + 0.12 × 40 + 0.10 × 55 + 0.08 × 60 + 0.08 × 50 + 0.06 × 40 + 0.05 × 59 + 0.05 × 70 + -0.04 × 35 + 0.01 × 30 + 0.01 × 0 = 49.25 → **≈ 49%**. +0.40 × 49 + 0.12 × 40 + 0.10 × 55 + 0.08 × 60 + 0.08 × 50 + 0.06 × 40 + 0.05 × 68 + 0.05 × 70 + +0.04 × 35 + 0.01 × 30 + 0.01 × 0 = 49.7 → **≈ 50%**. History: the first version of this file subtracted 9 points from the area figure for cross-cutting shortfalls (40%); the second look found that a double count (Windows printing, encrypted-output @@ -181,13 +181,13 @@ features total and are shown for orientation; the others add to it. | File formats and conversion | ≈ 40% | 12% | 120–220 | within features | PDF read/write strong, encrypted output included (#774 fixed); export Word is layout-poor (#773); no Excel/PowerPoint export, no Office/HTML/PostScript import | [file-format-parity.md](file-format-parity.md) | | PDF specification and standards | ≈ 60% | 8% | 150–260 | within features | ISO 32000 syntax, encryption, annotations and AcroForm strong; rendering and fonts borrowed from `hayro`; PDF 2.0 extras, linearization, public-key security absent; PDF/A partial, PDF/X/UA none | [pdf-spec-parity.md](pdf-spec-parity.md) | | Hardware | ≈ 35% | 4% | 25–50 | additional | Page raster is CPU only (Acrobat has GPU rendering); Windows CNG and macOS Keychain keys sign, no PKCS #11; no scanners; web printing goes through the browser's print dialog as pictures, not vectors | [hardware-parity.md](hardware-parity.md) | -| Localization | ≈ 59% over the 12 key languages | 5% | 35–60 | additional | 15 catalogs, 13 at 94–100%; Chinese UI shows tofu in releases (#826, #688); Arabic not mirrored; no Hindi, Indonesian, Korean, Vietnamese | [localization-parity.md](localization-parity.md) | +| Localization | ≈ 68% over the 12 key languages | 5% | 35–60 | additional | 22 catalogs + English (23 interface languages); Chinese UI shows tofu in releases (#826, #688); Arabic not mirrored; no Hindi, Indonesian, Korean | [localization-parity.md](localization-parity.md) | | Performance | ≈ 40% | 6% | 25–45 | additional | 500-page smooth scrolling and large-file memory work (#307) done; no performance budgets (`misc.performance-budgets`), no lazy loading of GB files; blurry text at 1080p/1440p (#730) | [gaps.md](gaps.md) | | Stability | ≈ 50% | 8% | 45–80 | additional | Never-crash rules and nightly fuzzing; 245 open issues on 2026-10-10, many of them `fix(...)` reports of wrong results in shipped features (the #799–#821 batch is fixed) | [gaps.md](gaps.md) | | Platforms | ≈ 70% | 5% | 15–30 | additional | macOS (signed, notarized), Windows x64/x86/ARM64 (signed), Linux (AppImage, deb, rpm, Flatpak), FreeBSD, web (WASM). Acrobat has no Linux, FreeBSD or full web editor; we lack web OCR and web recovery | [hardware-parity.md](hardware-parity.md) | | Ecosystem and plug-ins | ≈ 30% | 1% | 10–20 | within features | No plug-in SDK or folder-level JavaScript; Action Wizard partial. Agent automation (CLI, MCP, UI control channel) has no Acrobat equivalent | [gaps.md](gaps.md) | | AI features | ≈ 0% (in scope) | 1% | 20–40 | within features | Acrobat's AI Assistant is cloud-only (out of scope). Local, opt-in provider interface (`misc.ai-provider`) not started | [gaps.md](gaps.md) | -| **Total (weighted sum)** | **≈ 49%** | 100% | **≈ 780–1,400** | | | | +| **Total (weighted sum)** | **≈ 50%** | 100% | **≈ 780–1,400** | | | | ## By feature area @@ -222,7 +222,7 @@ with evidence when next touched. ## Stage -**alpha.** Ready for real work, ≈ 49%, is inside the 40–75% band, and every one of Acrobat Pro's +**alpha.** Ready for real work, ≈ 50%, is inside the 40–75% band, and every one of Acrobat Pro's six everyday workflows can be completed end to end on macOS. Under the gate rule shared by all the Crafting Apps, a workflow blocks only when a typical user can't complete it at all; lossy exchange or a missing sub-case is a beta item. **Converting and sharing** is therefore partial, not @@ -241,7 +241,7 @@ stage set to pre-alpha; see the revision history.) | Edit text and images | partial, not blocking (Latin text with embedded or standard fonts) | | Convert and share (Office ↔ PDF, password protection) | partial, not blocking (Office→PDF and Word layout #773 are beta items; encryption interop #774 fixed) | -**To reach beta** (≈ 75% ready, no blocking gap in PDF interchange), ≈ 26 points and +**To reach beta** (≈ 75% ready, no blocking gap in PDF interchange), ≈ 25 points and **≈ 400–700 agent-hours**: | Beta requirement | Hours |