[gitg] Make date/time format translatable
- From: Jesse van den Kieboom <jessevdk src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gitg] Make date/time format translatable
- Date: Thu, 10 Jul 2014 13:31:05 +0000 (UTC)
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]