If you are an IT professional and you or your client want to release your new software or app in several languages, you will need to prepare it for localization - this is what we call internationalization: localization has to be in your mind from the very moment you start designing your product.
Here are a few localization/internationalization good practices I would like to share with you to ensure the whole process goes smoothly for you. If you wish to go further and ensure the success of your localization project, you may also want to check my post with tips to reduce localization costs.
1. First of all, store localizable assets and code separately. Your source code should be written in a way that your software can be localized without touching a line of code. Place all the content (text strings, images, sound files) in separate files and folders, which can then be translated appropriately by linguists. Use ISO language codes to allow easy identification. In your code, pick up the translated depending on the language selected and a string ID (which can be the original string itself). XML works great for this, but there are plenty of options available.
2. Make sure the text can easily expand. A Japanese string translated into German can easily get 2 or 3 times longer than the original. Design your applications with sufficient space to accommodate long strings, especially if you are working on mobile devices. Plan for the worst case scenario.
3. Be wary of local standards and cultural differences. Imperial versus metric system is an obvious one if you are manipulating units, but there are local differences you may not even suspect. For example, weeks start on Mondays in some countries, and Sunday in others. There are also different standards for numbers, dates, decimals, punctuation and so on.
Consult native users from the target markets before going any further. They might know something you don't.
4. Avoid string concatenation when possible. Sounds like a good cost-saving ID on paper, but it's not always that simple. In Japanese for example, sentence structures are completely different and there may simply be no way to have a same sentence work in different contexts.
5. With this point in mind, you have to make sure translators can put words in any order they want, and, as much as possible restrict substitution to a single word or number. And try to have unique names for your variables. If you have two %s in your source strings, the translators won't be able to change their order.
6. Provide as much context as possible. Words can have literally dozens of different translations depending on how and where they are used. Add comments and usage examples. When possible, provide your translators with screenshots, videos or, even better, the actual product.
7. Track source text changes. Most apps are updated regularly, with new translatable texts appearing. Tracking those bits will help you save on costs by not ordering the same translations twice or more. This point can make a huge difference for projects with daily updates.