2 个不稳定版本
0.2.0 | 2019 年 8 月 24 日 |
---|---|
0.1.0 | 2019 年 8 月 21 日 |
在 国际化 (i18n) 中排名 156
310KB
6K SLoC
Crate simple-locale
一个用于区域和类似区域操作的惯用 Rust Crate。
此 Crate 提供了三个领域的更高层次的接口,用于访问许多与区域相关的来源:
- 区域相关的代码/标识符以及任何关于它们的基于标准的信息。例如,ISO-396 语言标识符或 ISO-3166 国家标识符。这些位于模块
simple_locale::codes
。 - 区域设置,通常通过 POSIX(参见 ISO/IEC 15897)操作系统功能访问。这些位于模块
simple_locale::settings
。 - 提供了一个
Locale
枚举和一个LocaleString
结构,可用于以符合标准的方式解析和构造区域标识符。
示例
use simple_locale::LocaleString;
use simple_locale::codes::{country, currency};
let locale = LocaleString::new_strict("en".to_string())
.with_territory("US".to_string())
.with_code_set("UTF-8".to_string())
.with_modifier("collation=pinyin;currency=CNY".to_string());
println!("{}", locale);
let mexico = country::lookup_country("MEX").unwrap();
println!("{:?}", mexico);
let mexico_region = country::lookup_region(mexico.country_code).unwrap();
println!("{:?}", mexico_region);
let currencies = currency::currencies_for_country_name(mexico_region.name.as_str());
println!("{:?}", currencies);
操作系统覆盖范围
目前仅在 macOS、Linux 上进行了测试,Windows 即将到来。
预构建过程
以下描述了两个在正常构建过程之外执行,并且输出存储在 Git 中并根据外部因素进行版本化的代码生成步骤。
FFI 绑定
如上所述,此 Crate 依赖于 POSIX 区域功能的 FFI 绑定,并且存在导致这种情况的系统差异。脚本 create-bindings.sh
用于以这种方式生成这些绑定(使用 cargo bindgen),以便可以有效地构建不同的操作系统绑定。
JSON 数据文件
另一个脚本 create-data-modules
用于处理从标准网站下载或抓取的文件,以创建库使用的数据。这些数据以 JSON 文件的形式生成在 src/codes/data
文件夹中,并在构建 codes
模块时作为部分读取,使用 Rust 的 include!
宏。
目前为以下标准生成数据:
- ISO 639 语言名称表示法代码;第 1-4 部分,支持双字符和三字符代码。
- ISO 3166 国家和其子区域的名称表示法代码;第 1 部分,仅支持双字符代码。
- ISO 4217 货币表示法代码;支持字母和数字代码。
- ISO 15924 脚本名称表示法代码;支持字母和数字代码。
待办事项
LocaleString
应该将 严格 作为默认值吗?- 确定
codes
和settings
模块之间的命名约定。- 预计代码模块中的名称将更改为反映设置中的名称。
- 为 Linux 构建并测试。
- 如何处理扩展的
LC_
类别(地址、标识、测量、名称、纸张、电话)。
- 如何处理扩展的
- 为 Windows 构建并测试。
依赖项
~2.8–4.5MB
~89K SLoC