Going Global: Internationalization with Java - PowerPoint PPT Presentation

1 / 37
About This Presentation
Title:

Going Global: Internationalization with Java

Description:

Title: Internationalization With Java Author: Sue Davis Last modified by: u0661290 Created Date: 7/25/1999 5:21:16 PM Document presentation format – PowerPoint PPT presentation

Number of Views:42
Avg rating:3.0/5.0
Slides: 38
Provided by: Sue50
Learn more at: http://www.rjug.org
Category:

less

Transcript and Presenter's Notes

Title: Going Global: Internationalization with Java


1
Going GlobalInternationalization with Java
  • Sue Davis
  • Rochester Java Users Group
  • November 15, 2000

2
Agenda
  • Introduction
  • Definition of Internationalization
  • Why internationalize?
  • Highlight some aspects of internationalization
  • Java internationalization classes
  • Simple Demonstration
  • Closing thoughts
  • QA

3
Introduction
  • My background in internationalization
  • Scope of internationalization
  • Software
  • Documentation/On-line Help
  • Testing
  • Training
  • Legal considerations
  • Marketing

4
Introduction
  • Internationalization is the process of designing
    and developing products enabled for simultaneous
    shipment (Sim Ship) to both domestic and world
    markets.

5
Terms and Abbreviations
  • Localization
  • Globalization
  • Locale
  • Diacritic
  • Folding
  • Decomposed character
  • Pre-composed character
  • MBCS
  • DBCS
  • Unicode
  • UTF-8
  • I18N
  • G11N
  • L10N
  • NLS
  • IME
  • Glyph

6
Why Internationalization Is Important
  • North America represents only 1/3 of the world
    economy
  • Europe, Latin America, Japan and Asia Pacific
    represent more than 1/2
  • Subtle differences even in other English speaking
    counties
  • Localization is expensive
  • Maintain one set of source, ship one binary for
    multiple locales

7
Motivated self interest
  • Try Internationalization or i18n on major job
    search engine
  • Internationalization positions at other major
    corporations
  • Sun Internationalization Architect
  • Apple Internationalization Technology Evangelist
  • Compaq I18N/L10N Development Manager
  • Kodak Product Internationalization Manager
  • The Web has made it easier than ever to reach the
    global market. Expect this to be skill that is
    in demand.

8
What does it mean to Internationalize
  • Externalize text, icons, sound.
  • Design for expansion of translated text
  • Use of culturally neutral graphics whenever
    possible
  • Automatically format of dates and numbers as
    appropriate to the locale
  • Consistent use of terminology, correct grammar,
    avoid slang
  • Managing various character encoding schemes
  • And more...

9
Design for expansion of translated text
  • English is very compact language
  • If target markets include Asian countries, allow
    additional vertical spacing.
  • Negatives if the UI has to be redesigned to be
    usable after translation
  • Longer time to market
  • Higher localization costs
  • Higher maintenance costs
  • Localization of Training, Help, User
    documentation becomes more complicated

10
English length (in characters) Additional growth
for localized strings
  • 1 to 4 100
  • 5 to 10 80
  • 11 to 20 60
  • 21 to 30 40
  • 31 to 50 20
  • 51 10

From MSDN, VB Concepts, Designing an
International Aware User Interface
11
Use culturally/linguistically neutral graphics
  • Dont use a Christmas Tree and Champagne glass as
    a holiday icon
  • Keep text off graphics
  • Dont use homonyms as a basis for icons

12
Use culturally/linguistically neutral
graphicsContinued...
Are any of these neutral?
13
Lets talk about Java!
  • What are some of the important Java classes for
    internationalization?
  • Locale
  • ResourceBundle, specifically ListResourceBundle
  • NumberFormat
  • DateFormat
  • Collator
  • CollationKey
  • RuleBasedCollator
  • BreakIterator

14
The Locale class
  • A Locale is defined as a combination of language,
    country and variant
  • Two character ISO codes for both language and
    country.
  • Language codes are all lower case (ISO 639)
  • Country codes are upper case (ISO 3166)
  • Variants are ad hoc - most frequently used to
    specify Euro currency

15
Externalize text, icons, sound
  • Resources reside in a resource file that is
    separate from the application.
  • Java - Resource Bundle
  • Dont combine phrases to make sentences
  • Makes the executable language independent
  • Isolates resources for translation and
    localization
  • Can enable a new locale by just installing the
    appropriate Resource Bundle. (in theory)

16
What is a ResourceBundle?
  • A ResourceBundle (java.util.ResourceBundle) is an
    abstract class with two concrete subclasses
  • PropertyResourceBundle (limited use, not
    recommended)
  • ListResourceBundle
  • Consists of minimally a base class extending
    PropertyResourceBundle
  • Locale specific resources are added by creating
    additional classes with language and country
    extentions

17
Using PropertyResourceBundle
  • Create the baseline ResourceBundle
  • class DemoResource extends PropertyResouceBundle
  • public Object getContents() return
    contents
  • static final Object contents //
    Localize right hand object
  • "SampleKey", "translatable text", //
    helpful hint
  • "HelloWorldKey", "Hello World",
  • "MenuFileKey", "File",
  • "MenuFileExitKey", "Exit",
  • "MenuHelpKey", "Help",
  • "MenuHelpAboutKey", "About",

18
Begin Localizing your ResourceBundles
  • Create a language specific ResourceBundle
  • class DemoResource_fr extends PropertyResouceBund
    le
  • public Object getContents() return
    contents
  • static final Object contents //
    Localize right hand object
  • "HelloWorldKey", "Bonjour Monde",
  • "MenuFileKey", "Fichier",
  • "MenuFileExitKey", "Quittent",
  • "MenuHelpKey", "Aide",
  • "MenuHelpAboutKey", "Au sujet de",

