Show HN: Zenòdot – Find if a book has been translated into your language
zenodot.appI'm a multilingual reader (Catalan/Spanish/English/Italian), and I kept hitting the same wall: I'd hear about a book and have no way to know if it existed in my language. Turns out this is a genuinely unsolved problem. There's no single database that tracks which books have been translated into which languages. ISBN registries are fragmented by country. Open Library has great English coverage but gaps elsewhere. Wikidata has surprisingly rich translation data but it's locked behind SPARQL. Google Books is inconsistent across regions.
So I built Zenòdot to cross all four and piece the picture together.
What I found building it:
-The ISBN system is far more broken than I expected. ISBNdb has millions of English records but almost nothing for languages like Basque, Icelandic, or Bengali. Books exist in these languages, they just don't exist in the databases.
-Wikidata was the biggest surprise. It has structured translation data for thousands of works, but extracting it requires SPARQL queries, title resolution across scripts (try matching a book title in Chinese to its English original), and author alias caching. Hard to build, but the results fill gaps that no other source covers.
-The most interesting output isn't what the tool finds; it's what it doesn't find. When someone searches for a book in a language and there's no result, that's a demand signal. "Someone in the world wanted this translation and it doesn't exist." That data could be genuinely useful to publishers.
The tool prioritizes your selected languages, so it shows you editions relevant to you first. The philosophy is "documentary infrastructure”: no recommendations, no social features, no accounts. You search, you find (or don't), you go buy the book wherever you want.
Stack: Next.js 15 (App Router), Supabase, Vercel, TypeScript. Solo project, no funding, about 4 months of work.
If you're multilingual or learning a language, I'd especially love your feedback. Try searching for a book you love and switching between languages, that's where the tool shows its value. It's a website that solves a real need, great. I tried it out, it's overall good, just the purchase options link for buying doesn't seem quite right; I tried bookshop, betterworldbooks, and amazon, but none of them could directly link to the book search page. But overall, it's interesting and useful. I also made a [book quote finder](https://www.aimoviequotes.com/quote-finder/quote-finder-in-b...) before, I'm a beginner at development but it was quite rough, I still have a lot to learn. Do you know https://annas-archive.gl/isbn-visualization/? And https://search.worldcat.org/? They could probably help you with your dataset. Yes! Both are excellent resources. Anna's Archive ISBN visualization is fascinating; it really shows how fragmented and incomplete the ISBN landscape is. We don't use their data directly (licensing concerns), but it confirmed what we were seeing: massive gaps in non-English coverage. WorldCat is great for library holdings but harder to use for translation discovery specifically, it tells you "this library has this edition" but doesn't easily answer "has this book been translated into Basque?" across its whole catalog. We'd love to integrate it eventually, though. Right now Wikidata turned out to be the secret weapon: it has structured translation relationships that none of the others provide. wow, ok. I definitely need this! This is my life now with French, Russian, German and whatever language of the moment I am messing around with. However, it stills looks like it's tied to localhost? I get a web socket error (to localhost:8081) and when I type the name of the title into the search title. Nothing happens and the button doesn't look like I can click it (no highlighting) Thanks for trying it! The localhost:8081 websocket isn't from Zenòdot, that's likely a browser extension (React DevTools, a proxy tool, or similar). Could you try in an incognito/private window with extensions disabled?
The search button activates once you've selected at least one language from the selector below the search bar. If you haven't picked any languages yet, it stays inactive... that might be what you're seeing.
Let me know if that helps! ahh right, wrong error. This is the one I get:
Uncaught Error: Minified React error #418; visit https://react.dev/errors/418?args[]=HTML&args[]= for the full message or use the non-minified dev environment for full errors and additional helpful warnings. That's from an incognito window on Chrome That's a React hydration mismatch. I'm aware of it but hadn't seen it block functionality before. Thanks for flagging that it does for you.
Can I ask: when you load the page, do you see the language selector (a dropdown/search where you pick languages like English, French, etc.)? The search button only activates after selecting at least one language — if the hydration error is breaking the selector, that would explain why the button seems unclickable.
I'm looking into it right now. What Chrome version are you on? > Version 145.0.7632.160 (Build officiel) (arm64) Yeah, I've tried switching the languages, not ALL the text on the page changes from the default language and I've tried not changing the lang. Same thing. Thanks for the details — that's very helpful. Chrome 145 on Mac, got it. The fact that text doesn't fully change when switching languages confirms the hydration error is breaking React's event handling.
I'm actively debugging this right now. I'll reply here when I have a fix deployed. shouldn't be long. Really appreciate your patience. Update: The hydration bug has been fixed and deployed. The search should now work correctly. Thanks for the report, it helped us catch a real issue. Would love to hear if it works for you now!