当try 在我的PHP8.1高山 docker 容器中格式化货币时,我总是得到默认的区域设置(En_US).

$ docker run -it --rm php:8.1-fpm-alpine /bin/ash
# apk update && apk add icu-dev
# docker-php-ext-configure intl && docker-php-ext-install intl
# php -a
> $formatter = new NumberFormatter('nl_NL', NumberFormatter::CURRENCY);
> echo $formatter->getLocale();
en_US
> echo $formatter->format(1234.567);
€1,234.57

我预计getLocale()将返回NL_NL,Format将返回欧元1.234,57.

如果我try 区域设置en_GB,则getLocale()确实返回en_GB.

任何关于写出更好的问题的提示也是受欢迎的.

推荐答案

除了icu-dev包之外,还需要安装icu-data-full包.默认情况下,只安装了icu-data-en,如您所见,它包含美式英语和英式英语,但没有安装荷兰语.

拆分是在Alpine 3.16.0年引入的,可能是作为一种节省空间的措施:安装的完整程序包重约29MB,与图像的其余部分相比很大.

安装了完整的数据后,您的示例给出了

php > echo $formatter->getLocale();
nl_NL
php > echo $formatter->format(1234.567);
€ 1.234,57

不出所料.

Php相关问答推荐

自定义通知在Woocommerce我的帐户自定义端点页面上不起作用

PHP原始数据读取引发max_input_vars错误

WooCommerce短代码,显示特定产品的购物车徽章中的当前数量

如何在execute语句中使用存储过程参数?

模仿GUZLE中的curl 工作脚本(分块数据和二进制上传一起)

PHP按另一个二维数组的排序顺序对二维数组进行排序

从WooCommerce订单项目获取Dokan卖家详细信息

WooCommerce产品页面上没有产品详细信息

如何批量处理消息总线中的消息

在 PHP 中将字符串分解为数组(字符串类似于 WP 短代码)

PHP 解析 XML 以获取多个深度的所有字符串值

PHP - 计算非数值数组

Windows 身份验证在 IIS 中验证什么?我可以在我的情况下禁用匿名身份验证吗?

使用其ID查询和捕获与订单相关的其他详细信息的shopware 6方法

在WooCommerce我的账户单个订单页面中添加订单商品部分和按钮

如何在自定义消息中包含 WooCommerce 选定的产品变体详细信息

使用 Process facade 在外部 Laravel 项目上运行 Artisan 命令会返回主项目的数据库错误

按数字然后按字符串对关联 PHP 数组进行排序

如何从 PHP 中的字符串位置排除图像扩展名

在全局安装 Composer 包后运行命令