static analysis internationalization i18n software localization
DESCRIPTION
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.TRANSCRIPT
![Page 1: Static Analysis Internationalization I18n Software Localization](https://reader033.vdocuments.us/reader033/viewer/2022061115/546440a8b4af9f3f3f8b48c7/html5/thumbnails/1.jpg)
WORLDWARECONFERENCE
Static Analysis for I18n
Adam Asnes
President and CEO
Lingoport
www.lingoport.com
P: 303.444.8020Lingoport, Inc.3980 BroadwayBoulder, ColoradoUSA 80304+1 303 444 8020www.lingoport.com
Saturday, April 8, 2023
![Page 2: Static Analysis Internationalization I18n Software Localization](https://reader033.vdocuments.us/reader033/viewer/2022061115/546440a8b4af9f3f3f8b48c7/html5/thumbnails/2.jpg)
WORLDWARECONFERENCE
Presenters• Adam Asnes
– Lingoport
![Page 3: Static Analysis Internationalization I18n Software Localization](https://reader033.vdocuments.us/reader033/viewer/2022061115/546440a8b4af9f3f3f8b48c7/html5/thumbnails/3.jpg)
WORLDWARECONFERENCE
Agenda
• Business Case• Traditional Approach• Globalyzer• Static Analysis Demonstration• ROI: Implications and Examples• Questions and Answers
![Page 4: Static Analysis Internationalization I18n Software Localization](https://reader033.vdocuments.us/reader033/viewer/2022061115/546440a8b4af9f3f3f8b48c7/html5/thumbnails/4.jpg)
WORLDWARECONFERENCE
Business Case:
Nothing gets internationalized or localized just because it would be cool
![Page 5: Static Analysis Internationalization I18n Software Localization](https://reader033.vdocuments.us/reader033/viewer/2022061115/546440a8b4af9f3f3f8b48c7/html5/thumbnails/5.jpg)
WORLDWARECONFERENCE
Business Case – why it’s important• Survival• Global Revenues
– Key business partners– 60% or more of revenues
• Competitiveness• Strategic Growth
![Page 6: Static Analysis Internationalization I18n Software Localization](https://reader033.vdocuments.us/reader033/viewer/2022061115/546440a8b4af9f3f3f8b48c7/html5/thumbnails/6.jpg)
WORLDWARECONFERENCE
Business Case• Localization Support
– U/I and data management/presentation
• Enterprise Customer Support– Global enterprise customers need Unicode support– DB and presentation must support client needs
![Page 7: Static Analysis Internationalization I18n Software Localization](https://reader033.vdocuments.us/reader033/viewer/2022061115/546440a8b4af9f3f3f8b48c7/html5/thumbnails/7.jpg)
WORLDWARECONFERENCE
Is It Internationalized?• Developers often underestimate i18n
requirements• Most don’t know the answer• Agile or other feature and release requirements
often overrun less formally measured i18n requirements
• There is a Management Value in being able to confirm global readiness
![Page 8: Static Analysis Internationalization I18n Software Localization](https://reader033.vdocuments.us/reader033/viewer/2022061115/546440a8b4af9f3f3f8b48c7/html5/thumbnails/8.jpg)
WORLDWARECONFERENCE
Traditional Approach - repeat, and repeat, and repeat, and repeat
Localize and see what you’re
missing
GREP, overwhelm developers
View pages. Pour through code for
strings, methods, etc.
Externalize and refactor one by
one
Test, Pseudo-Localize
![Page 9: Static Analysis Internationalization I18n Software Localization](https://reader033.vdocuments.us/reader033/viewer/2022061115/546440a8b4af9f3f3f8b48c7/html5/thumbnails/9.jpg)
WORLDWARECONFERENCE
Tiers and Technologies
1 •Java•C#
2 •JavaScript•VB
3 •C++•Older languages: e.g. RPGTime and effort increase
![Page 10: Static Analysis Internationalization I18n Software Localization](https://reader033.vdocuments.us/reader033/viewer/2022061115/546440a8b4af9f3f3f8b48c7/html5/thumbnails/10.jpg)
WORLDWARECONFERENCE
Traditional Approach
• Tedious Search – “hunt and peck”• Simple scripts and pseudo-localization testing is
insufficient and iterative by nature• IDEs are poor at finding i18n issues and across
programming languages• Finding issues too late• Ugly surprises during localization
– or worse, after release
![Page 11: Static Analysis Internationalization I18n Software Localization](https://reader033.vdocuments.us/reader033/viewer/2022061115/546440a8b4af9f3f3f8b48c7/html5/thumbnails/11.jpg)
WORLDWARECONFERENCE
Source: “Software Internationalization Tools and Solutions” - Xerox
Catch Bugs Early!
Mai
nten
ance
Loca
lizat
ion
Acc
epta
nce
Test
ing
Cod
ing
Arc
hite
ctur
e an
d D
esig
n
Req
uire
men
ts
30 x
15 x
7 x
4 x
2 x
Development Phase whenan I18N bug is detected
![Page 12: Static Analysis Internationalization I18n Software Localization](https://reader033.vdocuments.us/reader033/viewer/2022061115/546440a8b4af9f3f3f8b48c7/html5/thumbnails/12.jpg)
WORLDWARECONFERENCE
Testing vs. Static Analysis• Testing only validates what can be easily
exercised– Hard to cover error messages and all aspects of the
interface– Expensive and inefficient process
• Static Analysis– Evaluates issues at the source level
• Covers the entire application
– Guides development through solutions
![Page 13: Static Analysis Internationalization I18n Software Localization](https://reader033.vdocuments.us/reader033/viewer/2022061115/546440a8b4af9f3f3f8b48c7/html5/thumbnails/13.jpg)
WORLDWARECONFERENCE
Static I18n Analysis• Frequent i18n analysis speeds the process and
– Measures how coding practices are in compliance with i18n standards
– What gets measured improves
• $$$ value in answering management that the software is global and meets a set of standards
![Page 14: Static Analysis Internationalization I18n Software Localization](https://reader033.vdocuments.us/reader033/viewer/2022061115/546440a8b4af9f3f3f8b48c7/html5/thumbnails/14.jpg)
WORLDWARECONFERENCE
Examples of what to look for?• Presentation
– Embedded Strings– Concatenation
• Data– Display
• E.g. Calendar, numerical formatting
– Processing e.g.• String processing logic• Character encoding
• Other– Pattern matching for special cases
![Page 15: Static Analysis Internationalization I18n Software Localization](https://reader033.vdocuments.us/reader033/viewer/2022061115/546440a8b4af9f3f3f8b48c7/html5/thumbnails/15.jpg)
WORLDWARECONFERENCE
Globalyzer
Manage, perform and track internationalization so you’re ready for localization
![Page 16: Static Analysis Internationalization I18n Software Localization](https://reader033.vdocuments.us/reader033/viewer/2022061115/546440a8b4af9f3f3f8b48c7/html5/thumbnails/16.jpg)
WORLDWARECONFERENCE
Globalyzer Server and Clients
Server
Client
Command Line
![Page 17: Static Analysis Internationalization I18n Software Localization](https://reader033.vdocuments.us/reader033/viewer/2022061115/546440a8b4af9f3f3f8b48c7/html5/thumbnails/17.jpg)
WORLDWARECONFERENCE
Static Analysis Example
With Globalyzer 3.2www.globlayzer.com
![Page 18: Static Analysis Internationalization I18n Software Localization](https://reader033.vdocuments.us/reader033/viewer/2022061115/546440a8b4af9f3f3f8b48c7/html5/thumbnails/18.jpg)
WORLDWARECONFERENCE
Detection• Embedded Strings• Locale-unsafe methods, functions, classes per
programming language• Locale-unsafe programming patters
• Filtering– Conditional – using regex– Dictionary matches for strings– Special exceptions– Individual issue status
![Page 19: Static Analysis Internationalization I18n Software Localization](https://reader033.vdocuments.us/reader033/viewer/2022061115/546440a8b4af9f3f3f8b48c7/html5/thumbnails/19.jpg)
WORLDWARECONFERENCE
Building your own Tools• Painful to consider, especially over multiple
programming languages– How do you search for strings?– Research and find methods/functions/classes across
programming languages– Difficult to gain intelligent results that can be built
upon for precise direction during implementation– Hard to track issues– You now have to support it!
![Page 20: Static Analysis Internationalization I18n Software Localization](https://reader033.vdocuments.us/reader033/viewer/2022061115/546440a8b4af9f3f3f8b48c7/html5/thumbnails/20.jpg)
WORLDWARECONFERENCE
Obstacles to Acceptance• False Positives – too many issues detected
overwhelms developers• Globalyzer filtering• Globalyzer project files• Globalyzer DB tracks issues and exceptions
– “Auto-magic” solutions usually don’t work in a highly variable environment. Adaptation is a better solution.
![Page 21: Static Analysis Internationalization I18n Software Localization](https://reader033.vdocuments.us/reader033/viewer/2022061115/546440a8b4af9f3f3f8b48c7/html5/thumbnails/21.jpg)
WORLDWARECONFERENCE
Resource Hours per I18N bug
Avg # bugs per release
Avg product releases/yr
Avg Cost per hour Cost
L10N Vendor QA
1 25 60 55 82,500
L10N PM 1 25 60 45 67,500
L10N QA 2 25 60 45 135,000
Core QA 2 25 60 45 135,000
Core Eng 4 25 60 57 342,000
Total Cost/Yr $762,000
Product I18N bug count
Release :
A 27
B 1
C 15
D 2
E 8
F 3
G 5
H 8
I 34
J 31
K 6
L 0
M 0
N 49
O 85
P 140
Q 46
• When I18N issues are discovered during L10N testing, time is spent by 5 different groups of workers
• If we avoided I18N errors, we could save $762K /yr
• If we caught I18N errors at the source, we could save $420K/yr
Cost of Fixing I18N Issues During Localization
![Page 22: Static Analysis Internationalization I18n Software Localization](https://reader033.vdocuments.us/reader033/viewer/2022061115/546440a8b4af9f3f3f8b48c7/html5/thumbnails/22.jpg)
WORLDWARECONFERENCE
Management Rule
• Whatever Gets Measured Improves