19
Localize ResourceBundles for language country
  • Create a locale specific ResourceBundle
  • class DemoResource_fr_FR extends
    PropertyResouceBundle
  • public Object getContents() return
    contents
  • static final Object contents //
    Localize right hand object
  • "HelloWorldKey", "Bonjour Monde for
    France",

20
Cascading Resource Bundles
  • Why you dont need to redefine every key in
    DemoResource_fr_FR
  • ResourceBundles cascade from most specific locale
    information down to the base, in this case,
    DemoResource
  • So if your Locale is Locale.FRANCE (or
    Locale(fr, FR) ) the code will search the
    ResourceBundle classes for the key in the
    following order
  • DemoResource_fr_FR
  • DemoResource_FR
  • DemoResource
  • An exception is thrown if the key is not found in
    ANY of these classes

21
Lets look at some code
  • Using ResourceBundles in Packages
  • Package name MUST be the same as the bundles
    base name
  • The ResourceBundle class must be FULLY qualified
  • Do not need to import the package

22
Formatting Text Messages
  • Sometimes theres no way around it. You HAVE to
    have variables integrated into the message.
  • Remember sentence structures vary between
    languages, so you need to give your translator a
    way to move things around without breaking the
    code

23
Java to the rescue
  • The class MessageFormat allows you to number the
    placeholders for your variables
  • In your ResourceBundle
  • key, my formatted 1 message is very 2
  • // helpful hints to the translator go here
  • In your code
  • myObj.value MessageFormat.format(
  • rb.getString(key),
  • new Object(
  • varible1,
  • variable2)
  • )
  • )

24
Automatic formatting of dates and numbers as
appropriate to the locale
  • Date formats vary from country to country, even
    among English speaking counties.
  • Long Date examples
  • US Thursday, August 19, 1999
  • UK 19 August 1999
  • DE Donnerstag, 19.August 1999
  • FR jeudi 19 aôut 1999

25
Automatic formatting continued...
  • Date formats vary from country to country, even
    among English speaking counties.
  • Short Date examples
  • US 8/19/99
  • UK 19/08/99
  • DE 19.08.99
  • FR 19/08/99

26
Automatic formatting of numbers and currency
  • Numeric examples Currency
  • US 1,234,567.89 1,234.45
  • UK 1,234,567.89 1,234.45
  • DE 1.234.567,89 1.234,45 DM
  • FR 1 234 567,89 1 234,45 F
  • Java 1.1.6 and later support the Euro


27
Automatic Formatting in Java
  • Available classes
  • DateFormat
  • NumberFormat
  • DecimalFormat
  • SimpleDateFormat
  • Date
  • good for storing elapsed time since Jan 1, 1970
    GMT
  • API assumes the Gregorian Calendar
  • Calendar
  • TimeZone
  • JDK supports only the Gregorian calendar

28
Dealing with characters and strings
  • Assuming Unicode
  • Character traits
  • Comparisons and conversions
  • Sorting
  • Text boundaries

29
Characters traits
  • idDefined()
  • isDigit()
  • isLetter()
  • isSpace()/isSpaceChar()/isWhiteSpace()
  • isLetterOrDigit()
  • isUpperCase()/isLowerCase()/isTitleCase()
  • getType()
  • getNumericValue()

30
Comparisons and conversions
  • Comparing pre-composed characters with decomposed
    characters
  • String conversions (e.g. toUpperCase()) not
    always round trip

31
Sorting
  • Do not use String.compareTo() for natural
    language text.
  • Use Collator to compare locale sensitive strings
  • Use CollationKey to sort long lists
  • RuleBasedCollator
  • Character folding (ignore diacritics résumé vs.
    resume)

32
Tools to help you go global...
  • Internationalizing source code
  • One Realm
  • Uniscape
  • Java
  • Machine Translation/Machine Assisted Translation
  • Consulting
  • Internationalization - small but growing
  • Localization - Lots
  • Training - Minimal, usually in conjunction with a
    product purchase or consulting contract

33
Use terms consistentlyUse correct grammar, avoid
slang
  • Facilitates the use of Machine Assisted
    Translation translation tools
  • Helps minimize questions from translators
  • Impacts Developers, Documentation, QA

34
Closing Thoughts
  • EJAL English is Just Another Language
  • Anything is fair game for localization, including
    corporate names and logos.
  • Internationalization is NOT a feature.
  • Internationalization IS a design issue
  • Internationalization shortens and simplifies the
    localization process.
  • Rapid deployment, improved time to market
  • Lower maintenance time costs
  • Frees development resources for new product
    development

35
Not Discussed
  • Using third party software
  • Sorting
  • Text boundary conditions
  • Accelerator keys
  • Color
  • Software Architecture
  • Configuration Management Issues
  • Legal requirements
  • Bi-directional languages
  • Different calendars (Hebrew, Japanese Imperial,
    Buddhist, Islamic)

36
Recommended Reading
  • JavaWorld, Internationalize Your Software, Geoff
    Friesen part 1, part 2, and part 3
  • Internationalization Localization with Resource
    bundles, John O'Conner
  • Global Design Homepage, Richard Ishida
  • Scripting Clinic Using Script to
    Internationalize Web Site Functions
  • Localization and the XML/DHTML Menus
  • Developing Global Applications in Java, Richard
    Gillam
  • Developing International Software for Windows 95
    and Windows NT, Nadine Kano, Available
    electronically on MSDN
  • MSDN, Windows Interface Guidelines for Software
    Design

37
Questions???
Write a Comment
User Comments (0)
About PowerShow.com