23 个版本

0.15.3 2024年5月5日
0.15.2 2021年10月25日
0.15.1 2021年4月26日
0.15.0 2021年2月9日
0.6.0 2019年3月26日

#387国际化(i18n) 类别中

Download history 35133/week @ 2024-05-01 35651/week @ 2024-05-08 34133/week @ 2024-05-15 35362/week @ 2024-05-22 34293/week @ 2024-05-29 34562/week @ 2024-06-05 33160/week @ 2024-06-12 32464/week @ 2024-06-19 32682/week @ 2024-06-26 32422/week @ 2024-07-03 38218/week @ 2024-07-10 37457/week @ 2024-07-17 37463/week @ 2024-07-24 40477/week @ 2024-07-31 41724/week @ 2024-08-07 38337/week @ 2024-08-14

164,229 每月下载量
207 个crate(19个直接使用) 中使用

Apache-2.0 OR MIT

255KB
3.5K SLoC

Fluent

fluent-rsProject Fluent 的 Rust 实现,Project Fluent 是一个旨在释放自然语言翻译全部表达能力的本地化框架。

crates.io Build Coverage Status

Project Fluent 使简单的事情保持简单,同时使复杂的事情成为可能。用于描述翻译的语法易于阅读和理解。同时,它还允许在必要时表示自然语言中的复杂概念,如性别、复数、变位等。

文档

用法

use fluent_bundle::{FluentBundle, FluentResource};
use unic_langid::langid;

fn main() {
    let ftl_string = "hello-world = Hello, world!".to_owned();
    let res = FluentResource::try_new(ftl_string)
        .expect("Could not parse an FTL string.");

    let langid_en = langid!("en");
    let mut bundle = FluentBundle::new(vec![langid_en]);

    bundle.add_resource(&res)
        .expect("Failed to add FTL resources to the bundle.");

    let msg = bundle.get_message("hello-world")
        .expect("Failed to retrieve a message.");
    let val = msg.value.expect("Message has no value.");

    let mut errors = vec![];
    let value = bundle.format_pattern(val, None, &mut errors);

    assert_eq!(&value, "Hello, world!");
}

状态

实现处于早期阶段,仅支持 Project Fluent 的部分规范。有关发布计划和范围的更多信息,请参阅 里程碑列表

本地开发

cargo build
cargo test
cargo bench
cargo run --example simple-app

提交 PR 时请使用 cargo fmt(nightly)。

学习 FTL 语法

FTL 是一种用于描述翻译资源的本地化文件格式。FTL 代表 Fluent Translation List

FTL 设计得易于阅读,同时允许表示自然语言中的复杂概念,如性别、复数、变位等。

hello-user = Hello, { $username }!

阅读 Fluent 语法指南 以了解更多关于语法的知识。如果您是工具作者,您可能对正式的 EBNF 语法 感兴趣。

参与其中

fluent-rs 是开源软件,同时受 Apache 2.0 和 MIT 许可协议的许可。我们鼓励大家查看我们的代码,并欢迎您的反馈。

讨论

我们非常愿意听取您对 Project Fluent 的看法!无论您是一位寻求在您的语言中更好地表达自己的本地化人员,还是一位希望使您的应用可本地化和多语言化的开发者,或者是一位寻找可以贡献的项目黑客,请在邮件列表和 IRC 频道与我们取得联系。

依赖项

~1.2–1.7MB
~37K SLoC