I built a tool[0] that gives you constant input at your level as you browse the web, so you don't need to take time out of your day. You can just learn a little as you browse, and let it compound over time.
It works by estimating the difficulty of English sentences, then translating ones at your level into your target language.
Cool idea, unfortunately the example on the front page has errors in both Danish and French.
In Danish the third line is translated as "Du kan vende tilbage til oversættelser ved at holde musen over dem." which means "You can return to translations by hovering over them." i.e. the opposite of what happens. As a native Danish speaker I'd write "Du kan vende tilbage til originalerne ved at holde musen over dem.". I've had a hard time finding a translation that more accurately matches the wording of the original. The best I could come up with is "Du kan reversere oversættelserne ved at holde musen over dem.", but that just sounds like you're speaking English with Danish words to me, so I don't know if it's useful.
In French the second line is translated as "Plus la difficulté augmente, plus la traduction est importante" which means "As the difficulty increases, translation becomes more important.". Kagi Translate proposes "Plus la difficulté augmente, le volume de traduction augmente" and a few other things that don't look quite right to me.
I don't know how much this matters, since you'd probably end up exposed to a lot of different translations of many different sentences with this tool. Statistically, most of those will be correct and so you'll end up good enough understanding of the other language anyway.
In any case, you'd probably want to make extra sure that the examples on the front page are absolutely correct, so I hope you find my two corrections useful.
Oh! One more thing... when you select Japanese it says "Supports Furigana", but there's no furigana shown in the example. It would've been cool to see that on the example page as well.
Thanks for letting me know. The front page items are translated with DeepL, which is used for text that's currently visible. My benchmark claims that it's actually pretty good at French (I haven't got data for Danish) - one of the reasons I'm currently remaking it!
I hadn't heard of Kagi Translate; I'll add it to the benchmarking I do. And I'll see about adding Furigana there.
What's your benchmark? How many paid subscribers do you have that actually use it while browsing?
And why do you think did duolingos competitor "toucan" not take off? How does nuenki do the job better?
Seriously interested and happy to read more insights.
Disclaimer: i did create an MVP of this exactly. But it was just to try and generate some cash quickly to finance my main project (dumb idea, of course). I did get some signups but never even launched the app (and not planning to). Just curious what your experience is.
Toucan did take off; it's fairly well known, and if their website is anything to go by they have hundreds of thousands of people using it.
It translates on a per-word basis, which means that the translations are often simply wrong due to a lack of context. Nuenki doesn't translate single word "sentences" by default, despite me spending a few days trying to improve the quality, because there just isn't enough context to go off of.
They try to mitigate that by only translating certain words, mostly nouns, which limits how much you can learn from it.
They also only have three difficulty levels, while Nuenki assigns a numerical score to each sentence's difficulty and has much finer grained control.
The flip side of that is that it's free, while Nuenki needs to pay for the cost of translation.
I've got ~20 paid subscribers. People on HN seem to love it, and most of my users are from here, while capital-L language learners are hard to market to. There's a lot of AI slop in language learning, and I'm really not good at marketing!
This looks really useful! Wish I'd had something like this when I was learning Mandarin.
I'm curious what determines whether or not you add a given language to the list. DeepL and Claude, at least, have usable translation ability in more languages than the app currently supports. Is there a lot of manual effort required for each language, or do you want to keep the list limited just to avoid overwhelming users?
Thanks! I'm glad people like it; I'm hopeless at marketing it to Language Learners:tm:, but programmers seem to love it and it's nice to get some positive feedback.
DeepL is actually pretty limited in what it supports. Unless I've missed a new language, Nuenki supports all of DeepL's languages.
Some of the additional ones are supported via Claude only and, where permitting, Groq. Groq is far faster than Claude; in languages that DeepL supports, DeepL handles visible text and Claude handles text that you haven't scrolled to yet. Claude-only languages are a bit of a worse experience.
It's pretty easy for me to add a language. It's all stored in a centralised toml file, which happens to be open source - https://github.com/Alex-Programs/nuenki-languages/blob/maste... - and it's about a 20 minute job to add a language, test it, etc. Then it's about half an hour and 5 USD to benchmark whether Llama is any good at it, and if so enable Groq and make the experience a bit more pleasant. I'm currently working on improving the translation quality benchmark (https://nuenki.app/blog/the_best_translator_is_a_hybrid_tran...), because people seem to like it and there's definitely a lot of room for improvement.
That 20 minute number is without updating the big language cloud on the website, which is a bit finicky; iirc I haven't added Vietnamese to it yet.
If anyone here has any requests, I'd gladly add them!
My biggest progress in English was when I started to read the English internet (HN, Reddit, etc.). I used an browser extension to translate words that I didn't know.
I'm learning Spanish now, but there is no content that interests me. Maybe the Spanish Wikipedia sometimes.
So this extension gives me that language exposure.
It works by estimating the difficulty of English sentences, then translating ones at your level into your target language.
[0] https://nuenki.app