Last time we talked about The Welkin Suite and its presentation sessions and booth at Dreamforce’15. This was a great example of how a software project can have a global impact for developers and users from all over the world. But the software internationalization is a very expensive and time-consuming effort. So the logic question is how to minimize the amount of work required when you’re thinking about your software product being global.
Actually it’s not so hard to develop software that can be easily localized for many languages. The main thing in localization is that you need to keep this in mind from the beginning of a project and follow some basic tips.
Keep user-visible strings separate
The most important thing during localization of software is to ensure that all user-visible strings are separated from the code that uses them. The best way to keep this separation is to keep the product’s textual content in resource files for the chosen platform or language. For example, Java Programmers can put their user-visible strings into ResourceBundle. Also displayable strings should always be modifiable with breaking the application flow or other functionality.
An interesting fact, that this task is becoming less important for web applications due to innovations in technology that can automatically extract text content from web-delivered software, send it to translators and then publish the localized content online – all of this without a single change to the original source code. This effort could really minimize the time and resources needed to make a web application global.
Use images without text
For everything, except the logo of a company or a product, keep images free of embedded text, because it’s more difficult to have such text content translated. Except of having someone who can quickly translate all texts into another language, you will also need to hire a graphic designer who can convert the images and put the translated text on them too.
Remember about different calendars, time, phone and currency systems
Developers writing code should always remember that other countries:
- Might use another format of their dates and times;
- Might have weekends during other week days;
- Might use another calendar system;
- Might prefer to use numbers instead of names for their months;
- Might be in another time zone;
- Might use a different measurement system;
- Might use different phone number formats.
The best tip in this case is to use established, globally-focused standards when storing data. For example, you can use E.164 for prone numbers, ISO-8601 – for timestamps, ISO 639-2 – for languages and others.
Do not think that the text always flows from left to right
The biggest difference in text layout that should be taken in mind is a right-to-left flow that is used in Arabic and Hebrew.
In a web application, simply changing the CSS direction property across the entire system would resolve a major layout issues that could be encountered with a future translation into a right-to-left language.
Keep all user-visible text simple
When a software product or an application should be localized to other markets, the job of the translators will take less time and resources if the texts are plain and simple. So use common phrases and terms instead of niches and less frequently used ones.
Test for basic multilingual support
Good developers write automated tests for product features that they’re building and adding to the main product. The addition of a few more tests to a product verification suite that verifies the product supports international characters would be a really valuable task and does not take many resources to create. For example, tests can be built to check that right-to-left fields operate correctly without having to rework the basis of the product’s code.
Developing a software product that is ready for the global markets is not as difficult as it may seem. By following these simple tips and doing a bit of work up front, you can create software that can later be available to a much larger market that you might first think.