2 个版本

0.1.1 2023 年 5 月 3 日
0.1.0 2023 年 1 月 13 日

#177国际化(i18n)

每月 29 次下载

MIT 许可证

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 messageattributeargs。如果您不理解它是什么,您应该回到 Fluent 文档并完成它,然后再继续阅读。此外,如您所见,如果不需要或拥有 attributeargs,则 attributeargs 都是可选的,您可以为 attribute 传递 None,为 args 传递空数组,如下所示 &[]

如果您对 argsattribute 仍感到困惑,以下是一些示例。

属性

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