Repository navigation
i18n: add Arabic (ar) interface, mirrored right to left (stacked on #34) - #385
Draft
tlomts-dev wants to merge 4 commits into
Draft
tlomts-dev wants to merge 4 commits into
tlomts-dev wants to merge 4 commits into
Conversation
Co-authored-by: Codex <noreply@openai.com>
Selection pane, File tab and export moved out of dialogs.rs and panes.rs on main; the transition option labels, placeholder prompts in transitions and the canvas region renderer are reconciled. Catalog entries for newer labels follow separately. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Stacked on the Ukrainian catalog infrastructure of PR storytold#34 (merged with current main). - ar.tsv: 1,455 entries, every key of uk.tsv, written from the meaning of the English text (Modern Standard Arabic, Western digits, count-neutral wording). Selected by `ar` and `ar-*` system locales and by the saved Preferences choice; `app.language` takes `ar`. - bidi.rs: egui joins Arabic letters but lays words out left to right, so the catalog is put into display order at load; sentences with values are filled in typing order and reordered as a whole; long labels are wrapped in reading order (rtl::wrap, i18n::prose). - rtl.rs: mirrored window: title bar, tabs, ribbon, panels (thumbnails right, task pane left), status bar, File tab, dialogs (own title bar), menus, check boxes, radio buttons, sliders. Every egui::Grid goes through rtl::grid (a plain Grid in a right-aligned layout panics). Directional icons (back, undo, redo, indent, chevrons) mirror. The slide itself is never mirrored. - Translated the surfaces main added after PR storytold#34 (File tab, Selection pane, Lock, missing-font notice, export and print messages, theme names, transition option labels); the Ukrainian entries for them are new and unreviewed. - Web builds embed Noto Sans Arabic Regular; desktop builds without it borrow an installed Arabic face. - Tests: catalog parity and placeholders for both languages, every literal translation call, locales and saved preference, display order, counts, and an audit that walks every tab, File page, dialog, pane, view, menu and ribbon control in Arabic (no panic, mirrored, no English). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacks on #34 (the Ukrainian catalog and language selection): this branch is #34's work, merged with current
main, plus one Arabic commit on top (e794ce4). It should merge after #34; once #34 is inmainthe diff of this pull request is just the Arabic delta. Same arrangement as #199 and #259.What this adds
crates/ui-egui/src/i18n/ar.tsv, 1,455 entries, every key ofuk.tsv, written from the meaning of the English text. Modern Standard Arabic, Western digits, count-neutral wording (so no plural forms are needed). Selected byarand everyar-*system locale and by the saved Preferences choice;app.languagetakesar. No Microsoft or other product localisation consulted.bidi.rs): egui joins Arabic letters but lays words out left to right, so the catalog is put into display order at load; sentences with values are filled in typing order and reordered as a whole; long labels are wrapped in reading order (rtl::wrap,i18n::prose).rtl.rs): title bar, tabs, ribbon, panels (thumbnails on the right, task pane on the left), status bar, File tab, dialogs (with their own title bar), menus, check boxes, radio buttons and sliders. Everyegui::Gridgoes throughrtl::grid; a plain Grid in a right-aligned layout produces NaN widget rectangles and panics. Directional icons (back, undo, redo, indent, chevrons) mirror. The slide itself is never mirrored.mainadded after Add Ukrainian interface translation and language selection #34 are translated too (File tab, Selection pane, Lock, the missing-font notice, export and print messages, theme names, transition option labels). The Ukrainian entries for them are new in this commit and unreviewed; I could not check them, so a Ukrainian reader should.ATTRIBUTION.mdis updated); desktop builds without it borrow an installed Arabic face.Tests
Catalog parity and placeholders for both languages, every literal translation call, locales and saved preference, display order, counts, and an audit that walks every tab, File page, dialog, pane, view, menu and ribbon control in Arabic: no panic, mirrored, no English left.
Checks
cargo xtask cion this branch passes all six steps (fmt, clippy-D warnings, test, assets, layers, wasm). Headlessui_shotrenders in Arabic were read to confirm mirroring and joined letters. Built and run as a Windows x64.msi. The catalog has not been read line by line by a native speaker.Related
#256 is another Arabic PR (language switching and RTL alignment, 17 files, without the stacked structure); I have not compared the two catalogs entry by entry.
🤖 Generated with Claude Code