2012-04-01 7 views
0

Ich arbeite an einer mehrsprachigen Anwendung mit PHP5 und gettext.Relative Zeit mit GetText

Rightnow Ich möchte eine relative Zeit zeigen, aber ich habe einige Probleme damit, während die mehrsprachige beibehalten.

Ich versuchte Google googlen für eine Lösung, aber konnte keinen richtigen Weg finden, um es zu tun und konnte nicht die Änderungen auf eigene Faust zu bekommen.

Ich hoffe, Sie haben eine Lösung dafür.

+0

Was meinst du mit der relativen Zeit? –

+0

Wahrscheinlich "vor 5 Minuten", etc. http://stackoverflow.com/questions/18685/how-to-display-12-minutes-ago-etc-in-a-php-webpage Möchten Sie erklären, welches Problem du hast? – Basti

+0

Ein üblicher Weg ist 'printf (_ ('% d Sekunden her'), $ Sekunden)'. Auf diese Weise müssen die Übersetzungen nur wissen, dass die Konvertierungsspezifikation vorhanden ist, ohne sich um den tatsächlichen Wert zu kümmern. – salathe

Antwort

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)) 
               )); 
} 

?> 

Das ist meine Lösung.

+0

Könnte etwas mehr Informationen hinzufügen, weil es irgendwie "schwer" zu verstehen ist, wenn man es einfach liest. Vielen Dank;) –

0

Wenn Sie eine clientseitige Implementierung verwenden möchten, empfiehlt es sich, http://timeago.yarp.com/ abzufragen. Sie nimmt Server Side Load ab, bietet bessere Optionen für das Caching und unterstützt mehrsprachig.