gpt4 book ai didi

localization - 如何在 Rust 中更改格式化程序的小数点分隔符?

转载 作者:行者123 更新时间:2023-11-29 07:52:24 24 4
gpt4 key购买 nike

以下函数的结果为“10.000”。在我住的地方,这意味着“一万”。

format!("{:.3}", 10.0);

我希望输出为“10,000”。

最佳答案

Rust 标准库不支持国际化 (i18n) 或本地化 (l10n)。


有几个原因,排名不分先后:

  1. 依赖于语言环境的输出应该是有意识的选择,而不是默认的,
  2. i18n 和 l10n 比格式化数字要复杂得多,
  3. Rust std 的目标是体积小。

format! 机制将用于编写 JSON 或 XML 文件。您真的不想根据编码它的机器的区域设置以不同格式的文件结束。这是灾难的根源。

在运行时检测语言环境也是优化不友好的。突然之间,您无法在编译时预先计算(甚至部分),您甚至无法知道在编译时要分配的缓冲区大小。

这与可疑的用途有关。日期和数字可以说是重要的,但是这场美国与英国的格式之战最终只是沧海一粟。法国文法学校的学生肯定会欣赏数字以典型的法语格式格式化......但如果周围的文本是英语(我们法国人在教授/学习外语方面出了名的糟糕),这对她来说毫无用处。语言环境应该影响语言选择、​​排序顺序等...仅仅改变数字格式是没有意义的,一切都应该随之切换,这需要更认真的支持(检查gettext 为提供良好基础的 C 库)。

基于主机区域设置的区域设置检测,并且它对整个进程是全局的,在这个多线程 Web 服务器时代,也是一个非常可疑的架构选择。想象一下,如果 Facebook 在欧洲使用瑞典语服务只是因为它的数据中心在那里运行。

最后,所有这些语言/日期/...支持需要大量数据。 ICU里面嵌入了数十(或数百?)MB 的此类数据。这会使 std 的大小爆炸,并使其完全不适合嵌入式开发;无论如何,它可能并不关心这个。

当然,如果您只选择支持少数几种语言,则可以显着减少这一点……这是将其置于标准库之外的另一个理由。

关于localization - 如何在 Rust 中更改格式化程序的小数点分隔符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44576039/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com