[gitg] Make date/time format translatable



commit b1d292a8c92c6e1c67401239a6087c3b46a5e7a4
Author: Jesse van den Kieboom <jessevdk gnome org>
Date:   Thu Jul 10 15:30:49 2014 +0200

    Make date/time format translatable

 configure.ac                    |    1 +
 libgitg/Makefile.am             |    1 +
 libgitg/gitg-date.vala          |   64 ++++++++++++++++++++-
 vapi/GDesktopEnums-3.0.metadata |   17 ++++++
 vapi/gdesktop-enums-3.0.vapi    |  119 +++++++++++++++++++++++++++++++++++++++
 5 files changed, 199 insertions(+), 3 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index f294d98..d330e4f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -103,6 +103,7 @@ PKG_CHECK_MODULES(LIBGITG, [
        libgit2-glib-1.0 >= $LIBGIT2_GLIB_REQUIRED_VERSION
        gtk+-3.0 >= $GTK_REQUIRED_VERSION
        webkit2gtk-3.0 >= $WEBKITGTK_REQUIRED_VERSION
+       gsettings-desktop-schemas
        gee-0.8
        json-glib-1.0
 ])
diff --git a/libgitg/Makefile.am b/libgitg/Makefile.am
index 60b75e9..93d4426 100644
--- a/libgitg/Makefile.am
+++ b/libgitg/Makefile.am
@@ -29,6 +29,7 @@ libgitg_libgitg_1_0_la_VALAFLAGS =    \
        --pkg json-glib-1.0             \
        --pkg gio-unix-2.0              \
        --pkg gitg-js-utils             \
+       --pkg gdesktop-enums-3.0        \
        $(GITG_VALAFLAGS)               \
        --vapidir $(top_srcdir)/vapi    \
        --includedir libgitg            \
diff --git a/libgitg/gitg-date.vala b/libgitg/gitg-date.vala
index 7989060..19cff8e 100644
--- a/libgitg/gitg-date.vala
+++ b/libgitg/gitg-date.vala
@@ -31,6 +31,9 @@ public class Date : Object, Initable
        private static Regex s_iso8601;
        private static Regex s_internal;
 
+       private static Settings? s_gnome_interface_settings;
+       private static bool s_tried_gnome_interface_settings;
+
        private static string?[] s_months = new string?[] {
                null,
                "Jan",
@@ -302,6 +305,33 @@ public class Date : Object, Initable
                ((Initable)this).init(null);
        }
 
+       private bool is_24h
+       {
+               get
+               {
+                       if (s_gnome_interface_settings == null && !s_tried_gnome_interface_settings)
+                       {
+                               var source = SettingsSchemaSource.get_default();
+
+                               s_tried_gnome_interface_settings = true;
+
+                               var schema_id = "org.gnome.desktop.interface";
+
+                               if (source != null && source.lookup(schema_id, true) != null)
+                               {
+                                       s_gnome_interface_settings = new Settings(schema_id);
+                               }
+                       }
+
+                       if (s_gnome_interface_settings == null)
+                       {
+                               return false;
+                       }
+
+                       return s_gnome_interface_settings.get_enum("clock-format") == 
GDesktop.ClockFormat.24H;
+               }
+       }
+
        public string for_display()
        {
                var dt = d_datetime;
@@ -334,12 +364,40 @@ public class Date : Object, Initable
                        int rounded_days = (int) Math.round((float) t / TimeSpan.DAY);
                        return ngettext("A day ago", "%d days ago", rounded_days).printf(rounded_days);
                }
