Introduction

Quick overview of i18n issues

Software origins

Diversity

Diversity of presentation

Internationalisation

Localisation

Globalisation

Sun Microsystem's Internationalization Assessment Matrix

Shoe sizes

Locale

Intro

Countries

Java ISO country listing

Language codes

Java ISO language listing

Variants

Locale representation - ASCII

Locale listing

Locale display

Locales in ANSI C

Character functions

C Locale

GNU C

Unix locale

Java

Locale names

Issues with locales

Summary

Java Resource Bundles

Locale data

ResourceBundle

ResourceBundle criticisms

PropertyResourceBundle

Getting resource bundles

Resources of objects

Use

Common Locale Data Repository

Java locale data

CLDR

Viewing CLDR file

Fonts

Character

Character repertoire/character set

Character code

Character encoding

Glyphs

ASCII

ASCII national variants

Extended ASCII

ISO 6937

ISO 8859

Windows 1252

ISO 2022

Issues with ISO 2022

ISO 2022 and Asian languages

Two-byte coded character sets

Chinese character sets

Japanese character sets

Unicode

Java and the console

Java character encodings

Reading and writing text files

Fonts

Java fonts

Java logical fonts

TrueType fonts

Java physical fonts

Font families

Java font families

Java fonts

Adding fonts to Java

Checking font coverage

Displaying text files using Java

Unicode

Intro

Character names

Code charts

Character type info

Combining characters

Canonical forms

Character presentations

Text direction

Extended Characters

Character properties in Java

Uniqueness of characters

UTF-16 encoding

UTF-8 encoding

Other encodings

Checking encoding

More UI

Text directionality

Component orientation

Input methods

Input methods

Background

Event queue

AWT objects and events

Swing objects and events

AWT versus Swing

Listeners

Changing key values

Discarding characters

Attributed text

Terms

Naive Unicode editor

Problems with naive editor

Java Input Method Framework

Using the IMF

Using the IMF

Event handling with input methods

Input styles

Pig Latin

Locale for Pig Latin

Pig Latin input method

Input method descriptor

Pig Latin input method descriptor

Finding the input method

Input descriptor configuration file

Pig Latin Input Method

Presenting alternative choices

Presenting choices

Numbers and money

Numbers

NumberFormat

Dates and time

Intro

DateFormat class

Times

Calendar

Parsing dates

Defining your own format

Calendars

Time zones

Normalization, sorting and searching

Normalization

Java Normalizer class

String equality

Collator equality

Collator normalisation

Strength

String comparison

String comparison in German

String comparison in French

Ordering in Chinese

Collator comparison

Making your own rules

Sorting

Text boundaries

BreakIterator class

Word break in Chinese

Regular expressions

IETF

Internet protocols

Distributed versus local applications

Architectural Principles of the Internet

Charset Registration Procedures

IETF terminology

Domain Name System

Internationalizing Domain Names in Applications (IDNA, RFC3490)

The full stop '.'

The hyphen

ToASCII algorithm

ToUnicode algorithm

ACE prefix

Punycode (RFC 3492)

StringPrep (RFC3454)

StringPrep algorithm

NamePrep (RFC3491)

So: What's wrong with IDNA?

User issues

HTTP

HTTP

MIME

HTTP charset

URI's

HTTP charset negotiation

HTTP encoding negotiation

HTTP language negotiation

Returned document

Server-driven negotiation

Agent-driven Negotiation

Transparent Negotiation

Apache type-map negotiation

Apache MultiViews negotiation

Common user negotiation

URI's and IRI's

Viewing HTTP server responses

Viewing HTTP browser requests

HTML

HTML

HTML charset

Character references

Text normalization

Language tags

Browser language specification

Right-to-left

XML

CSS2 stylesheets

Quotes

Numbered Lists

JavaScript

Java servlets

Servlet template

Servlet engines

HelloWorld servlet (plain text)

Servlet return

HelloWorld servlet (HTML)

Servlet return

Deploying servlets

HTTP headers

Servlet return

Getting user locales

Getting properties

Form parameters

Cookies

Session tracking

Setting the charset

Form parameter encoding

Java Server Page

Introduction

MVC model

Basic JSP page

Deploying JSP pages

Request parameter

Application objects

Forwarding control

Including another JSP page

Declarations

Mixing HTML and Java

Custom tags

Java Standard Tag Library

Standard tags

Using JSTL tags

Expression language

JSTL Implicit objects

JSTL and i18n

Expression variables

Summary

References

Choices in i18n web pages

Choices

Server negotiation using Apache type-map

Server negotiation using Apache multiviews

Apache server negotiation callng JSP/servlets?

Server-side negotiation using servlets

User negotiation

Passing the locale in a session

XML

Resources

Character representations

Character encoding

Language identification

XML Descriptions

XML DTDs

XML Schema

XML Schema Standard Data Types

Java mapping of data types

XML datatypes and i18n

Defining your own datatypes

Units in XML

Units schema

XHTML

XHTML

XHTML - HTML or XML?

Encoding

Charset

Web services

Web services

Web Service Structure

Web Service Components

Remote Procedure Call

Web Services Remote Procedure Call

Components of RPC

Web Services and Standardisation

Simple Service

WSDL

Components of WSDL Specification

WSDL Specification Revisited

Role of WSDL in Web Services

Apache Axis WSDL Tools

There and Back Again

SOAP

What SOAP is

SOAP Messages

SOAP Request

SOAP Response

SOAP Example Request

SOAP Example Response

SOAP Message Structure

SOAP Header Blocks

SOAP Body for RPC Request

SOAP Body for RPC Response

SOAP HTTP Binding

SOAP HTTP Request

SOAP HTTP Response

Calling SOAP Methods

Apache Axis Server

Apache Axis Client - do it yourself

Simple converter service

Simple converter client

Apache Axis client using WSDL

i18n

Lang information in header block

i18n Measures and Axis

References

J2ME and i18n

Resources

Intro

Java VMs

Profiles

MIDP

J2ME i18n support

CLDC support classes

Reading and writing

Times

Locale support

Build your own resource bundle

General principles

JSR 238, Mobile Internationalization API

Application resources

Resource Manager

Date and time formatting

String Comparison