2 个不稳定版本
0.2.0 | 2022 年 3 月 19 日 |
---|---|
0.1.0 | 2020 年 8 月 8 日 |
#540 in 模板引擎
9KB
105 行
Fluent Handlebars 运行时助手:Fluent 模板的扩展 Crates
fluent_templates
Crates 包含一个用于 Handlebars 模板框架的助手,允许你在构建时为 Fluent 可替换文本 提供值。 fluent-handlebars-runtime
添加了一个助手,它使用传递给 Handlebars render_template
方法的数据哈希来解决可替换文本。
例如,如果你的 FTL 文件看起来像这样
into-place = One does not simply walk into {$place}
into-place = On ne marche pas simplement à {$place}
然后你可以在运行时传递替换值
#
let data = serde_json::json!({
"lang": "en-US",
"place": "Mordor"
});
let mut handlebars = Handlebars::new();
handlebars.register_helper("t", Box::from(FluentHandlebars::new(&loader)));
assert_eq!(
format!("{}", handlebars.render_template(r#"{{t "into-place"}}"#, &data).unwrap()),
"One does not simply walk into Mordor"
);
let data = serde_json::json!({
"lang": "fr",
"place": "Mordor"
});
assert_eq!(
format!("{}", handlebars.render_template(r#"{{t "into-place"}}"#, &data).unwrap()),
"On ne marche pas simplement à Mordor"
);
这允许你在运行时只能知道的地方将值替换到本地化字符串中。
按照惯例,我们称这个助手为 "t",以保持模板简洁,但如果你发现更详细的标识符(例如 "translate" 或 "localize")更易读,你也可以使用它。
#
#
handlebars.register_helper("translate", Box::from(FluentHandlebars::new(&loader)));
assert_eq!(
format!("{}",
handlebars.render_template(r#"{{translate "into-place"}}"#, &data).unwrap()
),
"One does not simply walk into Mordor"
);
依赖关系
~8–17MB
~233K SLoC