将时间文本翻译成另一种语言

时间:2014-06-24 19:29:44

标签: cakephp cakephp-2.0 translation

我如何在我的应用程序中翻译默认的Cake php时间助手字符串,我在Cake php中使用了一个名为timeAgoInWords的函数,它从时间助手函数中给出了一个像{{{{{{ 1}}。

我想把它翻译成另一种语言,我该怎么做?我搜索了文档,但我没有得到任何东西。

5 hours, 52 minutes ago

1 个答案:

答案 0 :(得分:0)

您需要一个定制的助手来完成您的工作。 timeAgoInWords助手不会给你的单词替换单词的灵活性。

在此处,在View/Helper

下创建一个名为 TimeagoHelper.php 的文件

我不确定您要翻译哪种语言,我会用英文写,您可以替换您的文字。

<?php

App::uses('AppHelper', 'View/Helper');


class TimeagoHelper extends AppHelper {

    public function __construct(View $view, $settings = array()) {
        parent::__construct($view, $settings);
    }


    public function timeago($datetime) {
        $datetime1 = new DateTime($datetime);
        $datetime2 = new DateTime('now');
        $obj = $datetime1->diff($datetime2);
        if($obj->days == 1) {
            $time = $obj->format('%a day'); // Replace your word
        } elseif($obj->days == 0) {
            if($obj->h == 0) {
                if($obj->i == 0) {
                    $time = $obj->s . ' seconds'; // Replace your word
                } else {
                    $time = $obj->i . ' minutes'; // Replace your word
                }
            } else {
                $time = $obj->h . ' hours'; // Replace your word
            }
        } else {
            $time = $obj->format('%a days'); // Replace your word
        }
        return $time.' ago'; // Replace your word
    }
}

在您的操作或控制器中加载此帮助程序。

我一直在使用php 5.5,因为我不确定它是否适用于较小的版本,即不记得是否允许连续几秒钟和几分钟。 Incase,它不起作用,将它们分配给变量并连接它们。

在View .ctp文件中使用它,如下所示:

$this->Timeago->timeago($question['Question']['created']);

PS:CakeTime也派上用场,查看api的可能性。

干杯!