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) 中
2,040 每月下载量
在 3 个包 中使用
150KB
2.5K SLoC
Fluent
fluent-fallback
是 Project Fluent 高级 API 的 Rust 实现。
Localization
结构体封装了一个持久的本地化上下文,提供语言回退功能。实例在整个对应 UI 的生命周期中保持可用,对诸如区域更改、资源更新等事件做出反应。
API 可以直接使用,也可以作为 fluent-bundle
和 fluent-resmgr
状态管理器的示例。
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