1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
Description: Display time on the greeter in accordance with the system wide settings in Language Support.
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=651506
Bug-Ubuntu: https://launchpad.net/bugs/777264
Forwarded: yes
Author: Gunnar Hjalmarsson <ubuntu@gunnar.cc>
diff -Nur -x '*.orig' -x '*~' gdm-3.0.0//gui/simple-greeter/gdm-clock-widget.c gdm-3.0.0.new//gui/simple-greeter/gdm-clock-widget.c
--- gdm-3.0.0//gui/simple-greeter/gdm-clock-widget.c 2011-04-04 16:37:16.000000000 +0200
+++ gdm-3.0.0.new//gui/simple-greeter/gdm-clock-widget.c 2011-06-05 23:55:31.140297043 +0200
@@ -30,6 +30,7 @@
#include <errno.h>
#include <dirent.h>
#include <sys/stat.h>
+#include <locale.h>
#include <glib.h>
#include <glib/gi18n.h>
@@ -60,39 +61,23 @@
static void
update_time_format (GdmClockWidget *clock)
{
+ time_t t;
+ struct tm *tm;
+ char ampm[16];
char *clock_format;
char *tooltip_format;
- if (clock->priv->should_show_date && clock->priv->should_show_seconds) {
- /* translators: This is the time format to use when both
- * the date and time with seconds are being shown together.
- */
- clock_format = _("%a %b %e, %l:%M:%S %p");
- tooltip_format = NULL;
- } else if (clock->priv->should_show_date && !clock->priv->should_show_seconds) {
- /* translators: This is the time format to use when both
- * the date and time without seconds are being shown together.
- */
- clock_format = _("%a %b %e, %l:%M %p");
-
- tooltip_format = NULL;
- } else if (!clock->priv->should_show_date && clock->priv->should_show_seconds) {
- /* translators: This is the time format to use when there is
- * no date, just weekday and time with seconds.
- */
- clock_format = _("%a %l:%M:%S %p");
-
- /* translators: This is the time format to use for the date
- */
- tooltip_format = "%x";
+ time (&t);
+ tm = localtime (&t);
+ setlocale(LC_TIME, "");
+ strftime(ampm, sizeof(ampm), "%p", tm);
+
+ if (strlen(ampm) > 0) {
+ clock_format = "%l:%M %p";
} else {
- /* translators: This is the time format to use when there is
- * no date, just weekday and time without seconds.
- */
- clock_format = _("%a %l:%M %p");
-
- tooltip_format = "%x";
+ clock_format = "%H:%M";
}
+ tooltip_format = "%x";
g_free (clock->priv->time_format);
clock->priv->time_format = g_locale_from_utf8 (clock_format, -1, NULL, NULL, NULL);
@@ -113,6 +98,8 @@
{
time_t t;
struct tm *tm;
+ char showed_time[32];
+ char weekday[32];
char buf[256];
char *utf8;
char *markup;
@@ -123,10 +110,15 @@
g_warning ("Unable to get broken down local time");
return;
}
- if (strftime (buf, sizeof (buf), clock_format, tm) == 0) {
+ if (strftime (showed_time, sizeof (showed_time), clock_format, tm) == 0) {
g_warning ("Couldn't format time: %s", clock_format);
- strcpy (buf, "???");
+ strcpy (showed_time, "???");
}
+
+ setlocale( LC_TIME, getenv("LC_MESSAGES") );
+ strftime(weekday, sizeof(weekday), "%a", tm);
+ sprintf(buf, "%s %s", weekday, showed_time);
+
utf8 = g_locale_to_utf8 (buf, -1, NULL, NULL, NULL);
markup = g_strdup_printf ("<b><span foreground=\"white\">%s</span></b>", utf8);
gtk_label_set_markup (label, markup);
@@ -134,6 +126,7 @@
g_free (utf8);
if (tooltip_format != NULL) {
+ setlocale(LC_TIME, "");
if (strftime (buf, sizeof (buf), tooltip_format, tm) == 0) {
g_warning ("Couldn't format tooltip date: %s", tooltip_format);
strcpy (buf, "???");
|