DogStark / DogStark/Wordbloc

🌍 Multi-language mode still teaches English words — build locale-aware curricula and complete i18n

Open
#21 2 comments 0 reactions 1 assignee Claimed by @johnvon1112 View on GitHub
difficulty: hard enhancement frontend GrantFox OSS Maybe Rewarded Third Campaign
Dominant language
JavaScript
Stars
1
Forks
12
Avg merge
2d 7h
Merged PRs (30d)
4

Description

## Problem

Selecting Spanish, French, German, or Chinese changes a handful of interface labels and the speech-synthesis locale, but the spelling curriculum remains English. The app then asks a non-English voice to pronounce English strings such as `cat`, `dog`, and `yellow`, while category names, age-level names, instructions, dashboard copy, and most controls remain English.

This makes the advertised “full translation + speech” behavior misleading and can actively teach incorrect pronunciation.

## Evidence

- `game.js` defines a single English-only `curriculum` object for every age and category.
- `advanced-systems.js` contains UI string maps, but `MultiLanguageSupport.setLanguage()` only calls `updateUI()` and `updateGameModeLabels()`.
- Only a small number of elements in `game.html` use `data-translate`.
- `speakInLanguage(currentWord)` applies the selected locale to the unchanged English word.
- `updateAgeDisplay()` renders English curriculum/category names directly.

## Proposed implementation

1. Define a locale-aware curriculum schema with stable IDs and per-locale spelling, display text, phoneme/audio metadata, image description, and age/category placement.
2. Move all user-visible strings out of HTML/JavaScript into complete locale catalogs, including validation, instructions, dashboard, settings, achievements, and game-mode copy.
3. Make locale fallback explicit and visible; never silently pronounce English content with a different locale.
4. Prefer reviewed/recorded phonics audio where browser TTS cannot reliably teach letter sounds.
5. Persist locale per child profile rather than as one browser-global setting.
6. Add automated catalog-completeness and curriculum-schema checks, plus native-speaker review guidance.

## Acceptance criteria

- Each advertised locale has a reviewed, age-appropriate word curriculum; unsupported locale/category combinations clearly fall back to English as a unit.
- The selected language controls the word, answer letters, speech/audio, category and level names, instructions, feedback, settings, and dashboard.
- No English word is sent to a non-English TTS voice unless that content is explicitly marked as English.
- Missing and extra translation keys fail CI.
- Locale switching cannot change the identity/history of already-recorded attempts.
- Documentation states the actual coverage and review status of every locale.

## Testing notes

- Add unit tests for fallback resolution and locale persistence.
- Add an end-to-end pass that completes one word in every locale and asserts text, answer, and speech locale agree.
- Include CJK handling in letter segmentation; do not assume `word.split('')` is a pedagogically valid character model.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.