Repository navigation
i18n: Italian - #36
Merged
Merged
Conversation
…languages - Encode backslashes in string interpolation values in the app's Lingui singleton. Lingui 6.9 decodes \xNN/\uNNNN after interpolation, so paths, titles and LaTeX such as C:\x41dir displayed as C:Adir in every locale. - Render user and authority strings (paths, filters, titles, signer and collection names, preview/save/source problems) with plain t, or as a React child via literal() where the message contains components, so React Lingui's rich-text parser no longer reinterprets <0/> or <b> in them. Translations are retained; three messages only renumber a placeholder. - Key the conflict comparison panes by side rather than translated label, so a language change no longer remounts them and loses the scroll to the changed passage. Regression tests: apps/writer/src/i18n/data-boundary.test.tsx.
The kit's createI18nRuntime now encodes backslashes in interpolated values once per I18n instance. Writer's runtime passes the shared UI singleton through it, so keeping the app wrapper encoded twice and showed `\` as `\`. Swap both vendored tarballs to 24e9f5d0, remove the wrapper and its call-form unit test, and keep the user-facing regressions with an explicit single-encoding assertion.
callumalpass
marked this pull request as ready for review
October 26, 2026 09:22
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
feat/i18n(b353683b); merge translatori18n/writer-it(58f7ac3), all 658 messages, plus locally generated strict JSON.49bea0aatarballs and refresh only their lockfile entries. Italian is lazy-loaded; shared preset/runtime/picker provideit/ Italiano, OS negotiation and persistence.infragments); no English prose allowlisted, placeholders, padding, or weakened gates.Verification
rpnpm check: all ten locales strict, shared UI--compose, CLDR plural contracts, source guard (87 modules), typecheck, full tests 692 passed / 7 existing skips.rpnpm build:productionandrpnpm --filter @mdbase-writer/app build:editing-test.pnpm i18n:compile; committed generated JSON; all ten app catalogues 658 IDs / shared UI 197 IDs.it-ITnegotiation, persistence/reload, Italian zero/one/other word/comment plurals, date/number/relative time, Trova, unchanged manuscript; existing ja/de/zh and failed-chunk checks retained. Italian wide/narrow screenshots inspected.c7ee59765fd35c75c5f75d4c879fdb1f96e472c0, 7m19s. Generated-catalogue drift, full check/build, real-canvas production editing, baseline/reliability/i18n browser suites and private-feedback checks all passed; no pending checks.Integration note / remaining blocker
Before merge, replace both vendored
@mdbase-dev/i18nand@mdbase-dev/uitarballs with published package versions after the coordinated Connect release, refresh the lock and rerun gates. This PR stays draft. Writer is a web app, so the plugin's 5,000,000-byte budget is not applicable.No main push/merge, tag, deploy, publish, settings/secrets changes, canonical checkout edits or subagents. Demo/browser acceptance is not native-device or production-export qualification. Detailed evidence:
docs/translations.mdand initiativeburst/status/italian-writer.md.