Twig:根据当前语言环境显示月份的名称

Posted

技术标签:

【中文标题】Twig:根据当前语言环境显示月份的名称【英文标题】:Twig: show the name of the months based on the current locale 【发布时间】:2012-07-28 12:09:11 【问题描述】:

我只是想根据当前语言环境显示月份的名称。

 event.date|date('F') 

但月份总是以英文显示...

我试过下面这段代码我发现here,但是结果是一样的……

class Helper_Twig extends Twig_Extension

    public function getFilters()
    
        return array(
            'datetime' => new Twig_Filter_Method($this, 'datetime')
        );
    

    public function datetime($d, $format = "%B %e")
    
        if ($d instanceof \DateTime) 
            $d = $d->getTimestamp();
        

        return strftime($format, $d);
    

    public function getName()
    
        return 'Helper';
    

注意:在控制器中,我使用$request->getLocale 检查当前语言环境,它对应于我在parameters.yml 中切换的语言环境参数。

有什么问题?

【问题讨论】:

【参考方案1】:

您可以使用SonataIntlBundle 来处理本地化的日期表示。 Intl 库需要安装。

【讨论】:

我建议改用 Twig 的 Intl 扩展。见***.com/a/23424315/1001110 它没有提供只显示翻译月份的方法。【参考方案2】:

由于你定义了datetimeTwigFilter,你不必调用 event.date|date('F')

相反,您应该将其称为 event.date|datetime('%B')

【讨论】:

【参考方案3】:

您可能还没有在您的 php 中安装 PHP intl-library。 http://php.net/manual/de/book.intl.php

【讨论】:

【参考方案4】:

如果您已经安装了IntlExtension,您可以将format_datetime 与自定义模式一起使用。

 event.date|format_datetime(pattern="MMMM") 

文档:

https://twig.symfony.com/doc/3.x/filters/format_datetime.html https://unicode-org.github.io/icu/userguide/format_parse/datetime/#datetime-format-syntax

【讨论】:

以上是关于Twig:根据当前语言环境显示月份的名称的主要内容,如果未能解决你的问题,请参考以下文章

Android:使用语言环境解析月份

用户当前语言环境的货币符号

Fullcalendar 语言环境不更改 v5 中的标题栏

如何更改格式化日期的语言环境?

PrimeFaces语言环境无法正常工作

Ubuntu 设置中文语言环境