SOFTWARE INTERNATIONALIZATION Dallas Ramsden
Internationalization GOAL Software that can run ANYWHERE in the world without having the source code changed or recompiled for the different language and conventions. Software that can run ANYWHERE in the world without having the source code changed or recompiled for the different language and conventions.
You Should Care Why? Directly Applicable: Directly Applicable: –Basic Economics: A demand = development. A demand = development. Growing Economies = HUGE demand. Growing Economies = HUGE demand. Indirectly: Indirectly: –Outsourcing
Growth Economies INDIA INDIA –second largest English-speaking scientific professionals in the world. –$6,947 million in SW exports: April - December [1] Outsourcing
Growth Economies China China –1.6 billion population –Exported $180 billion of digital equipment. Exceeding America's international sales of $149 billion, [2]
“Internationalization is NOT a Feature!” Tom McFarland, Internationalization Architect – Hewlett Packard
Outside Your Box
What is I18N? Simple definition: Simple definition: –Provides framework and structure in which localization can take place. –Allows the dynamic bindings of language and local conventions into the software.
I18N: A Physical Analogy
Localization Software localization refers to adapting software from one culture to another. Software localization refers to adapting software from one culture to another. Done correctly, localization is the process of adjusting internationalized software to a particular locale. Done correctly, localization is the process of adjusting internationalized software to a particular locale. I18N is a prerequisite for localization. I18N is a prerequisite for localization.
Software - Differences with respect to culture measurement formats measurement formats number formats number formats time formats time formats sorting rules sorting rules calendar systems calendar systems
Symbols… Coach = Coach?
Locales A set of attributes which define the language and specific cultural conventions to be used. A set of attributes which define the language and specific cultural conventions to be used. A truly internationalized program contains no hard coded region- or country-specific elements. A truly internationalized program contains no hard coded region- or country-specific elements.
Locale Contents: Icons Icons Text (GUI labels, other messages) Text (GUI labels, other messages) Audio clips Audio clips Online help Online help Currency/date/number formats Currency/date/number formats Calendars Calendars Measurements Measurements Colors Colors Graphics Graphics Phone numbers Phone numbers Addresses Addresses Titles and honorifics Titles and honorifics
Usage Program detects the region/country currently using the program and loads the appropriate elements prior to interacting with a user. Program detects the region/country currently using the program and loads the appropriate elements prior to interacting with a user. Program has all of its region/country- specific elements properly verified and stored outside the program for each region/country that will use the program. Program has all of its region/country- specific elements properly verified and stored outside the program for each region/country that will use the program.
Unicode EBCDIC: Extended Binary Coded Decimal Interchange Code. IBM – 8 bit, English characters. EBCDIC: Extended Binary Coded Decimal Interchange Code. IBM – 8 bit, English characters. ASCII: American Standard Code for Information Interchange. 7-bit, English chars, 8-bit extended. ASCII: American Standard Code for Information Interchange. 7-bit, English chars, 8-bit extended. PROBLEM? PROBLEM? –Both standards are based on the English language and have no room for growth. How can they represent the many thousands of written characters used by modern and ancient languages?
Unicode… 4.0 Goes far beyond ASCII’s limited ability to encode only the upper- and lowercase letters A through Z. It provides the capacity to encode all characters used for the written languages of the world—more than 1 million characters can be encoded!! [3] 32-bit form (UTF-32), 16-bit form (UTF-16), and an 8-bit form (UTF-8)
Resource Bundles: using locales Set of locale-specific elements are created for each locale where this program will be used. Set of locale-specific elements are created for each locale where this program will be used. A container that holds one or more locale- specific elements and is associated with one and only one locale A container that holds one or more locale- specific elements and is associated with one and only one locale NOT STORED IN SOURCE CODE! NOT STORED IN SOURCE CODE!
Example Source code taken from [4]. Source code taken from [4]. Java treats locales as objects. Java treats locales as objects. A locale object is nothing more than an identifier (made up of a language and a region/country code) that is used by locale-sensitive classes -- classes containing locale-specific functionality. A locale object is nothing more than an identifier (made up of a language and a region/country code) that is used by locale-sensitive classes -- classes containing locale-specific functionality.
Example Source code taken from [4]. Source code taken from [4]. Java treats locales as objects. Java treats locales as objects. A locale object is nothing more than an identifier (made up of a language and a region/country code) that is used by locale-sensitive classes -- classes containing locale-specific functionality. A locale object is nothing more than an identifier (made up of a language and a region/country code) that is used by locale-sensitive classes -- classes containing locale-specific functionality.
Tips for Unproblematic Coding Compose decimal numbers and dates from dynamic lexical units. (e.g. fraction sign, currency symbol, and date format separators) Compose decimal numbers and dates from dynamic lexical units. (e.g. fraction sign, currency symbol, and date format separators) Do not assume anything about text directionality. Do not assume anything about text directionality. Avert from hard coded literal text in system code. Use string tables or environment variables as an alternative. Avert from hard coded literal text in system code. Use string tables or environment variables as an alternative.
Internationalization Tools Hundreds of tools available to help aid in I18N processes. Hundreds of tools available to help aid in I18N processes. Consistently updated list at: Consistently updated list at: – ID=1301&MycatID=2&MysubcatID=3 ID=1301&MycatID=2&MysubcatID=3http:// ID=1301&MycatID=2&MysubcatID=3
I18N Quality Assurance Job: to asses the extent to which a software system is as functional in other cultures as it is in its native culture. Job: to asses the extent to which a software system is as functional in other cultures as it is in its native culture. Sample tasks: Sample tasks: –Strings sorted appropriately. –test for different date and time formats. –the availability of alternative measurements. –test the system on a reasonable set of hardware from different cultures.
International Quality Assurance Plan. Overview of Product Overview of Product Overview of Plan Overview of Plan Purpose/Scope Purpose/Scope Exclusions Exclusions Description of testing approach Description of testing approach
International Quality Assurance Plan (cont.) Responsibility Responsibility Overview of required resources Overview of required resources High level view of areas to be tested High level view of areas to be tested General schedule General schedule General quality expectations [5] General quality expectations [5]
I18N Quality Assurance Engineer A unique job title (i.e. lucrative). A unique job title (i.e. lucrative). Skill set: Skill set: –Programming background –Knowledge of test automation tools. –Solid background in testing UI. –Analytical skills for isolating bugs and reporting them accurately. –Diplomatic and comm. skills for negotiating bug fixes with development and defining test areas with core QA. –Sensitivity to- and interest in- Internationalization issues.
Summary The effort needed to internationalize a product needs to be weighed against the value. The effort needed to internationalize a product needs to be weighed against the value. Growing economies, such as China, demand a huge need for some services. Growing economies, such as China, demand a huge need for some services. A unique field, there are many lucrative niches to be found. A unique field, there are many lucrative niches to be found.
References [1] economy/information-technology-industry.html [1] economy/information-technology-industry.html [2] December 14, 2005, Digital Dragon, The Economist Newspaper and The Economist Group. [2] December 14, 2005, Digital Dragon, The Economist Newspaper and The Economist Group. [3] [3] [4] /jw-12-internationalize-p2.html [4] /jw-12-internationalize-p2.html [5] Driscoll K., Lok J., Luong T, Taylor D., 1995, INTERNATIONALIZATION: Developing Software for Global Markets, John Wiley & Sons, Inc. [5] Driscoll K., Lok J., Luong T, Taylor D., 1995, INTERNATIONALIZATION: Developing Software for Global Markets, John Wiley & Sons, Inc.