DEV Community

J Now
J Now

Posted on

When one translation isn't enough: building a language coach for real speech

I was drafting a message to my girlfriend in Farsi — something small, just that I'd thought about her during the day. Google Translate gave me a sentence. It was technically correct. It also sounded like a form letter.

The problem isn't accuracy. It's that human speech has registers, and a single translation collapses them all into one. "I missed you" said to a partner at the end of a long day sounds different from the same phrase in a formal letter, even in English. In Farsi, Japanese, or Korean, getting that wrong doesn't just sound odd — it signals that you didn't bother to learn how the language actually works.

So I built konid. It returns three options per query, ordered casual to formal, with the register explained and cultural context for why each version lands the way it does. It also plays audio pronunciation directly through your speakers via node-edge-tts, no external API key required.

The architecture is an MCP server, which means it drops straight into Claude Code, Cursor, VS Code Copilot, Windsurf, Zed, JetBrains, and Claude Cowork. One install command:

claude mcp add konid-ai -- npx -y konid-ai
Enter fullscreen mode Exit fullscreen mode

If you're working in ChatGPT, there's an endpoint for Developer mode too: https://konid.fly.dev/mcp.

For the Farsi message, konid returned the tender informal version, a slightly more composed mid-register option, and a formal construction — each labeled, each with a note on when you'd actually use it. I sent the first one. It landed right.

13+ languages supported, including Mandarin, Japanese, Korean, Spanish, French, Arabic, and Hindi.

https://github.com/robertnowell/konid-language-learning

Top comments (0)