【问题标题】:How to install the Intl extension for Twig如何为 Twig 安装 Intl 扩展
【发布时间】:2014-11-14 22:19:18
【问题描述】:

Intl extension 是 Twig 的扩展,它添加了 localizeddatelocalizednumberlocalizedcurrency 过滤器。如何安装和设置扩展,以便在我的 Twig 模板中使用这些过滤器?

【问题讨论】:

    标签: php twig intl twig-extension


    【解决方案1】:

    在 Symfony 3/4/5 中,启用自动配置功能后,就像将扩展注册为服务一样简单:

    // config/services.yaml
    
    services:
        …
    
        Twig\Extensions\IntlExtension: ~ 
    

    【讨论】:

    • 2020 年更新:FQCN 似乎有变化,我不得不使用Twig\Extra\Intl\IntlExtension: ~
    【解决方案2】:

    安装 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-pearyum install gcc-c++

    将扩展添加到 php.ini 后,重新启动 Web 服务器。

    安装 Twig 扩展

    接下来,您将需要 Twig Extensions 包(其中包含 Intl 扩展等),它可以使用 Composer 安装。在命令行中运行这个命令:

    composer require twig/extensions
    

    这会将依赖项添加到您的composer.json 并下载它。

    注意:localizednumberlocalizedcurrency 过滤器是在 1.2.0 版中引入的,因此如果要使用它们,至少需要该版本。

    将扩展添加到 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
    

    【讨论】:

    • 对于 Symfony,配置更改应该在:app/config/services.yml
    • 我不得不改用Twig\Extra\Intl\IntlExtension,但除此之外,对config/services.yaml 的修改很有魅力!
    猜你喜欢
    • 2013-01-18
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 2016-03-21
    • 2018-11-14
    • 2013-09-24
    • 2012-04-30
    相关资源
    最近更新 更多