【问题标题】:Symfony 4: use localizeddateSymfony 4:使用本地化日期
【发布时间】:2019-05-26 14:22:52
【问题描述】:

我正在尝试使用 localizeddate 在我的网站上显示法语日期:

<td>{{ saison.start|localizeddate('medium', 'none') }}</td>

我遵循了各种文档并且:

  • 我安装了 PHP Intl 扩展:sudo pacman -S php-intl
  • 我在 Symfony 上安装了 Twig 扩展:composer require twig/extensions
  • 以及国际扩展:composer require symfony/intl

我也编辑了config/services.yaml更改了语言环境,但似乎没有效果:

parameters:
    locale: 'fr'

我在 configpackages\twig_extensions.yaml` 文件中启用了 Date 和 Intl 扩展:

services:
    _defaults:
        public: false
        autowire: true
        autoconfigure: true

    # Uncomment any lines below to activate that Twig extension
    #Twig\Extensions\ArrayExtension: ~
    Twig\Extensions\DateExtension: ~
    Twig\Extensions\IntlExtension: ~
    #Twig\Extensions\TextExtension: ~

但我在输出文件中仍然有英文显示的日期。

我还尝试在localizeddate 中更清楚地指定语言环境,如下所示:

<td>{{ saison.start|localizeddate('medium', 'none', 'fr') }}</td>

但在这种情况下我得到一个错误:

在渲染模板期间抛出异常(“The Symfony\Component\Intl\DateFormatter\IntlDateFormatter::__construct() 方法的参数 $locale value 'fr' 行为未实现。只有语言环境“en”受支持。请安装“intl”扩展以获得完整的本地化功能。”)。

我不知道缺少什么。

【问题讨论】:

  • 我也有同样的问题,你解决了吗?
  • 不,不是。我改用:&lt;date variable&gt;|date('d/m/Y')

标签: php symfony4


【解决方案1】:

过滤器名称已更改。 您现在应该使用twig/intl-extra 包提供的format_datetime

https://twig.symfony.com/doc/2.x/filters/format_datetime.html

【讨论】:

    【解决方案2】:

    由于我没有找到正确的答案,这就是我解决问题的方法(因为我不需要国际支持):

    <date variable>|date('d/m/Y')
    

    这并不令人满意,因为 localizedate 正是为此目的而完成的,但与此同时它也能发挥作用。

    【讨论】:

      【解决方案3】:

      似乎未正确安装 PHP 国际扩展,因为 symfony/intl 仅适用于 en 语言环境。

      替换层仅限于en 语言环境。如果你想使用其他语言环境,你应该install the intl extension。两者之间没有冲突,因为即使您使用扩展,此包仍然可以用于访问 ICU 数据。

      https://symfony.com/doc/current/components/intl.html

      如果您查找 Symfony\Component\Intl\NumberFormatter__construct() 方法,您会看到您的代码引发此异常的原因:

      if ('en' !== $locale && null !== $locale) {
         throw new MethodArgumentValueNotImplementedException(__METHOD__, 'locale', $locale, 'Only the locale "en" is supported');
      }
      

      https://github.com/symfony/intl/blob/v4.0.0/NumberFormatter/NumberFormatter.php#L262

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-13
        • 2010-10-08
        相关资源
        最近更新 更多