M14: correct Taiwan Traditional Chinese accessibility and form terms (#1023)

Correct inverted accessibility wording, pass/fail results, row/column terminology and form-choice labels. Add the missing table-row explanation and regressions tied to rule metadata.

Co-authored-by: OpenAI Codex <noreply@openai.com>
Co-authored-by: Brandon Thomas <echelon@gmail.com>
This commit is contained in:
MaxMan 2026-10-12 00:27:39 +08:00 committed by GitHub
parent 216d9a314e
commit 2a5e8e2aa2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 46 additions and 13 deletions

View File

@ -30,7 +30,7 @@ licence = "MIT OR Apache-2.0"
licence_file = "LICENSE-MIT"
kind = "translation"
usage = "Traditional Chinese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
sha256 = "5aecc94622ac849c96a05af59c9d38cff790bf8f69351bfbf0ee5a55963ae3bb"
sha256 = "c8d2b9d9ef7931296e960799d3e5e07a7c39acf8ecbdc6194086ff3b1d37061e"
[[asset]]
path = "crates/ui-egui/src/i18n/cs.tsv"

View File

@ -147,6 +147,8 @@ Newest first: the date, what moved, and the new overall estimate.
- **2026-10-11 (M13):** CLI run and MCP reject missing, empty, repeated and option-valued --root arguments before any tool/script execution or MCP initialization. A single-hyphen directory name remains valid; synthetic CLI regressions preserve a would-be overwritten file. Estimates unchanged.
- **2026-10-11 (M14, #307, Plan 2):** Forms now return terminal fields and the page-widget adoption count from one enumeration, and engine open reuses that result while retaining XFA script-button marking. The 12,000-page/no-form PDF (1,442,052 bytes) and 2,500-orphan-widget PDF (673,432 bytes) produce byte-identical `doc_open`/`doc_info` outputs against upstream `33c14e07cfd742a82bf03baa6b103c01008fa68c`, including the orphan repair note. After one warm-up per binary and three interleaved base/candidate rounds, median open times were 0.16/0.15 s and 0.08/0.07 s, with median peak RSS 62.69/59.98 MiB and 33.28/32.20 MiB. Workspace tests, Clippy, formatting, focused forms/engine/organize tests, and the WASM check pass. A behavior-preserving local binding in `organize` also lets the workspace Clippy gate pass. No estimate change.
- **2026-10-11 (M14, Traditional Chinese semantics):** Corrected accessibility pass/fail labels, the inverted script-accessibility rule, Taiwan row/column terminology and form choice/read-only labels; added the missing table-row explanation. Catalog regressions cover the rule metadata and preserve field names. Milestone and effort estimates unchanged.
- **2026-10-10 (M14, interface size):** Preferences ▸ Interface size scales the whole interface (50–250 %, setting `ui_scale`, control option `ui-scale`); 50 % brings an interface the system draws at 200 % back to 100 % (#456). Auto, the default, follows the desktop's text scaling: on Linux and the BSDs the desktop app reads GNOME's `text-scaling-factor` once at launch, so with Large Text (1.25) on a 1× display the interface no longer draws 13 px labels that show their pixels next to the system's text. The size is egui's zoom factor, so `pixels_per_point` grows with it and page rasters stay one texel per screen pixel; egui's own ⌘+/⌘− interface zoom is turned off so those keys stay page zoom. Still missing: KDE's font DPI and Windows' "Make text bigger" aren't read (both scale only text there), and egui's text is still greyscale-antialiased without the system's gamma, so small text looks rougher than GTK's at 100 %.
- **2026-10-10 (M14, #496):** Shortcut displays share a UI formatter across toolbar search, registry menus, command palette, Help and tooltips. Modifier and key names use a dedicated catalog context in every bundled translation; missing entries keep the English key name rather than a command translation. German shows Strg/Umschalt/Entf, macOS retains its symbols, and runtime language changes refresh the display. Regression coverage checks localized layout widths, English/German switching, platform conventions and unchanged command execution. Milestone and effort estimates unchanged.

View File

@ -1369,6 +1369,32 @@ mod tests {
}
}
/// Report statuses and rule descriptions must retain their meaning in Taiwan Chinese.
#[test]
fn traditional_chinese_accessibility_meaning() {
use pdfcraft_engine::a11y::{Rule, Status};
let zh = Lang::from_code("zh-hant").expect("zh-hant registered");
assert_eq!(tr(zh, Status::Passed.label()), "通過");
assert_eq!(tr(zh, Status::Failed.label()), "未通過");
assert_eq!(tr(zh, Rule::Scripts.description()), "沒有妨礙無障礙操作的指令碼");
assert_eq!(tr(zh, Rule::TableRows.name()), "列");
assert_eq!(tr(zh, Rule::TableRows.explanation()), "表格列應直接位於表格或其表頭、主體、表尾內。請修正表格標記。");
assert_eq!(tr(zh, Rule::TableRegularity.description()), "表格每列的欄數必須相同,每欄的列數也必須相同");
assert_eq!(tr(zh, Rule::TableCells.explanation()), "表格儲存格應位於列內。請修正表格標記。");
assert_eq!(tr(zh, Rule::TableHeaders.explanation()), "表頭儲存格(TH)讓聽者知道每欄或每列的內容。請標記表頭儲存格。");
}
/// A choice in a form is an item, not a project; field notices preserve user-supplied names.
#[test]
fn traditional_chinese_form_vocabulary() {
let zh = Lang::from_code("zh-hant").expect("zh-hant registered");
assert_eq!(tr(zh, "Item:"), "項目:");
assert_eq!(tr(zh, "Item List"), "項目清單");
assert_eq!(tr(zh, "Sort items"), "排序項目");
assert_eq!(tr(zh, "Read Only"), "唯讀");
assert_eq!(fmt(tr(zh, "{name} is read-only"), &[("name", "Field{n}")]), "Field{n} 為唯讀");
}
#[test]
fn french_is_registered() {
let fr = Lang::from_code("fr").expect("fr registered");

View File

@ -159,7 +159,7 @@
Signature panel 簽名面板
{month} {day}, {y} {month}{day}日,{y}年
The document's security settings don't allow filling in form fields 文件安全設定不允許填寫表單欄位
{name} is read-only {name}為只讀
{name} is read-only {name} 為唯讀
{name} has no action {name}沒有動作
Previous month 上個月
Next month 下個月
@ -244,7 +244,7 @@
This field is locked. Unlock it to change its properties. 此欄位已鎖定。解鎖後可更改其屬性。
Tooltip: 提示:
Common Properties 常規屬性
Read Only 只讀
Read Only 唯讀
Required 必填
Font Size: 字號:
Auto 自動
@ -274,14 +274,14 @@
Check box is checked by default 預設選中核取方塊
Button is checked by default 預設選中按鈕
Buttons with the same name and value are selected in unison 同名同值的按鈕一起選中
Item: 專案:
Item List 專案列表
Item: 項目:
Item List 項目清單
Up 上移
Delete {o} 刪除 {o}
Add the choices people pick from. 新增供人選擇的選項。
Default: 預設值:
(none) (無)
Sort items 排序專案
Sort items 排序項目
Allow user to enter custom text 允許使用者輸入自定義文字
Multiple selection 多選
Commit selected value immediately 立即提交所選值
@ -627,8 +627,8 @@
Collapse 摺疊
Expand 展開
{rule} - {status} {rule} - {status}
Passed 透過
Failed 未透過
Passed 通過
Failed 未通過
Needs manual check 需要人工檢驗
Skipped 已跳過
Fix 修復
@ -684,7 +684,7 @@
Page will not cause screen flicker 頁面不會導致螢幕閃爍
Animation that flashes can cause seizures. Check scripts and media for flicker. 閃爍的動畫可能導致癲癇發作。請檢驗指令碼和媒體是否存在閃爍。
Scripts 指令碼
No inaccessible scripts 沒有無障礙指令碼
No inaccessible scripts 沒有妨礙無障礙操作的指令碼
Timed responses 限時回應
Page does not require timed responses 頁面不需要限時回應
People may need more time to respond. Check that nothing has a time limit. 人們可能需要更多時間來回應。請檢驗確認沒有時間限制。
@ -712,14 +712,14 @@
Other elements alternate text 其他元素替代文字
Other elements that require alternate text 需要替代文字的其他元素
Formulas and similar non-text elements need alternate text. Add alternate text to them. 公式及類似非文字元素需要替代文字。請為它們新增替代文字。
Rows 行
Rows 列
TR must be a child of Table, THead, TBody, or TFoot TR 必須是 Table、THead、TBody 或 TFoot 的子級
Table cells belong in a row. Fix the table's tags. 表格儲存格應位於行內。請修復表格標記。
Table cells belong in a row. Fix the table's tags. 表格儲存格應位於列內。請修正表格標記。
Headers 表頭
Tables should have headers 表格應有表頭
Header cells (TH) tell listeners what each column or row holds. Mark the header cells. 表頭儲存格(TH)告訴聽者每列或每行包含的內容。請標記表頭儲存格。
Header cells (TH) tell listeners what each column or row holds. Mark the header cells. 表頭儲存格(TH)讓聽者知道每欄或每列的內容。請標記表頭儲存格。
Regularity 規則性
Tables must contain the same number of columns in each row and rows in each column 表格每行必須包含相同數量的列,每列必須包含相同數量的行
Tables must contain the same number of columns in each row and rows in each column 表格每列的欄數必須相同,每欄的列數也必須相同
Irregular tables confuse cell navigation. Give every row the same number of cells (counting spans). 不規則的表格會妨礙儲存格導覽。請讓每一列具有相同數量的儲存格,並計入合併儲存格。
Summary 摘要
Tables must have a summary 表格必須有摘要
@ -2086,3 +2086,4 @@ key Space 空格
Resize panel window 調整面板視窗大小
Tools 工具
Inspector 檢查器
Table rows belong directly in a table or its head, body or foot. Fix the table's tags. 表格列應直接位於表格或其表頭、主體、表尾內。請修正表格標記。

Can't render this file because it contains an unexpected character in line 9 and column 16.

View File

@ -3,6 +3,7 @@
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-11 · **Change:** minor (M6: respect existing form-font encodings; retain source fonts on appearance fallback; estimates unchanged) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS)
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-11 · **Change:** minor (M6: keep accepted form values when Tab reopens the same field before Save; estimates unchanged) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS)
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-11 · **Change:** minor (M13: reject malformed CLI --root options before dispatch; estimates unchanged) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS)
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-11 · **Change:** minor (Traditional Chinese accessibility semantics and Taiwan form/table terminology; estimates unchanged) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS)
Forward-looking: the milestones, the current focus and what comes next. The parity numbers behind
it are in [target-app-parity.md](target-app-parity.md), the ranked work list in [gaps.md](gaps.md),
@ -84,6 +85,8 @@ total matches the parity estimate.
| M12 | Accessibility, compare, measure, search, XFA | 200–380 | 30% | 90–160 | Done: new `a11y` crate with the Accessibility Checker (all 32 rules, report, Fix/Skip/Explain, options dialog and results panel, agent tools).<br>Done since: 2D distance, perimeter and area measurements with persistent viewport calibration, snapping, live information and CSV export. Missing: autotag, Tags/Order/Content panels, Reading Order tool, alt-text workflow, compare, geospatial/3D measurement, search index, XFA |
| M13 | Automation (MCP, Action Wizard, CLI) + AI providers | 60–120 | 45% | 25–45 | Done: MCP resources (document info, text, page images); headless tool table (123 tools incl. signing, optimizing, initial view, links, stamps, data exchange, comment review, forms authoring and scripts, redaction, sanitize, print, add content), opt-in MCP server over stdio, CLI `run`/`tools` (closed stdout pipes exit cleanly), UI control channel with drag. Missing: Action Wizard, AI providers<br>Done since: CLI run and MCP reject missing, empty, repeated and option-valued --root arguments before any tool/script execution or MCP initialization. A single-hyphen directory name remains valid; synthetic CLI regressions preserve a would-be overwritten file. |
| M14 | 1.0 polish: performance, localization, installers | 120–250 | 15% | 80–150 | Done: PhotoCraft's translation system (`i18n/`: TSV catalogs, `tl!`, command-id and plural entries, system-language detection, strict catalog tests); every dialog, panel and notice goes through `tl!`. Catalogs of ≈ 2,000–2,140 entries for Japanese, Simplified and Traditional Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Italian, Brazilian Portuguese and Arabic (logical-order catalog put into display order; layout not yet mirrored); Czech covers the menus. Signed and notarized macOS builds, signed Windows installers (x64, x86, ARM64), AppImage, deb, rpm, Flatpak and FreeBSD packages. #307 (bounded large-PDF memory): shared resource indexes and parser metadata, lazy inspection, bounded caches; a 9,156-page file inspects in ≈ 1.8 s at ≈ 500 MiB instead of exceeding 10 GiB. Shortcut display uses localized modifier/key names across menus, toolbar, palette, Help and tooltips (#496). Missing: a right-to-left layout, a Chinese UI face in releases, Hindi/Indonesian/Korean/Vietnamese, file-backed input and global memory budgets, performance budgets, keyboard-only operation |
| M13 | Automation (MCP, Action Wizard, CLI) + AI providers | 60–120 | 45% | 25–45 | Done: MCP resources (document info, text, page images); headless tool table (123 tools incl. signing, optimizing, initial view, links, stamps, data exchange, comment review, forms authoring and scripts, redaction, sanitize, print, add content), opt-in MCP server over stdio, CLI `run`/`tools` (closed stdout pipes exit cleanly), UI control channel with drag. Missing: Action Wizard, AI providers |
| M14 | 1.0 polish: performance, localization, installers | 120–250 | 15% | 80–150 | Done: PhotoCraft's translation system (`i18n/`: TSV catalogs, `tl!`, command-id and plural entries, system-language detection, strict catalog tests); every dialog, panel and notice goes through `tl!`. Catalogs of ≈ 2,000–2,140 entries for Japanese, Simplified and Traditional Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Italian, Brazilian Portuguese and Arabic (logical-order catalog put into display order; layout not yet mirrored); Czech covers the menus. Signed and notarized macOS builds, signed Windows installers (x64, x86, ARM64), AppImage, deb, rpm, Flatpak and FreeBSD packages. #307 (bounded large-PDF memory): shared resource indexes and parser metadata, lazy inspection, bounded caches; a 9,156-page file inspects in ≈ 1.8 s at ≈ 500 MiB instead of exceeding 10 GiB. Shortcut display uses localized modifier/key names across menus, toolbar, palette, Help and tooltips (#496). Traditional Chinese accessibility statuses, rule semantics and Taiwan form/table terms have catalog regressions. Missing: a right-to-left layout, a Chinese UI face in releases, Hindi/Indonesian/Korean/Vietnamese, file-backed input and global memory budgets, performance budgets, keyboard-only operation |
| | **Total** | **2,085–3,840** | **≈ 49% ready** | **≈ 770–1,400** | Area view of the same work: [target-app-parity.md](target-app-parity.md#by-feature-area) |
## Upcoming milestones, ranked
@ -129,6 +132,7 @@ M2 (renderer), M7 (content editing), M10 (OCR and Office), M11 (Preflight and st
| 2026-10-11 | minor | M6: respect existing form-font encodings; retain source fonts on appearance fallback. Estimates unchanged. |
| 2026-10-11 | minor | M6: keep accepted form values when Tab reopens the same field before Save. Estimates unchanged. |
| 2026-10-11 | minor | M13: reject malformed CLI --root options before dispatch. Estimates unchanged. |
| 2026-10-11 | minor | M14: Traditional Chinese accessibility statuses, script-rule meaning and Taiwan form/table terminology; added a missing table-row explanation and catalog regressions. Estimates unchanged. |
| 2026-10-10 | minor | M14: localized shortcut key names (#496), including runtime switching and native layout checks. Estimates unchanged. |
| 2026-10-10 | minor | Re-judged convert and share with the cross-app gate rule (only a workflow that can't be completed at all blocks): partial, not blocking → stage alpha |
| 2026-10-10 | minor | Added the alpha gate (six core workflows; convert and share fails → pre-alpha, 40–70 h to alpha) and rank 0 in the upcoming milestones |