Hi everyone,
I've been playing on Project Celeste for a while now(actually over 8 years), and first of all, a huge thank you to the team for keeping this game alive. I want to share a small side project that turned into a really fun weekend.
**The idea**
Turkish has never been one of the game's languages. One evening I opened the game folder and started wondering: where do the language files actually live? Are they open? Could a new language be added? I'm not a modder, so I opened up Claude (Anthropic's AI assistant) right inside my game folder and asked it exactly those questions.
**What we found**
All of the game text sits in plain XML files in the `DATA` folder: `stringtablex.xml` for the UI, `QuestStringTable.xml` for quests, plus files for economy items, equipment, pro tips and loading screens. Each language has its own copy (`de-DE-…`, `fr-FR-…` and so on), and a small file in `startup` tells the game which set to load.
Adding a brand-new language isn't really possible, because the language list and flags are built into the launcher. So we went with plan B: borrow one of the existing slots. We picked Brazilian Portuguese.
**The first surprise**
We replaced the pt-BR (brazilian) text files, I started the game… and everything was still in Portuguese.
After some digging, it turned out the pt-BR tables also live inside the `Data.bar` archive, and the game prefers the archived copy over loose files. The fix was simple: save the Turkish files under new `tr-TR-…` names that don't exist in the archive, then point the pt-BR startup file at them. I didn't have to touch the archive at all. I'd also told Claude I didn't want a Portuguese/Turkish mix I couldn't read, so every Turkish file starts as a copy of the English one. Anything not translated yet simply shows up in English.
**The second surprise: the font**
The first test showed "OYNA" (Play) and "SEÇENEKLER" (Options) in the main menu, which was a great moment. Then I noticed the unit name panel at the bottom showing "KIşLA" (Barracks) with a weird-looking ş.
Claude pulled the decorative title font (Ashley Crawford) out of `Fonts.bar` and checked it glyph by glyph. It turned out Ş, Ğ and İ simply aren't in the font. So it built them out of pieces the font already had (S + the cedilla from Ç, G + breve, I + dot accent), saved the result as a separate font under a new name, and pointed a Turkish font-definition file at it. The original game files stayed untouched, and the titles keep their original look.
**Then the actual translation**
The full job came to about 30,000 lines, roughly 1.5 million characters. Claude set up a small pipeline:
- split the English text into ~100 chunks (unique strings only, so duplicates are translated once),
- write a glossary first, so terms stay consistent (Town Center → Şehir Merkezi, Villager → Köylü, Barracks → Kışla…),
- hand the chunks to several AI helper agents running in parallel,
- automatically check every line so placeholders like `%s`, `\n`, `<color=…>` tags and `●` bullets survive exactly,
- rebuild the Turkish XML files and validate them.
I did get a say in it. For example, I didn't like "Keşifçi" for Scout, so it became "Gözcü", and that choice is locked in for every rebuild.
**Where it ended up**
- UI: 21,269 lines in Turkish
- Quests & dialogues: 6,939 lines
- Economy, equipment, pro tips, loading screens: all done
- 0 broken placeholders, all files are valid XML
The launcher's Portuguese UI was moved aside, so it now falls back to English. There's also a one-click script that re-applies everything if a game update resets the startup file.
**Honest notes**
- This is machine translation. The UI reads well. Quest dialogue is good, but surely not perfect everywhere. I'll fix things as I run into them while playing.
- Turkish is longer than English, so a few buttons may get tight.
- New event content will show up in English until it gets translated.
- This is purely a local, client-side change on my own machine. It doesn't touch the servers or gameplay.
**Why I'm sharing this**
Mostly because it was fun. A few years ago a full fan translation like this would have taken a community months of work. Here, a regular player with no modding background pulled it off in about two and a half hours. From the first "where are the language files?" question to the last translated
quest line took 2 hours 20 minutes , and the translation itself took about 80 minutes. The AI did the heavy lifting and I made the decisions. It also gave me a much better feel for how the game is put together.
If anyone else wants their language in the game, or if the Celeste team thinks something like this could be useful, I'm happy to share how it's done. And if the team would prefer that modified language files aren't passed around, I'll of course respect that.
Thanks again to everyone keeping AoEO alive. See you on the battlefield, or as I now call it, *savaş alanı*.
I've been playing on Project Celeste for a while now(actually over 8 years), and first of all, a huge thank you to the team for keeping this game alive. I want to share a small side project that turned into a really fun weekend.
**The idea**
Turkish has never been one of the game's languages. One evening I opened the game folder and started wondering: where do the language files actually live? Are they open? Could a new language be added? I'm not a modder, so I opened up Claude (Anthropic's AI assistant) right inside my game folder and asked it exactly those questions.
**What we found**
All of the game text sits in plain XML files in the `DATA` folder: `stringtablex.xml` for the UI, `QuestStringTable.xml` for quests, plus files for economy items, equipment, pro tips and loading screens. Each language has its own copy (`de-DE-…`, `fr-FR-…` and so on), and a small file in `startup` tells the game which set to load.
Adding a brand-new language isn't really possible, because the language list and flags are built into the launcher. So we went with plan B: borrow one of the existing slots. We picked Brazilian Portuguese.
**The first surprise**
We replaced the pt-BR (brazilian) text files, I started the game… and everything was still in Portuguese.
After some digging, it turned out the pt-BR tables also live inside the `Data.bar` archive, and the game prefers the archived copy over loose files. The fix was simple: save the Turkish files under new `tr-TR-…` names that don't exist in the archive, then point the pt-BR startup file at them. I didn't have to touch the archive at all. I'd also told Claude I didn't want a Portuguese/Turkish mix I couldn't read, so every Turkish file starts as a copy of the English one. Anything not translated yet simply shows up in English.
**The second surprise: the font**
The first test showed "OYNA" (Play) and "SEÇENEKLER" (Options) in the main menu, which was a great moment. Then I noticed the unit name panel at the bottom showing "KIşLA" (Barracks) with a weird-looking ş.
Claude pulled the decorative title font (Ashley Crawford) out of `Fonts.bar` and checked it glyph by glyph. It turned out Ş, Ğ and İ simply aren't in the font. So it built them out of pieces the font already had (S + the cedilla from Ç, G + breve, I + dot accent), saved the result as a separate font under a new name, and pointed a Turkish font-definition file at it. The original game files stayed untouched, and the titles keep their original look.
**Then the actual translation**
The full job came to about 30,000 lines, roughly 1.5 million characters. Claude set up a small pipeline:
- split the English text into ~100 chunks (unique strings only, so duplicates are translated once),
- write a glossary first, so terms stay consistent (Town Center → Şehir Merkezi, Villager → Köylü, Barracks → Kışla…),
- hand the chunks to several AI helper agents running in parallel,
- automatically check every line so placeholders like `%s`, `\n`, `<color=…>` tags and `●` bullets survive exactly,
- rebuild the Turkish XML files and validate them.
I did get a say in it. For example, I didn't like "Keşifçi" for Scout, so it became "Gözcü", and that choice is locked in for every rebuild.
**Where it ended up**
- UI: 21,269 lines in Turkish
- Quests & dialogues: 6,939 lines
- Economy, equipment, pro tips, loading screens: all done
- 0 broken placeholders, all files are valid XML
The launcher's Portuguese UI was moved aside, so it now falls back to English. There's also a one-click script that re-applies everything if a game update resets the startup file.
**Honest notes**
- This is machine translation. The UI reads well. Quest dialogue is good, but surely not perfect everywhere. I'll fix things as I run into them while playing.
- Turkish is longer than English, so a few buttons may get tight.
- New event content will show up in English until it gets translated.
- This is purely a local, client-side change on my own machine. It doesn't touch the servers or gameplay.
**Why I'm sharing this**
Mostly because it was fun. A few years ago a full fan translation like this would have taken a community months of work. Here, a regular player with no modding background pulled it off in about two and a half hours. From the first "where are the language files?" question to the last translated
quest line took 2 hours 20 minutes , and the translation itself took about 80 minutes. The AI did the heavy lifting and I made the decisions. It also gave me a much better feel for how the game is put together.
If anyone else wants their language in the game, or if the Celeste team thinks something like this could be useful, I'm happy to share how it's done. And if the team would prefer that modified language files aren't passed around, I'll of course respect that.
Thanks again to everyone keeping AoEO alive. See you on the battlefield, or as I now call it, *savaş alanı*.
Last edited: