Internationalization Bob Alcorn, Blackboard Inc..

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

Internationalization of HTML client-server applications Andrea Vine iPlanet Internationalization Architect.
Building International Applications with Visual Studio.NET Achim Ruopp International Program Manager Microsoft Corporation.
TCP/IP Protocol Suite 1 Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. Chapter 22 World Wide Web and HTTP.
The Web Warrior Guide to Web Design Technologies
Extensible Markup Language XML MIS 520 – Database Theory Fall 2001 (Day) Lecture 14.
Internationalization of Java Platform Presenter: Ataru Nakazawa Advisor: Xiaoping Jia Date: January 23, 2004.
Data Representation Kieran Mathieson. Outline Digital constraints Data types Integer Real Character Boolean Memory address.
HTTP Overview Vijayan Sugumaran School of Business Administration Oakland University.
Review1 What is multilingual computing? Bilingual, trilingual, vs. Multilingual What are the fundamental issues in multi-lingual computing? –Representation.
* The basic components of a web site are: * Content – information displayed or accepted from users * Static – content that doesn’t change for different.
26 April 2001 Unicode and Windows XP, IUC 18 (Hong Kong) Unicode and Windows XP Cathy Wissink Program Manager, Globalization Windows Division Microsoft.
Unicode, character sets, and a a little history. Historical Perspective First came EBCIDIC (6 Bits?) Then in the early 1960s came ASCII – Most computers.
QAD .Net UI: New Enhancements
Overview of JSP Technology. The need of JSP With servlets, it is easy to – Read form data – Read HTTP request headers – Set HTTP status codes and response.
© Blackboard, Inc. All rights reserved. Developing Blackboard Building Blocks: Getting Started John Knight Senior Engineer Blackboard Inc. July 18 th.
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.
M. Taimoor Khan * Java Server Pages (JSP) is a server-side programming technology that enables the creation of dynamic,
Introduction to Java Appendix A. Appendix A: Introduction to Java2 Chapter Objectives To understand the essentials of object-oriented programming in Java.
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 4 Web technologies: HTTP, CGI, PHP,Java applets)
.NET: Blackboard Collaborations with Microsoft Presented By Jan Poston Day Director, Standards and Interoperability Ramsey Chambers Manager, Business Development.
Stream Handling Streams - means flow of data to and from program variables. - We declare the variables in our C++ for holding data temporarily in the memory.
Web Architecture Dr. Frank McCown Intro to Web Science Harding University This work is licensed under a Creative Commons Attribution-NonCommercial- ShareAlike.
AIT 616 Fall 2002 PHP. AIT 616 Fall 2002 PHP  Special scripting language used to dynamically generate web documents  Open source – Free!!!  Performs.
JavaScript, Fifth Edition Chapter 1 Introduction to JavaScript.
ASCII and Unicode.
Encoding and fonts Edward Garrett Software Developer, ELAR.
L10n and I18n in the Real World Dan Moore Moore Consulting June 9, 2005.
CNIT 133 Interactive Web Pags – JavaScript and AJAX JavaScript Environment.
Keys to Successful Beta Testing Presented by Ron Dinwiddie, Product Director, Blackboard Commerce Suite™ Jessica Finnefrock, Product Director, Blackboard.
Harnessing the Power of the New Language Capabilities in the Blackboard Academic Suite™ Christopher Etesse Vice President Blackboard Consulting - International.
Copyright © 2012 Pearson Education, Inc. Publishing as Pearson Addison-Wesley C H A P T E R 2 Input, Processing, and Output.
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.
Chapter 34 Java Technology for Active Web Documents methods used to provide continuous Web updates to browser – Server push – Active documents.
JAVA SERVER PAGES CREATING DYNAMIC WEB PAGES USING JAVA James Faeldon CS 119 Enterprise Systems Programming.
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.
Chapter 9 1 Chapter 9 – Part 1 l Overview of Streams and File I/O l Text File I/O l Binary File I/O l File Objects and File Names Streams and File I/O.
WEB BASED DATA TRANSFORMATION USING XML, JAVA Group members: Darius Balarashti & Matt Smith.
 JAVA Compilation and Interpretation  JAVA Platform Independence  Building First JAVA Program  Escapes Sequences  Display text with printf  Data.
Complex Scripts* in Internet Explorer 5.0 *and Multilingual text F. Avery Bishop Senior Program Manager Microsoft Corporation.
Oracle9i Database Administrator: Implementation and Administration 1 Chapter 14 Globalization Support in the Database.
Data Files on Computers Text Files (ASCII) Files that can be created by typing on the keyboard while using a text editor such as notepad or TextEdit.
Presented by Jessica Finnefrock, Product Director, Blackboard Academic Suite™ April 12, 2005.
Class Libraries Chapter 1 1 Source Intro to Java Programming Y. Daniel Liang.
Week 7 Lecture 2 Globalization Support in the Database.
Copyright Curt Hill Variables What are they? Why do we need them?
Internet & World Wide Web How to Program, 5/e © by Pearson Education, Inc. All Rights Reserved.
Unicode Normalize Engine Submitted by: Jose Yallouz Shlomi Ben-Shabat Supervisor: Maxim Gurevich.
Internet & World Wide Web How to Program, 5/e © by Pearson Education, Inc. All Rights Reserved.
Appendix E: Overview of HTTP ©SoftMoore ConsultingSlide 1.
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.
A Simple Java Program //This program prints Welcome to Java! public class Welcome { public static void main(String[] args) { public static void main(String[]
 2008 Pearson Education, Inc. All rights reserved JavaScript: Introduction to Scripting.
Programming Fundamentals. Overview of Previous Lecture Phases of C++ Environment Program statement Vs Preprocessor directive Whitespaces Comments.
Programming Fundamentals. Summary of previous lectures Programming Language Phases of C++ Environment Variables and Data Types.
1 Chapter 20 Internationalization. 2 Objectives F To describe Java's internationalization features (§ 20.1). F To construct a locale with language, country,
Troubleshooting Basics for the Blackboard Transaction System™ -Windows Edition Presented By Allan Sonkin Scott Ogden April 14, 2005.
Blackboard Building Blocks™: Data Integration and Administration Raymond Peterson, Blackboard, Inc.
Java – in context Main Features From Sun Microsystems ‘White Paper’
Understanding Character Encodings Basics of Character Encodings that all Programmers should Know. Pritam Barhate, Cofounder and CTO Mobisoft Infotech.
Overview of Servlets and JSP
MISSION CRITICAL COMPUTING SQL Server Special Considerations.
The idea of adding markup instructions to documents is not new. Before computers, authors would make annotations by hand in their written or typed documents.
©2003 Paula Matuszek GOOGLE API l Search requests: submit a query string and a set of parameters to the Google Web APIs service and receive in return a.
Announcements Assignment 2 Out Today Quiz today - so I need to shut up at 4:25 1.
Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved Chapter 9 Web Services: JAX-RPC,
1 Release 7.0 Features and Enhancements Multi-byte Language Support Language Pack Editor Blackboard Backpack (Offline Synchronization Application) Embedded.
Chapter 27 WWW and HTTP.
Presentation transcript:

Internationalization Bob Alcorn, Blackboard Inc.

And now a word from our lawyers… Any statements in this presentation about future expectations, plans and prospects for Blackboard and other statements containing the words "believes," "anticipates," "plans," "expects," "will," and similar expressions, constitute forward-looking statements within the meaning of The Private Securities Litigation Reform Act of Actual results may differ materially from those indicated by such forward-looking statements as a result of various important factors, including the factors discussed in the "Risk Factors" section of our most recent 10-K filed with the SEC. In addition, the forward-looking statements included in this press release represent the Company's views as of April 11, The Company anticipates that subsequent events and developments will cause the Company's views to change. However, while the Company may elect to update these forward-looking statements at some point in the future, the Company specifically disclaims any obligation to do so. These forward-looking statements should not be relied upon as representing the Company's views as of any date subsequent to April 11, Blackboard, in its sole discretion, may delay or cancel the release of any product or functionality described in this presentation.

