我正在尝试使用localizeddate
在我的网站上以法语显示日期:
<td>{{ saison.start|localizeddate('medium', 'none') }}</td>
我遵循了各种文档,并且:
sudo pacman -S php-intl
composer require twig/extensions
composer require symfony/intl
我还编辑了config/services.yaml
来更改语言环境,但是它似乎没有效果:
parameters:
locale: 'fr'
我在文件config
packages \ twig_extensions.yaml`中启用了日期和国际扩展名:
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>
但是在这种情况下,我得到一个错误:
在呈现模板的过程中引发了异常(“ Symfony \ Component \ Intl \ DateFormatter \ IntlDateFormatter :: __ construct()方法的参数$ locale值'fr'行为未实现。仅语言环境” en“支持。请安装“ intl”扩展名以获得完整的本地化功能。“)
我不知道缺少什么。
答案 0 :(得分:0)
由于我没有找到正确的答案,所以这就是我解决问题的方式(因为我不需要国际支持):
localizedate
这并不令人满意,因为Codepen: https://codepen.io/Ages/pen/rNBRmRG
正是为此目的而完成的,但是与此同时它起作用。
答案 1 :(得分:0)
过滤器名称已更改。
现在,您应该使用format_datetime
软件包提供的twig/intl-extra
。
https://twig.symfony.com/doc/2.x/filters/format_datetime.html
答案 2 :(得分:0)
看起来 PHP intl 扩展没有正确安装,因为 symfony/intl
仅适用于 en
语言环境。
替换层仅限于 en
语言环境。如果您想使用其他语言环境,您应该install the intl extension。两者之间没有冲突,因为即使您使用扩展程序,此包仍然可以用于访问 ICU 数据。
https://symfony.com/doc/current/components/intl.html
如果您查找 __construct()
的 Symfony\Component\Intl\NumberFormatter
方法,您会明白为什么您的代码会引发此异常:
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