INTERNATIONALIZATION&
LOCALIZATIONHUY T. VU
DEFINITION
• Internationalization: deploying a computer software internationally • Localization: adapting an internationalized software for a specific region by
translating into different languages and modifying contents to target the local market
***Problem in software industry: popular apps should be used internationally, but not everyone speaks the same language.
EXAMPLE: THE FIFA WORLD CUP 2014• 32 national teams participate in one of the world largest sport
events• Millions of fans WILL gather in Brazil & billions watching at
home• Demand for mobile apps:
• Info, results, venues, analyses…• Travels, hotels, restaurant….• Photos, clips….
*** very diverse languages and cultures
HOW TO LOCALIZE RESOURCES?
• When localizing, there are 2 types of resource• Changing resources: String, Drawable, Animation, Audio….• Unchanging resources: Layout
Solution: create sub-folders with codes (normally follow ISO 639-1 standard)
SAMPLE: INTERNATIONAL APP
Create an empty app and define strings.xml as in the picture
Make a Japanese version
Step:1. create a sub-folder “values-ja” under folder “res”
2. within that folder, create strings.xml file and prepare texts for 4 different string variables
*** ja is ISO 639-1 code for Japanese, list of language codes can be found here:http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
Use custom locale on emulator
TYPICAL ISSUE #1
• NOT all languages are supported on every devices (especially lesser popular languages such as those used by African nations)
• Need another approach
CHANGE LOCALE DYNAMICALLY
STEP 1: for simplicity, create a RadioGroup of languages (this works better with Spinner in Android, but for simplicity, I use RadioGroup)
STEP 2: modify the AndroidManifest.xml file by adding android:configChanges=“locale”to every activity that intends to change locale dynamically
STEP 3: add codes in the activity to change locale and update configuration
TYPICAL ISSUE #2Both England and the USA are qualified for the World Cup. Both countries use English, but…
England• Football• WC• Plaza• Fuel• …
USA• Soccer• Restroom• Mall• Gas• …
Localization:• Make another subfolder
specifying Great Britain• Assuming the default values
are for US-localization• Only include the strings that
are different
res/values/strings.xml
res/values-en-rGB/strings.xml
Folder name convention: values-xx-rYY• xx is ISO 639-1 language code (2 letters)• r is region (must have)• YY is ISO 3166-1 country code (2 letters)• Use Locale constructor to interpret the code
• People would like to see information about their national team
localize “drawable” resource
TYPICAL ISSUE #3
For images, it’s a little different, the previous resource must be nullified before setting new resource
TYPICAL ISSUE #4• Date and Time format varies between countries• To localize date and time format, add the following codes
DESIGN STANDARDS FOR INTERNATIONALIZATION
• Names are NOT translatable or localizable• Internationalized conventions are used by default (SI units, symbols,…)
WHAT ABOUT THIS?
Design’s rule of thumb: ROMANIZATION
Texts should be displayed in Romanized form
THANK YOU