Going Global: Internationalization with Java Sue Davis Rochester Java Users Group November 15, 2000.

Slides:



Advertisements
Similar presentations
© 1998, Progress Software Corporation 1 Migration of a 4GL and Relational Database to Unicode Tex Texin International Product Manager.
Advertisements

 Yaniv Feinberg Senior SDE Microsoft Corporation  Erik Fortune Principal Dev Lead Microsoft Corporation PC52.
Programming Paradigms and languages
INTRODUCTION Chapter 1 1. Java CPSC 1100 University of Tennessee at Chattanooga 2  Difference between Visual Logic & Java  Lots  Visual Logic Flowcharts.
Free Mini Course: Applying UML 2.0 with MagicDraw.
Copyright © 2009 by SDL Tridion. SDL Tridion®, SDL Tridion R5™, BluePrinting™, SiteEdit™ and WebForms™ are trademarks of SDL Tridion Holding B.V. or its.
API Design CPSC 315 – Programming Studio Fall 2008 Follows Kernighan and Pike, The Practice of Programming and Joshua Bloch’s Library-Centric Software.
Internationalization of Java Platform Presenter: Ataru Nakazawa Advisor: Xiaoping Jia Date: January 23, 2004.
26 April 2001 Unicode and Windows XP, IUC 18 (Hong Kong) Unicode and Windows XP Cathy Wissink Program Manager, Globalization Windows Division Microsoft.
Computer Science and Software Engineering University of Wisconsin - Platteville Note 9. Internationalization Yan Shi SE 3730 / CS 5730 Lecture Notes Part.
Java Software Solutions Lewis and Loftus Chapter 2 1 Copyright 1997 by John Lewis and William Loftus. All rights reserved. Software Concepts -- Introduction.
Chapter 15 Designing Effective Output
Software Engineering 2003 Jyrki Nummenmaa 1 GLOBALISATION I bet it is quite natural to dream about writing software that is being sold around.
Sophia Antipolis, September 2006 Multilinguality, localization and internationalization Miruna Bădescu Finsiel Romania.
San José, CA – September, 2004 Localizing with XLIFF and ICU Markus Scherer Raghuram (Ram) Viswanadha IBM San.
LingoPort, Inc Sumac Avenue Boulder, Colorado USA Sunday, August 30, 2015 Technologies for Global eBusiness.
Globalization, Localization etc Taken from several sources.
Internationalization (I18N) Sufficiency Testing Presented to Seattle Area Software Quality Assurance Group June 19, 2003.
Sakai: Localization & Internationalization Beth Kirschner University of Michigan
Enlightening minds. Enriching lives. Tamil Digital Industry Badri Seshadri K.S.Nagarajan New Horizon Media.
SOFTWARE INTERNATIONALIZATION Dallas Ramsden. Internationalization GOAL Software that can run ANYWHERE in the world without having the source code changed.
Internationalization and the Java Stack Part 1 Matt Wheeler.
Sadegh Aliakbary. Copyright ©2014 JAVACUP.IRJAVACUP.IR All rights reserved. Redistribution of JAVACUP contents is not prohibited if JAVACUP.
L10n and I18n in the Real World Dan Moore Moore Consulting June 9, 2005.
INTERNET APPLICATION DEVELOPMENT For More visit:
Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa Internationalisation.
Internationalization and the Java Stack Matt Wheeler.
The Company….  The Market Leader in Globalization Technology –Pioneers in visual translation environments –Solutions for major platforms & programming.
Company Confidential 1 This presentation is solely for the use of Patni personnel. No part of it may be circulated, quoted, or reproduced for distribution.
Internationalization in the Java Stack Matt Wheeler.
Bing Hong OSIsoft Internationalization &
Internationalization in the Java Stack Matt Wheeler.
1 Module Objective & Outline Module Objective: After completing this Module, you will be able to, appreciate java as a programming language, write java.
Basic Java Syntax CSE301 University of Sunderland Harry R Erwin, PhD.
Chapter 14 Internationalization F Processing Date and Time –Locale –Date –TimeZone –Calendar and GregorianCalendar –DateFormat and SimpleDateFormat F Formatting.
Liang, Introduction to Java Programming, Fifth Edition, (c) 2005 Pearson Education, Inc. All rights reserved Chapter 26 Internationalization.
Chapter 12: Internationalization Processing Date and Time Processing Date and Time  Locale  Date  TimeZone  Calendar and GregorianCalendar  DateFormat.
Dynamic Web Pages & JavaScript. Dynamic Web Pages Dynamic = Change Dynamic Web Pages are web pages that change. More than just moving graphics around.
CHAPTER 3 GC Java Fundamentals. 2 BASICS OF JAVA ENVIRONMENT  The environment  The language  Java applications programming Interface API  Various.
10 – 12 APRIL 2005 Riyadh, Saudi Arabia. Building multi-lingual ASP.Net application that handle western languages and Arabic with a single code base.
DEV382 Building International Applications with the.NET Framework Christian Nagel Microsoft Regional Director Global Knowledge.
1 Susan Su, manager Asian Globalization Center, Sun Microsystems August Localization imperatives, challenges, and solutions.
FLEXnet InstallShield Collaboration Bob Corrigan InstallShield Product Manager.
Oracle9i Database Administrator: Implementation and Administration 1 Chapter 14 Globalization Support in the Database.
Copenhagen, 6 June 2006 EC CHM Multilinguality Anton Cupcea Finsiel Romania.
Chapter 14 Internationalization F Processing Date and Time –Locale –Date –TimeZone –Calendar and GregorianCalendar –DateFormat and SimpleDateFormat F Formatting.
C OMPUTING E SSENTIALS Timothy J. O’Leary Linda I. O’Leary Presentations by: Fred Bounds.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
Week 7 Lecture 2 Globalization Support in the Database.
Sorting it all out: An introduction to collation Cathy Wissink Michael Kaplan Globalization Infrastructure and Font Technology Windows International Microsoft.
Fall 2002CS 150: Intro. to Computing1 Streams and File I/O (That is, Input/Output) OR How you read data from files and write data to files.
1 Chapter 20 Internationalization. 2 Objectives F To describe Java's internationalization features (§ 20.1). F To construct a locale with language, country,
A. Aimar - EP/SFT LCG - Software Process & Infrastructure1 SPI Software Process & Infrastructure for LCG Project Overview LCG Application Area Internal.
© 2001, Penn State University Encoding on the Internet Elizabeth J. Pyatt CETS.
Chapter – 8 Software Tools.
Interface Standards International User Interfaces Chapters 8 & 9.
introductionwhyexamples What is a Web site? A web site is: a presentation tool; a way to communicate; a learning tool; a teaching tool; a marketing important.
ProcessFrame QMS Is a Quality Management System that Supports ISO 9001:2015 Standard and Runs on the Microsoft Azure Cloud Platform MICROSOFT AZURE ISV.
IST 210: PHP Basics IST 210: Organization of Data IST2101.
A S P. Outline  The introduction of ASP  Why we choose ASP  How ASP works  Basic syntax rule of ASP  ASP’S object model  Limitations of ASP  Summary.
Introduction to Algorithm. What is Algorithm? an algorithm is any well-defined computational procedure that takes some value, or set of values, as input.
Chapter 14 Internationalization
Internationalization
Java Look-and-Feel Design Guidelines
Course: Module: Lesson # & Name Instructional Material 1 of 32 Lesson Delivery Mode: Lesson Duration: Document Name: 1. Professional Diploma in ERP Systems.
Chapter 35 Internationalization
Winning Global Market Opportunities
Dev10. Eclipse Plug-ins in Notes 101, and then some Teresa Deane, BCC
Plug-In Architecture Pattern
Presentation transcript:

