#bcp47 #iso15924 #rfc5646

rust_iso15924

ISO 15924,表示书写系统名称的代码,是一个国际标准,定义了书写系统或脚本(“用于一种或多种语言的书面形式的图形字符集”)的代码。每个脚本都有一个四位字母代码和一个数字代码。

3 个版本

0.0.3 2023 年 1 月 25 日
0.0.2 2023 年 1 月 24 日
0.0.1 2023 年 1 月 23 日

632文本处理

Apache-2.0

64KB
3.5K SLoC

rust_iso/iso15924

一个提供 ISO 15924 支持的 Rust 包。

什么是 ISO 15924

ISO 15924,表示书写系统名称的代码,是一个国际标准,定义了书写系统或脚本(“用于一种或多种语言的书面形式的图形字符集”)的代码。每个脚本都有一个四位字母代码和一个数字代码。[1]

尽可能的情况下,代码是从 ISO 639-2 衍生的,其中脚本名称和使用该脚本的语言名称相同(例如:Gujarātī ISO 639 guj,ISO 15924 Gujr)。优先考虑 639-2 图书馆代码,这与其他情况下通常优先考虑的术语代码不同。[1]

四位字母 ISO 15924 代码被纳入 IANA 语言子标签注册处,用于 IETF 语言标签,因此可以在使用此类语言标签的文件格式中使用。例如,它们可以用于 HTML 和 XML,以帮助 Web 浏览器确定用于外语的字体系。这样就可以区分,例如,使用西里尔字母(sr-Cyrl)或拉丁字母(sr-Latn)书写的塞尔维亚语,或者将罗马化或转写文本标记为如此。[1]

-- 维基百科

安装

[dependencies]
rust_iso15924 = "0.0.1"

许可证

rust-iso/rust_iso15924 在 Apache-2.0 许可证下发布。

使用

请参阅文档中的使用部分。

快速指南

let script = rust_iso15924::from_code("Adlm");
assert_eq!(166, script.unwrap().numeric);

let script = rust_iso15924::from_numeric(439);
assert_eq!("Afak", script.unwrap().code);

let script = rust_iso15924::from_numeric_str("439");
assert_eq!("Afak", script.unwrap().code);

println!("{:?}", rust_iso15924::ALL);
println!("{:?}", rust_iso15924::ALL_MAP);
println!("{:?}", rust_iso15924::NUMERIC_MAP);
println!("{:?}", rust_iso15924::ALL_NAME);
println!("{:?}", rust_iso15924::ALL_CODE);
println!("{:?}", rust_iso15924::ALL_NUMERIC);
println!("{:?}", rust_iso15924::ALL_NUMERIC_STR);

数据样本

pub struct LanguageCode<'a> {
    ///ISO Language Name
    pub name: &'static str,
    ///639-1
    pub code: &'static str,
    ///639-2/T
    pub code_2t: &'static str,
    ///639-2/B
    pub code_2b: &'static str,
    //639-3 Macrolanguage
    pub code_3: &'static str,

    pub individual_languages: &'a [IndividualLanguages],
}

#[derive(Debug, Copy, Clone)]
pub struct IndividualLanguages {
    ///Name
    pub name: &'static str,
    ///Code
    pub code: &'static str,
}

来源

依赖项

~0.7–10MB
~75K SLoC