30
Introduction to Internationalization Reaching worldwide markets with a single code base Presented by: Adam Asnes Lingoport, Inc.

Introduction to Internationalization (I18n)

Embed Size (px)

DESCRIPTION

"Introduction to Internationalization (I18n)" by Adam Asnes, President & CEO of Lingoport (lingoport.com), a software internationalization (i18n) tools and consulting company.

Citation preview

Page 1: Introduction to Internationalization (I18n)

Introduction to Internationalization

Reaching worldwide markets with a single code base

Presented by: Adam AsnesLingoport, Inc.

Page 2: Introduction to Internationalization (I18n)

Agenda

• Internationalization• Key Internationalization (i18n) Concepts

• Business Cases

• Approaching Globalization

• Architecture and Code Review

• Scanning code for issues with Globalyzer

• Building a plan

• Ongoing Processes

• Questions

Page 3: Introduction to Internationalization (I18n)

Internationalization and Localization Fit

• Lingoport - Internationalization– Development oriented consulting and software– Adapt products so they are world ready

• Localization– Translation specific to market needs– Coordinated management of strings for translation– Linguistic Testing and more

Page 4: Introduction to Internationalization (I18n)

Internationalization (i18n)• Engineering a product so it can be adapted to

target languages and regions efficiently and without requiring subsequent engineering changes to the core product

• Common abbreviation is i18n (i + 18 letters + n)• A product must be internationalized before

localization can occur

Page 5: Introduction to Internationalization (I18n)

Business Case – why it’s important

• Survival• Global Revenues

– Key business partners– 60% or more of revenues

• Competitiveness• Strategic Growth

Page 6: Introduction to Internationalization (I18n)

• One-time Higher Initial Cost– I18n as part of development process

• Lower Overall Cost as End Result– Future releases incur only localization costs

I18n Cost/Benefit

Page 7: Introduction to Internationalization (I18n)

New Globalization Requirement

Page 8: Introduction to Internationalization (I18n)

I18n Needs – Biz vs. Tech

Engineering thinks about…

1. Multi-tiered web application?2. Complex Interface?3. Database components?4. Embedded Strings?5. Locale aware application?6. Can it manage multiple data formats?7. I18n testing plan?8. Tactics to get it done

Our Software must be in Japanese, French,

German, Chinese, and Spanish by November

Page 9: Introduction to Internationalization (I18n)

Example: Hard-Coded English Text

1 million lines of source codeTypically Found:

At least 40,000 Embedded Strings which cannot be efficiently translated

String orderStatus = “Your order has been processed. A confirmation e-mail will be sent to you shortly.”;

Page 10: Introduction to Internationalization (I18n)

11

String Concatenation

• Avoid Concatenation– Combining two or more text strings at runtime to form

a single string

– What order do these appear at runtime?– Are they switched around? – Do they combine with other strings that aren’t here?

fileActions = {1} file(s)successfulAction = successfully {2} locationAction = to {3}

Page 11: Introduction to Internationalization (I18n)

Character Sets/Encodings

• Character set– A set of characters used to support a given language or series of

languages

• Character encoding– A set of code points that defines numeric values for each

character within a character set (coded character set)

Page 12: Introduction to Internationalization (I18n)

Character Encoding

• The Binary Letter AThe Letter:

ABinary Encoding Examples

ASCII: 1000001 (7-bit)ISO Latin 1: 01000001 (single-byte)

UTF-16: 00000000 01000001 (double-byte)

The Letter:

ABinary Encoding Examples

ASCII: 1000001 (7-bit)ISO Latin 1: 01000001 (single-byte)

UTF-16: 00000000 01000001 (double-byte)

Page 13: Introduction to Internationalization (I18n)

Character Sets and Encoding• This is broken:

Page 14: Introduction to Internationalization (I18n)

Internationalization Challenge

• Software Data Path - it’s not just the display

Display Input Transform

Store

RetrieveTransform

Page 15: Introduction to Internationalization (I18n)

I18n Architectural Challenge – what’s not in the code

DatabaseCharacter encoding

support

Application Codee.g. Java, C++, VB

3rd Party Products

U/Ie.g. JSP,

ASP, ASPX

Business LogicPlatforms, Browser Support Requirements

Marketing RequirementsLocale behavior

Page 16: Introduction to Internationalization (I18n)

