Inspiration
Online ACG and fandom communities have developed their own languages over time. Terms such as "推し", "CP", "地雷", "梦女", and many others can be difficult to understand through ordinary translation tools because their meanings depend heavily on cultural context.
We noticed that this creates two different kinds of communication barriers.
First, people from different generations or people who are new to ACG culture may struggle to understand fandom terminology at all. A term that is immediately obvious to an experienced fan may be completely unfamiliar to a parent, a newcomer, or someone outside the community.
Second, even experienced fans from different countries may understand similar concepts differently. Chinese, Japanese, Korean, and English-speaking fandom communities have developed different terminology and conventions. For example, some East Asian fandom communities place strong importance on the ordering and roles within a character pairing, while these distinctions may be expressed differently in English-speaking fandom spaces.
This inspired us to create a searchable ACG cultural dictionary that does more than translate words. Our goal is to explain the cultural context behind fandom terminology and help people from different generations, languages, and communities understand each other.
Beyond Words, Beyond Worlds.
What it does
ACG Culture Translator explains anime, comic and game slang to people outside the fandom. You can look up one term, or paste a whole message and let the site find the slang for you.
Every entry opens with the same contrast. We show what a machine translator would tell you, then what the term actually means. 草 is not grass. It means someone is laughing. 太太 has nothing to do with wives. It is a title of respect for a fan artist. 地雷 is not a landmine. It is a character or a pairing that someone wants to avoid.
Each entry then gives a plain explanation, a real example from a comment section, and a note on how the same word behaves differently in Chinese, Japanese and English communities. That last part matters more than it sounds. 草 is completely neutral in Japanese, but in Chinese it is also a swear word, so the safe way to use it is not the same in both places.
Every explanation exists in three languages and at two depths. Simple is written for a parent or a newcomer, and it is never allowed to explain slang using more slang. Full covers where the term came from and how people use it today.
The Decode page is the part we care about most. A parent reading their child's post usually cannot tell which words are slang in the first place, so searching one term at a time does not help them. Instead they paste the whole message. The site highlights every term it recognises and writes a numbered note underneath, the same way a fansub group adds a translator's note at the top of the screen.
There is also a family mode that hides terms which need adult context.
How we built it
The front end is React with Vite. The whole dictionary lives in one JSON file. Each entry holds the term, its reading, every alias, the machine translation, the real meaning, both levels of explanation in three languages, an example and a cross cultural note.
Keeping the data in a single file was a deliberate choice. It meant one of us could write entries all night while the other two wrote code, and nobody had to wait for anybody. It also meant we did not spend any of our twenty four hours setting up a database.
Search runs on Fuse.js and covers the term, the aliases, the readings and the explanations. So 草, kusa, w and grass all lead to the same entry.
Decode runs entirely in the browser. We build an index from every term and every alias, then scan the text from left to right and take the longest match at each position.
The back end is FastAPI and it is deliberately small. It only handles the AI part. When Decode finds a word we have never covered, the back end asks a language model to draft an entry in the same JSON shape as our real ones. The draft is always labelled as unreviewed, and it never enters the dictionary by itself.
Because all of the lookup happens in the browser, the site keeps working with no network at all. We built it that way on purpose so the demo cannot fail.
Challenges we ran into
The hardest technical problem was finding terms inside Chinese and Japanese text. Neither language puts spaces between words, so we could not simply split the sentence and look words up. We wrote a longest match scanner instead, which tries the longest possible term at each position and falls back to shorter ones. Then we ran into the opposite problem. The letter w is a real term meaning laughter, but searching for it matched the w inside ordinary English words. We added a word boundary rule for anything written in Latin letters.
Aliases turned out to be the heart of the project. 草, w, wwww and 2333 all mean the same thing, and a user might type any of them. We had to design the data so that one entry can be reached from many different spellings. The alias list ended up being the field that decides whether the whole site feels smart or useless.
Writing the Simple explanations was slower than writing the code. Our rule was that a simple explanation may never contain another piece of slang. That sounds easy until you try it. We kept catching ourselves explaining 磕CP using 粮, or explaining 太太 using 大手. Some entries went through several rewrites before they passed.
We also had to decide what not to build. Our first plan included user accounts, discussion pages and edit history. We cut all of them. A judge who clicks into an empty login form learns nothing about our idea, and those features would have taken most of the night.
The last challenge was trust. A wiki that quietly invents meanings is worse than no wiki at all. So the model is forced to return a fixed structure, every AI draft is visibly marked as unreviewed, and nothing reaches the dictionary until a person has read it.
What we learned
While developing the idea, we realised that cultural translation is very different from direct language translation.
Many fandom terms do not have an exact equivalent in another language. Two words may appear to mean the same thing, but their cultural usage, connotations, and importance within their communities can be different.
We also learned that online culture changes quickly. New terminology constantly appears, while existing words can develop new meanings. Because of this, a static dictionary may quickly become outdated.
This led us to design the project as a community-oriented platform where new terminology can eventually be added and updated as fandom culture continues to evolve.
Log in or sign up for Devpost to join the conversation.