Nik*_*nko 3 formatting perl numbers
我需要根据用户选择的语言格式化我的Web应用程序中的数字,例如德语中的1234.56 ="1.234,56".类似的东西sprintf目前是不可能的,因为它们依赖于LC_NUMERIC(这对桌面应用程序IMHO是明智的)而且我必须在服务器上生成每个语言环境,这是不行的.我更喜欢使用CLDR的格式化字符串,但没有找到合适的模块.我想拥有的是一个简单的说法:
set_locale("de_DE");
print format_number(1234.56);
Run Code Online (Sandbox Code Playgroud)
如何正确地做到这一点?
CPAN现在具有基于Unicode CLDR的CLDR :: Number数字,百分比和货币格式.
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'
Run Code Online (Sandbox Code Playgroud)
CLDR :: Number提供它使用的所有语言环境数据,目前来自CDLR v27,因此您不必依赖于不一致的操作系统语言环境数据.
| 归档时间: |
|
| 查看次数: |
1264 次 |
| 最近记录: |