[Task] Show translated courses on the dashboard
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 25/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- typescript
- Domain
- frontend, internationalization
Research direction
Start by finding every inspectCatalog('en') call: the dashboard pages, dashboard/src/lib/store.ts and the import preview. Choosing the language per request and mapping the free-text profile language to a courses/<lang> folder are open decisions, so settle them with the maintainer first. Read docs/seo.md before touching sitemap.xml, llms.txt or the inLanguage data. Done when a courses/fr fixture shows French titles for a French learner, untranslated courses fall back to English, progress ids stay the same, and npm test passes.
Written by the indexing model from the issue text.
Description
Summary
Let the dashboard show the catalog in the learner's language when a translation exists (courses/<lang>/), falling back to English.
Why
The tutor already teaches translated courses: the MCP tools take a lang argument and fall back to en. The dashboard does not: every page calls inspectCatalog('en'), so a learner taught in French would still see English course titles, descriptions, lesson titles and themes. This blocks #197 from being useful end to end.
Scope
- Choose the catalog language per request (the learner's saved language, with
enas fallback when a course or the whole language is missing) instead of the hard-coded'en'in the pages,dashboard/src/lib/store.tsand the import preview - The profile stores the language as free text (e.g. "English"), not a code: decide how it maps to a
courses/<lang>folder - Signed-out public pages,
sitemap.xml,llms.txtand the structured data (inLanguage): decide whether they stay English or get per-language addresses (seedocs/seo.md) <html lang>and date formatting follow the chosen language
Out of scope
Translating the dashboard's own interface text (dashboard/src/i18n/en.ts is the only language today). Worth its own ticket.
Acceptance criteria
- With a
courses/fr/fixture and a learner whose language is French, home, the catalog and a course page show the French titles - A course with no translation shows in English, with no warning
- Progress is unchanged across languages (same lesson ids)
-
npm testpasses, with a course fixture that has a second language
Size
M
- Dominant language
- TypeScript
- Stars
- 1
- Forks
- 0
- Avg merge
- 1h 18m
- Merged PRs (30d)
- 149
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from CGSeb/lessonfolk
-
dashboard enhancement good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
CGSeb/lessonfolk#200 ·
Maintainers usually reply within 1 day
-
course help wanted
Difficulty 3/5 1-2 days Newbie friendliness 45/100
CGSeb/lessonfolk#199 ·
Maintainers usually reply within 1 day
-
infra security
Difficulty 4/5 3-5 days Newbie friendliness 32/100
CGSeb/lessonfolk#150 ·
Maintainers usually reply within 1 day
All issues in CGSeb/lessonfolk
Similar issues
-
bug require-triage
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
expressjs/expressjs.com#2549 · 1 reaction ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
umami-software/umami#4686 · 1 comment ·
Maintainers usually reply within 2 days
-
[Bug]: Device screenshot fails with 500 on iPhone Duo (Xcode 27.2): serve-sim calls simctl without --displayPossibly taken A pull request linked to this issue is open or already merged. Open
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
pingdotgg/t3code#24900 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
inu-appcenter/UNIDorm-web#411 ·
Maintainers usually reply within 1 day
-
🐛 bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 2 days