L'extension Intl est une extension pour Twig qui ajoute les filtres localizeddate
, localizednumber
et localizedcurrency
. Comment puis-je installer et configurer l'extension de manière à pouvoir utiliser ces filtres dans mes modèles Twig?
Tout d’abord, vous aurez besoin de l’extension PHP intl , car l’extension Twig s’appuie sur celle-ci. L'extension Twig Intl lève une exception si l'extension PHP intl n'est pas activée. Les instructions d'installation peuvent être trouvées dans la documentation officielle PHP.
Sur les machines Ubuntu/Debian, c'est aussi simple que d'exécuter la commande suivante:
Sudo apt-get install php5-intl
Sur les machines Windows, vous devrez probablement supprimer la mise en commentaire de la ligne suivante dans le fichier php.ini:
extension=php_intl.dll
Pour CentOS ou d’autres architectures, suivez les instructions ici . Notez que CentOS nécessite à la fois l’installation de PECL et du compilateur GCC C++: yum install php-pear
et yum install gcc-c++
.
Une fois l'extension ajoutée à php.ini, redémarrez le serveur Web.
Ensuite, vous aurez besoin du paquet Twig Extensions (qui contient l’extension Intl, entre autres), qui peut être installé à l’aide de Composer. Exécutez cette commande dans la ligne de commande:
composer require twig/extensions ^1.2
Cela va ajouter la dépendance à votre composer.json
et le télécharger.
Remarque: les filtres localizednumber
et localizedcurrency
ont été introduits dans la version 1.2.0. Vous devez donc au moins utiliser cette version si vous souhaitez les utiliser.
Si vous utilisez Twig dans un simple projet PHP, vous pouvez ajouter l'extension à l'aide de la méthode addExtension()
.
$twig = new Twig_Environment($loader);
$twig->addExtension(new Twig_Extensions_Extension_Intl());
Si vous utilisez une application Symfony, vous pouvez ajouter l'extension à Twig à l'aide de la configuration du service dans app/config/services.yml
:
services:
twig.extension.intl:
class: Twig_Extensions_Extension_Intl
tags:
- { name: twig.extension }
Locale::setDefault('nl-NL');
Éditer app/config/config.yml
:
parameters:
locale: nl
Après l'installation de l'extension, si vous trouvez l'erreur suivante: Vous avez tenté de charger la classe "IntlTimeZone" à partir de l'espace de noms global. Avez-vous oublié une instruction "use"? Il vous suffit d'éditer la ligne 54 du fichier:
vendor/twig/lib/Twig/Extensions/Extension/Intl.php
et le remplacer pour:
if (PHP_VERSION_ID < 50500 || !class_exists('IntlTimeZone')) {
Cela a fonctionné pour moi ..