Vous êtes sur la page 1sur 27

The Evolution of

Localizability Testing &


Pseudo Localization Models
Bj Rollison, Test Training
Manager
Microsoft, Inc.

The importance of localization


Higher growth in international
markets
Governmental requirements
Localization is a right, not a
privilege.
Success in software industry today
depends on international scope

In the beginning
Hard coded strings in source code
Source code recompiled per
language
main (void)
{
printf (Hello World!);
return 0;
}

Recompile localization
ENU
.rc

DEU
.rc

JPN
.rc

Others
.rc

src

Ifdef
src

Ifdef
src

Ifdef
src

Time & Cost

Present day
Single worldwide binary
Resources isolated
No compile localization
Hello
Bonjour

LoadString (hinst, IDS_HELLO, szFormat, cchMaxSz);


while
{
char szString[cbMaxSz];
int nPercent = PercentComplete();
_tnsprintf(szString, szFormat, nPercent);
DrawString (szString);
//more code stuff here
}

No compile localization
ENU
.rc

DEU
.rc

JPN
.rc

Other
.rc

GLOBAL
src

Reduced Time & Cost

Internationalization
Model
I18N
Globalization

Localization
L10N

Typical localization process


ENU
.rc

Pilot Langs.
.rc

Tier 1
.rc

GLOBAL
src

TIME + COST

Tier 2
.rc

Tier 3
.rc

Ifdef
src

Localization lunacy
Oh yeahnow localize it!
Engineering costs > 40%
of software localization
Too many code defects found
during localization processes
Often no way of knowing where
defects exist until localization begins
No standardized development or
localization processes

So what is localizability anyway?


An engineering paradigm that allows
modifications to the resources used
by a software program
Without introducing functional defects
requiring modification of the source code
Without requiring retesting of common
functional areas

Inventing the wheel


Identify common defects
Isolate causes
Craft model
Define new heuristics

Localizability Entomology
Missing files, setup failures
Build scripts

Untranslated text
Hard-coded strings
Strings from external sources

Functionality problems
String dependencies
Over translation

Localizability Entomology
Accessibility key issues
Non-ASCII key mnemonics

Sentence composition
Concatenated/dynamic strings

Truncated text/buffer overflow


Hard-coded string buffer size
Button text in string table
User drawn menus/controls
Hard-coded style layout in CSS

Localizability Entomology
Character corruption
Hard-coded font
Not Unicode enabled
Incorrect meta charset tag

User interface issue


Dynamic controls
Absolute coordinates
Overlapping controls (string truncation)
Registry keys used to display text

Taming the beast


Set localization rules
Append characters
to all localizable strings
Grow all string lengths
Bracket all strings
Replace accessibility key
mnemonics

Pseudo localization models

Pseudo localization models

Hammer out the process


Update BASE resources
Generate pseudo loc dB
Verify heuristics
Generate pseudo build
ALL ANSI charsets
Unicode ONLY language

Test!

Internationalization
Model
Globalization
I18N Localization
International
Sufficiency
Testing

Global
Functionality
Testing

Localized
Functionality
Testing

Localizability
Testing

User Interface
Testing

L10N

Attacking localizability
Pseudo localization model is
not panacea for globalization
testing
Dont retest everything
Dont use pseudo localized build
to test general functionality
Reuse automated tests

Focus on localizability class


bugs

Pseudo localization as THE pilot


M0 M1

Eng Lang Project

Mx

RC

Pseudo Localized Pilot

Pseudo localized build


is the pilot language!
Localization is not a
release bottleneck!

Loc.
Vers.

Spec.
Loc.
Vers.

Rebuilding the Tower of Babel


Common linguistic databases
Development tools
Standardized processes
Auto-resizing dialogs
WYSIWYG localization tools
Natural language processing

Summary
English is Just Another Language (EJAL)
Reengineering still drives localization
Single worldwide binary & no-compile
localization development strategy
Pseudo localizability models qualify
localizability & improve quality
Localization = translation/simple
modification

Questions

Vous aimerez peut-être aussi