If you're interested in contributing to the translation efforts for Dragon Quest X, STOP. Read through the translation utilities page again. Understand how the programs work and what they do. Familiarize yourself with the concepts and the programs themselves, then come back and read the rest of the guide.


If you've done the above, welcome to the translation effort.


There are a couple different ways you can push your contributions to the community; Translating strings to be injected into the game, and/or working on the programs' backend. Obviously, there are some expectations for contributing in either facet. They will be outlined in their respective sections below.










Translating for Clarity


The first thing you might think when considering translating for Clarity is "Do I know Japanese?", which you may or may not. Regardless, it doesn't really matter if you do or don't . There are a couple rules you need to follow, but using DeepL's public translator, and/or pre-existing wiki information will suffice. (Sometimes, you even get to have a little improvisational fun.)


What you will need to understand is byte limits. A string can only take up so many bytes worth of space in memory, and exceeding that length will break Clarity . Even worse, if that problematic string is pushed to everybody with Clarity, it'll break their Clarity as a result.


However, the general rule of thumb is actually extremely simple. With very few exceptions, most Japanese characters take up 3 bytes per character . Conversely, English characters take up a single byte per character. This means that for many things in Katakana or Hiragana, a direct translation will usually take up 1/3 as much space.



However, not everything will be in kana. In fact, you'll be dealing with a LOT of Kanji. What does this mean? Well, each kanji is a single character, however the kanji can represent an entire word.


Take the following image for example:


Sword, Claymore, and Dagger all fit as translations of their kanji counterpart.
1 kanji = 3 eng characters, so no problems there.


Shield (盾) is more than 3 characters.
If the kanji for shield consisted of two characters, it wouldn't be an issue, as we'd have 6 bytes worth of English characters to work with. However, byte restrictions forced us to improvise.


This is one of many, many, MANY examples where you have to be wary of string byte size, and responsible with substituting explicit translations with appropriate abbreviations. You will run into this a lot.


If you understand the section above, your next step is to understand the GitHub workflow. This is relatively painless, and will be explained to you upon requesting access to the repository for string editing.
If, at this point you're still interested in translating strings for Clarity, reach out to ShobuBlaze in the Dragon Quest X Worldwide community.





Programming for Clarity


NOTICE: If you're reading this, I'm going to make the assumption you're competant at some sort of programming workflow. Regardless of the language you primarily work in, you'll find it much easier to work on Clarity if you have a general understanding of the subject matter.


If you are not a programmer, code casually or as a hobby, or are just interested in the backend of Clarity, I still strongly recommend you check out our documentation and tinker locally. Some of our biggest contributions in optimization and new features have come from just playing with the program's backend during free time.


If you're still reading, chances are we'd be good friends, and chances are you're (probably) also eligible to work on the translation programs at a higher capacity. First and foremost, DQXclarity is written in Python. If that didn't scare you off, good. It's easier than you think.


Clarity's initial developer utilized many different Python libraries to develop and expand the program. Among these, the most important one to take note of is Pymem, a library that allows you to manipulate the memory of active processes. If you understand memory manipulation and recognize the concepts that presents, great. You're far ahead of where I ever was when I started working on Clarity. If not, again, stay with me here; It's easier than you think.


Since Clarity primarily works through hooking into active memory, most features and implementation require identifying a byte pattern in memory and manipulating the value of whatever's there. This means finding, hooking, manipulating, and injecting all of the required data. Knowing how Cheat Engine and other memory-scanning utilities is paramount. If you don't, you can always find a YouTube tutorial, but experimentation is at your own expense. You'll also more than likely have the entirety of the Clarity dev team at your disposal for insight and techniques.


At this point in the section, if you're confident enough to get your hands dirty with some spaghetti code and figure stuff out with us, I'll give you the benefit of the doubt and link the project's documentation. After reading through the somewhat sparse reference we have (thanks Doxygen) feel free to reach out to either Sevithian (Seth#9999) or contact ShobuBlaze in the Dragon Quest X Worldwide community.