#fluent #handlebars #localization #tera

fluent-template-helper

Fluent 国际化框架的模板助手

7 个版本

0.4.5 2020年4月24日
0.4.4 2020年4月24日
0.2.0 2020年2月18日

#339国际化(i18n)

MIT/Apache

29KB
507

fluent-template-helper

CI Status Current Version License: MIT/Apache-2.0

此 crate 为您提供了创建实现 Fluent 加载器的能力,这些加载器实现了 Handlebarshandlebars::HelperDefTera tera::Function。这使您能够轻松地将本地化添加到您的模板引擎中。

所有模板引擎实现都是可选的,可以使用功能禁用。


lib.rs:

FluentHandlebars 助手。

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

设置 handlebars 中的 fluent 助手

使用此宏的最简单方法是使用 simple_loader!()

use fluent_template_helper::*;
use handlebars::*;
use serde_json::*;

static_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}}

依赖关系

~6MB
~126K SLoC