2014-06-24 72 views
0

如何在我的應用程序中翻譯默認的Cake php時間幫助字符串,我在Cake php中使用了一個函數timeAgoInWords,它從時間幫助器函數中爲我提供了一個文本,如5 hours, 52 minutes ago將時間文本翻譯成另一種語言

我想將其翻譯成另一種語言,我該怎麼做?我搜查了文件,但沒有收到任何東西。

<?php echo $this->Time->timeAgoInWords($question['Question']['created']) ?> 
+0

不知道任何其他信息,我會說最簡單的方法是用str_replace簡單地用正確的語言替換英文單詞。 –

+0

我該怎麼做? – osos

+0

http://www.php.net//manual/en/function.str-replace.php –

回答

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,因爲相當長的一段時間,我不確定它是否適用於較小的版本,即不記得是否允許concat在秒和分鐘內完成。 Incase,它不起作用,將它們分配給變量並連接它們。

用它查看的.ctp文件像這樣:

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

PS:CakeTime就派上用場了太多,檢查出api的可能性。

乾杯!

+0

請注意:這不是標準助手的樣子。這只是爲了讓您的工作儘可能少地進行迭代。通過實施本地化提高了靈活性 - 這將是更標準的方法。 – Karma

+1

沒有必要使用自定義幫助程序,只需要對CakeTime進行本地化! – ndm

+0

嘿,太棒了!我不知道'CakeTime'!爲您的評論+1。我會編輯我的答案。不過,這個定製助手也不錯...我寫了一個快速破解工具來完成任務!這就是全部:)另外,請檢查我的第一條評論,我確實提到過,標準助手應該不是這樣,只是OP的快速入門。 – Karma

相關問題