[−][src]Crate langtag
This crate provides an implementation of language tags defined by RFC5646 (BCP47).
Usage
You can easily parse new language from anything that provides a [u8]
reference:
extern crate langtag; use langtag::LanguageTag; fn main() -> Result<(), langtag::Error> { let tag = LanguageTag::parse("fr-FR")?; assert_eq!(tag.language().unwrap().primary(), "fr"); assert!(tag == "Fr-fr"); // comparison is case-insensitive. Ok(()) }
Note that LanguageTag::parse
does not copy the data it is given,
but only borrows it.
You can create an owning LanguageTag
instance by using
LanguageTagBuf::parse_copy
instead.
Once parsed, you can exlore every component of the language tag using the provided functions.
Mutable language tags
When the language tags owns its buffer through Vec<u8>
,
it becomes possible to access the tag mutabily to modify it.
extern crate langtag; use std::convert::TryInto; use langtag::LangTag; fn main() -> Result<(), langtag::Error> { let mut tag = LangTag::parse_copy("fr-FR")?; tag.language_mut().set_primary("jp".try_into()?); tag.set_region(None); tag.extensions_mut().insert('f'.try_into()?, "bar".try_into()?); assert_eq!(tag, "jp-f-bar"); Ok(()) }
Structs
ExtendedLangTag | Single extended language subtag. |
Extension | Single extension and its subtags. |
ExtensionIter | Extension subtags iterator. |
ExtensionSubtag | Single extension subtag. |
ExtensionSubtagsIter | Extension subtags iterator. |
Extensions | List of extensions. |
ExtensionsIter | Extensions iterator. |
ExtensionsMut | Mutable reference to extension subtags. |
ExtensionsSubtagsIter | Extensions subtags iterator. |
LangTag | Normal language subtag. |
Language | Primary and extended language subtags. |
LanguageExtension | List of extended language subtags. |
LanguageExtensionIter | Language extension subtags iterator. |
LanguageExtensionMut | Mutable reference to extended language subtags. |
LanguageMut | Mutable reference to language subtags. |
PrimaryLanguage | Primary language subtag. |
PrivateUseSubtag | Single private use subtag. |
PrivateUseSubtags | List of private use subtags. |
PrivateUseSubtagsIter | Private use subtags iterator. |
PrivateUseSubtagsMut | Mutable reference to private use subtags. |
PrivateUseTag | Private use tag. |
Region | Region subtag. |
Script | Script subtag. |
Singleton | Extension identifier. |
Variant | Single variant subtag. |
Variants | List of variant subtags. |
VariantsIter | Variant subtags iterator. |
VariantsMut | Mutable reference to the variants of a language tag. |
Enums
Error | Parsing errors. |
GrandfatheredTag | Grandfathered tags. |
LanguageTag | Language tag with borrowed data. |
LanguageTagBuf | Language tag with owned data. |
Statics
GRANDFATHERED | List of all grandfathered tags. |
Type Definitions
LangTagBuf | Normal language tag owning its data using |
PrivateUseTagBuf | Private use tag owning its data using |