Internationalization Overview Internationalization (i18n) vs. Localization (l10n) Character sets, Character Encoding –Unicode, ISO –Pitfalls Blackboard Learning System™ Application Pack 2 Features Looking Ahead

I18N vs L10N I18N is the process of building the infrastructure to support multiple locales –String extraction –Data formatting –Character set encoding L10N is the process of enabling a locale –Providing resource bundles –Dependent on depth of i18n

Concepts Character - the smallest components of written language that have semantic value Glyphs – the shapes that characters can have when they are rendered or displayed –Not a one-to-one correspondence. E.g., Different fonts, ligatures –Not what we care about vis-à-vis I18N…

Concepts Character Sets –Collection of characters used to express a given written language, expressed as a numeric value –Kinda sorta language specific Character Set Encoding –Binary encoding for numeric values in a character set –Sometimes used interchangeably with character set… E.g., MIME type “text/html;charset=iso ”… the “character set” is ISO For our intents, we can treat them as synonymous.

Concepts Universal Character Set (UCS) –Unambiguous numeric value for every character in every language (more or less) –UCS can be unambiguously encoded with… UTF-16 UCS-2 (subset of UTF-16) UTF-8 Requires multi-byte encoding

Concepts Unambiguous encoding enables “co- existence” of several different languages in a single data stream –Single byte encodings require a “marker” to know that any given value (e.g., 64) is to be interpreted as a different character –Example: you couldn’t directly encode Hebrew and Cyrillic (with ISO and ISO , respectively) in the same database field.

Concepts The “ISO 8859 Planes” –Set of single byte encodings (256 UCS characters per encoding) –ISO-8859-X, where X = –Super set of 7-bit US-ASCII (values are identical) Windows encoding is NOT ISO –CP1252. Similar except for a control character range

The Pipeline Browser Application Server Database Server Internally Unicode. Handles translation from browser to database Dependent on database storage type (char, nchar) and various settings May see arbitrary text streams from servers. Posts in same encoding.

The Browser

The Application Server Internally Unicode (Java uses UTF-16 internally Java I/O APIs take encoding into consideration –Specifically java.io.Reader and java.io.Writer –Map bytes from HTTP input stream to characters

The Database CHAR vs. NCHAR –Single vs. multi-byte –CHAR can still be “internationalized” with different collations

What’s Wrong Here? String value = “problème”; socketStream.write( value.getBytes() ); byte[] byteBuf = new byte[1024]; int count = socketStream.read( byteBuf ); String value = new String( byteBuf, 0, count ); Client: Server:

What’s Wrong Here? File path = storeFileFromRequest(); FileReader fr = new FileReader( path ); char[] buf = new char[1024]; StringBuffer str = new StringBuffer(); while( fr.read( buf ) != -1 ) { str.append( buf ); }

Encodings and Transformations Problème Text ISO x50x72x6Fx62x6CxE8x6Dx65 byte[] bytes = value.getBytes() UTF-8 x50x72x6Fx62x6CxC3x6Dx65xA8 byte[] bytes = value.getBytes( “UTF-8” ) Reading UTF-8 as ISO ProblÃme¨ new String( bytes )

Encodings and Transformations Problème x50x72x6Fx62x6CxE8x6Dx65 Text UTF-16 (LE) Reading UTF-16 (LE) as ISO x00 Problème□□□□□□□□

Blackboard Academic Suite ™ Version 6, Application Pack 2 Internationalized! –Text extracted into locale-specific resource bundles –Application code uses locale settings for formatting (numbers, dates, names) –ISO only In theory, any 1-byte encoding could be used, but it is not being tested

Blackboard Academic Suite ™ Version 6, Application Pack 3 Internationalized! –Support multiple locales simultaneously –Per-course, Per user settings Blackboard Building Blocks™ view doesn’t change –Locale negotiation is still transparent

Blackboard Academic Suite ™ Release 7 Final Stage in internationalization –Full multi-byte support from browser to database –Multi-byte file name handling, independent of server file system –Localizable Blackboard Building Blocks manifests –“Language Pack Editor”

Application Pack 2 – Blackboard Building Blocks View What’s the current locale? Display this datum using current locale settings… Parse this datum using the current locale settings…

Making it Work Automatically handled through tag library HTTP Header: Content-type: text/html;charset=ISO HTML:

Making it Work If you’re not using the tag, you can still set the appropriate values String encoding = BbServiceManager.getConfigurationService().getBbProperty( “bbconfig.webserver.charset” ); response.setContentType( “text/html;charset=” + encoding );

I18N API LocaleManager –Fail-safe service (no service exceptions; falls back to en_US locale) –Hides locale negotiation –AP2 is per-VI; ML feature set has per course, or per user. LocaleManager localeManager = BbServiceManager.getLocaleManager();

I18N API BbLocale –Wraps JDK locale object –Auto-negotiated for current context Important for dynamic, multi-locale capabilities –Wraps utility functions BbLocale locale = localeManager.getLocale(); locale.getLocale();

Application <% Locale locale = BbServiceManager.getLocaleManager().getLocale().getLocaleObject(); ResourceBundle bundle = ResourceBundle.getBundle( "resources", locale ); String pageTitle = bundle.getString( "index.page.title" ); String formatDemoTitle = bundle.getString( "format.demo.title" ); String formatDemoDesc = bundle.getString( "format.demo.desc" ); String inputDemoTitle = bundle.getString( "input.demo.title" ); String inputDemoDesc = bundle.getString( "input.demo.desc" ); %> "> " href=" "> " href=" ">

Application

What’s Wrong Here? String dateString = dateValue.toString(); out.println( dateString ); Date.toString() does output a locale-appropriate string, or give any options for formatting. toString(): Mon Jul 19 21:02:13 GMT-05: In French: 19 juil h 02 GMT-05:00 In English: Jul 19, :02:13 PM GMT-05:00

Displaying Data value = locale.formatDate( dateValue, BbLocale.Name.SHORT ); value = locale.formatNumber( floatValue ); value = locale.formatName( user, BbLocale.Name.SHORT );

Displaying Data Corresponds to Java libraries (see java.text.*), but with formats predefined to Blackboard UI conventions. –DateFormat.format() –DecimalFormat.format() –PercentageFormat.format()

Format Enumerations BbLocale.Name –LONG, MEDIUM, SHORT, GREETING BbLocale.Date –LONG, MEDIUM, SHORT BbLocale.Time –LONG, MEDIUM, SHORT

What’s Wrong Here? String numberString = “100,000.00”; float floatVal = Float.parseFloat( numberString ); Number.parseType() methods do not perform locale- sensitive transformations. European locales, for example, use comma separators, instead of decimal separators. E.g., ,00

Reading Data BbLocale locale = BbServiceManager.getLocaleManager().getLocale(); float floatValue = locale.parseNumberAsFloat( input ); double doubleValue = locale.parseNumber( input );

Limitations Pre-R7, B2 Manifest is single locale –Block installs as en_US, and always displays as en_US –E.g., if Locale is es_ES, links are not rendered properly Pre-R7, Multi-byte locales not supported –Incompatible, single-byte locales not verified (e.g., ISO will not co-exist with ISO )

Looking Ahead – Blackboard Academic Suite™ Release 7 Complete internationalization –Additional extraction and localization –Platform changes to support additional, non-Latin languages Multi-byte I/O support –Database (NVARCHAR, etc.) –UTF-8/16 encoding browser to application, application to database UCS-2 on Windows

Looking Ahead – Blackboard Academic Suite ™ Release 7 Blackboard Building Blocks Resource Bundles –Register bundles to display appropriate end-user text Multiple Locales in Blackboard Building Blocks –Installation, default, and fall-back rules

Thank You!