Skip to content

fix(i18n): English fallback, catalog parity checks, and pt/fr/ar translations - #941

Merged
AbelOsaretin merged 6 commits into
Heliobond:mainfrom
KidDev88:fix/i18n-parity-fallback-translations
Oct 24, 2026
Merged

AbelOsaretin merged 6 commits into
Heliobond:mainfrom
KidDev88:fix/i18n-parity-fallback-translations

Conversation

@KidDev88

Copy link
Copy Markdown
Contributor

Closes #891, Closes #892, Closes #893, Closes #894

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Refactoring (no functional or behavioral changes)
  • Performance improvement
  • Documentation update
  • Build / CI configuration change
  • Dependency update
  • Other:

Summary

The catalog parity test only compared ICU argument names with a top-level regex
and only checked for English leftovers in es.json, while pt.json was ~68%
English and fr/ar still had whole blocks untranslated. Missing or misspelled
keys also rendered raw Namespace.key paths to users. This PR translates the
remaining pt/fr/ar strings, deep-merges English as a per-key fallback with
onError/getMessageFallback reporting, and rewrites the parity test to parse
ICU properly (argument names and types, CLDR plural categories per locale,
untranslated-value checks for every non-en locale).

Motivation / Context

Closes #891, Closes #892, Closes #893, Closes #894

Deep-merge the English catalog under the active locale in request.ts and
LocaleProvider so a deleted or misspelled key renders English copy instead
of a raw `Namespace.key` path. Wire onError/getMessageFallback on both the
server request config and NextIntlClientProvider: warn in dev and report
through errorReporting on the client.
Fill the Nav, Portfolio, Referral and Admin blocks that were left in English,
and keep genuine invariants (contract names, shared cognates like Type/Actions)
untouched.
Translate the English leftovers in the Arabic catalog and complete the
CLDR plural categories (zero/one/two/few/many/other) on Portfolio.activityRegion
and Admin.approvalRecorded.
About 68% of pt.json was still English. Translate every user-facing string
across Landing, Deposit, Portfolio, Creator, Admin and the remaining
namespaces, leaving only genuine invariants (contract names, brand tagline,
Stellar memo label).
…talog parity

Parse messages as ICU so argument names and types are compared per key
(including inside plural/select branches), require every locale's plural
categories to cover its CLDR set, and run the untranslated-value check for
all non-en locales against an allowlist of brands, format skeletons and
shared UI tokens. Also cover the per-key English fallback.
@KidDev88
KidDev88 requested a review from dadadave80 as a code owner October 23, 2026 20:57
@vercel

vercel Bot commented Oct 23, 2026

Copy link
Copy Markdown

@KidDev88 is attempting to deploy a commit to the David Dada's projects Team on Vercel.

A member of the Team first needs to authorize it.

@github-actions

Copy link
Copy Markdown

Thanks for the PR! A maintainer will take a look shortly. ✨

@vercel

vercel Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
heliobond Error Error Oct 23, 2026 9:10pm UTC

@AbelOsaretin
AbelOsaretin merged commit a4f19d8 into Heliobond:main Oct 24, 2026
8 of 13 checks passed

This branch had an error being deployed

1 failed deployment
Preview — 957d275b Deployed Oct 23, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants