Skip to content

ci(i18n): replace stub i18n job with shared validation script - #318

Merged
krisarmstrong merged 1 commit into
mainfrom
ci/i18n-validation-script-2026q2
May 27, 2026
Merged

ci(i18n): replace stub i18n job with shared validation script#318
krisarmstrong merged 1 commit into
mainfrom
ci/i18n-validation-script-2026q2

Conversation

@krisarmstrong

Copy link
Copy Markdown
Collaborator

Summary

The existing 'i18n Validation' CI job was a literal stub — echo "✅ i18n validation complete" with no actual checks.

Replaces it with the canonical scripts/i18n/validate.sh deployed identically to seed/stem/niac (mirror of seed#1193).

What the script checks

  • key-parity (en vs es)
  • no-empty-values
  • no-fallback-patterns (t('key', 'fallback') is banned per I18N_CONVENTIONS.md)
  • banned-vocab (CLAUDE.md list)
  • glossary-preservation (technical terms appear verbatim in es)
  • interpolation-parity (set-based, dedup-aware)
  • plural-completeness
  • locked-versions (i18next 26.3.0, react-i18next 17.0.8, etc.)
  • hardcoded-jsx (heuristic; warn-only)

--ratchet flag

The workflow passes --ratchet which demotes no-fallback-patterns and locked-versions from fail → warn during Phase 3 cleanup. Drop once both reach zero across seed/stem/niac.

Drive-by fixes (necessary for CI to pass)

While integrating the validator, two glossary-preservation failures had to be addressed for this PR to land green:

Bug fixinternal/i18n/locales/es/errors.json:

  • reflector.alreadyRunning / notRunning — Spanish translations had dropped the Reflector proper noun (Stem module name) per the glossary. Restored as Reflector ya está en ejecución / Reflector no está en ejecución (also fixed missing accents on those two strings).

Exceptionsscripts/i18n/glossary-exceptions.txt (Stem-specific):

  • 11 RFC test tooltips (tests.rfc2544.*.tooltip, etc.) use "Measure" as the imperative verb ("Measure packet loss…"), not as a reference to the Stem Measure module. Added to the per-key allow-list.

The broader Spanish accent debt (the ES file is missing accents in dozens of places) is Phase 7 work and out of scope here.

Test plan

Context

Phase 4 of i18n full-implementation push. Mirror of seed#1193. NIAC follows.

The existing 'i18n Validation' job was a literal stub:

    # This is a placeholder - actual implementation depends on locale structure
    echo "✅ i18n validation complete"

It checked nothing. Replaced with the canonical shared script in
scripts/i18n/ — byte-identical to seed and niac.

The script enforces every rule in
msn-docs-internal/05-Engineering/I18N_CONVENTIONS.md:
key-parity, no-empty-values, no-fallback-patterns, banned-vocab,
glossary-preservation, interpolation-parity (set-based, dedup-aware),
plural-completeness, locked-versions, hardcoded-jsx (warn-only).

Workflow passes --ratchet which demotes no-fallback-patterns and
locked-versions to warn-only while Phase 3 cleans backlog. Drop
--ratchet once both reach zero.

Mirror of seed#1193. NIAC follows.
Phase 4 of i18n full-implementation push.
@krisarmstrong
krisarmstrong enabled auto-merge (squash) May 27, 2026 01:38
@qodo-code-review

Copy link
Copy Markdown

Qodo reviews are paused for this user.

Troubleshooting steps vary by plan Learn more →

On a Teams plan?
Reviews resume once this user has a paid seat and their Git account is linked in Qodo.
Link Git account →

Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center?
These require an Enterprise plan - Contact us
Contact us →

@github-actions

Copy link
Copy Markdown
Contributor

License Compliance Report

All dependencies pass license compliance checks

Go Dependencies

  • Unknown: 31 package(s)
  • MIT: 26 package(s)
  • BSD-3-Clause: 16 package(s)
  • Apache-2.0: 11 package(s)
  • BSD-2-Clause: 1 package(s)

npm Dependencies

See full report in workflow artifacts

Allowed Licenses: MIT, Apache-2.0, BSD-*, ISC, CC0-1.0, MPL-2.0
Forbidden: GPL, AGPL, SSPL (strong copyleft)

@krisarmstrong
krisarmstrong merged commit 0e3f478 into main May 27, 2026
26 of 28 checks passed
@krisarmstrong
krisarmstrong deleted the ci/i18n-validation-script-2026q2 branch May 27, 2026 01:42
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