Lately, I have been working towards internationalization of Quest Atlantis resources such as missions, dialogue pages and quests. The impetus for this challenging task is being driven by the team’s desire and vision to provide a more localized experience for our users whose native language is not English. For brevity, I will use the acronym i18n in lieu of internationalization henceforth. This blog post is largely about how I have and am going about modifying the exisiting system to support i18n. Subsequently, unveil new tools that we have introduced to support the translations .
To adopt i18n, the first thing I had to do was convert our database to support a unicode-compliant character set. UTF-8 is perhaps the most popular one particularly because of its backward compatibility with ASCII text. For example, without unicode encoding capability of the database, the following piece of Simplified Chinese text: 现在，您可以继续史诗！(Translation: You can now continue with Epic!) would appear to be stored incorrectly as: ???????????.
It is just not a matter of storing and retrieving characters from all types of languages in the database correctly. The web pages that are rendering the text retrieved from the database needs to inform your browser that you are viewing characters that are encoded in the UTF-8 format. The 2D aspect of Quest Atlantis, i.e., the web pages that drive the game play narratives, dialogues with NPC, your Q-Pod, Q-Pack, the teacher toolkit etc are at their core a collection, a very large collection, of perl scripts. There are over a thousand of these scripts with lines of code amassing over 300,000. I suppose you can somewhat gauge the magnitude of trying to introduce i18n to such a large codebase.
Last year, I did some work in creating the translation interface for our dialogue pages, but it wasn’t quite done right. Particularly, because the feature is only available to users with designer rights in our system. Since, we would like to welcome participation from people proficient in non-English languages to translate our resources, we came up with a new Translator role to facilitate this, whilst ensuring the original English content does not get subjected to edits.
During the last 3 years, we have been making piecemeal efforts to migrate a lot of these perl scripts into Ruby-on-Rails space for quicker development of new features and easier management of our game design and project support tools. Therefore this time around, I created the missions translations interface in rails.
The 1st screenshot on the left is what the translation interface for missions now looks like. As you can see the original content appears on the right-hand column and the translator will simply to fill in the corresponding translations in the left-hand column fields.
The 2nd screenshot on the left showing the Spanish translation of the missions page. I have also added in provisions for languages like Arabic and Hebrew with right-to-left directionality to appear properly.
An exciting feature that I added to make the work of translators easier is integration with the Google Translate API. Each field that is translatable has the translation icon available to auto-translate. It is very possible that the auto-translate feature will miss the grammatical correctness, colloquial and cultural nuances of the translated-to language. It will nonetheless save the translator a substantial amount of time where s/he can just focus on fixing the auto-translation rather than having to write the translations from scratch.
The translations will be subject to admin approval, whereupon approval, the mission translation will appear in the live space provided the user’s language preference matches that of the translated-to language.
For missions we have added in support for the following languages:
Please contact our team if you are interested in supporting us translate to the language(s) you are proficient in. I am currently working on introducing this translation functionality for Quests and Dialogue pages, so stay tuned for new updates!