oxilangtag

Crates.iooxilangtag
lib.rsoxilangtag
version0.1.5
sourcesrc
created_at2020-05-01 17:50:48.763085
updated_at2024-03-10 20:11:23.192751
descriptionSimple and fast implementation of language tag normalization and validation
homepage
repositoryhttps://github.com/oxigraph/oxilangtag
max_upload_size
id236312
size58,422
Thomas Tanon (Tpt)

documentation

https://docs.rs/oxilangtag

README

oxilangtag

actions status Latest Version Released API docs

OxiLangTag is a Rust library allowing to validate and normalize language tags following RFC 5646 (BCP 47).

It is a fork of the language-tags focusing on RDF use cases. You might find the language-tags crate more convenient.

It allows zero stack allocation language tag validation. Getters are also provided to easily retrieve the various language tag components.

If serde is available, LanguageTag implements the Serialize and Deserialize traits and encodes the language tag as a string.

Example:

use oxilangtag::LanguageTag;

// Parsing and validation
let language_tag = LanguageTag::parse("zh-cmn-Hans-CN-x-test").unwrap();
assert_eq!(language_tag.as_str(), "zh-cmn-Hans-CN-x-test");

// Language tag components
assert_eq!(language_tag.primary_language(), "zh");
assert_eq!(language_tag.extended_language(), Some("cmn"));
assert_eq!(language_tag.full_language(), "zh-cmn");
assert_eq!(language_tag.script(), Some("Hans"));
assert_eq!(language_tag.region(), Some("CN"));
assert_eq!(language_tag.extension(), None);
assert_eq!(language_tag.private_use_subtags().collect::<Vec<_>>(), vec!["test"]);

It is also possible to use this crate in no_std (with alloc) by opting-out of the default std feature:

serde = { version = "*", default-features = false }

License

This project is licensed under the MIT license (LICENSE-MIT or <http://opensource.org/licenses/MIT>).

It is based on the language-tags crate by pyfisch under MIT license.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Oxilangtag by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Commit count: 76

cargo fmt