2

.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”或“Ymd”,或者......其他任何东西。

我想也许我可以做一个助手或其他东西,将日期分解成碎片,并返回 a 中的每个部分__(),但是 - 这似乎有点矫枉过正。是否有捷径可寻?

我在 AppController 中设置我的语言环境:

setlocale(LC_ALL, $currentLanguage['locale']);
Configure::write('Config.language', $currentLanguage['code2']);
4

2 回答 2

4

原来 CakePHP 有一个TimeHelperi18nFormat函数

$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/文件夹中(或将“ara”替换为您想要的任何 3 字符语言代码)

复制CakePHP 的 time_test LC_TIME 文件的内容并将其放入您的文件中(当然要保存)。

然后将其内容更改为您想要的任何语言(我相信该示例是西班牙语)。

就是这样!

笔记:

此处有关 LC_TIME 文件的更多详细信息:http: //pic.dhe.ibm.com/infocenter/aix/v6r1/index.jsp ?topic=%2Fcom.ibm.aix.files%2Fdoc%2Faixfiles%2FLC_TIME.htm

于 2012-12-20T23:34:42.060 回答
1

该类CakeTime(因此也是TimeHelper)使用“蛋糕”域进行日期和月份名称的翻译。所以把这些翻译放在cake.po文件中而不是default.po

于 2012-12-20T19:59:59.977 回答