6 releases (stable)
| 2.1.1 | Oct 28, 2025 |
|---|---|
| 2.0.1 | Oct 31, 2025 |
| 2.0.0 | May 7, 2025 |
| 2.0.0-beta2 | Feb 26, 2025 |
| 2.0.0-beta1 | Nov 23, 2024 |
#14 in #preferences
10,930,122 downloads per month
Used in 39,074 crates
(15 directly)
635KB
11K
SLoC
icu_locale_core 
Parsing, manipulating, and serializing Unicode Language and Locale Identifiers.
This module is published as its own crate (icu_locale_core)
and as part of the icu crate. See the latter for more details on the ICU4X project.
The module provides algorithms for parsing a string into a well-formed language or locale identifier
as defined by UTS #35: Unicode LDML 3. Unicode Language and Locale Identifiers. Additionally
the module provides preferences interface for operations on locale preferences and conversions
from and to locale unicode extensions.
Locale is the most common structure to use for storing information about a language,
script, region, variants and extensions. In almost all cases, this struct should be used as the
base unit for all locale management operations.
LanguageIdentifier is a strict subset of Locale which can be useful in a narrow range of
cases where Unicode Extensions are not relevant.
If in doubt, use Locale.
Examples
use icu::locale::Locale;
use icu::locale::{
locale,
subtags::{language, region},
};
let mut loc: Locale = locale!("en-US");
assert_eq!(loc.id.language, language!("en"));
assert_eq!(loc.id.script, None);
assert_eq!(loc.id.region, Some(region!("US")));
assert_eq!(loc.id.variants.len(), 0);
loc.id.region = Some(region!("GB"));
assert_eq!(loc, locale!("en-GB"));
For more details, see Locale and LanguageIdentifier.
More Information
For more information on development, authorship, contributing etc. please visit ICU4X home page.
Dependencies
~175–700KB
~16K SLoC