2017-02-15 83 views
-1

我尝试本地化数据输出。setLocale()in Controller Laravel

setlocale(LC_TIME, 'et_EE.utf8'); 
echo strftime("%H:%M %A, %d %B"); 

取而代之的是爱沙尼亚语我用英文格式获得它。 但是,如果我在Job类中这样做 - 一切都好。 在我的控制器我没有叫setlocale()不再只是一次setlocale(LC_TIME, 'et_EE.utf8');

+0

我不明白什么是你所面临的问题,你会澄清? –

+0

我需要在爱沙尼亚Langugage(日期)的这个例子中得到结果,但是我得到了英文variant.But如果这个代码在Job类(laravel框架)中执行 - 只有当我尝试在Controller中执行时,所有ok.Problem。 –

+0

哦,好吧.. 你能告诉我什么是底层操作系统? 在Linux中,它取决于安装的语言环境 –

回答

0

结帐链接,它描述了你俩的方式配置级别设置以及更改时区的飞行
Stackoverflow

Laracast

+0

问题不在于时区。为勘察:2月1日星期三在爱沙尼亚语应显示 - 1 VeebruarKolmapäev –

+0

好的,那么你需要获得用户的时区和每次将数据转换为用户时区。请检查此代码,它将数据转换为存储在Cookie中的时区[$ new_date = \ Carbon :: createFromFormat($ format,$ date) - > setTimezone(Cookie :: get('timezone')); if($ type =='object'){ return $ new_date; } else { return $ new_date-> format($ format); }' – Webinion

+0

您需要转换语言,或者您需要转换日期的时区? – Webinion

0

第一总之,对我来说这很奇怪,以至于set_locale在一个地方而不是另一个地方工作,因为php不会干涉set_locale,因为它直接调用具有相同名称的C函数。

在Linux上,语言环境必须安装在您的系统中。 要检查哪些语言环境支持使用命令 locale -a

你必须看到这样

en_US.utf8 
et_EE.utf8 

列表要添加的语言环境,它不同于系统到另一个

的Ubuntu检查this

对于Arch和其他人,请编辑/etc/locale.gen并取消注释所需语言环境。然后运行sudo locale-gen

瞧你的代码将工作..

+0

Exacly - it从laravel中的其他类完成。但是在我称之为控制器的地方,我把结果放在日志文件中 - 而我看到的是 - echo setlocale(LC_TIME,'et_EE。UTF8' );返回给我空结果:( –

+0

'set_locale'是php的一部分,完全不是laravel ..所以你的谈话对我来说是无意义的..这需要更多的挖掘 任何方式尝试这个答案,并告诉我它是否成功。 –