When I shipped Eldritch back in 2013, indie games were in a different place. Localization wasn’t expected, so I didn’t do it; and when people volunteered to do translations, I accepted them and hastily assembled a localization system in my engine. But I never felt good about people working on my game for free, and I simply decided to not localize my subsequent games at all.
I don’t know yet if I’ll localize Eldritch 2; I want to, but I want to do it right this time and pay for the service, and that can be expensive. But regardless of whether I can afford it, there was a big lingering tech issue that I’d been ignoring for a decade, which I needed to solve before approaching localization services. I’d never had CJK (Chinese, Japanese, and Korean) support in my engine.
Back in the Eldritch days, I used some fonts that only included the Latin alphabet. Then I needed to support Russian and Ukrainian translations, so I hacked in some alternate font sheets with the Cyrillic alphabet. Then someone sent me a Georgian translation so I added another font sheet for Georgian. And that all worked fine, because those are all alphabet scripts. But Chinese, Japanese, and Korean scripts have thousands of characters, and rendering out a font sheet with every one of those character isn’t possible.
There are a few common solutions to this problem, but the one that I think fits the best for my games is to use the translated string table as a source for which characters must be included. Out of thousands of possible characters, a particular game may only use hundreds, and there is no need to include the rest. (This assumption only holds if users cannot input arbitrary text; that’s true in my games.)
So I spent today tackling that problem. There were a number of related issues I needed to solve, especially around unified ideographs (where different CJK scripts render the same Unicode codepoint differently, corresponding to the display language). And then I needed some translated strings, so I wrote up some tools code to export a string table that I could machine translate with AWS. (To be clear, I will not be using machine translation for the real game, this is only to give me something to work with!)
And here we are! Please ignore the machine translations, I know they’re very wrong. And please understand this is not a list of the intended languages; some might be added, some might be removed. And there’s some remaining work to do like localizing keyboard keys. But the point is, my engine can now finally display CJK characters, in their language-appropriate variants.





