Software localization is, in essence, making versions of software products available,which can operate in multiple languages. In this article we examine what's involved in developing such software. And it's not as difficult as you might imagine.
If you develop software to sell, then perhaps there might be market beyond the shores of the USA. Have you considered making multiple language versions of your software available? Perhaps you've given it a fleeting thought but dismissed the idea as too expensive or too difficult. Take away the jargon and buzzwords, not to mention the expectation that it is difficult; and many software products can relatively simply be produced for different language speakers. Especially so if the developers have followed reasonable development standards.
And lets face it, the extra revenue and customer base can be very very lucrative. Nor should you under estimate the number of people in the USA who don't have English as their first language. Another benefit of providing your software product in multiple languages is that it also gives an impression that your company is far larger than it is. When I see a web site or software product available in multiple languages I tend to assume that the company must be large.
So let's take a look at the process and examine what's involved. We concentrate in this article on taking an existing software product and making it available in multiple languages. The ideas presented here are general and assume a relatively simple product, but the concepts and approach are the same for even a sophisticated application.
First rule: to keep things simple. There are many different languages being used around the world and you have a wide choice. In English we read sentences written left-to-right and from the top, down the page or screen. This isn't the case for all languages. We also use an alphabet (script) referred to as Latin, and in technical speak it uses single byte characters. So it's a good idea to restrict your first multiple language projects to languages that also share these characteristics with English.
The list is extensive and includes; Spanish, German, Italian, Portuguese, French, Dutch among others. Even restricting your project to these languages widens your market by about 1 billion people. Eastern Europe uses a script called Cyrillic (Russian) which is very similar to Latin and prices for translation into Eastern European languages tend to be very competitive. Asian and Middle Eastern languages offer some unique challenges but they are manageable. But early in the process, you need to decide exactly what languages you want your software to be available in.
There are a variety of methods to developing multiple language versions of software. One approach favoured is to separate out all of the text presented to the user into a file or database table. This text must include everything that a user will see when using the software. It includes screen display text, printed report text, constants, prompt, error and warning messages, and help displays. Your product will likely include a user guide, version notes and licence agreement, and of course these also need to be included in the localization project.
The file or database table where all the text will exist has to be accessible by the programs and so some sort of simple key process and update function must be developed. Again, keep it simple. We've found that having a simple key system based on screen or report name and then a unique text item number works fine for most applications. For large a application you may need several text files, perhaps based on text type. You're probably thinking that the application's performance will be reduced due to the extra input/output needed to access all the text. There will be some reduction but in practice it is minimal. And there are some benefits to compensate. For instance if screen text needs to be altered then no program change needs be made to effect the change.
Our file containing all of the text is then used as the basis of our language translation. There are all manner of options to organise the translation including translation agencies, freelance translators, computer based translation, even co-workers, friends and family might be able to help. At the end of the day most computer applications actually have quite simple text. But before you do have the translations performed review all the text for grammar, spelling and ambiguities. The clearer the language used in the application then the more likely the translation will be accurate.
A word of warning. Professional translators tend to be highly educated, and sometimes their resulting work will require the reader/user to hold at least a Masters degree to understand it. Always specify that you need the translation to have an equal reader level as the original English.
Some translators and agencies might be positive to providing their service for free. There are numerous examples of shareware and freeware software where professional translators have been generous. Mozilla <http://www.mozilla.org/> is a good example of such a cooperative effort.
The object of the project is to develop multi-lingual software in which the end result will consist of our executable files linked to our table(s) of text. The specific text file shipped with the product will be in the language of the user's choice. An alternative option is to store each translation in a specific language file and when the user installs the software they specify their language preference. Thus the routine that reads the text records needs to identify the language needed and isolate itself to that language.
And of course you need to test the resulting language versions. This is best performed by speakers of the specific languages you've decided to implement. Testing under language versions of the operating system might also be worthwhile.
Character constants are a special case. For example, the software might need to determine that a particular key has been pressed from a selection. Assume the menu selection includes Open, Save, Find, Copy and Paste. The routine in the program might look something like:
The code above is efficient and concise, but it is difficult to translate. The various constants (Open, Save, Find, Close, and Paste) have to be replaced with data items that have been loaded with the equivalent constants from the specific language file being used by the user.
What are the potential pitfalls? A common problem is that the space required by text on screens or reports differs between languages. For example the phrase 'enter name and address' is 22 characters. In German the equivalent phrase would be 'Geben Sie ihr Name und Adresse ein' which is 34 characters. We're often faced with the problem that the translated language requires more screen and report space than the equivalent English. So test carefully that truncation doesn't occur. And consider the cosmetic appeal of the resulting screen or report.
There are some legal aspects that you need to research. Obviously every country makes its own laws. In Germany, for example, there are quite restrictive laws that disallow anyone to make claims that a product is better than another company's product. Not to forget that the United States also has export laws. Encryption algorithms are an obvious example. So do a little research, and if you are using a translation agency then ask for advice.
Copy protection, upgrades, error reporting are all issues that will broaden if you want to sell software offshore. You also need to take account that date format, paper sizes, currency symbols, sort order and addresses might differ, and lets not forget that the majority of the world uses the metric system for weights and measurement.
The translations don't have to perfect. In saying this I am not suggesting you lower your standards. But most people appreciate that you have taken the trouble to translate the text, and will overlook the odd mistake. And let's be realistic, the English used in your software will likely have the odd typo anyway.
Organising a marketing agreement with a local distributor can also provide a useful resource not only for the product's language development, but in ongoing product promotion and support.
Microsoft provides an extensive resource available on their web site. There are several very helpful news groups that you can subscribe to and a number of books are devoted to the topic of software localization.
I hope this has given you something to think about.