当前位置: 首页 > 知识库问答 >
问题:

设置Symfony 2.5应用程序的区域设置(强制区域设置)

郭翰墨
2023-03-14

我想强制我的Symfony 2.5应用程序的区域设置为ru_RU. UTF-8。我希望这个区域设置用于strftime()函数

我的app/config中有以下配置。yml

framework:
    default_locale: "ru_RU.UTF-8"

我正在我的一个控制器中使用以下代码来调试:

//setlocale(LC_TIME, 'ru_RU.UTF-8');
var_dump(setlocale(LC_TIME, 0));
var_dump(strftime('%B', time()));
die();

当这样执行时,它显示:string(1)“C”string(6)“August”

但是,当第一行未注释时,它会显示:string(11)“ru_ru.UTF-8”string(12)“АБГСС”,因此区域设置已安装在系统中并正常工作。

我如何使Symfony始终使用配置中指定的语言环境?

$locale-a:

C
C.UTF-8
en_US.utf8
POSIX
ru_RU
ru_RU.iso88595
ru_RU.utf8

共有2个答案

沈枫涟
2023-03-14

任何基于setlocale()(如@Wouter J的回答)的解决方案迟早会让您头疼,因为它依赖于当前机器的区域设置。所以,无论何时切换服务器,它都可能停止工作。而且,开发服务器和生产服务器之间可能存在差异。

一个更好的方法是删除strftime()以支持IntlDateFor事::formatObject

\IntlDateFormatter::formatObject($entity->getTimestamp(), \IntlDateFormatter::FULL, 'de_AT');

这只需要安装PHPintl扩展。PHP的本机\IntlDateFor事也有一个Symfony替换,但我想只有当您没有可用的intl扩展时,这才是必要的。

对于Twig,您可以使用本地化日期过滤器。安装说明:https://stackoverflow.com/a/24390635/1668200

黎曾笑
2023-03-14

Symfony的区域设置不会影响PHP设置,它只是Symfony设置。

您必须使用setlocale()来配置PHP的语言环境。您可以将其放置在前端控制器中(web/app.phpweb/app\u dev.php)或为内核创建侦听器。要求

 类似资料:
  • 我正在开发一个应用程序,我显式地将应用程序的语言环境设置为阿拉伯语。然而,我想收集英语的电话号码。我如何才能将EditText和TextView的语言环境显式地设置为美国英语。 下面是我如何设置应用程序区域设置的。我有一门助手课 在我的活动中,我在中使用这个助手,如下所示: 如何分别为我们设置EditText或TextView的区域设置?

  • 我正在尝试使用Android构建系统中的重新配置和重新配置。 Android Studio 1.2.2版 我在我的项目中遇到了这两个选项的问题,所以我用android studio启动了一个新的空白项目。我附加了我的版本。gradle,我只在下面添加了重新配置“en”,“fr” 定义了2种基本口味 然后我创建了2个字符串。xml文件并翻译了hello\u world默认标签 /src/main/r

  • 我安装了三个区域设置捆绑包: JMSi18nRoutingBundle 我的如下所示: 一切都按我的喜好工作,除了我在日志中发现了一个错误: 在堆栈中我发现:的区域设置,但是,我不明白如何将区域设置设置为“en_US”。 我想它来自于对Lunetics的猜测,但是有“en_US”的人应该匹配“en”,而不是“en_US”。 我的主要问题是,我不知道如何跟踪这一点。当我用自己的设置连接到主页时,首先

  • 我刚开始使用symfony,我正在尝试建立一个multilang网站,但是我在更改区域设置时遇到了一个问题 我读了一些帖子,也读了相关文档,但语言环境没有改变,我尝试: 但是$locale中的值总是'en'(我的默认语言环境) 我也试试 在本例中,$locale是fr,但翻译总是来自消息。ENyml 我想第一次使用$\u SERVER['HTTP\u ACCEPT\u LANGUAGE']检测用户

  • 在*NIX系统上,您可以执行来获取可用区域设置的列表。 什么是Windows中的等效命令(或操作)? 我在Internet上看到过列表,但大多数列表都是区域设置标签,而不是实际的区域设置名称。另外,并不是所有的系统都保证全部安装,对吧? 注意,这里我对“locale”的定义是“locale字符串”,即C的的第二个参数,它将导致一个非空的返回值。 编程答案也很好,我只是厌倦了用暴力猜测Windows