Intl extension は、Twigの拡張で、localizeddate
、localizednumber
、localizedcurrency
フィルターを追加します。 Twig=テンプレートでこれらのフィルターを使用できるように拡張機能をインストールして設定できますか?
まず、 PHP intl extension が必要になります。これは、Twig拡張機能がその上に構築されているためです。Twig PHP intl拡張が有効になっていない場合、Intl拡張は例外をスローします。 インストール手順 は公式の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サーバーを再起動します。
次に、Composerを使用してインストールできる Twig Extensions パッケージ(特にIntl拡張を含む)が必要になります。コマンドラインで次のコマンドを実行します。
composer require twig/extensions
これにより、依存関係がcomposer.json
に追加され、ダウンロードされます。
注:localizednumber
およびlocalizedcurrency
フィルターはバージョン1.2.0で導入されたため、それらを使用するには少なくともそのバージョンが必要です。
Twigを直接使用する場合(つまり、Symfonyプロジェクトではない場合)、Twig環境に手動で拡張機能を追加します。
<?php
use Twig\Environment;
use Twig\Extensions\IntlExtension;
$twig = new Environment($loader);
$twig->addExtension(new IntlExtension());
Symfonyアプリケーションを使用している場合、サービスを作成し、それをTwig内のconfig/services.yml
の拡張機能としてタグ付けすることにより、拡張機能をTwigに追加できます:
services:
twig.extension.intl:
class: Twig\Extensions\IntlExtension
tags:
- { name: twig.extension }
<?php
Locale::setDefault('nl-NL');
config/framework.yaml
で、default_locale
設定のコメントを外します。
framework:
default_locale: en
拡張機能のインストール後、次のエラーが見つかった場合:グローバル名前空間からクラス「IntlTimeZone」をロードしようとしました。 「使用」ステートメントを忘れましたか?ファイルの54行目を編集するだけです:
vendor/twig/lib/Twig/Extensions/Extension/Intl.php
それを次のように置き換えます。
if (PHP_VERSION_ID < 50500 || !class_exists('IntlTimeZone')) {
それは私のために働いた..