]> git.0d.be Git - empathy.git/blobdiff - libempathy/empathy-time.c
Updated Polish translation
[empathy.git] / libempathy / empathy-time.c
index 9eec8adc0cea0795d4a4e746eacb3a8b41a25de9..a39636dde6f0101c14382dd7585504c1b0c1bc98 100644 (file)
@@ -14,8 +14,8 @@
  *
  * You should have received a copy of the GNU General Public
  * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA  02110-1301  USA
  *
  * Authors: Richard Hult <richard@imendio.com>
  */
@@ -25,6 +25,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <glib/gi18n.h>
 
 #include "empathy-time.h"
 
@@ -39,18 +40,18 @@ empathy_time_get_current (void)
 time_t
 empathy_time_get_local_time (struct tm *tm)
 {
-       const gchar *timezone;
+       const gchar *tz;
        time_t       t;
-       
-       timezone = g_getenv ("TZ");
+
+       tz = g_getenv ("TZ");
        g_setenv ("TZ", "", TRUE);
 
        tzset ();
 
        t = mktime (tm);
 
-       if (timezone) {
-               g_setenv ("TZ", timezone, TRUE);
+       if (tz) {
+               g_setenv ("TZ", tz, TRUE);
        } else {
                g_unsetenv ("TZ");
        }
@@ -122,3 +123,47 @@ empathy_time_to_string_local (time_t       t,
        return g_strdup (stamp);
 }
 
+gchar  *
+empathy_time_to_string_relative (time_t then)
+{
+       time_t now;
+       gint   seconds;
+
+       now = time (NULL);
+       seconds = now - then;
+
+       if (seconds > 0) {
+               if (seconds < 60) {
+                       return g_strdup_printf (ngettext ("%d second ago",
+                               "%d seconds ago", seconds), seconds);
+               }
+               else if (seconds < (60 * 60)) {
+                       seconds /= 60;
+                       return g_strdup_printf (ngettext ("%d minute ago",
+                               "%d minutes ago", seconds), seconds);
+               }
+               else if (seconds < (60 * 60 * 24)) {
+                       seconds /= 60 * 60;
+                       return g_strdup_printf (ngettext ("%d hour ago",
+                               "%d hours ago", seconds), seconds);
+               }
+               else if (seconds < (60 * 60 * 24 * 7)) {
+                       seconds /= 60 * 60 * 24;
+                       return g_strdup_printf (ngettext ("%d day ago",
+                               "%d days ago", seconds), seconds);
+               }
+               else if (seconds < (60 * 60 * 24 * 30)) {
+                       seconds /= 60 * 60 * 24 * 7;
+                       return g_strdup_printf (ngettext ("%d week ago",
+                               "%d weeks ago", seconds), seconds);
+               }
+               else {
+                       seconds /= 60 * 60 * 24 * 30;
+                       return g_strdup_printf (ngettext ("%d month ago",
+                               "%d months ago", seconds), seconds);
+               }
+       }
+       else {
+               return g_strdup (_("in the future"));
+       }
+}