5 个版本
0.1.4 | 2022 年 5 月 15 日 |
---|---|
0.1.3 | 2022 年 5 月 14 日 |
0.1.2 | 2022 年 5 月 14 日 |
0.1.1 | 2022 年 5 月 14 日 |
0.1.0 | 2022 年 5 月 10 日 |
#256 在 国际化(i18n)
465KB
8K SLoC
包含(自动工具混淆代码,400KB) c/configure,(模糊 autoconf 代码,1KB) c/configure.ac
rust-locale
rust_locale
提供了基于 POSIX.1 中指定的区域设置的多种功能。
主要目的是提供一些在 char
方法中不存在或与 char
方法行为不同的功能。
依赖项
[dependencies]
rust-locale = "0.1"
示例
use rust_locale::CType;
// space is different from whitespace
assert!('\x0c'.is_space()); # form feed
std::env::set_var("LC_ALL", "en_US");
assert!('\u{2003}'.is_space()); # Em Space
assert!(!'\u{1361}'.is_space()); # Ethiopic Wordspace
std::env::set_var("LC_ALL", "am_ET");
assert!('\u{1361}'.is_space());
// different behavior from char::to_uppercase
std::env::set_var("LC_ALL", "en_US");
assert_eq!(CType::to_uppercase(&'i'), 'I');
std::env::set_var("LC_ALL", "tr_TR");
assert_eq!(CType::to_uppercase(&'i'), '\u{0130}'); # Latin Capital Letter I with Dot Above
这些测试可能会根据区域定义失败。
未来计划
欢迎提出功能请求。
许可证
rust-locale
使用 Gnulib 来实现平台兼容性。Gnulib 是 LGPL,而 rust-locale
静态链接到它,因此 rust-locale
也是 LGPL。
如果您使用 rust-locale
并且不想适应 LGPL,您可能需要动态链接到 rust-locale
。
如果这很困难,我会考虑动态链接 rust-locale
到 Gnulib,并将 rust-locale
的许可证更改为 MIT。