### Locales in the Internationalization Framework

Locales provide the mechanism for organizing and accessing localizable resources--any objects that might change to support different languages or geographic regions. Such objects can include transcoders, collation objects, number formatters, data formatters, and time zones, among others.

#### Object Portability

Localized objects fall into one of two categories:

- Host objects are specific to a particular platform implementation. You cannot typically build or modify them programmatically, nor can you stream them to other systems. They are usually tied to a specific locale, and you construct them using the key for that locale.
- Portable objects are not host-dependent. You can typically build them programmatically from data, edit them, and stream them to other systems. You can also construct them using a locale key if they have been associated with that locale. Portable objects can be shared between locales, but they are not required to be associated with any locale.

No locale owns the objects associated with it; the locale simply provides a way to access those objects.

### Names of International Objects

The locale mechanism allows each locale and each object associated with that locale to have a set of displayable names. At a minimum, each object has a name for its locale in the default language and in English. Objects can also have names in other languages for display to end users, as illustrated in this figure:

Locale Names
Date and Time Classes
DBCS and National Language Support

Getting a Key for a Locale
Getting an Object from the Current Default Locale
Getting an Object from a Specific Locale
Iterating Through Available Locales