Intl extension是Twig的扩展,它添加了localizeddate,localizednumber和localizedcurrency过滤器.如何安装和设置扩展程序,以便在Twig模板中使用这些过滤器?
解决方法:
安装PHP intl扩展
首先,你需要PHP intl extension,因为Twig扩展是建立在它之上的.如果未启用PHP intl扩展,Twig Intl扩展将抛出异常. Installation instructions可以在官方PHP文档中找到.
在Ubuntu / Debian机器上,这就像运行以下命令一样简单:
sudo apt install php-intl
在Windows机器上,您可能必须取消注释php.ini中的以下行:
extension=php_intl.dll
对于CentOS或其他体系结构,请按照说明here进行操作.请注意,CentOS需要安装PECL和GCC C编译器:yum install php-pear和yum install gcc-c.
将扩展名添加到php.ini后,重新启动Web服务器.
安装Twig Extensions
接下来,您将需要Twig Extensions程序包(包含Intl扩展名等),可以使用Composer进行安装.在命令行中运行此命令:
composer require twig/extensions
这将为您的composer.json添加依赖项并下载它.
注意:版本1.2.0中引入了localizednumber和localizedcurrency过滤器,因此如果要使用它们,则至少需要该版本.
将扩展名添加到Twig
如果您直接使用Twig(即不在Symfony项目中),请手动将扩展名添加到Twig环境中:
<?php
use Twig\Environment;
use Twig\Extensions\IntlExtension;
$twig = new Environment($loader);
$twig->addExtension(new IntlExtension());
将扩展添加到Twig(在Symfony中)
如果您使用的是Symfony应用程序,则可以通过创建服务并将其标记为config / services.yml中的Twig扩展名来将扩展名添加到Twig:
services:
twig.extension.intl:
class: Twig\Extensions\IntlExtension
tags:
- { name: twig.extension }
设置默认语言环境
<?php
Locale::setDefault('nl-NL');
在Symfony中设置默认语言环境
在config / framework.yaml中,取消注释default_locale设置:
framework:
default_locale: en