Introduction to Internationalization<br />Reaching worldwide markets with a single code base<br />Presented by:   Adam Asn...
Agenda<br /><ul><li>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</li></li></ul><li>Internationalization and Localization Fit<br />Lingoport - Internationalization<br />Developme...
Internationalization (i18n)‏<br /><ul><li>Engineering a product so it can be adapted to target languages and regions effic...
Common abbreviation is i18n (i + 18 letters + n)‏
A product must be internationalized before localization can occur</li></li></ul><li>Business Case – why it’s important<br ...
I18n Cost/Benefit<br /><ul><li>One-time Higher Initial Cost
I18n as part of development process
Lower Overall Cost as End Result
Future releases incur only localization costs</li></li></ul><li>New Globalization Requirement<br />
I18n Needs – Biz vs. Tech<br />Our Software must be in Japanese, French, German, Chinese, and Spanish by November<br />Eng...
Sample Internationalization Technical Issues<br />
Example: Hard-Coded English Text<br />1 million lines of source code<br />Typically Found: <br />	At least 40,000 Embedded...
11<br />String Concatenation<br />Avoid Concatenation<br />Combining two or more text strings at runtime to form a single ...
Character Sets/Encodings<br /><ul><li>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)‏</li></li...
Character Sets and Encoding<br /><ul><li>This is broken:</li></li></ul><li>Internationalization Challenge<br />Software Da...
I18n Architectural Challenge – what’s not in the code<br />Marketing Requirements<br />Locale behavior<br />Database<br />...
I18n Design Considerations Checklist*<br /><ul><li>Locale implementation (determination, tracking)‏
Character encodings
Strings
Upcoming SlideShare
Loading in...5
×

Introduction to Internationalization (I18n)

2,933

