Skip to content

Control panel: apply RTL/lang from the Fabric (DESIGN.md §0/§10 gap) #1

Description

@hasan-ismail

Control panel doesn't render RTL (DESIGN.md §0 / §10 gap)

The OpenMasjidOS App Design Language (OpenMasjidAPPS/docs/DESIGN.md §0 and the §10 accessibility checklist) requires apps to work LTR and RTL — apply the viewer's language from the Fabric and set the document direction:

document.documentElement.lang = prefs.lang;                 // 'en' | 'ar' | 'ur' | …
document.documentElement.dir  = ['ar','ur','fa'].includes(prefs.lang) ? 'rtl' : 'ltr';

Current state (audited v0.20.5):

  • The CSS groundwork exists — logical properties throughout (margin-inline-*, inset-inline-*, text-align: start) and [dir="rtl"] mirror rules — so the layout would mirror correctly.
  • But nothing ever sets document.documentElement.dir / lang. prefs.ts applies data-theme (and data-wallpaper/accent) but not direction/lang, and there's no i18n layer. So the admin control panel always renders LTR in English, even for an Arabic/Urdu masjid.

Not affected: the on-screen timetable the TVs show already fully supports Arabic/Urdu + RTL (Arabic fonts, mirrored labels via the timetable language field). This gap is only the admin panel chrome.

Fix later (scope)

  1. RTL direction (small, closes the checklist item): set dir/lang on <html> from the Fabric lang pref (and/or a panel language setting), gate directional motion to mirror. The [dir=rtl] CSS + logical props are already in place, so this is mostly wiring + a pass to catch any non-mirrored bits.
  2. Optional, larger: translate the panel's strings to Arabic/Urdu (a real i18n layer). DESIGN.md §10 requires RTL rendering; full translation is a nice-to-have beyond it.

Refs

  • OpenMasjidAPPS/docs/DESIGN.md §0 (inherit appearance incl. lang/dir) and §10 (accessibility checklist: "Works LTR and RTL").
  • App: web/src/prefs.ts (where theme is applied — add dir/lang here), web/src/styles/*.css ([dir=rtl] rules already present).

Tracked for a later release; not blocking install/compliance otherwise (the app meets every other DESIGN.md and structural/security rule).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions