3个稳定版本
1.0.2 | 2020年9月18日 |
---|
#199 在 国际化 (i18n)
7KB
143 行
翻译
Rust应用程序本地化(文本翻译)库。
特性
-
自动检测用户的区域设置(Windows,Unix)。
-
体积小 - 不依赖于
regex
(如locale_config
所做的那样)。 -
本地化文件嵌入在二进制文件中。
-
它首先在文件系统中查找本地化文件,因此可以添加新的本地化文件而无需重新编译应用程序。
-
它与
cargo-i18n
结合得很好。
最小示例
use translation::{tr_init, tr};
#[derive(rust_embed::RustEmbed)]
#[folder = "i18n/mo"]
struct Translations;
fn main() {
tr_init!("locale", Translations);
println!("{}", tr!("Hello, world!"));
}
来自 i18n/mo
源文件夹的文件嵌入到可执行文件中。宏 tr_init!
按以下顺序查找(
locale/{lang}/LC_MESSAGES/{module_name}.mo
在文件系统中locale/{lang}/{module_name}.mo
在文件系统中{lang}/LC_MESSAGES/{module_name}.mo
在嵌入的Translations
结构中{lang}/{module_name}.mo
在嵌入的Translations
结构中
在应用程序可执行文件相对于的 locale
文件夹中查找。
依赖项
当前解决方案依赖于以下crates
tr
-tr!
宏gettext
- Rust中的gettext重实现rust_embed
- 将区域嵌入到可执行文件中
该软件包的诞生是因为在编写时,tr
软件包(版本 0.1.3)在使用 gettext
软件包时缺少了 tr_init!
宏。而不是为 tr
软件包创建拉取请求,我开始尝试创建一个新的软件包并嵌入翻译文件。未来我计划也支持直接读取 .po 文件(因此不需要编译 .po 文件)。
用法
注意。本说明使用 cargo-i18
工具。请参阅 https://github.com/kellpossible/cargo-i18n 获取更多信息。
配置步骤
安装所需工具
cargo install xtr
cargo install cargo-i18n
将以下内容添加到您的 Cargo.toml
依赖项中
translation = "1"
在您的软件包根目录中创建一个 i18n.toml
文件
fallback_language = "en"
[gettext]
target_languages = ["pl"]
output_dir = "i18n"
运行 cargo i18n
工具
cargo i18n
它会扫描代码并创建和更新本地化文件。您可以在需要更新本地化文件或编译 po
文件时运行它。
依赖项
~5–12MB
~111K SLoC