I18n Design Considerations Checklist*• Locale implementation

(determination, tracking)• Character encodings• Strings

– Externalization– Concatenation– Display/Layout

• Date/time handling• Number handling• Currency handling• Sorting• Searching

• Encoding conversions• Locale-specific functions• Address formats• Telephone formats• Page layout• Fonts and attributes• Images, icons, colors• Bi-directional support?• Reporting, workflow• Database enabling• Multi-byte enabling

Page 17: Introduction to Internationalization (I18n)

Locale

• Language + territory [ + variant ]– en_US = English (US)– en_GB = English (UK)

• Combines language and territorial conventions for spelling, formatting, etc.– en_US = "color," mm/dd/yyyy, $1,234.56– en_GB = "colour," dd/mm/yyyy, £1.234,56

• A more accurate representation than language

Page 18: Introduction to Internationalization (I18n)

Locale-Specific Formatting ExamplesLocale Short Date Long Date Number Currency

English, US 05/06/02 May 6, 2002 1,234.56 $1,234.56

English, UK 06/05/02 06 May 2002 1.234,56 £1.234,56

French, France 06/05/02 6 mai 2002 1 234,56 1 234,56 €

Japanese 02/05/06 2002年 5月 6日 1,234.56 ¥1,234.56

Page 19: Introduction to Internationalization (I18n)

Sorting/Collation

• Which list is correct?

Ångström Helsinki

Helsinki Zürich

Österreich Ångström

Zürich Österreich

Page 20: Introduction to Internationalization (I18n)

New Internationalization Project!

• What to do?– Large amount of code– Change in requirements– Change in architecture– Change in development practices– Change in testing requirements

Page 21: Introduction to Internationalization (I18n)

I18n Process• Planning

• Market Requirements Analysis• Architectural Requirements Analysis• Code Review

• I18n Design• I18n Implementation• Testing• And beyond…

• Localization• Support

Page 22: Introduction to Internationalization (I18n)

Code Review – what’s in the code that needs to be found and changed

• What to Identify– Embedded strings– Unsafe methods/functions– Image references– Unsafe programming constructs (ex: regular expressions)

• How to Identify– “Brute force” iterations

• Engineers search for and resolve known issues

– Globalyzer-assisted review• An I18n code analysis tool is employed to examine source code for

a large range of potential and known issues• Issues can be identified and resolved in a more systematic fashion

Page 23: Introduction to Internationalization (I18n)

Globalyzer Server and ClientsServer

Client

Command Line

Page 24: Introduction to Internationalization (I18n)

Example Project Plan

Combine:•1 Part Architecture•1 Part Code Metrics•1 Part Experience

Page 25: Introduction to Internationalization (I18n)

Let’s Look at Some Code

Page 26: Introduction to Internationalization (I18n)

I18n Testing

• PseudoJudo Utility in Globalyzer• Pseudo-localization

– A “pseudo-locale” is created and implemented with “pseudo-translated” content

• Before pseudo-translation:UserNameLabel=UsernameSomeMessage=The quick brown fox jumps over the lazy dog.

• After pseudo-translation: UserNameLabel=縞 Ùsèérnâàæmê史SomeMessage=嚮 Thëëë qúûîìck bröööwn fòöõx jüùümps òvèèr thêê

lãâzÿ dõøg燭 .

– Tests for:• String-length expansion issues• Extended character display/corruption issues

Page 27: Introduction to Internationalization (I18n)

Keeping Software Worldready

Page 28: Introduction to Internationalization (I18n)

I18n As An Ongoing Process

• Pervasive influence on entire organization– Paradigm shift: not US-centric!– I18n Coding Standards

• Quality Assurance• I18n software lifecycle tools: Globalyzer

• Avoid code forks– New features with international focus to launch in ALL

locales

• Relationship with Localization partner

Page 29: Introduction to Internationalization (I18n)

I18n As An Ongoing Process

• Globalyzer Command Line• Automated i18n checking

• Create i18n Standards• Training

Page 30: Introduction to Internationalization (I18n)

Contact Information

31

Questions?Contact

Lingoporthttp://[email protected]+1 303 444 8020Based in Boulder, Colorado

Visit lingoport.com for more articles, newsletters and whitepapersTry Globalyzer – sign up at http://globalyzer.com