7 个版本
0.4.5 | 2020年4月24日 |
---|---|
0.4.4 | 2020年4月24日 |
0.2.0 | 2020年2月18日 |
#339 在 国际化(i18n)
29KB
507 行
fluent-template-helper
此 crate 为您提供了创建实现 Fluent 加载器的能力,这些加载器实现了 Handlebars 的 handlebars::HelperDef
和 Tera tera::Function
。这使您能够轻松地将本地化添加到您的模板引擎中。
所有模板引擎实现都是可选的,可以使用功能禁用。
lib.rs
:
Fluent 的 Handlebars 助手。
此 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