Skip to content

i18n: translation pipeline (all)#18051

Closed
wackerow wants to merge 36 commits into
intl/pending-devfrom
intl/pending-intl-pending-dev
Closed

i18n: translation pipeline (all)#18051
wackerow wants to merge 36 commits into
intl/pending-devfrom
intl/pending-intl-pending-dev

Conversation

@wackerow
Copy link
Copy Markdown
Member

@wackerow wackerow commented Apr 27, 2026

Automated Translations

This PR contains translations managed by the intl pipeline.
Each run appends a summary below.


Run: 2026-04-27 20:55:15 UTC


Run: 2026-04-27 21:02:15 UTC

  • Languages: ar, bn, cs, de, fr, hi, id, it, ja, ko, mr, pl, pt-br, ru, sw, ta, te, tr, uk, ur, vi, zh-tw, zh
  • Files: 23 (23 MD, 0 JSON)
  • Mode: auto
  • View workflow run

myelinated-wackerow and others added 11 commits April 24, 2026 14:39
Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
- Deprecate old banner, convert TranslationBannerLegal to TranslationBanner
- Utilize doNotTranslatePaths list from intl-pipeline for display boolean logic
- Remove dead code from BaseLayout

Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
Excluded-list paths are now logged and filtered rather than failing the job. Hard validation errors still throw. Job aborts only if every target path is excluded.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
Adds normalizeTargetPath: strips accidental translations/<locale>/ and src/intl/<non-en>/ prefixes, auto-prefixes JSON with src/intl/en/ and markdown with public/content/, and tolerates leading "./" or "/". Resolution is now normalize -> exists-check -> validate -> excluded-skip, failing early if any target is missing on disk. log() gains an optional level arg ("log" | "warn" | "error") so Netlify output is consistently tagged.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
- Moves DO_NOT_TRANSLATE_PATHS to constants (updates casing), where no unrelated env vars will throw errors
- Update local storage key name, including usage of pathname -- removes use of `/en/` prefix and Posix
- Fixes "return early" logic

Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
/review-translations now defaults to the open PR for intl/pending-dev and reviews only files changed since the last LLM review (read from each PR Review's GitHub-attached commit_id). Pass --full to override and re-review the entire PR. Reviews are submitted via gh pr review --comment, escalating to --approve only when zero critical issues remain. CI workflow updated to match: drops --scope input, adds --full, switches from gh pr comment to gh pr review, aligns trigger with intl/pending- branch naming.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
Adds Phase 4b: a dedicated pass that translates the values of translatable JSX attributes (title, description, alt, aria-label, etc.) on JSX components in markdown content. Restores behavior that regressed when the old i18n/ tree was removed (a110822) and its leftover gemini.ts attribute helpers were stripped as "dead code" (7f244df). The pipeline architecture had remained set up for it -- TRANSLATABLE_ATTRIBUTES list, normalizer emits component-attribute leaves, deterministic apply path -- but no orchestration drove the leaves through an LLM.

The pass is self-healing: only sends leaves to the LLM whose English value still appears verbatim in the locale file, so re-runs are no-ops on already-translated attrs. Failures throw and skip manifest stamping per spec's "do no harm" partial-failure rule.

Adds a temporary `force_attrs` workflow input (FORCE_ATTRS env) to backfill files in intl/pending-dev that were translated before this pass existed. Self-removable once those files are backfilled.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
…icals

The standalone sanitizer step pointed to src/scripts/i18n/sanitize-pr.ts (deleted in the i18n-to-intl-pipeline migration). Sanitization now runs as part of the intl-pipeline translation phase, so a separate sanitizer call here is redundant. Removed the step entirely -- review focuses on reviewing.

Adds an explicit note that reporting zero critical issues is acceptable. Counters the asymmetric-reward failure mode where agents fabricate criticals to "show their work."

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
Co-Authored-By: Gemini <gemini@google.com>
@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 27, 2026

Deploy Preview for ethereumorg failed.

Name Link
🔨 Latest commit 99ca057
🔍 Latest deploy log https://app.netlify.com/projects/ethereumorg/deploys/69efcedb4dcf040009a0f7b7

@github-actions github-actions Bot added content 🖋️ This involves copy additions or edits translation 🌍 This is related to our Translation Program labels Apr 27, 2026
@github-actions
Copy link
Copy Markdown
Contributor

🌐 Translation review started. View progress

wackerow and others added 13 commits April 27, 2026 14:01
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
wackerow and others added 12 commits April 27, 2026 14:02
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
@wackerow wackerow changed the title i18n: translation pipeline (es) i18n: translation pipeline (all) Apr 27, 2026
@wackerow
Copy link
Copy Markdown
Member Author

@wackerow wackerow closed this Apr 27, 2026
@github-actions github-actions Bot added the abandoned This has been abandoned or will not be implemented label Apr 27, 2026
myelinated-wackerow added a commit that referenced this pull request Apr 27, 2026
The flag served its one-shot purpose: backfilling JSX attribute translations on files in intl/pending-dev that pre-dated the Phase 4b pass. Backfill is complete (PR #18051 merged into pending). Going forward, normal pipeline runs handle attribute translation correctly via the self-healing filter, and the flag has no remaining use.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

abandoned This has been abandoned or will not be implemented content 🖋️ This involves copy additions or edits translation 🌍 This is related to our Translation Program

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants