By Adam Asnes for GALAxy: The Globalization and Localization Association (GALA) Newsletter – written for localization companies who are GALA members.
While recent industry headlines have been dominated by merger mania, I think the long term story for GALA companies is really about how to provide better service, products and returns for our customers. Thats how we compete for and keep customers. Within software localization, the functional emphasis is typically on words – word counts, what they cost, when they will be received, translation memories, translation quality, localization engineering and delivery milestones. But for our company, we get involved months, if not years, before our clients are ready to localize. This article aims to show that you can put internationalization (i18n) to work as a repeatable and successful activity to differentiate your company further as a problem-solver, helping clients get to market faster and more efficiently.
Why Internationalization is Important
Internationalizing applications can be an extremely painful activity for software development organizations. If they do it poorly, they can expect a pretty weak localized product…and guess who gets blamed for that! There are many issues for development teams to consider regarding locale requirements when they create applications. If they are internationalizing existing code, it gets compounded by actually having to find and fix all the issues buried in hundreds of thousands to millions of lines of code. Consequently, our customers tell us things like, “this is actually much harder to figure out and do than we thought.” Internationalization causes long delays in development and that means big delays for localization projects. Plus, companies usually do it wrong the first few times, and have to learn through painful lessons which initially seem like the localization company’s fault – not a good experience for your company to be associated with. I’d wager that many of you have lost customers because clients blamed localization issues on you, which were actually their own internationalization issues. On the positive side, wouldn’t you want a new and earlier way to be involved with the development managers, product managers, VP’s and CEO’s of your clients? Internationalization is a significant undertaking for many companies. When it’s a new process, internationalization always involves executive decision making. It is not unheard of for our small company to make presentations to the board members of large, publicly traded companies as part of budget planning efforts and global decision making. We think that’s pretty cool! We have unique products and services that make the internationalization effort both scalable and repeatable for development teams, even if they are spread out around the globe. That makes us a strategic bridge for companies going global.
You can skip this part if you have a technical background, but it always surprises me that there is still the need to define internationalization within our industry. Though clients often confuse how they use the words internationalization and localization, whenever I talk to them, they are generally pretty clear on the differences in the processes, even if they do throw the wrong terms around. Yet I meet many localization sales people and executive staff that actually don’t understand what internationalization is at all. It’s simply a problem that they have never dealt with. Perhaps there’s more than a touch of “eyes glazing over in boredom” when they see technical articles about the subject; but you really don’t have to make major technical leaps to understand the issues. Simply put, internationalization is all of the planning and execution that needs to be included in the development of software that lets the software support languages and locale formatting (like numerical formats, dates, times, currencies, postal addresses and more). Applications not only have to be capable of displaying any language, they have to correctly allow the input, storage, processing and retrieval of that multilingual/multi-locale data. It mostly breaks down to engineering for a few categories of issues which include:
Every character you see on the screen corresponds to a set of zeros and ones which get “interpreted” into what you read on the screen. How an application supports character encoding determines whether it will actually work in Chinese, Japanese, French, German, etc. This is where terms like Unicode or ISO-Latin apply. The right character encoding strategy isn’t always obvious and will depend on a balance of marketing requirements, technical requirements and development budget, especially if the code already exists rather than starting from scratch.
String, Images and Resource Management
Every message presented and ultimately translated in an application is referred to in software terms as a string. An important and time consuming part of internationalization involves finding all the user-facing messages (but can also include things like interface sizing), extracting them from the source code, and placing them in some kind of repository files (or database) appropriate to the software architecture. That way you can work on translating the words without breaking the source code. With the right engineering those words can be replaced with any language that the application is supporting. Additionally, string management includes issues like sorting, string concatenation and the like. You’ll also want to identify and manage any images that are embedded in the code (just like strings) so that they may be localized as necessary.
Each programming language has its own set of functions or methods that do things like limit the way a date is interpreted, or how many bytes a character can contain. There are hundreds of these sneaky little things in C/C++ and there are dependencies based on your character encoding choice (e.g. Unicode UTF-8). Other programming languages such as Java and C# have less of these issues, but still have their own possible pitfalls. These functions need to be found and replaced with others that support the locale requirements that will be needed.
Locale-limiting Programming Patterns
Programmers may do many of the right things in terms of extracting strings, using functions that support “wide” characters and the like, but it’s still easy to get in trouble. Think of programming patterns as logic created for a specific application, which doesn’t work once you include issues around multiple locales. Programmatic sorting logic is a good example; a typical developer would sort by alphabetical order rather than by character brush stroke. Programming patterns can be a big nasty area to re-engineer, and it takes experienced examination and planning to manage.
Simply determine how the software will detect what locale it needs to support and how it will behave under the circumstances. For instance, does the user manually choose the locale, or does the application check the operating system setting?
Third Party Product Limitations
Most software makes use of other application components. These can include databases, reporting mechanisms (i.e. Crystal Reports), email generators and more. Often these components have their own internationalization support issues, which can create their own challenges to the software developer.
Localizing When the Client Hasn’t Internationalized
Another comment I hear from localization companies is that they have localized applications that weren’t internationalized, even working on translating strings that were buried in the code. I have to say this is a poor practice that should be avoided. I have had software companies come to us quite bitter about localization companies that were just doing what they were told in this regard. Chances are very high the software is going to break. In addition, making the interface translatable is just one part of the internationalization effort. If, by sheer luck, the application still works, they will not be able to leverage the translation when they go to a new version. There is no way this is going to have a happy ending in the long run. One way to help a customer in this situation is to suggest them checking their code, for example by running it through our Globalyzer software. This will give them a very clear inventory of what they need to fix. They can use Globalyzer to save 40% to 60% of time and resources to get the internationalization done, or they can hire us to do it for them.
How can you use all this to make a difference?
When your client says they are not ready for localization, that’s your signal to ask them if they are working on internationalization. If they still say no, find out if they have plans of going global with their software. The earlier they start thinking about internationalization and putting practices in place, the less painful the transition will be. If the client is experienced with localization, ask them if they are interested in learning about products that help them perform and verify internationalization so localization is made easier. You are doing them a service to bring it up and discuss it either way. This discussion can establish you as a strategic partner rather than another tactical translation company. Use internationalization to help you get to know your client’s organization – from Product Manager, to the VP of Development. to the VP of Marketing, to the CEO. Don’t try to talk techie if you’re not qualified. But discussing the concept can lead to opportunities and help you build a strong relationship. When it comes to the technical side, work with an internationalization expert who performs well both technically and professionally. Of course I’d like you to contact Lingoport, as we do a great job of partnering with localization companies, and, just as importantly, we have products and a well developed methodology that make internationalization far more efficient and complete.