This documentation is archived and is not being maintained.

Encoding and Localization

When developing world-ready applications, you must focus attention on a variety of issues throughout the application design and development process. The three key issues are globalization, localizability, and localization.

Globalization is the first step in the process. A globalized application supports localized user interfaces and regional data for all users. Truly global applications should be culture-neutral and language-neutral. An intermediate step prior to localization is testing for localizability. In this step, you ensure that you have separated the application's resources that require translation from the rest of the application's code. If you correctly test for localizability before proceeding to the localization step, you should not have to modify your application's source code during localization. Localization is the last step in the process of developing a world-ready application. In this step, you customize your application for the specific cultures or regions to be supported. This step should consist primarily of translating the user interface into the target languages.

If you address globalization, localizability, and localization requirements from early on in the design phase, you will minimize the amount of time and money required to produce quality localized applications for the languages that you intend to support. The .NET Framework provides extensive support for developing world-ready applications. This topic provides information to help you design and develop world-ready applications.

For additional information, see Globalizing and Localizing Applications in the Visual Studio 2005 documentation, International Support in Microsoft Windows 2000 (, and the Microsoft Global Software Development Site (

Encoding and Localization Overview

Describes the three steps involved in designing a world-ready application in managed code and explains the advantages of following this model.

Using the CultureInfo Class

Describes the CultureInfo class and how to set and use the CurrentUICulture, CurrentCulture, and InvariantCulture properties.

How to: Create Custom Cultures

Describes how to use the CultureAndRegionInfoBuilder class to create a user-defined culture.

Locating and Using Resources for a Specific Culture

Describes how the ResourceManager class accesses culture-specific resources at run time based on the CurrentUICulture property.

Cultures Generated from Windows Locales

Describes how cultures not in the .NET Framework are automatically created from locales in Windows.

Names Associated with a RegionInfo Object

Describes the many different names that are associated with each geographical region.

Unicode in the .NET Framework

Describes the Unicode universal character encoding scheme for characters and text and the benefits of using it internally in the .NET Framework.

String Indexing

Describes how to use the StringInfo class to enumerate strings of text elements and iterate through these elements.

Describing a Culture with LDML Data

Describes how Microsoft uses LDML to store information about a culture.

Formatting Date and Time for a Specific Culture

Describes how to use the DateTime structure to format dates for specific cultures.

Display vs. Storage of Formatted Data

Provides guidelines for using a culture to format data stored in a file or memory versus data displayed to the user.

Using Calendars for Specific Cultures

Describes how to use the Calendar class and the CultureInfo class to display and manipulate calendars for specific cultures.

Formatting Numeric Data for a Specific Culture

Describes how to use the NumberFormatInfo class to format and display currency, decimal separators, and other numeric symbols based on culture.

Comparing and Sorting Data for a Specific Culture

Describes how to compare and sort data on a per-culture basis to support culture-specific and language-specific sorting conventions.

Culture-Insensitive String Operations

Describes how to use .NET Framework methods and classes that are culture-sensitive by default to obtain culture-insensitive results.

Best Practices for Developing World-Ready Applications

Describes the best practices to follow for globalization, localization, and developing world-ready ASP.NET applications.

Resources in Applications

Describes the .NET Framework support for the creation and localization of resources and the satellite assembly resource model for packaging and deploying these localized resources.

Normalization and Sorting

Describes how to prepare strings for a culture-insensitive sort.

Character Encoding in the .NET Framework

Describes how to choose an appropriate encoding and how to devise a fallback strategy.

System.Globalization Namespace

Contains classes that define culture-related information, including the language, the country/region, the calendars in use, the format patterns for dates, currency, and numbers, and the sort order for strings.

System.Resources Namespace

Provides classes for creating, manipulating, and using resources.

System.Text Namespace

Contains classes representing ASCII, ANSI, Unicode, and other character encodings.

Resource File Generator (Resgen.exe)

Describes how to use Resgen.exe to convert .txt files and XML-based resource format (.resx) files to common language runtime binary .resources files.

Windows Forms Resource Editor (Winres.exe)

Describes how to use Winres.exe to quickly and easily localize Windows Forms forms.

ASP.NET QuickStart

Provides the following samples in the Localization category: Setting Culture and Encoding, Localizing ASP.NET Applications, and Working with Resource Files.

Common Tasks QuickStart

Provides the following Globalization and national language support (NLS) samples: CultureRegion Sample, MultipleEncodings Sample, Encoding Sample, and MultiCurrency Sample. Provides the following Resources samples: Create Resources, Use Resources, Read and Write Resources, and Make a Resource Reader.