I18n = g11n + L10n Adam Long & Sam Soubra QSR International March 2009.

Slides:



Advertisements
Similar presentations
The creation of "Yaolan.com" A Site for Pre-natal and Parenting Education in Chinese by James Caldwell DAE Interactive Marketing a Web Connection Company.
Advertisements

Advanced.Net Framework 2.0 David Ringsell MCPD MCSD MCT MCAD.
The following 10 questions test your knowledge of desired configuration management in Configuration Manager Configuration Manager Desired Configuration.
Building International Applications with Visual Studio.NET Achim Ruopp International Program Manager Microsoft Corporation.
 Yaniv Feinberg Senior SDE Microsoft Corporation  Erik Fortune Principal Dev Lead Microsoft Corporation PC52.
Building Localized Applications with Microsoft.NET Framework and Visual Studio.NET Achim Ruopp International Program Manager Microsoft Corp.
Why.NET? Various languages struggling to interoperate with each other Developers undergoing huge learning curves to shift from one language to another.
A Quick Review of Unit 2 – Using Windows 7 Computing Fundamentals © CCI Learning Solutions.
Internationalization of Java Platform Presenter: Ataru Nakazawa Advisor: Xiaoping Jia Date: January 23, 2004.
Guide to Linux Installation and Administration, 2e1 Chapter 6 Using the Shell and Text Files.
BUSINESS DRIVEN TECHNOLOGY
Windows XP Language Interface Packs (LIPs) - Localized OSs for the Masses Russ Rolfe Program Manager.
26 April 2001 Unicode and Windows XP, IUC 18 (Hong Kong) Unicode and Windows XP Cathy Wissink Program Manager, Globalization Windows Division Microsoft.
Creating Multi-lingual Applications and Websites with Microsoft Visual Studio 2005 Achim Ruopp International Program Manager Microsoft Corporation.
Computer Science and Software Engineering University of Wisconsin - Platteville Note 9. Internationalization Yan Shi SE 3730 / CS 5730 Lecture Notes Part.
Developing International Applications for Mobile Devices with.NET Achim Ruopp International Program Manager Microsoft Corporation.
11 SUPPORTING INTERNET EXPLORER IN WINDOWS XP Chapter 11.
Software Configuration Management (SCM)
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.
Localizing OpenClinica Hiroaki Honshuku: SQA 1. © What is Character Encoding?  Morse Code (1840) → Latin Alphabet  ASCII (1963)  The American Standard.
AITI Tutorial: Internationalization Coding for the world MIT AITI July NNth, 2005.
Michele Carlson & Patrick McLoughlin October 2010 Localization Strategy & Best Practices Why Design Really Matters.
IBM Maximo Asset Management © 2007 IBM Corporation Tivoli Technical Exchange Calls Aug 31, Maximo - Multi-Language Capabilities Ritsuko Beuchert.
Internationalization (I18N) Sufficiency Testing Presented to Seattle Area Software Quality Assurance Group June 19, 2003.
Sakai: Localization & Internationalization Beth Kirschner University of Michigan
SOFTWARE INTERNATIONALIZATION Dallas Ramsden. Internationalization GOAL Software that can run ANYWHERE in the world without having the source code changed.
Introduction to Shell Script Programming
Internationalization and the Java Stack Part 1 Matt Wheeler.
CIS 375—Web App Dev II Microsoft’s.NET. 2 Introduction to.NET Steve Ballmer (January 2000): Steve Ballmer "Delivering an Internet-based platform of Next.
WEB326 ASP.NET 2.0: Going Global Gets Easier! New Localization Features in ASP.NET 2.0 Michele Leroux Bustamante Architect, IDesign Microsoft Regional.
Internationalization and the Java Stack Matt Wheeler.
Chapter 6 Generating Form Letters, Mailing Labels, and a Directory
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.
Tutorial 121 Creating a New Web Forms Page You will find that creating Web Forms is similar to creating traditional Windows applications in Visual Basic.
Bing Hong OSIsoft Internationalization &
Enter into new markets more easily Lower cost and time for development and translation Increase customer satisfaction and adoption Avoid costly mistakes.
Developing International Software When a localized software fails.
Internationalization in the Java Stack Matt Wheeler.
Character Encoding, F onts. Overview Why do character encoding and fonts matter to linguists? How can you identify problems? Why do these problems arise?
Globalization Support in Microsoft.NET Framework François Liger Program Manager Microsoft Corporation.
Introduction to Microsoft Management Console (MMC) MMC is a common console framework for management applications. MMC provides a common environment for.
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.
Diagnostic Pathfinder for Instructors. Diagnostic Pathfinder Local File vs. Database Normal operations Expert operations Admin operations.
McGraw-Hill/Irwin © 2008 The McGraw-Hill Companies, All Rights Reserved Chapter 7 Storing Organizational Information - Databases.
Oracle9i Database Administrator: Implementation and Administration 1 Chapter 14 Globalization Support in the Database.
Security Attacks CS 795. Buffer Overflow Problem Buffer overflows can be triggered by inputs that are designed to execute code, or alter the way the program.
Copenhagen, 6 June 2006 EC CHM Multilinguality Anton Cupcea Finsiel Romania.
Localization Support in Microsoft.NET Framework François Liger Program Manager Microsoft Corporation.
Internationalization in ASP.NET 2.0. SQL Server 2005 – Data Columns Use Unicode datatypes in: Table columns, CONVERT() and CAST() operations Use Unicode.
Week 7 Lecture 2 Globalization Support in the Database.
DEV392.NET Framework: Building Applications With Globalization In Mind Michele Leroux Bustamante Principal Software Architect IDesign Inc.
Understanding Character Encodings Basics of Character Encodings that all Programmers should Know. Pritam Barhate, Cofounder and CTO Mobisoft Infotech.
Chapter 10 So Many Paths … So Little Time (Multiple-Alternative Selection Structures) Clearly Visual Basic: Programming with Visual Basic nd Edition.
Does your website speak Chinese? Thom Robbins
7/23/2016 CSC 325 Advanced Programming Techniques Localization Slide #1 1 Localization Mikhail Brikman.
Random Logic l Forum.NET l Localization & Globalization Forum.NET ● May 29, 2006.
What type of project? I tried three type of project and the only one I managed to obtain the results I wanted was this one. It is more flexible and much.
Metropolia 2013 C# programming and .NET framework
Globalization support in ASP.NET
Internationalization
XML QUESTIONS AND ANSWERS
The Re3gistry software and the INSPIRE Registry
Trust and Culture on the Web
The ultimate in data organization
Winning Global Market Opportunities
ASCII and Unicode.
Presentation transcript:

