#handlebars #fluent #localization

handlebars-fluent

Fluent 国际化框架的 Handlebars 辅助函数

6 个版本 (3 个重大更改)

0.4.0 2024年1月15日
0.3.2 2023年4月12日
0.3.0 2020年2月20日
0.2.0 2019年12月6日
0.1.0 2019年11月7日

#202模板引擎

MIT/Apache

23KB
386

handlebars-fluent

Build Status Current Version License: MIT/Apache-2.0

此 crate 提供了 Handlebars 的 Rust 实现¹,以及 Fluent 国际化框架的辅助函数。

¹ 有关 Handlebars 的 JavaScript 实现的 Fluent 辅助函数,请参阅 handlebars-helper-fluent


lib.rs:

Fluent 辅助函数 Handlebars

此 crate 提供了一个可以加载 Fluent 字符串的 Handlebars 辅助函数。

使用 handlebars 配置 fluent 辅助函数

使用此辅助函数最简单的方法是使用 simple_loader!()

use handlebars_fluent::*;
use handlebars::*;
use serde_json::*;

simple_loader!(create_loader, "./locales/", "en-US");

fn init(handlebars: &mut Handlebars) {
    let loader = create_loader();
    let helper = FluentHelper::new(loader);
    handlebars.register_helper("fluent", Box::new(helper));
}

fn render_page(handlebars: &Handlebars) -> String {
    let data = json!({"lang": "zh-CN"});
    handlebars.render_template("{{fluent \"foo-bar\"}} baz", &data).unwrap()
}

您应该在某个地方有一个名为 locales/ 的文件夹,其中包含一个以语言代码命名的文件夹,包含所有您的 FTL 文件。有关更多选项,请参阅 simple_loader!() 宏。

确保 handlebars::Context 在渲染时有一个顶级 "lang" 字段。

在模板中使用 fluent 辅助函数

提供的主要辅助函数是 {{fluent}} 辅助函数。如果您有以下 Fluent 文件

foo-bar = "foo bar"
placeholder = this has a placeholder { $variable }

您可以使用以下方法在模板中包含字符串

{{fluent "foo-bar"}} <!-- will render "foo bar" -->
{{fluent "placeholder" variable="baz"}} <!-- will render "this has a placeholder baz" -->

您还可以使用 {{fluentparam}} 辅助函数来指定 变量,特别是如果您需要它们多行显示,如下所示

{{#fluent "placeholder"}}
    {{#fluentparam "variable"}}
        first line
        second line
    {{/fluentparam}}
{{/fluent}}

可以指定多个 {{fluentparam}}

依赖项

~5.5MB
~106K SLoC