Expand description
Language Identifier and Locale contains a set of subtags which represent different fields of the structure.
Language
is the only mandatory field, which when empty, takes the valueund
.Script
is an optional field representing the written script used by the locale.Region
is the region used by the locale.Variants
is a list of optionalVariant
subtags containing information about the variant adjustments used by the locale.
Subtags can be used in isolation, and all basic operations such as parsing, syntax canonicalization
and serialization are supported on each individual subtag, but most commonly
they are used to construct a LanguageIdentifier
instance.
Variants
is a special structure which contains a list of Variant
subtags.
It is wrapped around to allow for sorting and deduplication of variants, which
is one of the required steps of language identifier and locale syntax canonicalization.
ยงExamples
use icu::locid::subtags::{Language, Region, Script, Variant};
let language: Language =
"en".parse().expect("Failed to parse a language subtag.");
let script: Script =
"arab".parse().expect("Failed to parse a script subtag.");
let region: Region =
"cn".parse().expect("Failed to parse a region subtag.");
let variant: Variant =
"MacOS".parse().expect("Failed to parse a variant subtag.");
assert_eq!(language.as_str(), "en");
assert_eq!(script.as_str(), "Arab");
assert_eq!(region.as_str(), "CN");
assert_eq!(variant.as_str(), "macos");
Notice
: The subtags are canonicalized on parsing. That means
that all operations work on a canonicalized version of the subtag
and serialization is very cheap.
Modulesยง
Macrosยง
- A macro allowing for compile-time construction of valid
Language
subtags. - A macro allowing for compile-time construction of valid
Region
subtags. - A macro allowing for compile-time construction of valid
Script
subtags. - A macro allowing for compile-time construction of valid
Variant
subtags.
Structsยง
- A language subtag (examples:
"en"
,"csb"
,"zh"
,"und"
, etc.) - A region subtag (examples:
"US"
,"CN"
,"AR"
etc.) - A script subtag (examples:
"Latn"
,"Arab"
, etc.) - A variant subtag (examples:
"macos"
,"posix"
,"1996"
etc.) - A list of variants (examples:
["macos", "posix"]
, etc.)