-               // FIXME: Localize these date formats, Bug 699196
                else if (dt.get_year() == new DateTime.now_local().get_year())
                {
-                       return dt.format("%h %e, %I:%M %P");
+                       if (is_24h)
+                       {
+                               /* Translators: this is a strftime type date format which is
+                                  used when the date is in the current year and uses a 24 hour
+                                  clock.*/
+                               return dt.format(_("%b %e, %H:%M"));
+                       }
+                       else
+                       {
+                               /* Translators: this is a strftime type date format which is
+                                  used when the date is in the current year and uses a 12 hour
+                                  clock.*/
+                               return dt.format(_("%b %e, %I:%M %p"));
+                       }
+               }
+               else
+               {
+                       if (is_24h)
+                       {
+                               /* Translators: this is a strftime type date format which is
+                                  used when the date is not in the current year and uses a 24
+                                  hour clock.*/
+                               return dt.format(_("%b %e %Y, %H:%M"));
+                       }
+                       else
+                       {
+                               /* Translators: this is a strftime type date format which is
+                                  used when the date is not in the current year and uses a 12
+                                  hour clock.*/
+                               return dt.format(_("%b %e %Y, %I:%M %p"));
+                       }
                }
-               return dt.format("%h %e %Y, %I:%M %P");
        }
 
        public Date.for_date_time(DateTime dt)
