8 个版本 (4 个重大更改)
| 0.5.0 | 2023 年 8 月 29 日 |
|---|---|
| 0.4.2 | 2023 年 4 月 30 日 |
| 0.4.0 | 2023 年 1 月 10 日 |
| 0.3.1 | 2022 年 12 月 31 日 |
| 0.1.0 | 2022 年 12 月 22 日 |
#435 in 过程宏
15KB
280 代码行,不包括注释
🔞
r18 是一个旨在简化 Rust 项目国际化的 crate。
最低支持版本 >= 1.70.0 (稳定版)
使用方法
将 r18 添加为项目依赖
[dependencies]
r18 = "*"
创建一个符合 IETF BCP 47 语言标签的 JSON 翻译文件,例如以下(您可以通过 CLI 工具 生成它)
// PATH: ./tr/zh-CN.json
{
"Hello, {}": "你好,{}"
}
然后,将 r18::init! 添加到代码的全局作用域中,目录位于翻译文件所在的目录(在以下示例中为 ./tr)。
r18::init!("tr");
初始化 r18 后,使用 auto_detect! 自动检测区域设置并加载翻译模型。
如果您愿意,可以使用 set_locale! 手动设置区域设置。
完成上述过程后,使用 tr! 获取已翻译的文本。
r18::init!("tr");
fn main() {
r18::auto_detect!(); // get locale & set
let name = "ho-229";
println!("{}", tr!("Hello, {}", name));
// reset locale to disable translation
r18::set_locale!("");
assert_eq!("Hello, ho-229", tr!("Hello, {}", name));
}
回退配置
有时您的翻译可能不完全匹配用户的区域设置,但这通常并不意味着您的翻译不能使用。在这种情况下,我们需要回退功能。
默认情况下,如果翻译与用户的区域设置不匹配,r18 将回退到最高字母顺序相同语言的翻译。
您也可以在与其他翻译文件放置在一起的 config.json 中指定语言的回退翻译。
例如。
{
"fallback": {
"zh": "zh-TW"
}
}
您可以在这里找到一个完整的示例。您可以使用以下命令运行示例
cargo run -p example
CLI 工具使用方法
运行以下命令安装 cargo r18
cargo install cargo-r18
在创建翻译目录并按照上述方式编写代码后,您可以运行以下命令生成翻译文件(例如 TODO.zh-CN.json)
cargo r18 generate zh-CN
此外,您可以通过以下方式在更改源文件后生成未翻译文本的待办文件:
cargo r18 update
限制: cargo r18 只扫描名为 init 和 tr 的宏,它无法识别哪些属于 r18,您在使用 cargo r18 之前应确保您的源文件中没有类似命名的宏。
运行 cargo r18 -h 查看更多选项。
致谢
依赖项
~0.6–1.4MB
~31K SLoC