7/20/2004: Kuro has been certified as Scrum Master (What is Scrum ?).
A computer program developed in the United States tends to have these problems:
The software product is limited to the English speaking communities in the United States. The software would not function well even in the UK where English is spoken because it does not understand their way of writing the dates, day, month and year order, for example. The company will miss the rapidly growing Spanish speaking communities in your own country. And of course, the company will totally miss the Asia's biggest economy, Japan, and the fastest growing market of China.
Internationalization (i18n) is a set of software practices to generalize your software program so that it can be localized to specific market segments. In other words, internationalization generalizes your software program while localization (L10n) specializes the internationalized program to specific markets. Combining both, the software can be sold in most of the major world markets, with small incremental cost.
The basic idea of internationalization is to separate a portion of program that depends on the language or culture from the rest of the program. That portion may be placed into data file or a library module. Then you would develop (or translate) a language/culture version of that external data/library. At run-time, the program would load the version appropriate for the running environment (OSes, configurations etc.). Before you can do that, you have to inspect your code and design carefully to avoid any ASCII/English assumption.
The major part of localization is translation of GUI resources and on-line documentations. But it also includes changing fonts, date & time format, icon images, and others to meet the expectation of the target language, culture and expectations. The L10n process also includes testing of the localized program, which of course requires testers who understands the target language.
To minimize the time-to-market, the i18n and L10n processes must be run simultaneously, hand-in-hand, in harmony. This requires a good project management that understands both processes. I happened to have experience in both areas.
Using Unicode is a good step toward internationalization, but that does not guarantee your program being internationalized. Does your program displays January, 2nd, 2004 as 02/01/2004 in most part of Europe and 2004/01/02 in most part of Asia, for example?
Use of Unicode is not really a must for internationalization. Most Unix applications are internationalized without using Unicode at all. Surprisingly, Unicode introduces new problems while it solves existing problems.
Java provides nuts and bolts of internationalization, but they must be used, and used properly. Surprisingly many developers think they have internationalized their programs by using the property bundle. By using the property bundle, your program may be able to localize the GUI messages, but it may corrupt the text data that are non-ASCII.
For example, the well-known Struts framework provides an easy way to deal with the message bundle but it does not provide a way to deal with form parameters that include Russian, Greek, Hebrew, Chinese, Japanese, Korean, and other characters outside of the western European languages.
If you want to learn more about internationalization, visit one of these web sites:
And here are some books that I recommend to learn the basics of internationalization.
|Title||Author||Description||Buy It Now|
|CJKV Information Processing||Ken Lunde||The Bible of Internationalization. You can learn many details of writing software for Chinese, Japanese, Korean and Vietnamese audience. Unfortunately, the big drawback of this book is that it was last updated in 1998 before Unicode has been accepted widely. But you would still learn a lot from this book.||Click Me!|
|Java Internationalization||David Czarnecki, Andy Deitsch||If you program in Java, this is the best book.||Click Me!|
|The Unicode Standard, Version 4.0||Unicode Inc.||The latest Unicode standard. Probably not needed right away but this will become necessary, as you need to deal with difficult problems.||Click Me!|
|Java Cookbook||Ian F. Darwin||This handy book is useful for any Java programming. It has code samples of internationalization features.||Click Me!|
So why you might want to hire an internationalization consultant like me, when these great sites exist for free?
Well, these web sites only introduce you to a basic theory of internationalization. If you are an experienced engineer, you know the reality differs from the theory. There are lots of pit pitfalls that only the experience can tell.
The other side of the coin: I have seen many companies wasted their resource to a wrong area of internationalization that do not benefits users. I will help my client to prioritize the internationalization activities so that the money and time can be spent to the area most beneficial first.
I can offer services in one or combination of these areas:
Please contact me at email@example.com for free, initial consultation.
"Kuro is very precise in the execution of his tasks. You can always expect him to do a thorough and detailed job and any task that you assign to him." "As a senior engineer, Kuro has the leadership, experience and dedication it takes to drive a project to completion." --- Tom Lee, Regional Director, Basis Technology
"Kuro was instrumental in helping Gracenote sort through and determine approaches to address several unforeseen problems with our handling of international data." "Kuro was a pleasure to work with, and always performed his work in a most professional manner." --- Mickey W. Mantle, COO & Senior VP of Development, Gracenote
"Kuro's detailed and up-to-date knowledge of i18n standards and issues, background in a wide variety of software engineering disciplines and excellent communication skill made him successful in leading disparate IONA product development teams to i18n compliance. I recommend him highly." --- Ken Schwarz, Product Manager, Sonic Software Corp. (Engineering Manager at IONA Technologies when Kuro worked for him)
KUROSAKA Teruhiko, or Kuro, has over 20 years of experience in internationalization and localization.
He worked for Sun Microsystems for 12 years where he led the Solaris internationalization effort, and later managed the localization activities of Sun's developer tools.
At IONA Technologies where he served as Internationalization Architect, he consulted with developers to implement CORBA and J2EE internationalization features. Another important achievement was to define the internationalization levels to facilitate communication within the company.
At Basis Technologies, he analyzed their client companies' software from the internationalization point of views, and proposed necessary changes in the design and the code.
He published or co-authored three papers for Unicode Internationalization Conferences.
Kuro holds a Master of Science degree in Computer Science from Kyushu University, Japan.
Kuro is also a Certified Scrum Master. (What is Scrum ?)