使用侦听器在Console命令中设置语言环境

时间:2013-12-10 15:40:29

标签: symfony symfony-2.3

我希望在我的configuration.yml文件中使用locale定义在控制台命令期间使用strftime函数。

由于我在控制台命令期间没有请求,会话等,所以我真的不知道如何以良好的方式实现这一点,而不会将其侵入代码。现在我的代码看起来像这样:

$date = "20131210";
$dateObject = \DateTime::createFromFormat("Ymd", $date);
setlocale(LC_ALL, $this->locale);
return strftime("%e %A %G", $dateObject->getTimestamp());

我真正想要的是一个以某种方式设置我的语言环境的监听器。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我知道这个问题有点陈旧但也许有人会发现以下情况有用,因为它不是那么明显。

如果您的命令类扩展ContainerAwareCommand,您可以使用$this->getContainer()->getParameter('locale')从配置中获取区域设置(我假设您已将区域设置定义为parameters.yml中的参数。

现在“不那么明显的部分”:首先,您应该检查系统支持的区域设置。在Linux服务器上,您可以在控制台中使用以下命令检查:

locale -a

它应该返回类似于:

的内容
C
en_US.utf8
pl_PL.utf8
POSIX

您只能使用该命令列出的区域设置。如果您使用例如pl_PL而不使用.utf8部分,则可能无效。

相关问题