#tags #language #validation #bcp47 #rdf #normalization #language-tag

no-std oxilangtag

语言标签规范化和验证的简单快速实现

4个版本

0.1.5 2024年3月10日
0.1.4 2024年3月4日
0.1.3 2022年3月26日
0.1.2 2021年4月16日
0.1.0 2020年5月1日

Web编程 中排名 348

Download history 1885/week @ 2024-03-14 2510/week @ 2024-03-21 2818/week @ 2024-03-28 1845/week @ 2024-04-04 1986/week @ 2024-04-11 2130/week @ 2024-04-18 2017/week @ 2024-04-25 2355/week @ 2024-05-02 2454/week @ 2024-05-09 2360/week @ 2024-05-16 2379/week @ 2024-05-23 2537/week @ 2024-05-30 2561/week @ 2024-06-06 2664/week @ 2024-06-13 2622/week @ 2024-06-20 2301/week @ 2024-06-27

每月下载量 10,673
125 包中(直接使用 20 个)

MIT 协议

33KB
688

oxilangtag

actions status Latest Version Released API docs

OxiLangTag 是一个Rust库,允许验证和规范化语言标签,遵循 RFC 5646 (BCP 47)。

它是 language-tags 的分支,专注于 RDF用例。您可能会发现 language-tags 包更方便。

它允许零栈分配的语言标签验证。还提供了获取各种语言标签组件的getter。

如果 serde 可用,LanguageTag 实现了 SerializeDeserialize 特性,并将语言标签编码为字符串。

示例

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"]);

还可以通过选择退出默认的 std 功能,在 no_std (与 alloc) 中使用此包。

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

许可证

本项目采用MIT许可证 (LICENSE-MIT<http://opensource.org/licenses/MIT>)。

它基于 language-tags 包,由 pyfisch 在MIT许可证下开发。

贡献

除非您明确声明,否则根据Apache-2.0许可证定义的,您有意提交以包含在OxiLangtag中的任何贡献,将按上述方式双许可,不附加任何额外条款或条件。

依赖项

~170KB