diff --git a/vapi/GDesktopEnums-3.0.metadata b/vapi/GDesktopEnums-3.0.metadata
new file mode 100644
index 0000000..cddb4fc
--- /dev/null
+++ b/vapi/GDesktopEnums-3.0.metadata
@@ -0,0 +1,17 @@
+BackgroundShading cheader_filename="gdesktop-enums.h"
+BackgroundStyle cheader_filename="gdesktop-enums.h"
+ClockFormat cheader_filename="gdesktop-enums.h"
+FocusMode cheader_filename="gdesktop-enums.h"
+FocusNewWindows cheader_filename="gdesktop-enums.h"
+MagnifierCaretTrackingMode cheader_filename="gdesktop-enums.h"
+MagnifierFocusTrackingMode cheader_filename="gdesktop-enums.h"
+MagnifierMouseTrackingMode cheader_filename="gdesktop-enums.h"
+MagnifierScreenPosition cheader_filename="gdesktop-enums.h"
+MouseDwellDirection cheader_filename="gdesktop-enums.h"
+MouseDwellMode cheader_filename="gdesktop-enums.h"
+ProxyMode cheader_filename="gdesktop-enums.h"
+ScreensaverMode cheader_filename="gdesktop-enums.h"
+TitlebarAction cheader_filename="gdesktop-enums.h"
+ToolbarIconSize cheader_filename="gdesktop-enums.h"
+ToolbarStyle cheader_filename="gdesktop-enums.h"
+VisualBellType cheader_filename="gdesktop-enums.h"
diff --git a/vapi/gdesktop-enums-3.0.vapi b/vapi/gdesktop-enums-3.0.vapi
new file mode 100644
index 0000000..f7e7d97
--- /dev/null
+++ b/vapi/gdesktop-enums-3.0.vapi
@@ -0,0 +1,119 @@
+/* gdesktop-enums-3.0.vapi generated by vapigen, do not modify. */
+
+[CCode (cprefix = "GDesktop", gir_namespace = "GDesktopEnums", gir_version = "3.0", lower_case_cprefix = 
"g_desktop_")]
+namespace GDesktop {
+       [CCode (cheader_filename = "gdesktop-enums.h", cprefix = "G_DESKTOP_BACKGROUND_SHADING_", has_type_id 
= false)]
+       public enum BackgroundShading {
+               SOLID,
+               VERTICAL,
+               HORIZONTAL
+       }
+       [CCode (cheader_filename = "gdesktop-enums.h", cprefix = "G_DESKTOP_BACKGROUND_STYLE_", has_type_id = 
false)]
+       public enum BackgroundStyle {
+               NONE,
+               WALLPAPER,
+               CENTERED,
+               SCALED,
+               STRETCHED,
+               ZOOM,
+               SPANNED
+       }
+       [CCode (cheader_filename = "gdesktop-enums.h", cprefix = "G_DESKTOP_CLOCK_FORMAT_", has_type_id = 
false)]
+       public enum ClockFormat {
+               @24H,
+               @12H
+       }
+       [CCode (cheader_filename = "gdesktop-enums.h", cprefix = "G_DESKTOP_FOCUS_MODE_", has_type_id = 
false)]
+       public enum FocusMode {
+               CLICK,
+               SLOPPY,
+               MOUSE
+       }
+       [CCode (cheader_filename = "gdesktop-enums.h", cprefix = "G_DESKTOP_FOCUS_NEW_WINDOWS_", has_type_id 
= false)]
+       public enum FocusNewWindows {
+               SMART,
+               STRICT
+       }
+       [CCode (cheader_filename = "gdesktop-enums.h", cprefix = "G_DESKTOP_MAGNIFIER_CARET_TRACKING_MODE_", 
has_type_id = false)]
+       public enum MagnifierCaretTrackingMode {
+               NONE,
+               CENTERED,
+               PROPORTIONAL,
+               PUSH
+       }
+       [CCode (cheader_filename = "gdesktop-enums.h", cprefix = "G_DESKTOP_MAGNIFIER_FOCUS_TRACKING_MODE_", 
has_type_id = false)]
+       public enum MagnifierFocusTrackingMode {
+               NONE,
+               CENTERED,
+               PROPORTIONAL,
+               PUSH
+       }
+       [CCode (cheader_filename = "gdesktop-enums.h", cprefix = "G_DESKTOP_MAGNIFIER_MOUSE_TRACKING_MODE_", 
has_type_id = false)]
+       public enum MagnifierMouseTrackingMode {
+               NONE,
+               CENTERED,
+               PROPORTIONAL,
+               PUSH
+       }
+       [CCode (cheader_filename = "gdesktop-enums.h", cprefix = "G_DESKTOP_MAGNIFIER_SCREEN_POSITION_", 
has_type_id = false)]
+       public enum MagnifierScreenPosition {
+               NONE,
+               FULL_SCREEN,
+               TOP_HALF,
+               BOTTOM_HALF,
+               LEFT_HALF,
+               RIGHT_HALF
+       }
+       [CCode (cheader_filename = "gdesktop-enums.h", cprefix = "G_DESKTOP_MOUSE_DWELL_DIRECTION_", 
has_type_id = false)]
+       public enum MouseDwellDirection {
+               LEFT,
+               RIGHT,
+               UP,
+               DOWN
+       }
+       [CCode (cheader_filename = "gdesktop-enums.h", cprefix = "G_DESKTOP_MOUSE_DWELL_MODE_", has_type_id = 
false)]
+       public enum MouseDwellMode {
+               WINDOW,
+               GESTURE
+       }
+       [CCode (cheader_filename = "gdesktop-enums.h", cprefix = "G_DESKTOP_PROXY_MODE_", has_type_id = 
false)]
+       public enum ProxyMode {
+               NONE,
+               MANUAL,
+               AUTO
+       }
+       [CCode (cheader_filename = "gdesktop-enums.h", cprefix = "G_DESKTOP_SCREENSAVER_MODE_", has_type_id = 
false)]
+       public enum ScreensaverMode {
+               BLANK_ONLY,
+               RANDOM,
+               SINGLE
+       }
+       [CCode (cheader_filename = "gdesktop-enums.h", cprefix = "G_DESKTOP_TITLEBAR_ACTION_", has_type_id = 
false)]
+       public enum TitlebarAction {
+               TOGGLE_SHADE,
+               TOGGLE_MAXIMIZE,
+               TOGGLE_MAXIMIZE_HORIZONTALLY,
+               TOGGLE_MAXIMIZE_VERTICALLY,
+               MINIMIZE,
+               NONE,
+               LOWER,
+               MENU
+       }
+       [CCode (cheader_filename = "gdesktop-enums.h", cprefix = "G_DESKTOP_TOOLBAR_ICON_SIZE_", has_type_id 
= false)]
+       public enum ToolbarIconSize {
+               SMALL,
+               LARGE
+       }
+       [CCode (cheader_filename = "gdesktop-enums.h", cprefix = "G_DESKTOP_TOOLBAR_STYLE_", has_type_id = 
false)]
+       public enum ToolbarStyle {
+               BOTH,
+               BOTH_HORIZ,
+               ICONS,
+               TEXT
+       }
+       [CCode (cheader_filename = "gdesktop-enums.h", cprefix = "G_DESKTOP_VISUAL_BELL_", has_type_id = 
false)]
+       public enum VisualBellType {
+               FULLSCREEN_FLASH,
+               FRAME_FLASH
+       }
+}


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]