feat(i18n): Arabic, Hebrew, Persian and Urdu, and a layout that mirrors; release v6.4.0
CodeQL Analysis / Analyze CodeQL (push) Canceled after 0s
Deploy Application / deploy (push) Canceled after 0s
Mirror to Codeberg / mirror (push) Canceled after 0s
Mirror to PrivacyGuides / mirror (push) Canceled after 0s

Four right-to-left languages at /ar/, /he/, /fa/ and /ur/ — thirteen in all.

The layout no longer has a left and a right, it has a start and an end: the
margins, insets and corners are CSS logical properties now, so they follow
dir on <html>. Directional glyphs flip; keys, safety codes and session
descriptors are pinned left-to-right so bidi cannot reorder what two people
compare against each other's screens.

Also fixed: the Service Worker was registered as './sw.js', which 404s from
every locale subdirectory, so twelve of the thirteen pages had no worker at
all. And the bundler ran before the dictionaries were generated, so a newly
added language could reach the page ahead of the app that renders it.
This commit is contained in:
lockbitchat
2026-08-29 18:05:20 -04:00
parent 98d42ac2fb
commit 5e32f547b9
68 changed files with 15147 additions and 500 deletions
+4
View File
@@ -157,6 +157,10 @@ function buildPages(site, template, version) {
const locale = site.byCode[code];
const html = render(template, {
HTML_LANG: attr(locale.htmlLang),
// Written into <html> rather than left to the app: the page is styled and
// painted long before React mounts, so a direction applied in JS would show
// the reader one frame of a mirrored layout first.
HTML_DIR: attr(locale.dir || 'ltr'),
TITLE: attr(locale.meta.title),
DESCRIPTION: attr(locale.meta.description),
KEYWORDS: attr(locale.meta.keywords),