Addressing Localization Challenges and Specifics – Softengi’s Example
Localization of apps, websites, or games is not a mere translation that is performed as if by magic. Usually it is a comprehensive process full of challenges and nuances.
Here at Softengi we know how to save a lot of time and effort when localizing software, overcome the common mistakes and problems, and offer tailor-made solutions to consequently receive a fully localized and high quality version of this product.
What thoughts usually cross your mind, when you hear the phrase “application localization”? Almost certainly, the first thing that dawns upon you is the translation. However, most people are unaware that localization is not a mere translation. It is a comprehensive multilevel process full of challenges and nuances.
In this blog post we will consider the Softengi team’s experience of localizing a rich application and some of the specifics that go with it.
Enviance, Inc., a long-standing customer of Softengi, had a need to localize a large EH&S application developed back in 2000. Enviance needed this legacy application to be localized into Chinese and Russian.
The application itself consisted of around 2 million lines of code. Therefore, the job required a great deal of time and effort.
Wrote code adding the missing parts to the core of the system;
Provided macros support;
Created tables in the database;
Created scripts to export data to Excel and later import the translated literals to the system; etc.
After that, the code was divided into several parts, which were distributed among the members of the development team.
In total, about 200,000 literals were found in the code. Many of them were system literals and were not to be localized. Also, there were many duplicates (e.g., “Save”, “Cancel”, “Task”, “Calendar”, etc.), which had to be avoided. So, our team’s main task was to examine each literal, identify the users’ literals, subdivide them into categories and allow them to the respective resources. The Softengi developers overcame this challenge by developing a script detecting lines in the code and introducing a system for resources organization.
The menu structure of the application was kept in XML, and the content itself was contained in XSLT. Also, both XML and XSLT were cached.
The Softengi team used .NET to categorize the identified literals by:
Global (e.g., general literals such as “Save”, “Ok”, “Cancel”, “Information”, “Error”, etc.);
Module (e.g., “Task”, “Calendar”, etc.);
Local / webpage (e.g., information messages, error messages, etc.).
Type (e.g., domain entity and attribute names, different categories of error messages and information messages, etc.).
The Second Step
This categorization saved the team a lot of time and effort.
The concatenation of lines was another serious challenge. It posed a real problem, as there were parts of the text, or independent words, instead of the whole text making it unfeasible for the translators to translate the literals correctly. Therefore, the developers had to perform code refactoring and localize the templates.
After all the developers’ and translators’ work was done, five qualified Softengi testing engineers then performed the technical part of the localization testing. For instance, they checked the layout to ensure the proper display of the translated text and avoid its going beyond the limits of the predefined space due to the specifics of different languages.
Moreover, native speakers were involved in the testing to check whether the translated text met the cultural peculiarities of their language and was right for the nature of the application itself.
As a result, the Enviance System was capable of being used in Chinese and Russian, not just English, with the ability to add languages as needed.
At the end of the whole localization procedure, the customer received an application fully localized for the Chinese and Russian markets. This was possible due to the consolidated efforts of the Softengi team members and their tailor-made solutions streamlining and speeding up the whole process.