.NET Internationalization for WPF/XAML


The .NET Internationalization workshop provides attendees with a broad understanding of internationalization processes, issues and pitfalls. Numerous practical examples, from real projects, will be presented.

The workshop shows how .NET deals with: character sets and Unicode (including surrogates, UTF encodings, normalization forms, IDNs and transcoding), locales and locale models for client-server applications, resources and resource maintenance, sorting & searching, date & time processing, formatting of numbers and currency, text and character processing functions, etc. The basic classes and interfaces of the six globalization namespaces in .NET are covered.

This is an in-depth review of .NET internationalization features which will help your developers avoid all known pitfalls! They will leave with a clear understanding of how to correctly and efficiently internationalize their .NET-based applications.

Target Audience

This course is intended for software developers, software architects, software technical project managers and team leaders. It is highly recommended that attendees have a working knowledge of .NET (and have taken the pre-requisite "All About Internationalization" workshop).


This workshop provides software professionals with a solid foundation on software internationalization and a practical, extensive coverage of .NET internationalization techniques.


The agenda described below is for a two-day session (or 3 days with supervised hands-on exercises).


This workshop presumes that attendees have already taken the "All About Internationalization" workshop.


The following items are covered in this course:

  1. .NET Internationalization
    • Globalization features of .NET versions
    • Globalization namespaces
      • System.Globalization
      • System.Resources
      • System.Resources.Tools
      • System.Text
      • System.Text.RegularExpressions
      • System.Collections
    • Getting Started
    • Books
  2. Encodings
    • .NET Encoding Model
    • Source Encodings
    • Runtime Encodings
    • The Encoding Class
    • Normalization
  3. Transcoding
    • .NET Transcoding Model
    • Multilingual Stream I/O
      • File I/O Transcoding
      • Files, Streams, Writers, Readers
    • Basic Transcoding
    • Incremental Transcoding
    • Transcoding Error Handling
    • Customizing Fallbacks
  4. Locales
    • CultureInfo & RegionInfo classes
    • The CultureInfo hierarchy: specific, neutral and invariant cultures
    • Querying CultureInfo
      • Getting Country/Region Info, getting Script/Encoding Info
      • Enumerating the Locales
    • Setting CultureInfo
      • Default cultures and user (control panel) overrides
    • CultureInfo & Collation Ids
      • LCID-based alternate sorts
      • BCP 47 collation identifiers
    • Locale Serialization
      • Why Serialize Locale Information?
      • LCID serialization
      • BCP 47 Serialization
    • Chinese Locales
      • Culture Names have Changed!
      • Chinese Locale Hierarchy - Part 1
      • Chinese Locale Hierarchy - Part 2
      • Chinese Locale Hierarchy - Part 3
    • CultureInfo & Threads
      • Older solutions when threads did not inherit calling culture
        • Thread Factory
        • Parameterized Delegate
        • Domain Defaults
      • The Twilight Zone
      • Tasks & Culture
      • Parallel.Invoke changes!
  5. Resources

Note: Generic resource topics only; see chapter 9 for WPF/XAML resources.

  • Dealing With Resources
  • Strongly-typed resources
  • The Hidden Resource Designer
  • Resource storage
  • How .NET Finds The Right Resources
  1. Formatting
    • Message Formatting
      • Interfaces: IFormatProvider, IFormattable
      • Classes/methods that support Composite Formatting
    • Numeric Formatting (numbers, currency, percentages)
      • Format Specifiers & Precision Specifiers
      • Formatting across cultures
    • Numeric Parsing
      • Parsing control with the NumberStyles enumeration
      • Parsing limitations and the IsDigit() gotcha
    • Date & Time Formatting
      • Format Specifiers & Custom Format Strings
      • Enforcing a 4-digit year
      • Enforcing a non-ambiguous month (i.e. readable month name)
    • Date & Time Parsing
      • Strict Parsing
      • Lenient Parsing
    • Calendars
      • Calendars & CultureInfo
      • How to change the calendar
      • Why a Gregorian calendar override may be safer
  2. Text Processing
    • Collation Basics
      • Collation Control
      • CompareOptions Enumeration
      • Choosing Your Comparison Type
    • String Class
      • Cultural & Non-Cultural String Methods
      • MS Best Practices for Strings
    • CompareInfo Class
      • Search Method Summary
      • Which Compare To Use?
    • Searching Text
      • Culture-Specific Comparisons
      • Searching Text with Options
      • Replacing Text
    • Sorting Text
      • Basic Sorting
      • Sorting with Sort Keys
      • Sort Performance
      • Useful Collation Options
      • Collation Options Summary
    • Hashing Text
      • Hashtable with CurrentCulture
      • Dictionary Sample
      • Best Practices for String Collections
    • Persisting Text
      • Persisting Formatted Text
      • Persisting Sorted Text
  3. Character Processing
    • Character Iteration
      • Text Boundaries
      • Text Iteration
      • Supporting Supplementary Characters
    • Character Casing
      • The "Turkish I"
      • A Lowercase Uppercase
    • Character Classification
      • Basic Character Classification
      • UnicodeCategory Enumeration
    • Regular Expressions
      • Character Classes
      • Regular Expression Options
      • Supplementary Not Supported
  4. WPF/XAML Specifics
    • Language Selection
    • Manual Resource Externalization
      • Creating a Root Resource File
      • Using the resource and setting the locale
    • Automated Resource Externalization
    • WPF Localization Tools
      • Setting the Base Culture
      • Getting UIDs & Extracting Resources
    • Form Layout
      • Automatic Layout Panels: Grid & DockPanel
      • Detailed example with both panels in French, English and Arabic
    • Hot Keys


Each attendee will receive a 500+ page booklet, with ample room for notes, complete with table of contents and glossary. The booklet is designed to serve as a practical easy-to-use reference “book” for regular use during an internationalization project.

Pierre Cadieux

About our Instructor – Pierre Cadieux

Pierre Cadieux is a veteran with over 35 years' experience in internationalization of software, Web sites and mobile devices. He has taught internationalization at the Université de Montréal. Pierre has been technology editor for the LISA newsletter, VP Technology at ALIS and director of technology at Bowne Global Solutions.

At ALIS, Pierre pioneered the transparent handling of Arabic and Hebrew languages and created the core bi-directional technology licensed by Microsoft.

As Director of Localization Technology at Bowne Global Solutions, he carried out research and analysis on multilingual Web sites and published the first generic model of Globalization Management Systems.

Additionally, Pierre holds a B. Sc. and M. Sc. in Computer Science.