Writing

Building Bridges

AI translations

· 4 min read

I vibe coded Lexicon Forge. It accepts urls to web novel chapters in Korean, Japanese, Chinese etc and lets you translate it into say English using a bunch of different AI models.

Initially I used to scrape these websites and upload them to google drive, then just chat with Gemini asking it to translate chapters. It helped to have the last few chapters in context so I added that feature to my app.


Then I realised I hated waiting for chapters to load. I wanted to ensure the next three chapters were translated in advance so I could just keep reading in flow so I built that feature.

These webnovels are often adapted into manga/manhwa, then into anime. So there are some kick ass scenes that I wanted to visualise inline so I set up support for a ton of image models.

As I was reading and now it was fun I felt insecure. What if these AI models were lying to me, censoring politically spicy takes, hot scenes. I did not want it playing moral police and skipping important plot points!


So I implemented a toggle so I could read the human translated version also! Now I could compare to see if my fav AI translation is better than the fan translation


Well then I noticed I rarely bothered to do hard work of moving between both versions. Like scroll up, toggle and scroll down to find the corresponding para? Not me, I don’t care that much!

So I set up a “diff heatmap” feature that compares the original to fan translation to the AI translation so that subtle colours appear next to each paragraph that indicates if I need to compare and check


Then I set up inline comparison so I can pull the fan translation segment into the AI translation view on demand!

The other tool bar options include asking for footnotes ? - explaining that word choice and related etymology, giving positive 👍 and negative 👎 feedback to the AI, inserting image of a scene and manually editing the AI translation to make it just right.


Ok so what has all this got to do with building bridges?

Well like my website says, adityaarpitha.com - Building Bridges between Niche Subcultures. I wanted this interface to enable me to meet the source text more intimately.

This is not just about reading novels in a different language. Even within english we have subcultures, communities that have their own jargon. If you ask them to translate their ideas, they struggle because often they need to use a constellation of words that have specific connotations and are related to each other.

In a world where AI makes it cheap to generate custom narratives, videos, images, text. We are likely to see a lot more fragmentation, an explosion of new subcultures with their own terminology, rituals, values.

It is important that we have interfaces that let us translate between these echo chambers. Rather than trying to set up one centralised consensus reality that everyone is anchored to, it seems more tractable to build bridges between all of our islands.




With all these features mentioned above I became comfortable in the target language.

I have not talked about many other features like the meta prompt where the model can propose amendments to the system prompt based on your feedback, how there is a living glossary where terminology specific to that body is added to ensure consistent naming is maintained, you can create an instrumental music track that tracks the flow of the story arc that you can play while reading, export the epub which tracks how much money, time was spent forging this version, which AI models was used. You can share your AI translation to the community with details about your stylistic choices.

I could use images, music, etymology to represent the ideas and these affordances such as paragraph level translation comparison were ideal for me to feel comfortable with the translation. A lot of complexity was hidden away, if you did not enable those features in settings you would not even see a lot of these in the UI. Designing an interface is about picking which affordances and constraints help shape your attention in wholesome ways.


The next phase for this project will be to make it easier to spend time in the source language. This can mean having the “Original” raw text tab have more than just symbols in a foreign language. We can pronounce words, see how syntax works in that language, see meaning forms at the stem/root word level, at the sentence and paragraph levels.

Even if you can’t transfer all the subtle nuances in a strange language over to the language you are intimately familiar with, at the very least I want to be aware that there is something here.

I would love your feedback, pull requests (the code is open source!) and support to continue to make interoperability easier!