#unicode #language-identifier #extension #locale #preferences #language-and-locale #subtags #serialization

no-std tpuf_icu_locale_core_211

API for managing Unicode Language and Locale Identifiers

5 releases (major breaking)

7.0.0 Nov 13, 2025
6.0.0 Nov 13, 2025
5.0.0 Nov 13, 2025
3.0.0 Nov 13, 2025
2.1.1 Nov 13, 2025

#106 in Internationalization (i18n)

Download history 57/week @ 2025-11-07 318/week @ 2025-11-14 309/week @ 2025-11-21 417/week @ 2025-11-28 284/week @ 2025-12-05 358/week @ 2025-12-12 113/week @ 2025-12-19 6/week @ 2025-12-26 227/week @ 2026-01-02 318/week @ 2026-01-09 213/week @ 2026-01-16 264/week @ 2026-01-23 234/week @ 2026-01-30 337/week @ 2026-02-06

1,098 downloads per month
Used in 2 crates

Unicode-3.0

630KB
11K SLoC

icu_locale_core crates.io

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

~115–570KB
~13K SLoC