Skip to content

i18n: Italian - #301

Merged
callumalpass merged 9 commits into
mainfrom
feat/i18n-italian
Oct 26, 2026
Merged

callumalpass merged 9 commits into
mainfrom
feat/i18n-italian

Conversation

@callumalpass

Copy link
Copy Markdown
Owner

Summary

  • Stack Italian on feat/lingui-pilot at 45346aa; merge translator a6e0e26 and retain the French/Portuguese zero-aware one fix unchanged.
  • Enable all ten locales through the shared kit: Italiano picker, OS/browser negotiation and saved preference, lazy app/shared UI/CodeMirror catalogues, plus Italian FullCalendar data. English remains synchronous.
  • Integrate 1,294 Italian app translations and locally compiled JSON. Review the six translator unchanged terms plus six Italian-identical/token/punctuation entries; no English prose allowlisted. Correct selected-collection meaning in the unlock notice, monthly-summary punctuation and ordinal elision.
  • Adopt verified 49bea0aa kit/UI tarballs and refresh only their lockfile entries. Preserve predecessor custody regressions, add exact hash/byte/lock-integrity checks, and extend docs and acceptance tests to ten locales. No workflows changed.

Verification

At 1e0ee47a6f2a22e17562c540fbc359d42aadb7b8:

  • rpnpm --pull dist verify passes: strict ten-locale extraction/completeness, --compose, ICU/plural-category contracts and source guard (151 modules); 389 release tests (one existing skip); format, typecheck and lint; 231 unit files / 1,837 tests with coverage and application/domain thresholds; 4,982 conformance tests (one existing skip), mdbase collection oracle; normal production build and fixture exclusion.
  • rpnpm --pull dist build:e2e passes.
  • Local isolated Playwright against the built e2e artifact: 106/106 desktop and Pixel 7 cases pass. Includes ten-locale picker/persistence and reflow; Italian workspace editing/user-data preservation, 0/1/2/5/11/21/22/101 account notices and recurrence, ordinal elision, Oggi/Domani/2 giorni fa/Italian calendar formatting, Axe accessibility and 320px/200% reflow.
  • Normal production artifact: 28/28 desktop/mobile acceptance cases pass, including saved Italian, it-IT browser negotiation, explicit preference precedence, synchronous English and same-deployment lazy chunks.
  • Compiled catalogues generated locally with ./node_modules/.bin/mdbase-i18n compile; worktree clean after final verification.
  • Normal production dist: 16,242,560 bytes total; main app JS ~1,011.31 kB / 294.43 kB gzip. The 5,000,000-byte plugin budget does not apply to this app.

Pin integrity

  • Kit SHA256: 4b08df26d7474b26bd90492a1835716f938488b06a73cd3b55943414bc0cbd82 (23,479 bytes).
  • UI SHA256: 1230707f2ba9545a041f2a9325ab5e2d25ed001885ebc0369d836e00b19d30f0 (131,844 bytes).

Remaining release requirements

  • Replace BOTH vendored kit/UI dependencies with published npm versions at merge time and requalify. This PR publishes/deploys nothing.
  • Native CI on the underlying i18n: multilingual TaskNotes app (9 locales) #298 stack has the known Add reviewed native production intake #299 synthetic-merge frozen-lock mismatch until merge-time requalification. This is expected; no custody guard or workflow was weakened.
  • Italian is agent-authored, without independent native-speaker certification. iOS/native acceptance remains waived/unverified, not passed.

Logs and retained initial test-failure traces: burst/italian-tasknotes-app-*.log and burst/evidence/italian-tasknotes-app/; current handoff: burst/status/italian-tasknotes-app.md in the multilingual-products workspace.

Connect 24e9f5d0's createI18nRuntime now encodes backslashes in
interpolated string values once per Lingui instance. The app passes its
singleton through createI18nRuntime, so keeping the 4eba14e wrapper
encoded twice and rendered `\` as `\`.

- Swap kit/UI vendored pins from 49bea0aa to 24e9f5d0 (UI bytes
  unchanged) with manifests and exact pin regressions; refresh only the
  kit/UI lock entries.
- Remove the app wrapper and its wrapper-only unit test; keep the
  user-facing backslash-title regressions and add a double-encoding
  assertion in en/de/it.
@callumalpass
callumalpass changed the base branch from feat/lingui-pilot to main October 26, 2026 11:22
@callumalpass
callumalpass marked this pull request as ready for review October 26, 2026 11:25
@callumalpass
callumalpass merged commit b56fdae into main Oct 26, 2026
4 checks passed
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.

1 participant