Published on

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

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,933
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
110
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Introduction to Internationalization (I18n)

  1. 1. Introduction to Internationalization<br />Reaching worldwide markets with a single code base<br />Presented by: Adam Asnes<br />Lingoport, Inc.<br />
  2. 2. Agenda<br /><ul><li>Internationalization
  3. 3. Key Internationalization (i18n) Concepts
  4. 4. Business Cases
  5. 5. Approaching Globalization
  6. 6. Architecture and Code Review
  7. 7. Scanning code for issues with Globalyzer
  8. 8. Building a plan
  9. 9. Ongoing Processes
  10. 10. Questions</li></li></ul><li>Internationalization and Localization Fit<br />Lingoport - Internationalization<br />Development oriented consulting and software<br />Adapt products so they are world ready<br />Localization<br />Translation specific to market needs<br />Coordinated management of strings for translation<br />Linguistic Testing and more<br />
  11. 11. Internationalization (i18n)‏<br /><ul><li>Engineering a product so it can be adapted to target languages and regions efficiently and without requiring subsequent engineering changes to the core product
  12. 12. Common abbreviation is i18n (i + 18 letters + n)‏
  13. 13. A product must be internationalized before localization can occur</li></li></ul><li>Business Case – why it’s important<br />Survival<br />Global Revenues<br />Key business partners<br />60% or more of revenues<br />Competitiveness<br />Strategic Growth<br />
  14. 14. I18n Cost/Benefit<br /><ul><li>One-time Higher Initial Cost
  15. 15. I18n as part of development process
  16. 16. Lower Overall Cost as End Result
  17. 17. Future releases incur only localization costs</li></li></ul><li>New Globalization Requirement<br />
  18. 18. I18n Needs – Biz vs. Tech<br />Our Software must be in Japanese, French, German, Chinese, and Spanish by November<br />Engineering thinks about…<br />Multi-tiered web application?<br />Complex Interface?<br />Database components?<br />Embedded Strings?<br />Locale aware application?<br />Can it manage multiple data formats?<br />I18n testing plan?<br />Tactics to get it done<br />
  19. 19. Sample Internationalization Technical Issues<br />
  20. 20. Example: Hard-Coded English Text<br />1 million lines of source code<br />Typically Found: <br /> At least 40,000 Embedded Strings which cannot be efficiently translated<br />String orderStatus = “Your order has been processed. A confirmation e-mail will be sent to you shortly.”;<br />
  21. 21. 11<br />String Concatenation<br />Avoid Concatenation<br />Combining two or more text strings at runtime to form a single string<br />What order do these appear at runtime?<br />Are they switched around? <br />Do they combine with other strings that aren’t here?<br />fileActions = {1} file(s)<br />successfulAction = successfully {2}<br />locationAction = to {3}<br />
  22. 22. Character Sets/Encodings<br /><ul><li>Character set
  23. 23. A set of characters used to support a given language or series of languages
  24. 24. Character encoding
  25. 25. A set of code points that defines numeric values for each character within a character set (coded character set)‏</li></li></ul><li>Character Encoding<br /><ul><li>The Binary Letter A</li></ul>The Letter:<br />A<br />Binary Encoding Examples<br />ASCII: 1000001 (7-bit)‏<br />ISO Latin 1: 01000001 (single-byte)‏<br />UTF-16: 00000000 01000001 (double-byte)‏<br />
  26. 26. Character Sets and Encoding<br /><ul><li>This is broken:</li></li></ul><li>Internationalization Challenge<br />Software Data Path - it’s not just the display<br />Display<br />Input<br /> Transform<br />Store<br />Retrieve<br />Transform <br />
  27. 27. I18n Architectural Challenge – what’s not in the code<br />Marketing Requirements<br />Locale behavior<br />Database<br />Character<br /> encoding <br />support<br />Application Code<br />e.g. Java, C++, VB<br />U/I<br />e.g. JSP,<br />ASP, ASPX<br />3rd Party Products<br />Business Logic<br />Platforms, Browser Support Requirements<br />
  28. 28. I18n Design Considerations Checklist*<br /><ul><li>Locale implementation (determination, tracking)‏
  29. 29. Character encodings
  30. 30. Strings
  31. 31. Externalization
  32. 32. Concatenation
  33. 33. Display/Layout
  34. 34. Date/time handling
  35. 35. Number handling
  36. 36. Currency handling
  37. 37. Sorting
  38. 38. Searching
  39. 39. Encoding conversions
  40. 40. Locale-specific functions
  41. 41. Address formats
  42. 42. Telephone formats
  43. 43. Page layout
  44. 44. Fonts and attributes
  45. 45. Images, icons, colors
  46. 46. Bi-directional support?
  47. 47. Reporting, workflow
  48. 48. Database enabling
  49. 49. Multi-byte enabling</li></li></ul><li>Locale<br /><ul><li>Language + territory [ + variant ]
  50. 50. en_US = English (US)‏
  51. 51. en_GB = English (UK)‏
  52. 52. Combines language and territorial conventions for spelling, formatting, etc.
  53. 53. en_US = "color," mm/dd/yyyy, $1,234.56
  54. 54. en_GB = "colour," dd/mm/yyyy, £1.234,56
  55. 55. A more accurate representation than language</li></li></ul><li>Locale<br />Short Date<br />Long Date<br />Number<br />Currency<br />English, US<br />05/06/02<br />May 6, 2002<br />1,234.56<br />$1,234.56<br />English, UK<br />06/05/02<br />06 May 2002<br />1.234,56<br />£1.234,56<br />French, France<br />06/05/02<br />6 mai 2002<br />1 234,56<br />1 234,56 €<br />Japanese<br />02/05/06<br />2002年5月6日<br />1,234.56<br />¥1,234.56<br />Locale-Specific Formatting Examples<br />
  56. 56. Sorting/Collation<br /><ul><li>Which list is correct?</li></ul>Ångström Helsinki<br />Helsinki Zürich<br />Österreich Ångström<br />Zürich Österreich<br />
  57. 57. New Internationalization Project!<br /><ul><li>What to do?
  58. 58. Large amount of code
  59. 59. Change in requirements
  60. 60. Change in architecture
  61. 61. Change in development practices
  62. 62. Change in testing requirements</li></li></ul><li>I18n Process<br /><ul><li>Planning
  63. 63. Market Requirements Analysis
  64. 64. Architectural Requirements Analysis
  65. 65. Code Review
  66. 66. I18n Design
  67. 67. I18n Implementation
  68. 68. Testing
  69. 69. And beyond…
  70. 70. Localization
  71. 71. Support</li></li></ul><li>Code Review – what’s in the code that needs to be found and changed<br /><ul><li>What to Identify
  72. 72. Embedded strings
  73. 73. Unsafe methods/functions
  74. 74. Image references
  75. 75. Unsafe programming constructs (ex: regular expressions)‏
  76. 76. How to Identify
  77. 77. “Brute force” iterations
  78. 78. Engineers search for and resolve known issues
  79. 79. Globalyzer-assisted review
  80. 80. An I18n code analysis tool is employed to examine source code for a large range of potential and known issues
  81. 81. Issues can be identified and resolved in a more systematic fashion</li></li></ul><li>Globalyzer Server and Clients<br />Server<br />Command Line<br />Client<br />
  82. 82. Example Project Plan<br />Combine:<br /><ul><li>1 Part Architecture
  83. 83. 1 Part Code Metrics
  84. 84. 1 Part Experience</li></li></ul><li>Let’s Look at Some Code<br />
  85. 85. I18n Testing<br /><ul><li>PseudoJudo Utility in Globalyzer
  86. 86. Pseudo-localization
  87. 87. A “pseudo-locale” is created and implemented with “pseudo-translated” content
  88. 88. Before pseudo-translation:</li></ul>UserNameLabel=Username<br />SomeMessage=The quick brown fox jumps over the lazy dog.<br /><ul><li>After pseudo-translation: </li></ul>UserNameLabel=縞Ùsèérnâàæmê史<br />SomeMessage=嚮Thëëëqúûîìckbröööwnfòöõxjüùümpsòvèèrthêêlãâzÿdõøg燭.<br /><ul><li>Tests for:
  89. 89. String-length expansion issues
  90. 90. Extended character display/corruption issues</li></li></ul><li>Keeping Software Worldready<br />
  91. 91. I18n As An Ongoing Process<br /><ul><li>Pervasive influence on entire organization
  92. 92. Paradigm shift: not US-centric!
  93. 93. I18n Coding Standards
  94. 94. Quality Assurance
  95. 95. I18n software lifecycle tools: Globalyzer
  96. 96. Avoid code forks
  97. 97. New features with international focus to launch in ALL locales
  98. 98. Relationship with Localization partner</li></li></ul><li>I18n As An Ongoing Process<br /><ul><li>Globalyzer Command Line
  99. 99. Automated i18n checking
  100. 100. Create i18n Standards
  101. 101. Training</li></li></ul><li>Contact Information<br />31<br />Questions?<br />Contact<br />Lingoport<br />http://lingoport.com<br />info@lingoport.com<br />+1 303 444 8020<br />Based in Boulder, Colorado<br />Visit lingoport.com for more articles, newsletters and whitepapers<br />Try Globalyzer – sign up at http://globalyzer.com<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×