#本地化 #命令行工具

应用程序 cargo-r18

为crate r18提供的命令行工具

7个版本

0.3.0 2023年8月29日
0.2.3 2023年4月30日
0.2.1 2023年3月5日
0.2.0 2023年1月10日
0.1.1 2022年12月31日

168国际化(i18n) 中排名

每月 下载 24

MIT 协议

26KB
455 代码行

🔞

crate.io docs build

r18 是一个crate,旨在简化Rust项目的国际化。

MSRV >= 1.70.0 (稳定版)

用法

r18 添加为您的项目依赖项

[dependencies]
r18 = "*"

创建一个遵循 IETF BCP 47 语言标签的 JSON 翻译文件,如下所示(您可以通过 命令行工具 生成它)

// 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

命令行工具使用方法

运行以下命令安装 cargo r18

cargo install cargo-r18

在创建翻译目录并按上述方式编写代码后,您可以使用以下命令生成翻译文件(例如 TODO.zh-CN.json)

cargo r18 generate zh-CN

此外,您可以通过更改源代码来生成未翻译文本的 todo 文件

cargo r18 update

限制: cargo r18 仅扫描名为 inittr 的宏,无法识别它们是否属于 r18,在使用 cargo r18 之前,请确保您的源代码中没有类似的宏。

运行 cargo r18 -h 获取更多选项。

致谢

依赖项

~1.7–10MB
~91K SLoC