17 个版本

0.7.1 2024年5月5日
0.7.0 2022年11月9日
0.6.0 2021年12月17日
0.5.0 2021年7月8日
0.0.2 2019年11月26日

#405国际化 (i18n)

Download history 429/week @ 2024-04-27 626/week @ 2024-05-04 449/week @ 2024-05-11 450/week @ 2024-05-18 350/week @ 2024-05-25 191/week @ 2024-06-01 242/week @ 2024-06-08 459/week @ 2024-06-15 174/week @ 2024-06-22 464/week @ 2024-06-29 674/week @ 2024-07-06 611/week @ 2024-07-13 393/week @ 2024-07-20 698/week @ 2024-07-27 580/week @ 2024-08-03 274/week @ 2024-08-10

2,040 每月下载量
3 个包 中使用

Apache-2.0 OR MIT

150KB
2.5K SLoC

Fluent

fluent-fallbackProject Fluent 高级 API 的 Rust 实现。

Localization 结构体封装了一个持久的本地化上下文,提供语言回退功能。实例在整个对应 UI 的生命周期中保持可用,对诸如区域更改、资源更新等事件做出反应。

API 可以直接使用,也可以作为 fluent-bundlefluent-resmgr 状态管理器的示例。

crates.io Build Coverage Status

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

文档

使用方法

use fluent_fallback::Localization;

fn main() {
    // generate_messages is a closure that returns an iterator over FluentBundle
    // instances.
    let loc = Localization::new(vec!["simple.ftl".into()], generate_messages);

    let value = bundle.format_value("hello-world", None);

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

状态

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

本地开发

cargo build
cargo test
cargo run --example simple-fallback

提交 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 频道上与我们联系。

依赖关系

~2–2.8MB
~57K SLoC