chore(i18n): backfill de/ru/fr fallbacks for social-media-dashboard + totality-festival#702
Conversation
… totality-festival PR nexu-io#678 added the `social-media-dashboard` skill and the `totality-festival` design system to `skills/` and `design-systems/`, but did not register them in any of the three localized content files. That left `e2e/tests/localized-content.test.ts` failing on `main` since the merge of nexu-io#678: AssertionError: skills display copy: expected [ 'audio-jingle', 'blog-post', …(67) ] to deeply equal [ 'audio-jingle', 'blog-post', …(68) ] `main` has been red since, blocking CI on every open PR (e.g. nexu-io#700). Backfill follows the existing convention for skills/systems whose copy hasn't been translated yet: register them in the per-locale `*_SKILL_IDS_WITH_EN_FALLBACK` / `*_DESIGN_SYSTEM_IDS_WITH_EN_FALLBACK` arrays, which makes the picker fall back to the English title and summary at render time. This matches how 7 existing skills (orbit-*, html-ppt-taste-*, web-prototype-taste-*) and the bulk of the design systems are already handled in de/ru/fr. Translations are deliberately left as a follow-up for whichever native speakers triage this surface — the EN fallback is the documented pattern for "registered but not yet translated", not a missing piece of state. Verified locally: - `pnpm --filter @open-design/e2e exec vitest run tests/localized-content.test.ts` — 6/6 tests pass (was 3/6 before). - `pnpm --filter @open-design/web typecheck` — clean. - `pnpm --filter @open-design/web test` — 42 files / 309 tests pass.
|
Hi @Sid-Qin! 🎉 Thanks for the contribution — this is the perfect fix for the CI blockage. The surgical approach (adding two fallback entries per locale) matches the existing pattern exactly, and your rationale about deferring full translation to native speakers is spot-on. I will run a deep review and get back to you within 24h. Thanks for making open-design better! |
lefarcen
left a comment
There was a problem hiding this comment.
Hi @Sid-Qin — great fix! ✅
This is a textbook i18n fallback patch: both social-media-dashboard and totality-festival are alphabetically placed, match their source resource files, and the EN_FALLBACK pattern is the documented approach for "registered, English-only for now." The rationale about deferring full translations to native speakers is solid — placeholder translations would be worse than explicit fallback, and this unblocks CI immediately.
Verified:
- TypeScript typing correct (
as constpreserved) - IDs match
skills/social-media-dashboard/SKILL.mdanddesign-systems/totality-festival/DESIGN.md - Test path
e2e/tests/localized-content.test.tsis the right one - Pattern consistent with existing
orbit-*/html-ppt-taste-*entries
Looks good to me; deferring final approval to a maintainer.
|
Heads-up on the failing CI run — the locale fix in this PR works as intended; the failure is on a separate, pre-existing Playwright UI flake that was previously masked by the very gap this PR closes. Concretely:
I just pushed an empty commit (`5f93cfd`) to trigger a fresh CI run. If the Playwright failure repeats in the same spot, it's a real second issue that deserves its own investigation — not a blocker for this i18n backfill, which is the documented fix for the actual breakage. Happy to spin up a follow-up issue / diagnostic PR for the design-system-trigger UI test once we have CI re-run signal. Either way, this PR's diff is exactly what @lefarcen reviewed — flagging it for a maintainer to admin-merge if the Playwright flake repeats. |
mrcfps
left a comment
There was a problem hiding this comment.
@Sid-Qin I reviewed the three localized content fallback updates for de/ru/fr and verified that the new social-media-dashboard skill plus totality-festival design-system IDs match the existing English-fallback pattern and their resource directories. This is a focused, maintainable fix for the localized-content coverage gap; thanks for unblocking the i18n CI path so carefully 🙌
|
Heads up @Sid-Qin — #697 now includes the same i18n fallback-list fix for If #697 lands first, this PR becomes duplicate and can be closed. If maintainers prefer merging this standalone i18n fix first, we can rebase/drop the duplicate fallback changes from #697 afterward. Thanks for isolating the root cause here. |
|
Thanks @mrcfps 🙏 — totally fine with #697 landing first; the i18n surface coverage is identical and getting CI back to green is the goal. Once #697 merges I'll close this PR as duplicate. Two side notes from chasing this thread that might be useful for the next person:
Happy to spin a follow-up that hardens the Playwright setup, but only if it's wanted as a standalone — not blocking anything here. |
|
#697 has now been merged, and it includes the same de/ru/fr fallback coverage for Because that fix is already on The Playwright/design-system-trigger flake you found is still worth hardening separately; contributions there are very welcome if you’d like to spin up a focused follow-up PR. |
|
Closing as duplicate of #697, which has already merged the same i18n fallback fix. Thanks again for the contribution. |
Summary
PR #678 added the `social-media-dashboard` skill and the `totality-festival` design system to `skills/` and `design-systems/`, but didn't register them in any of the three localized content files. `main` has been red since the #678 merge — `e2e/tests/localized-content.test.ts` fails for `de` / `ru` / `fr` with:
```
AssertionError: skills display copy: expected
[ 'audio-jingle', 'blog-post', …(67) ]
to deeply equal
[ 'audio-jingle', 'blog-post', …(68) ]
```
This blocks CI on every open PR — for example PR #700 (the #691 OpenCode error-frame fix), which is daemon-only and has nothing to do with i18n. @lefarcen called this out in #700's review and suggested either backfilling the locale files or temporarily skipping the failing test. This PR takes the backfill path so main goes green for everyone.
Changes
Six entries across three files, all in the same shape as the existing pattern:
Why fallback rather than full localization
The codebase already has a documented "registered but not yet translated" pattern: the `_SKILL_IDS_WITH_EN_FALLBACK` / `_DESIGN_SYSTEM_IDS_WITH_EN_FALLBACK` arrays. 7 existing skills (the `orbit-` Orbit briefing templates, `html-ppt-taste-`, `web-prototype-taste-*`) and the bulk of the design systems are already handled this way in de/ru/fr. The picker falls back to the English title + summary at render time, so users still see something coherent.
Translations are deliberately left as a follow-up for whichever native speakers triage this surface — the EN fallback isn't "missing state," it's the documented contract for "registered, English-only for now." If maintainers want full de/ru/fr copy for these two entries, that's a separate PR with native review.
Test plan
After merge, PR #700's CI should auto-go-green on rebase and unblock its review.