[Docs] Say that the app is left-to-right only, including for RTL content in a deck #634

Closed
opened 2026-07-22 16:23:34 +00:00 by brenno · 1 comment
Owner

Found in the pre-publication localisation review.

Evidence: grep -rn "EdgeInsetsDirectional|AlignmentDirectional|BorderDirectional" lib/zero hits, against 29 physical EdgeInsets.only(left|right. Of the 16 TextDirection hits in lib/, 14 are a hard TextDirection.ltr — including lib/widgets/slides/slide_preview.dart:460-461, a Directionality(textDirection: TextDirection.ltr) around the entire slide canvas — plus text_measurement.dart:36,56, code_preview.dart:35, chart_preview_radar.dart:206, cockpit_preview.dart:920,951, timeline_fit.dart:25, presenter_navigation.dart:18, presenter_questions.dart:471. Only add_slide_dialog.dart:530 reads Directionality.of(context). None of the 32 languages is RTL.

Why this matters: that there is no Arabic or Hebrew interface is a defensible scope choice (EU languages plus three curiosities). The sharper point is that the hard ltr around the canvas also governs the content: an author who puts a Hebrew or Arabic paragraph on a slide gets the wrong base direction — left-aligned, punctuation on the wrong side. That affects users regardless of their interface language, and it is written down nowhere, so someone discovers it on the projector.

Proposal: build nothing yet. One line in docs/ACCESSIBILITY.md under what is not there: the interface and the slide canvas are left-to-right; there is no RTL language, and RTL content in a deck gets the wrong base direction (slide_preview.dart sets Directionality.ltr); no direction-sensitive layout primitives are in use. Then it is a known limitation rather than a surprise, and the day someone wants RTL the starting point is already written.

Found in the pre-publication localisation review. **Evidence:** `grep -rn "EdgeInsetsDirectional|AlignmentDirectional|BorderDirectional" lib/` → **zero** hits, against 29 physical `EdgeInsets.only(left|right`. Of the 16 `TextDirection` hits in `lib/`, 14 are a hard `TextDirection.ltr` — including `lib/widgets/slides/slide_preview.dart:460-461`, a `Directionality(textDirection: TextDirection.ltr)` around the entire slide canvas — plus `text_measurement.dart:36,56`, `code_preview.dart:35`, `chart_preview_radar.dart:206`, `cockpit_preview.dart:920,951`, `timeline_fit.dart:25`, `presenter_navigation.dart:18`, `presenter_questions.dart:471`. Only `add_slide_dialog.dart:530` reads `Directionality.of(context)`. None of the 32 languages is RTL. **Why this matters:** that there is no Arabic or Hebrew *interface* is a defensible scope choice (EU languages plus three curiosities). The sharper point is that the hard `ltr` around the canvas also governs the *content*: an author who puts a Hebrew or Arabic paragraph on a slide gets the wrong base direction — left-aligned, punctuation on the wrong side. That affects users regardless of their interface language, and it is written down nowhere, so someone discovers it on the projector. **Proposal:** build nothing yet. One line in `docs/ACCESSIBILITY.md` under what is not there: the interface and the slide canvas are left-to-right; there is no RTL language, and RTL *content* in a deck gets the wrong base direction (`slide_preview.dart` sets `Directionality.ltr`); no direction-sensitive layout primitives are in use. Then it is a known limitation rather than a surprise, and the day someone wants RTL the starting point is already written.
Author
Owner

Opgelost in `cc00070` (PR #655).

docs/ACCESSIBILITY.md zegt nu onder What is not in place dat interface én slidecanvas links-naar-rechts zijn, met het scherpe deel erbij: het geldt ook voor RTL-inhoud in een deck, omdat slide_preview.dart een Directionality(TextDirection.ltr) om het hele canvas zet. Plus dat er nul richtingsgevoelige layoutprimitieven in gebruik zijn tegen 29 fysieke EdgeInsets.only(left|right, zodat duidelijk is dat RTL later een layoutwijziging is en geen vertaalklus.

Er is niets gebouwd, precies zoals het voorstel zei.

Opgelost in \`cc00070\` (PR #655). `docs/ACCESSIBILITY.md` zegt nu onder *What is not in place* dat interface én slidecanvas links-naar-rechts zijn, met het scherpe deel erbij: het geldt ook voor RTL-*inhoud* in een deck, omdat `slide_preview.dart` een `Directionality(TextDirection.ltr)` om het hele canvas zet. Plus dat er nul richtingsgevoelige layoutprimitieven in gebruik zijn tegen 29 fysieke `EdgeInsets.only(left|right`, zodat duidelijk is dat RTL later een layoutwijziging is en geen vertaalklus. Er is niets gebouwd, precies zoals het voorstel zei.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#634
No description provided.