Localize the Concept Reference dictionary panels (C#, Python, C, C++ playgrounds) #301

Closed
opened 2026-06-30 22:35:44 +00:00 by spikerj · 2 comments
Owner

Summary

The hover-term "Concept Reference" dictionary panels in the C#, Python, C, and C++ playgrounds are sourced from hardcoded, English-only TypeScript data files in spikersoft-angular, with no i18n mechanism at all:

  • libraries/features/dev-tools-csharp-runner/src/lib/csharp-concepts.data.ts
  • libraries/features/dev-tools-python-runner/src/lib/python-concepts.data.ts
  • libraries/features/dev-tools-c-runner/src/lib/c-concepts.data.ts
  • libraries/features/dev-tools-cpp-runner/src/lib/cpp-concepts.data.ts

Each entry (label, summary, details, signatures[].note, examples[].explanation) is plain English text rendered directly in the hover card, regardless of the active platform language.

Origin

Split out from spikerj/spikersoft-issues#271 ("Missing translations at C++ Playground"). That report's instructions panel symptom was fixed by the #279#296 lesson-content localization work (PR #29), but the Concepts panel symptom it also called out is a separate system (frontend-only static data, not the backend LessonTranslation pipeline) and remains unresolved.

Scope

  • Decide on a localization approach for LanguageConcept entries: either (a) extend the LanguageConcept model with locale-keyed fields (mirroring the backend's CurriculumLocale pattern), or (b) move concept copy into the existing i18n JSON files (en.json/es.json) keyed by concept id, with the data files holding only structural metadata (token, kind, signatures syntax, relatedLessonNumbers, etc).
  • Translate all entries across the 4 data files to Spanish.
  • Wire the concept-reference component to read the active language and select the right copy.
  • Add a regression test (analogous to CurriculumLocaleTests.SpanishTranslations_NoUnresolvedSeedTokensLeak) ensuring every concept has Spanish copy before it ships.

Severity

Medium — visible, reported by users, but scoped to a secondary reference panel rather than core lesson instructions.

## Summary The hover-term "Concept Reference" dictionary panels in the C#, Python, C, and C++ playgrounds are sourced from hardcoded, English-only TypeScript data files in `spikersoft-angular`, with no i18n mechanism at all: - `libraries/features/dev-tools-csharp-runner/src/lib/csharp-concepts.data.ts` - `libraries/features/dev-tools-python-runner/src/lib/python-concepts.data.ts` - `libraries/features/dev-tools-c-runner/src/lib/c-concepts.data.ts` - `libraries/features/dev-tools-cpp-runner/src/lib/cpp-concepts.data.ts` Each entry (`label`, `summary`, `details`, `signatures[].note`, `examples[].explanation`) is plain English text rendered directly in the hover card, regardless of the active platform language. ## Origin Split out from spikerj/spikersoft-issues#271 ("Missing translations at C++ Playground"). That report's **instructions panel** symptom was fixed by the #279 → #296 lesson-content localization work (PR #29), but the **Concepts panel** symptom it also called out is a separate system (frontend-only static data, not the backend `LessonTranslation` pipeline) and remains unresolved. ## Scope - Decide on a localization approach for `LanguageConcept` entries: either (a) extend the `LanguageConcept` model with locale-keyed fields (mirroring the backend's `CurriculumLocale` pattern), or (b) move concept copy into the existing i18n JSON files (`en.json`/`es.json`) keyed by concept `id`, with the data files holding only structural metadata (`token`, `kind`, `signatures` syntax, `relatedLessonNumbers`, etc). - Translate all entries across the 4 data files to Spanish. - Wire the concept-reference component to read the active language and select the right copy. - Add a regression test (analogous to `CurriculumLocaleTests.SpanishTranslations_NoUnresolvedSeedTokensLeak`) ensuring every concept has Spanish copy before it ships. ## Severity Medium — visible, reported by users, but scoped to a secondary reference panel rather than core lesson instructions.
Author
Owner

Opened spikersoft-angular PR #85. Adds Spanish overlays for all 184 remaining Concept Reference entries (44 Python + 67 C + 73 C++) and wires LANGUAGE_CONCEPT_TRANSLATIONS into each runner — the pane's localization mechanism was already generic (built for C# in #213), so no component changes were needed. Will close this out once merged.

Opened [spikersoft-angular PR #85](https://git.spikersoft.com/spikerj/spikersoft-angular/pulls/85). Adds Spanish overlays for all 184 remaining Concept Reference entries (44 Python + 67 C + 73 C++) and wires `LANGUAGE_CONCEPT_TRANSLATIONS` into each runner — the pane's localization mechanism was already generic (built for C# in #213), so no component changes were needed. Will close this out once merged.
Author
Owner

Resolved in spikersoft-angular PR #85 (merged to master). Added Spanish Concept Reference overlays for Python (44), C (67), and C++ (73) via the existing generic LANGUAGE_CONCEPT_TRANSLATIONS mechanism (C# was already wired up in #213), plus guard specs for each. Hovering a term now shows Spanish prose when the app language is Spanish. Closing.

Resolved in spikersoft-angular PR #85 (merged to `master`). Added Spanish Concept Reference overlays for Python (44), C (67), and C++ (73) via the existing generic `LANGUAGE_CONCEPT_TRANSLATIONS` mechanism (C# was already wired up in #213), plus guard specs for each. Hovering a term now shows Spanish prose when the app language is Spanish. Closing.
Sign in to join this conversation.