i18n = g11n + L10n Adam Long & Sam Soubra QSR International March 2009

i18n = g11n + L10n What does the abbreviation stand for – Internationalization = Globalization + Localization Or – According to Microsoft

About QSR International Established in 1995 Independent software vendor based in Melbourne, Australia 90% of revenue from exports 400,000 customers in 90 countries Governor of Victoria Export Award for ICT, Winner 2006 & 2008 Microsoft Gold Partner

About QSR International Products 2006 g11n 2007 Japanese L10n 2008 Chinese, Spanish L10n 2009 French, German L10n

Why develop software for the global marketplace? Australia represents 1% of the global software market Increase revenue potential Servicing a larger market is more cost- effective and efficient Leverage development costs Consumers and businesses operate across international borders Increase customer satisfaction Gain competitive advantage and be the leader in your industry Leadership

World Population (Source: Wikipedia) 0.3%

World Language Speakers (millions) (Source: KryssTal 2006)

World Nominal GDP (billions USD) (Source: World Bank 2007)

Globalization (g11n) g11n is the process of developing software whose features and code design are not solely based on a single language or locale. It involves: Alphabets/scriptsDate/time formats, calendarsFormatting of numbersWriting directionTime zonesCurrencyPaper sizes

Localization (L10n) L10n is the process of adapting software for a specific region or language. It involves: Language translationLocal contentCultural valuesAesthetics

L10n of NVivo in Spanish

L10n of NVivo in Chinese

g11n Code Recommendations CurrentUICulture Automatically set by.NET based on user’s Windows settings Thread.CurrentUICulture can get/set System.Globalization.CultureInfo CultureInfo defines a culture, ISO definition, e.g. “en-US”, “en-GB”, “ja-JP” Unicode System.String has useful methods such as ToUpper(), ToLower() System.Char has useful methods such as IsLetter(), IsPunctuation() Beware that Text files may require handling of different encodings (e.g. Unicode, UTF8, Western European Windows) using System.Text.EncodingInfo String Comparisons Always pass Culture.CompareInfo as a parameter when using String.Compare(), String.CompareTo(), String.ToUpper() and String.ToLower() E.g. Turkish has four i’s => İ & i, plus I & ı.

g11n Code Recommendations Date and Time System.DateTime Class provides support for universal and local date times Store date and time data in universal time Display local date and time to user Formatting Numeric and DateTime values should be formatted according to CurrentUICulture e.g. 31/12/2009 (en-GB) vs. 12/31/2009 (en-US) e.g. 123, (en-AU) vs ,78 (de-DE) Paper Size Use Default Printer settings, i.e. do not rely on the user having A4 paper File System Use SHGetKnownFolderPath() rather than hard-coded paths for folders such as MyDocuments Use Security ID rather than System Resource Name, e.g. “NT AUTHORITY\Network Service” may be named differently on different language versions of Windows

