Static Analysis Internationalization I18n Software Localization


Published on

One of the challenges of any internationalization effort is precisely locating internationalization issues buried in large amounts of source code and turning that data into an achievable plan. In this session, we’ll work with some open-source code using Globalyzer, a tool to evaluate the code base and categorize internationalization issues. We’ll then look at using this data to build and execute an internationalization plan among developer teams. There will also be an emphasis on maintaining code over its development life cycle so that new internationalization issues don’t begin to crop up and create costly iterative delays during localization. The session will share some of the very same proven and repeatable approaches that Lingoport has used to effectively scale and perform extensive internationalization implementations on large applications in a wide variety of programming languages and technologies.

Published in: Technology
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Static Analysis Internationalization I18n Software Localization

  1. 1. Static Analysis for I18n<br />Adam Asnes<br />President and CEO<br />Lingoport<br /><br />P: 303.444.8020<br />Lingoport, Inc.<br />3980 Broadway<br />Boulder, Colorado<br />USA 80304<br />+1 303 444 8020<br /><br />Monday, April 05, 2010<br />
  2. 2. Presenters<br />Adam Asnes<br />Lingoport<br />
  3. 3. Agenda<br />Business Case<br />Traditional Approach<br />Globalyzer<br />Static Analysis Demonstration<br />ROI: Implications and Examples<br />Questions and Answers<br />
  4. 4. Business Case:<br />Nothing gets internationalized or localized <br />just because it would be cool<br />
  5. 5. 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 />
  6. 6. Business Case<br />Localization Support<br />U/I and data management/presentation<br />Enterprise Customer Support<br />Global enterprise customers need Unicode support<br />DB and presentation must support client needs<br />
  7. 7. Is It Internationalized?<br />Developers often underestimate i18n requirements<br />Most don’t know the answer<br />Agile or other feature and release requirements often overrun less formally measured i18n requirements<br />There is a Management Value in being able to confirm global readiness<br />
  8. 8. Traditional Approach - repeat, and repeat,and repeat, and repeat<br />
  9. 9. Tiers and Technologies<br />Time and effort increase<br />
  10. 10. Traditional Approach<br />Tedious Search – “hunt and peck”<br />Simple scripts and pseudo-localization testing is insufficient and iterative by nature<br />IDEs are poor at finding i18n issues and across programming languages<br />Finding issues too late<br />Ugly surprises during localization <br />or worse, after release<br />
  11. 11. Testing<br />Coding<br />Architectureand Design<br />Requirements<br /> Source: “Software Internationalization Tools and Solutions” - XeroxCatch Bugs Early!<br />30 x<br />15 x<br />Maintenance<br />7 x<br />Localization<br />4 x<br />Acceptance<br />2 x<br />Development Phase when<br />an I18N bug is detected<br />
  12. 12. Testing vs. Static Analysis<br />Testing only validates what can be easily exercised<br />Hard to cover error messages and all aspects of the interface<br />Expensive and inefficient process<br />Static Analysis<br />Evaluates issues at the source level<br />Covers the entire application<br />Guides development through solutions<br />
  13. 13. Static I18n Analysis<br />Frequent i18n analysis speeds the process and<br />Measures how coding practices are in compliance with i18n standards<br />What gets measured improves<br />$$$ value in answering management that the software is global and meets a set of standards<br />
  14. 14. Examples of what to look for?<br />Presentation<br />Embedded Strings<br />Concatenation<br />Data<br />Display<br />E.g. Calendar, numerical formatting<br />Processing e.g.<br />String processing logic<br />Character encoding<br />Other<br />Pattern matching for special cases<br />
  15. 15. Globalyzer<br />Manage, perform and track internationalization so you’re ready for localization<br />
  16. 16. Globalyzer Server and Clients<br />Server<br />Command Line<br />Client<br />
  17. 17. Static Analysis Example<br />With Globalyzer 3.2<br /> <br />
  18. 18. Detection<br />Embedded Strings<br />Locale-unsafe methods, functions, classes per programming language<br />Locale-unsafe programming patters<br />Filtering<br />Conditional – using regex<br />Dictionary matches for strings<br />Special exceptions<br />Individual issue status<br />
  19. 19. Building your own Tools<br />Painful to consider, especially over multiple programming languages<br />How do you search for strings?<br />Research and find methods/functions/classes across programming languages<br />Difficult to gain intelligent results that can be built upon for precise direction during implementation<br />Hard to track issues<br />You now have to support it!<br />
  20. 20. Obstacles to Acceptance<br />False Positives – too many issues detected overwhelms developers<br />Globalyzer filtering<br />Globalyzer project files<br />Globalyzer DB tracks issues and exceptions<br />“Auto-magic” solutions usually don’t work in a highly variable environment. Adaptation is a better solution.<br />
  21. 21. Cost of Fixing I18N Issues During Localization<br /><ul><li>When I18N issues are discovered during L10N testing, time is spent by 5 different groups of workers
  22. 22. If we avoided I18N errors, we could save $762K /yr
  23. 23. If we caught I18N errors at the source, we could save $420K/yr</li></li></ul><li>Management Rule<br />Whatever Gets Measured Improves<br />
  24. 24. Questions, Contacts & Next Steps<br />Contact:<br />Adam Asnes –<br />