2 个版本
0.1.1 | 2023 年 5 月 3 日 |
---|---|
0.1.0 | 2023 年 1 月 13 日 |
#177 在 国际化(i18n) 中
每月 29 次下载
8KB
87 行
人员地域
fluent-rs 的简单包装。此项目的目标是封装 fluent crate 的样板代码,使其在小项目中易于使用。
它最初是为我的员工管理项目编写的,您可以在我的 GitHub 页面上查看该项目,但您可以根据自己的喜好自由使用它。
什么是 Fluent?
要理解下面的内容,您首先需要了解 Fluent 是什么。您可以在这里查看:https://projectfluent.org/
示例
消息仅
use personnel::Locale;
let locale = Locale::new(include_str!("../test.ftl")).unwrap();
println!(locale.get_message("hello-world", None::<String>, &[]).unwrap());
在第二行,我们创建我们的 Locale 结构体。这将封装所有 Fluent 样板代码。
在第三行,您可以看到一个 get_message
函数。每次您想要从 Locale 获取本地化字符串时,都会引用它。它接受 Fluent message
、attribute
和 args
。如果您不理解它是什么,您应该回到 Fluent 文档并完成它,然后再继续阅读。此外,如您所见,如果不需要或拥有 attribute
和 args
,则 attribute
和 args
都是可选的,您可以为 attribute
传递 None
,为 args
传递空数组,如下所示 &[]
。
如果您对 args
和 attribute
仍感到困惑,以下是一些示例。
属性
let locale = Locale::new(include_str!("../test.ftl")).unwrap();
locale
.get_message("hello-world", Some("special"), &[])
.unwrap()
参数
let locale = Locale::new(include_str!("../test.ftl")).unwrap();
locale
.get_message("hello-world", Some("arg"), &[("world-type", "Custom")])
.unwrap()
注意:当您使用 Fluent 参数时,实际消息将是 "Hello, \u{2068}Custom\u{2069} World!"
。这是 Fluent 的一个特性。不是错误。
.flt
以下是所有示例中使用的 fluent 文件
hello-world = Hello, World!
.special = Hello, Special World!
.arg = Hello, {$world-type} World!
依赖项
~2MB
~42K SLoC