#fluent #formatter #configurable #file #ftl #language

fluent-fmt

fluent 格式化器,用于配置 ftl 文件

2 个版本

0.1.1 2021 年 3 月 29 日
0.1.0 2021 年 3 月 28 日

215国际化 (i18n)

MPL-2.0 许可协议

12KB
287 行(不包括注释)

Doki System Fluent

Doki 使用 fluent 进行本地化,

// in notedown
// config.language is current language
\locale::SOME_FILED("title", lang=config.language)

// in template
<locale::SOME_FILED default="title" lang=config.language/>

以下是一些辅助库

  • fluent_fmt: 用于配置 fluent ftl 文件的格式化器。
  • fluent_missing: 比较并查找语言中缺失的字段。

Fluent 格式化器

Cli

使用 doki locale fmt 调用

Lib

use fluent_fmt::FluentFormatter;
use fluent_syntax::parser::parse;

#[test]
fn parsing() {
    let mut ctx = FluentFormatter::default();
    let ftl = r#"
### Resource Level Comment
###   * Resource Level Comment2
###   * Resource Level Comment3

# This is a message comment
time-elapsed = Time elapsed: { 
    NUMBER($duration, maximumFractionDigits: 0) 
        }s.
    .placeholder = [email protected]
    .aria-label = Login input value
    .title = Type your login email

# Complex things are possible.
shared-photos =
    {$userName} {$photoCount ->
        [one] added a new photo
       *[other] added {
            $photoCount
        } new photos
    } to {
$userGender ->
        [male] his stream
        [female] her stream
       *[other] their stream
    }.
"#;
    let out = parse(ftl).unwrap();
    // println!("{:#?}", out);
    println!("{}", ctx.pretty_print(out).unwrap())
}

Fluent 缺失

Cli

使用 doki locale mis 调用

Lib

依赖项

~0.4–1.5MB
~32K 行(约额外的代码行数)