A language tag as described in BCP47.
Language tags are used to help identify languages, whether spoken,
written, signed, or otherwise signaled, for the purpose of
communication. This includes constructed and artificial languages
but excludes languages not intended primarily for human
communication, such as programming languages.
Language subtags are used to indicate the language, ignoring all
other aspects such as script, region or spefic invariants.
Extended language subtags are used to identify certain specially
selected languages that, for various historical and compatibility
reasons, are closely identified with or tagged using an existing
primary language subtag.
Script subtags are used to indicate the script or writing system
variations that distinguish the written forms of a language or its
dialects.
Region subtags are used to indicate linguistic variations associated
with or appropriate to a specific country, territory, or region.
Typically, a region subtag is used to indicate variations such as
regional dialects or usage, or region-specific spelling conventions.
It can also be used to indicate that content is expressed in a way
that is appropriate for use throughout a region, for instance,
Spanish content tailored to be useful throughout Latin America.
Variant subtags are used to indicate additional, well-recognized
variations that define a language or its dialects that are not
covered by other available subtags.
Extensions provide a mechanism for extending language tags for use in
various applications. They are intended to identify information that
is commonly used in association with languages or language tags but
that is not part of language identification.
Private use subtags are used to indicate distinctions in language
that are important in a given context by private agreement.
Matches language tags. The first language acts as a language range, the second one is used
as a normal language tag. None fields in the language range are ignored. If the language
tag has more extlangs than the range these extlangs are ignored. Matches are
case-insensitive. *
in language ranges are represented using None
values. The language
range *
that matches language tags is created by the default language tag:
let wildcard: LanguageTag = Default::default();.
For example the range en-GB
matches only en-GB
and en-Arab-GB
but not en
.
The range en
matches all language tags starting with en
including en
, en-GB
,
en-Arab
and en-Arab-GB
.
If the language range has extensions or private use tags.
let range_italian = langtag!(it);
let tag_german = langtag!(de);
let tag_italian_switzerland = langtag!(it;;;CH);
assert!(!range_italian.matches(&tag_german));
assert!(range_italian.matches(&tag_italian_switzerland));
let range_spanish_brazil = langtag!(es;;;BR);
let tag_spanish = langtag!(es);
assert!(!range_spanish_brazil.matches(&tag_spanish));
Checks if it is a language range, meaning that there are no extension and privateuse tags.
Returns the canonical version of the language tag.
It currently applies the following steps:
- Grandfathered tags are replaced with the canonical version if possible.
- Extension languages are promoted to primary language.
- Deprecated languages are replaced with modern equivalents.
- Deprecated regions are replaced with new country names.
- The
heploc
variant is replaced with alalc97
.
The returned language tags may not be completly canonical and they are
not validated.
Formats the value using the given formatter. Read more
Returns the "default value" for a type. Read more
This method tests for self
and other
values to be equal, and is used by ==
. Read more
This method tests for !=
.
Formats the value using the given formatter. Read more
The associated error which can be returned from parsing.
Parses a string s
to return a value of this type. Read more
Performs copy-assignment from source
. Read more
Converts the given value to a String
. Read more
Creates owned data from borrowed data, usually by cloning. Read more
🔬 This is a nightly-only experimental API. (toowned_clone_into
)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more
🔬 This is a nightly-only experimental API. (try_from
)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from
)
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
🔬 This is a nightly-only experimental API. (try_from
)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from
)
🔬 This is a nightly-only experimental API. (get_type_id
)
this method will likely be replaced by an associated static
Get the TypeId
of this object.