Php 与GetText的相对时间

Php 与GetText的相对时间,php,time,gettext,Php,Time,Gettext,我正在使用php5和gettext开发一个多语言应用程序 现在我想展示一个相对的时间,但是我在保持多语言的同时遇到了一些问题 我试着用谷歌搜索一个解决方案,但找不到一个合适的方法,也无法让我自己的改变生效 我希望您已经找到了解决方案。 <?php function getRelativeTime($date) { $diff = time() - strtotime($date); if ($diff<60) return strtr(ngettex

我正在使用php5和gettext开发一个多语言应用程序

现在我想展示一个相对的时间,但是我在保持多语言的同时遇到了一些问题

我试着用谷歌搜索一个解决方案,但找不到一个合适的方法,也无法让我自己的改变生效

我希望您已经找到了解决方案。


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

?>

这是我的解决方案。

如果您不介意使用客户端实现,您可能需要签出
它减轻了服务器端的负载,提供了更好的缓存选项,并具有多语言支持

相对时间是什么意思?可能是“5分钟前”,等等。您想解释一下您遇到了什么问题吗?一种常见的方法是
printf(u(“%d秒前”),$seconds)
。这样,翻译只需要知道转换规范的存在,而不必关心实际的价值。可以添加更多的信息,因为仅仅通过阅读就有点“难以”理解您的代码。非常感谢;)