Traditional Mongolian
Traditional vertical Mongolian is required at launch. Copy meanings were owner-approved on 2026-09-12, Compare corrected on September 13, exit actions approved on September 14, and Settings/review-empty spellings corrected on September 15. Migrated MenkLetter, Z52 glyphs, and spoken forms still need native-reader and device review. Changed wording returns to draft; prior approval does not transfer.
Source and rendering
- All interface source, including operation names and accessibility templates, lives in
MyangatKids/DesignSystem/AppCopy.swift;Operation.swiftowns only arithmetic identity and symbols. Preserve the exact rows and placeholders in the copy inventory. MongolianVerticalTextconverts one complete MenkLetter visual run directly to Z52 through pinned MongolConvertSwift v0.7.1. Render generated shape code only with bundled Z52 Tsagaan (default), Qimed, or Agola fonts; never persist it as copy or expose it to accessibility.MongolianTextBlocksplits ordinary-space-separated words into complete runs arranged as left-to-right columns. U+202F narrow no-break space attaches suffixes to the preceding run. Preserve variation selectors, controls, punctuation, placeholders, and{...}literal horizontal runs exactly.- Mongolian reads top-to-bottom, later columns left-to-right. Never rotate SwiftUI
Text, reverse strings, convert individual letters, reconstruct source from Z52, or apply synthetic bold, tracking, or character-level animation. - Equations, Arabic numerals, operators, answer controls, progress, dates, filenames, and legal names stay horizontal and upright. Dates use numeric forms and 24-hour time, not device-language month names. Optional number words replace only selected question/answer values, with complete words side by side and operators unchanged.
Layout and interaction
DESIGN.md defines visual tokens; these are starting sizes, not permission to clip joining words:
- Operation labels: about 27 pt; primary Practice labels: 27–30 pt; compact/utility labels: 20–26 pt. Default numeric equations use 64 pt, answers 44 pt. Scale semantically with Dynamic Type and fit each block at one shared scale.
- Measure complete runs. Increase available height, wrap columns, or scroll before shrinking text. Never break inside a word. Full paragraph pagination, selection, and editing are not implemented.
- Prefer 12–16 pt phone margins and roughly 880 pt maximum iPad content width. Use available width, not device-model checks. Standard screens aim to fit one task; short windows and accessibility sizes retain scrolling. Do not lock orientation.
- Touch targets must be at least 44×44 pt, preferably 56 pt, with 8 pt separation where practical. State needs symbols, outlines, or semantic selection—not color alone.
- Setup keeps operation/comparison choices equally sized; accessibility layouts may wrap. Root tabs may be icon-only but require complete Mongolian accessibility labels. Calendars and summaries retain upright counts, dates, and distinct outcome categories.
- Practice keeps all four arithmetic choices or three relation choices. Correct answers advance; mistakes retain the question. Help and answer feedback open a separate dismissible explanation page, never an automatic wide-screen solution or duplicate explanation tile. Closing preserves state; guided answers wait for Next/Finish. Exit offers Keep, Drop, and Resume.
- Question/answer number words are independent, default off, and available for ranges ending at or below 100;
bugeddefaults on. In-round controls share the persisted Settings preferences. Font names render in their own typefaces without extra arithmetic previews or horizontal captions. Privacy rows remain noninteractive. - Respect Dynamic Type, Reduce Motion/Transparency, Increase Contrast, and safe areas. Keep mathematical models exact and horizontal; system animal emoji are provisional, not approved cultural artwork.
Accessibility and release review
Expose whole semantic MenkLetter phrases with mn-Mong, never generated Z52. Speech spacing replaces attached suffix separators and strips horizontal-run braces. Keep icons decorative inside labeled controls; visual transforms must not shrink accessibility frames. Use truthful approved labels, announce outcomes once, and avoid unnecessary focus movement. A language identifier does not guarantee a suitable VoiceOver voice.
Before release, review the smallest supported phone, a large phone, and a physical iPad in portrait, landscape, larger text, and resizable windows:
- Native-reader approval of spelling, school terminology, number grammar, controls, suffixes, punctuation, glyphs, and spoken templates
- Isolated/initial/medial/final reference forms, long joined words, and every selectable font after cold launch and switching
- No clipping, reversed columns/equations, missing placeholders, or undersized controls
- Arabic and number-word values with upright operators; accurate work mats and all outcome distinctions
- VoiceOver, Switch Control, keyboard access, contrast settings, Reduce Motion/Transparency, and offline operation
Simulator checks alone are insufficient. Preserve bundled font/converter licenses and third-party design-reference notices; legal text stays verbatim and horizontal. Future Cyrillic support must be a separate horizontal mn-Cyrl resource, never a traditional-script fallback. See Implementation for current behavior and verification.
Comments
Comments are public and posting requires a GitHub account. Parents, guardians, and educators: do not share children's or other personal information.