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