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:
parent
216d9a314e
commit
2a5e8e2aa2
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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.
|
|
|
@ -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 |
|
||||
|
|
|
|||
Loading…
Reference in New Issue