我可以使用我的.po
文件翻译个别月份或日期:
echo __('December'); //becomes diciembre
echo __('Thursday'); //becomes jueves
//...etc
但是,当我使用这样的日期格式时:
echo __(date("j F, Y")); //becomes 20 December 2012
它没有翻译 - 我假设因为我在各个行中每个月和每天都有翻译。
通常我会做这样的事情:
__(date('j')) . ' ' . __(date('F')) . ' ' . __(date('Y'));
但是,在CMS中,管理员可以将日期更改为他们想要的任何格式。所以,它可能是“j F,Y”或“Y-m-d”,或者......其他任何东西。
我想也许我可以做一个帮手或什么东西,把日期分成碎片,并将每个部分归还__()
,但是 - 这似乎有点过分了。有一个简单的方法吗?
我在AppController中设置我的语言环境:
setlocale(LC_ALL, $currentLanguage['locale']);
Configure::write('Config.language', $currentLanguage['code2']);
答案 0 :(得分:4)
原来CakePHP有一个TimeHelper i18nFormat
function:
$time = time();
$timestring = $this->Time->format('Y-m-d H:i:s', $time);
$this->Time->i18nFormat($timestring, "%A %e %B %Y");
创建一个文件“LC_TIME”(无扩展名)并将其放入您的/Locale/ara/
文件夹中(或用您想要的3-char语言代码替换'ara')
复制CakePHP's time_test LC_TIME file的内容并将其放入您的内容中(当然可以保存)。
然后将其内容更改为您想要的任何语言(我相信该示例是西班牙文)。
就是这样!
备注:强>
此处有关LC_TIME文件的更多详细信息:http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.jsp?topic=%2Fcom.ibm.aix.files%2Fdoc%2Faixfiles%2FLC_TIME.htm
答案 1 :(得分:1)
CakeTime
类(以及TimeHelper
)使用'cake'域进行日期和月份名称翻译。因此,请将这些翻译放在cake.po
文件中,而不是default.po