6 个版本 (3 个破坏性更新)

0.5.2 2024 年 5 月 5 日
0.5.1 2021 年 1 月 23 日
0.5.0 2020 年 5 月 6 日
0.4.0 2020 年 3 月 10 日
0.2.0 2020 年 2 月 13 日

#390 in 国际化 (i18n)

Download history 32437/week @ 2024-04-27 35801/week @ 2024-05-04 35060/week @ 2024-05-11 31538/week @ 2024-05-18 35682/week @ 2024-05-25 33466/week @ 2024-06-01 33718/week @ 2024-06-08 32054/week @ 2024-06-15 31243/week @ 2024-06-22 31636/week @ 2024-06-29 35538/week @ 2024-07-06 37804/week @ 2024-07-13 37132/week @ 2024-07-20 38060/week @ 2024-07-27 39707/week @ 2024-08-03 34579/week @ 2024-08-10

154,968 每月下载量
用于 207 个仓库(直接使用 25 个)

Apache-2.0 OR MIT

22KB
178

IntlMemoizer

intl-memoizer 是一个用于处理对国际化格式器延迟初始化引用的 crate。

假设分配新的格式器实例成本高昂,该实例在其生命周期内只读,构造函数成本高昂,而 format/select 调用成本低。

因此,使用单例来管理所有国际化 API 实例的缓存(例如 PluralRules、DateTimeFormat 之间)在所有 FluentBundle 实例之间是有益的。

用法

以下是一个高级示例,说明它是如何工作的,有关运行示例,请参阅 文档

/// Internationalization formatter should implement the Memoizable trait.
impl Memoizable for NumberFormat {
  ...
}

// The main memoizer has weak references to all of the per-language memoizers.
let mut memoizer = IntlMemoizer::default();

// The formatter memoziation happens per-locale.
let lang = "en-US".parse().expect("Failed to parse.");
let lang_memoizer: Rc<IntlLangMemoizer> = memoizer.get_for_lang(en_us);

// Run the formatter

let options: NumberFormatOptions {
    minimum_fraction_digits: 3,
    maximum_fraction_digits: 5,
};

// Format pi with the options. This will lazily construct the NumberFormat.
let pi = lang_memoizer
    .with_try_get::<NumberFormat, _, _>((options,), |nf| nf.format(3.141592653))
    .unwrap()

// The example formatter constructs a string with diagnostic information about
// the configuration.
assert_eq!(text, "3.14159");

// Running it again will use the previous formatter.
let two = lang_memoizer
    .with_try_get::<NumberFormat, _, _>((options,), |nf| nf.format(2.0))
    .unwrap()

assert_eq!(text, "2.000");

参与其中

fluent-rs 是开源的,受 Apache 2.0 和 MIT 许可证的许可。我们鼓励每个人都查看我们的代码,并且我们会倾听您的反馈。

讨论

我们很乐意听取您对 Project Fluent 的看法!无论您是寻找更好方式来表达您自己的本地化人员,还是试图使您的应用程序可本地化和多语言化的开发者,或者是寻找贡献项目的黑客,请通过邮件列表和 IRC 频道与我们联系。

依赖项

~1–1.4MB
~31K SLoC