gpt4 book ai didi

perl - 如何在 Perl 中格式化特定于区域设置的数字?

转载 作者:行者123 更新时间:2023-12-01 04:39:15 25 4
gpt4 key购买 nike

我需要根据用户选择的语言在我的网络应用程序中格式化数字,例如1234.56 = 德语中的“1.234,56”。像 sprintf 这样的东西目前没有问题,因为它们依赖于 LC_NUMERIC (这对于桌面应用程序恕我直言)并且我必须在服务器上生成每个语言环境,这是不行的。我更喜欢使用 CLDR的格式化字符串,但没有找到合适的模块。简而言之,我想要的是:

set_locale("de_DE");
print format_number(1234.56);

如何正确地做到这一点?

最佳答案

CPAN 现在有 CLDR::Number用于基于 Unicode CLDR 的数字、百分比和货币格式。

use CLDR::Number;
my $cldr = CLDR::Number->new(locale => 'de-DE'); # or 'de_DE'

my $decf = $cldr->decimal_formatter;
say $decf->format(1234.5); # '1.234,5'

my $curf = $cldr->currency_formatter(currency_code => 'EUR');
say $curf->format(1234.5); # '1.234,50 €'

$curf->locale('de-AT'); # Austrian German
say $curf->format(1234.5); # '€ 1.234,50'

CLDR::Number 提供它使用的所有语言环境数据,目前来自 CDLR v27,因此您不必依赖不一致的操作系统语言环境数据。

关于perl - 如何在 Perl 中格式化特定于区域设置的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/801401/

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