Skip to content

i18n: switchable UI in six languages with RTL support#10

Merged
CryptoJones merged 1 commit into
mainfrom
feat/i18n-rtl
Jun 4, 2026
Merged

i18n: switchable UI in six languages with RTL support#10
CryptoJones merged 1 commit into
mainfrom
feat/i18n-rtl

Conversation

@CryptoJones
Copy link
Copy Markdown
Owner

Closes #9.

Summary

  • Native-name language dropdown in the masthead: English, Español, Français, العربية, Русский, 中文.
  • Choice persists to localStorage; first load auto-detects from navigator.language.
  • Arabic flips the layout to right-to-left (dir=rtl, physical→logical CSS), with [dir="rtl"] overrides so the cursive script isn't mangled by the mono/uppercase/letter-spaced label styling.
  • Unicode-aware tags end to end — #память, #记忆 now round-trip through both the markdown renderer (app.js) and the store (store.py).
  • Inline head script applies saved theme + language before paint (no flash of defaults).
  • Bumps version to 0.3.0.

Test plan

  • ruff check . clean
  • mypy src clean (--strict)
  • pytest — 45 passed (incl. new non-Latin tag round-trip test)
  • Verified in Chrome: Arabic renders RTL with mirrored masthead/sidebar/accent bar; Chinese and Russian chrome fully translated; note count and meta labels localized.

Proudly Made in Nebraska. Go Big Red! 🌽 https://xkcd.com/2347/

Add a native-name language dropdown to the web UI covering English,
Spanish, French, Arabic, Russian, and Chinese. The choice persists to
localStorage and auto-detects from navigator.language on first load.
Arabic switches the whole layout to right-to-left (dir=rtl, logical CSS
properties), with [dir="rtl"] overrides so the cursive script isn't
mangled by the mono/uppercase/letter-spaced label styling.

Tags are now Unicode-aware end to end, so non-Latin tags (e.g. #память,
#记忆) round-trip through both the markdown renderer and the store.

Bumps version to 0.3.0.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@CryptoJones CryptoJones merged commit 401d988 into main Jun 4, 2026
3 checks passed
@CryptoJones CryptoJones deleted the feat/i18n-rtl branch June 4, 2026 00:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

i18n: switchable UI language with RTL support

1 participant