Going Global: Internationalization with Java Sue Davis Rochester Java Users Group November 15, 2000

November Agenda Introduction Definition of Internationalization Why internationalize? Highlight some aspects of internationalization Java internationalization classes Simple Demonstration Closing thoughts Q&A

November Introduction  My background in internationalization  Scope of internationalization  Software  Documentation/On-line Help  Testing  Training  Legal considerations  Marketing

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

November Terms and Abbreviations zLocalization zGlobalization zLocale zDiacritic zFolding zDecomposed character zPre-composed character zMBCS zDBCS zUnicode zUTF-8 zI18N zG11N zL10N zNLS zIME zGlyph

November 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

November 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.

November 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...

November 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

November 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% % * From MSDN, VB Concepts, Designing an International Aware User Interface

November Use culturally/linguistically neutral graphics  Don’t use a Christmas Tree and Champagne glass as a “holiday” icon  Keep text off graphics  Don’t use homonyms as a basis for icons

November Use culturally/linguistically neutral graphics Continued... Are any of these neutral?

November Let’s talk about Java!  What are some of the important Java classes for internationalization?  Locale  ResourceBundle, specifically ListResourceBundle  NumberFormat  DateFormat  Collator  CollationKey  RuleBasedCollator  BreakIterator

November 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

November Externalize text, icons, sound Resources reside in a resource file that is separate from the application. Java - Resource Bundle Don’t 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)

November 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

November 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"}, }; }

November Begin Localizing your ResourceBundles Create a language specific ResourceBundle class DemoResource_fr extends PropertyResouceBundle { 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"}, }; }

November 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"}, }; }

November Cascading Resource Bundles Why you don’t 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

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

November Formatting Text Messages Sometimes there’s 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

November 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) ) );

November 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

November 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: FR: 19/08/99

November Automatic formatting of numbers and currency Numeric examples:Currency US:1,234,567.89$1, UK:1,234,567.89£1, DE: , ,45 DM FR: , ,45 F Java and later support the Euro

November 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

November Dealing with characters and strings Assuming Unicode  Character traits  Comparisons and conversions  Sorting  Text boundaries

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

November Comparisons and conversions  Comparing pre-composed characters with decomposed characters  String conversions (e.g. toUpperCase()) not always “round trip”

November 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)

November 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

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

November 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

November 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…)

November Recommended Reading  JavaWorld, Internationalize Your Software, Geoff Friesen part 1, part 2, and part 3part 1part 2part 3  Internationalization: Localization with Resource bundles, John O'Conner Internationalization: Localization with Resource bundles, John O'Conner  Global Design Homepage, Richard Ishida Global Design Homepage, Richard Ishida  Scripting Clinic: Using Script to Internationalize Web Site Functions Scripting Clinic: Using Script to Internationalize Web Site Functions  Localization and the XML/DHTML Menus Localization and the XML/DHTML Menus  Developing Global Applications in Java, Richard Gillam 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

November Questions???