DEV Community

J Now
J Now

Posted on

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

I wanted to tell my girlfriend "I missed you today" in Farsi and have it land the way I meant it — warm, personal, not a phrasebook entry. Every tool I tried gave me one answer and moved on. No register. No explanation of whether I was being formal or weird or accidentally cold.

That's the failure mode of literal translation tools: they get you through the task but they don't teach you anything, and they don't tell you when the single answer they gave you is only one of three valid options with meaningfully different weights.

So I built konid — a language coach that returns three options per query, ordered casual to formal, with the register explained and cultural nuance compared between them. Thirteen-plus languages including Mandarin, Japanese, Korean, Spanish, French, Arabic, and Hindi.

The specific thing I kept wanting but couldn't get elsewhere: audio pronunciation played directly through speakers, no API key required, via node-edge-tts. This matters more than it sounds. Reading a romanization of a tonal language is a different cognitive task than hearing the tone contour once and letting your auditory memory do the work. For Mandarin especially, the difference between third-tone and second-tone isn't something you can hold in your head from a phonetic string — you need to hear the shape of it. Vowel length in Arabic, pitch accent in Japanese: same problem. Hearing it once is worth more than reading the pronunciation guide three times.

The workflow is an MCP server. If you use Claude Code:

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

Also works with Cursor, VS Code Copilot, Windsurf, Zed, JetBrains, and Claude Cowork. If you're on ChatGPT, enable Developer mode and add https://konid.fly.dev/mcp as the endpoint.

The name: 'konid' (کنید) is Farsi for 'do.' Take action.

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

Top comments (0)