web-dev-qa-db-fra.com

Comment installer l'extension Intl pour Twig

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?

23
julestruong

Installer l'extension PHP intl

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.

Installer les extensions Twig

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.

Ajout de l'extension à Twig

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());

Ajout de l'extension à Twig (dans Symfony)

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 }

Définir les paramètres régionaux

Locale::setDefault('nl-NL');

Définir les paramètres régionaux dans Symfony

Éditer app/config/config.yml:

parameters:
    locale: nl
54
Nic Wortel

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 ..

0
Suhaib Ahmad