2012-04-01 10 views
0

私はphp5とgettextを使って多言語アプリケーションを開発しています。GetTextの相対時間

私は相対時間を表示したいと思いますが、多言語を維持しながら、いくつかの問題があります。

私はgoogleの解決策を試しましたが、適切な方法を見つけることができず、自分自身で変更することができませんでした。

私はあなたにこれの解決策があることを願っています。

+0

相対時間ではどういう意味ですか? –

+0

おそらく "5分前"など。http://stackoverflow.com/questions/18685/how-to-display-12-minutes-ago-etc-in-a-php-webpage問題を説明するのに気を付けるあなたは持っていますか? – Basti

+0

一般的な方法の1つは 'printf(_( '%d秒前')、$秒)'です。そうすれば、変換は、実際の値を気にすることなく変換仕様を表示することを知っているだけです。 – salathe

答えて

0
<?php 

function getRelativeTime($date) { 
    $diff = time() - strtotime($date); 
    if ($diff<60) 
     return strtr(ngettext("vor einer Sekunde", "vor %time% Sekunden", $diff), array("%time%" => $diff)); 
    $diff = round($diff/60); 
    if ($diff<60) 
     return strtr(ngettext("vor einer Minute", "vor %time% Minuten", $diff), array("%time%" => $diff)); 
    $diff = round($diff/60); 
    if ($diff<24) 
     return strtr(ngettext("vor einer Stunde", "vor %time% Stunden", $diff), array("%time%" => $diff)); 
    $diff = round($diff/24); 
    if ($diff<7) 
     return strtr(ngettext("vor einem Tag", "vor %time% Tagen", $diff), array("%time%" => $diff)); 
    $diff = round($diff/7); 
    if ($diff<4) 
     return strtr(ngettext("vor einer Woche", "vor %time% Wochen", $diff), array("%time%" => $diff)); 
    $diff = round($diff/4); 
    if ($diff<12) 
     return strtr(ngettext("vor einem Monat", "vor %time% Monaten", $diff), array("%time%" => $diff)); 
    return strtr(_("am %date% um %time%"), array("%time%" => strftime('%X', strtotime($date)), 
               "%date%" => strftime('%x', strtotime($date)) 
               )); 
} 

?> 

これは私のソリューションです。

+0

ちょっと読めば、あなたのことを理解するのはちょっと難しいので、ちょっとした情報を追加することができます。 ありがとうございます;) –

0

あなたは、クライアント側の実装を使用して大丈夫なら、あなたはhttp://timeago.yarp.com/ をチェックアウトする場合がありますこれは、サーバ側の負荷を脱いで、キャッシングのためのより良いオプションを提供し、多言語をサポートしています。