fedec65 hardens the four-language Mike

A 36-hour cleanup turns a rough German/English/French/Italian scaffold into something close to shippable across all four locales.

i18n

fedec65 had already wired Mike up for four languages a few commits earlier. This thread is the unglamorous part that follows: roughly ninety more translated phrases per language, plus fixes for the kinds of bugs that only surface once real users start clicking around - buttons stuck in German, status labels still in English, the page itself reporting the wrong language to the browser.

The back-and-forth is honest about the method: a lot of this was driven by find-and-replace, which caught most of the UI but also wrapped translation calls around things that weren't text at all, like import paths and stray punctuation. Two later commits walk those mistakes back. The net result is a Swiss legal UI that now speaks DE, EN, FR and IT with reasonably consistent coverage.

So what Anyone evaluating Mike for a multilingual European practice should look here first - it's the only fork seriously pushing all four languages at once.

View this fork on GitHub →

Spotted something wrong? Or know the PR text has fresher detail than the writeup above?

Commits in this thread

5 commits from fedec65/bettercallmitch, oldest first. Source extracted verbatim from the harvested git log.

SHA Subject Author Date
1f2a7f65 fix(i18n): comprehensive translation coverage for EN/DE/FR/IT Federico Cesconi 2026-05-06 ↗ GitHub
commit body
- Add ~80 new translation keys across all 4 language files
- Wire up 40+ components to use useTranslations instead of hardcoded strings
- Fix placeholders, aria-labels, titles, button text, alerts, inline text nodes
- TypeScript compiles cleanly
- Only remaining hardcoded strings are API key format examples
b4c96d34 fix(i18n): second pass - inline text nodes, breadcrumbs, status labels Federico Cesconi 2026-05-06 ↗ GitHub
commit body
- Add 11 more translation keys across all 4 languages
- Fix remaining inline text in AssistantMessage, TRChatPanel, WFColumnViewModal
- Translate breadcrumbs (Workflows, Projects, Assistant)
- Translate status labels (Running, Thinking, Applied Workflow)
- Translate empty states and modal titles
- TypeScript compiles cleanly
c33fac9d fix(i18n): read NEXT_LOCALE cookie directly in getRequestConfig Federico Cesconi 2026-05-06 ↗ GitHub
commit body
- Explicitly read the NEXT_LOCALE cookie in i18n.ts as a fallback
  when requestLocale doesn't detect the locale (common issue with
  localePrefix: 'never' in next-intl v4)
- Use dynamic locale in html lang attribute instead of hardcoded 'de'
- TypeScript compiles cleanly
198ab24c fix(i18n): resolve namespace conflicts in useTranslations Federico Cesconi 2026-05-06 ↗ GitHub
commit body
- Change useTranslations('common') to useTranslations() in 35 components
  that access keys from multiple namespaces
- Strip redundant 'common.' prefix from translation keys
- Fix AssistantWorkflowModal double namespace (assistant.assistant.*)
- TypeScript compiles cleanly, no more MISSING_MESSAGE errors
0d6cd6a0 fix(i18n): restore common. prefix and fix false positives Federico Cesconi 2026-05-07 ↗ GitHub
commit body
- Restore 'common.' namespace prefix for keys under the common namespace
  when using useTranslations() without a namespace argument
- Fix false positives where regex matched non-translation strings:
  document.createElement('a'), import paths, punctuation
- TypeScript compiles cleanly

Capture this thread into my fork

Download a single Markdown prompt that tells Claude how to port every commit above into your working tree — adapting paths and structure to match your repo. Run it via claude -p < capture-thread-61.md from inside the repo you want the changes in.

⬇ Download capture-thread-61.md