g11n Database Recommendations Collation Use Binary collation (_BIN or _BIN2) suffix when installing database to ensure comparisons (WHERE, GROUP BY, SORT BY) are evaluated correctly Data Types Use Unicode data types NCHAR, NVARCHAR, NTEXT rather than CHAR, VARCHAR, TEXT

.Net Framework Namespace System.Globalization Provides National Language Support Date and time formatting String comparison and sorting Numeric formatting Calendars etc System.Text Unicode used internally Conversion from code pages through Encoding classes System.Resources RESX files containing culture specific resources Localized satellite assemblies

CultureInfo Class The CultureInfo class provides all the basic functionality for changing the encoding format, which in turn controls structures such as the language, writing systems and calendar used by a particular culture. In particular, the CultureInfo class maintains the values for CurrentCulture and CurrentUICulture. CurrentCulture indicates the encoding culture used for locale- dependent formatting such as with dates. CurrentUICulture indicates the encoding culture used for resource lookups

CultureInfo Class Every locale is identified by a culture, using the format: Language code: A two-letter lowercase for a language. Eg. “en”, “ar”, “zh” Country/Region code: A two-letter uppercase for a country or a region. Eg. “AU”, “LB”, “CN” Cultures are of two types: Neutral culture: A culture that is linked only to a language and not to a country. Eg. “ru” is a neutral code. Specific culture: A culture that is linked to both a country and a language. Eg. “ru-RU” is a specific code. - “en-AU”, “en-US”, “es-MX”, “zh-CN” - “en-AU”, “en-US”, “es-MX”, “zh-CN”

Comparing and Sorting Data Different cultures use different alphabetical orders to sort strings and different cultures also compare strings differently. The culture aware.NET Framework will handle most situations automatically via the following features: The String.Compare method compares strings The CultureInfo.CompareInfo object can search for substrings The Array.Sort method sorts the members of an array by the alphabetical order rules The SortKey.Compare method also compares strings All according to the rules of the CultureInfo referenced by the CurrentCulture property.

g11n Code Demo

L10n Code Recommendations Application Localize all text labels that are displayed to the user Allow the user to change the display font Forms & Controls Set the “localizable” property to True Allow 40% more space for labels than in English Messages & Strings Never hard-code, store as a resource Avoid string concatenation, i.e. use parameterized resource strings Icons & Graphics Avoid text and cultural connotations to minimize translation costs

Resource Files The most straightforward method of dealing with localizable resources is to put everything in some type of resource repository like Windows resource files and.NET assemblies Resource repositories tend to be easy to edit, and they eliminate the need for recompiling source code

Resource Generation.resx file XML based file containing descriptions of resources.resources file ResGen tool compiles.resx files into binary files containing resources.resources.dll – satellite assembly The.resources file is embedded into an assembly using either the assembly linker tool or language compiler

Satellite Assemblies Culture-Specific Subdirectories LocalizedApp.Resources.dll LocalizedApp.Resources.dll LocalizedApp.Resources.dll LocalizedApp.exeLocalizedApp.exe ResourcesResources \en-US \es \es-MX Main Assembly Application Directory Code Types Form1Form2 Form1 Form1 Form1 Control1 Form2 Form2 Form2 Control1 Control1 Control1

Localizable Property Localizable = False (default) this.button1.TabIndex = 0; this.button1.Text = "button1"; Localizable = True this.button1.TabIndex = ((int)(resources.GetObject("button1.TabIndex"))); this.button1.Text = resources.GetString("button1.Text");

Locating Resources First, attempt to find the resource in current thread’s UI culture en-AU Then try the neutral parent culture en Finally use the default resource from main assembly (otherwise throw exception) en-AUen-AU en-USen-US enen (default)(default)

L10n Code Demo

L10n Quality Assurance Recommendations Viewing context/usage is important when translating and reviewing Use a specialist software translatorUse a native speaking reviewer with domain expertise Test on different language operating systems

L10n General Recommendations Planning Plan for additional Effort, Lead-time and Coordination Review 3 rd Party Components Ensure they support g11n and L10n Consider what needs to be translated Application User assistance materials Marketing materials Support materials End User License Agreement (legal issues in translation)

Why good translations are important Pepsi used "Come alive with the Pepsi Generation" campaign successfully in the Western World In Taiwan, however, it came out as "Pepsi will bring your ancestors back from the dead"

Why good translations are important In the late '70s, the American computer company Wang was puzzled why its British branch refused to use its latest motto "Wang Cares". To British ears the motto sounded too close to "wankers".

Resources This Presentation – Globalization Step-by-Step – Internationalize Your ASP.NET Applications – MultiLingual Guides –