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)
- 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.
- 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).
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:Current state (audited v0.20.5):
margin-inline-*,inset-inline-*,text-align: start) and[dir="rtl"]mirror rules — so the layout would mirror correctly.document.documentElement.dir/lang.prefs.tsappliesdata-theme(anddata-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
languagefield). This gap is only the admin panel chrome.Fix later (scope)
dir/langon<html>from the Fabriclangpref (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.Refs
OpenMasjidAPPS/docs/DESIGN.md§0 (inherit appearance incl. lang/dir) and §10 (accessibility checklist: "Works LTR and RTL").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).