Upload
jgom00
View
232
Download
0
Embed Size (px)
Citation preview
8/8/2019 20 DotNetFr Globaliz c
1/23
Globalization Supportin
Microsoft .NET Framework
Franois Liger
Program Manager
Microsoft Corporation
8/8/2019 20 DotNetFr Globaliz c
2/23
What is .NET Framework?
.NET is Microsoft's platform for building,deploying, operating and integrating XML Webservices.
Rich XML, standard protocols, stateless
Cross-language development Common language runtime
Common type system for all languages
Rich runtime environment
Rich class libraries (.NET Framework) Base class libraries, ADO.NET and XML
Windows Forms for rich, Win32 applications
Web application platform ASP.NET
Easier to deploy, run, & maintain applications For components, versioning, availability
8/8/2019 20 DotNetFr Globaliz c
3/23
Key Terms (as used in this talk)
Globalization (a.k.a. Internationalization) Core application handles international data
Character encodings Date and time, numeric, currency formats
Market adaptation Additional functionality for a given market
Localization = translation
Localizable = ready for translation Resources
Application elements (error messages, UI) to betranslated in localized versions
8/8/2019 20 DotNetFr Globaliz c
4/23
Why include international support in
the Framework ? Consistency
.NET Framework is Unicode internally
.NET Framework carries NLS+ classes, sortingtables Consistent results on Windows XP, Windows
2000, Windows NT 4, Windows Millennium,Windows 98
Note: there are a few limitations on down-levelUnicode support: Underlying operating system limitations Windows Code pages File I/O
8/8/2019 20 DotNetFr Globaliz c
5/23
System
System.Data System.Xml
System.Web
Globalization
Diagnostics
Configuration
Collections
Resources
Reflection
Net
IO
Threading
Text
ServiceProcess
Security
Design
ADO
SQLTypes
SQL
XPath
XSLT
RuntimeInteropServices
Remoting
Serialization
Serialization
Configuration SessionState
Caching Security
ServicesDescription
Discovery
Protocols
UIHtmlControls
WebControls
System.Drawing
Imaging
Drawing2D
Text
Printing
System.WinForms
Design ComponentModel
.NET Framework Namespace
8/8/2019 20 DotNetFr Globaliz c
6/23
System.Globalization Namespace
Includes classes for functionality such as: Culture-aware string comparison
AABC vs. ABCC (ordinal: codepoint values) Cot vs. Cte (culture dependent)
Date &Time formatting yy/mm/dd vs. dd/mm/yy
Numeric formatting 12,000.00 vs. 12.000,00
Calendars Gregorian and non-Gregorian
Starting point : the CultureInfo class
8/8/2019 20 DotNetFr Globaliz c
7/23
CultureInfo
Provider of cultural preferences
Two roles CurrentCulture
Date and number formatting String comparison and casing
CurrentUICulture Resource selection for user interface
Can be controlled on a per thread basis
RFC 1766 derived hierarchy
CultureInfo.CreateSpecificCulture Optional mapping from neutral to specific
8/8/2019 20 DotNetFr Globaliz c
8/23
CultureInfo
Cultural preferences provider
Invariant culture culture-invariant default
Neutral culture Based on language
Resource only
No formatting
CurrentUICulture only
Specific culture Based on language & region
Resource & Formatting specifics
CurrentCulture & CurrentUICulture
invariant
de
de-AT
de-CH
de-DE
de-LI
de-LU
en
8/8/2019 20 DotNetFr Globaliz c
9/23
CultureInfo and related classes Demo
8/8/2019 20 DotNetFr Globaliz c
10/23
How to Set Culture and UICulture
Implicitly CurrentUICulture
Picked up from GetUserDefaultUILanguage
On Windows XP and Windows 2000 MUI SKUs, thissetting can be set by end-user
Otherwise, set from OS resources language
CurrentCulture Picked up from GetUserDefaultLCID
Affected by changes to
Control Panel | Regional Options | Set Locale
8/8/2019 20 DotNetFr Globaliz c
11/23
How to Set CurrentCulture, CurrentUICulture
Explicitly Thread.CurrentThread.CurrentUICulture = new CultureInfo(ja)
Thread.CurrentThread.CurrentCulture = new CultureInfo(ja-JP)
Thread.CurrentThread.CurrentCulture =
CultureInfo.CreateSpecificCulture(Request.UserLanguages(0))
Within an individual API that takes a culture Str = DateTime.Now.ToString(cultureInfo);
8/8/2019 20 DotNetFr Globaliz c
12/23
What if I dont want formatting to
change by culture?
For UI, prefer culture-sensitive formatting
However, for wire-transfer, databasestorage, you may want stable, culture-
unrelated format, such as #,###.##
dd MMMM yyyy HH:mm:ss GMT
international currency symbol
Use CultureInfo.InvariantCulture
8/8/2019 20 DotNetFr Globaliz c
13/23
Culture-aware Classes
Any API which takes a culture, or anIFormatProvider
Culture-sensitive by default
Examples System.Globalization.CompareInfo
System.Globalization.StringInfo
System.G
lobalization.Calendar System.Resources
System.DateTime
System.String
8/8/2019 20 DotNetFr Globaliz c
14/23
Culture-aware Classes
Calendar classes Includes support for
Gregorian Calendar
Hebrew Calendar Hijiri Calendar
Japanese Calendar
Julian Calendar
Korean Calendar
Taiwan Calendar
Thai Buddhist Calendar
Base Calendar class from which customcalendars can be derived
8/8/2019 20 DotNetFr Globaliz c
15/23
Culture-aware Classes
DateTime Provides methods that enable culture-sensitive
operations on a DateTime.
Use the DateTimeFormatInfo Class to formatand display a DateTime based on culture.
DateTimeFormatInfo Defines how DateTime values are formatted
and displayed, depending on the culture.
8/8/2019 20 DotNetFr Globaliz c
16/23
Culture-aware Classes
NumberFormatInfo Defines how currency, decimal separator and
other numeric symbols are formatted and
displayed based on culture
8/8/2019 20 DotNetFr Globaliz c
17/23
Culture-aware Classes
CompareInfo Provides a set of methods that can be used to
perfomr culture-sensitive string comparisons
The CultureInfo class has a CompareInfoproperty that is an instance of theCompareInfo class
The String.Compare method uses the
information in the CultureInfo.CompareInfoproperty to compare strings
8/8/2019 20 DotNetFr Globaliz c
18/23
Unicode support
Unicode everywhere Unicode internally
UTF-8 and UTF-16 encoding classes
String operations Surrogates & Combining characters support
Character type information Based on Unicode 3.0 tables
Unicode category enumeration
CultureInfo data Caveats
OS dependent operations Controls support
File System
8/8/2019 20 DotNetFr Globaliz c
19/23
ASP.NET And International ASP.NET delivers improved support for
international application development: Can leverage .NET Framework base classes
System.Globalization
System.Text (encodings)
System.Resources
Can separate resources from source code
Unicode-enabled
More options for specifying encoding
8/8/2019 20 DotNetFr Globaliz c
20/23
ASP.NET
setting culture and encoding:
ProgrammaticallyThread.CurrentThread.CurrentCulture =.
In a Page directive
In a Configuration file (web.config)Per application or per machine
The most specific setting has precedence : Programmatic overrides Page Directive,
Page Directive overrides Configuration file
8/8/2019 20 DotNetFr Globaliz c
21/23
ASP.NET Demo
8/8/2019 20 DotNetFr Globaliz c
22/23
Additional References
Documentation .NET Framework SDK:
Developing World-Ready Applications Tutorials
Samples Visual Studio :
Visual Studio.NET\Visual Basic and VisualC#\Globalizingand Localizing\Walkthroughs
General info on .NET Framework: http://msdn.microsoft.com/net http://www.GotDotNet.com
General info on globalization: http://www.microsoft.com/globaldev
8/8/2019 20 DotNetFr Globaliz c
23/23
Questions ?