diff options
author | Damon Chaplin <damon@ximian.com> | 2002-01-12 08:24:57 +0800 |
---|---|---|
committer | Damon Chaplin <damon@src.gnome.org> | 2002-01-12 08:24:57 +0800 |
commit | 8ac60f4e7e10b80d2c854c5bd76a9dde5b361656 (patch) | |
tree | 001bfb86edf966ee3e8cad16381c2ac4c3f55646 /widgets/e-timezone-dialog | |
parent | b2512674a0f8ccb34b631c16c3c24fdc201c9f12 (diff) | |
download | gsoc2013-evolution-8ac60f4e7e10b80d2c854c5bd76a9dde5b361656.tar.gz gsoc2013-evolution-8ac60f4e7e10b80d2c854c5bd76a9dde5b361656.tar.zst gsoc2013-evolution-8ac60f4e7e10b80d2c854c5bd76a9dde5b361656.zip |
translate timezone names, and provide a function to get back to the
2002-01-11 Damon Chaplin <damon@ximian.com>
* e-timezone-dialog/e-timezone-dialog.[hc]: translate timezone names,
and provide a function to get back to the English version.
svn path=/trunk/; revision=15303
Diffstat (limited to 'widgets/e-timezone-dialog')
-rw-r--r-- | widgets/e-timezone-dialog/e-timezone-dialog.c | 54 | ||||
-rw-r--r-- | widgets/e-timezone-dialog/e-timezone-dialog.h | 13 |
2 files changed, 56 insertions, 11 deletions
diff --git a/widgets/e-timezone-dialog/e-timezone-dialog.c b/widgets/e-timezone-dialog/e-timezone-dialog.c index d8ba5d9a4c..293f2a0680 100644 --- a/widgets/e-timezone-dialog/e-timezone-dialog.c +++ b/widgets/e-timezone-dialog/e-timezone-dialog.c @@ -26,7 +26,6 @@ #include <gtk/gtkentry.h> #include <gtk/gtklabel.h> #include <gnome.h> -#include <ical.h> #include <glade/glade.h> #include <widgets/misc/e-map.h> #include "e-timezone-dialog.h" @@ -205,8 +204,7 @@ e_timezone_dialog_add_timezones (ETimezoneDialog *etd) gtk_widget_show (listitem); gtk_container_add (GTK_CONTAINER (combo->list), listitem); - /* Note: We don't translate timezone names at the moment. */ - listitem = gtk_list_item_new_with_label ("UTC"); + listitem = gtk_list_item_new_with_label (_("UTC")); gtk_widget_show (listitem); gtk_container_add (GTK_CONTAINER (combo->list), listitem); @@ -219,7 +217,7 @@ e_timezone_dialog_add_timezones (ETimezoneDialog *etd) zone = icalarray_element_at (zones, i); - location = icaltimezone_get_location (zone); + location = _(icaltimezone_get_location (zone)); e_map_add_point (priv->map, location, icaltimezone_get_longitude (zone), @@ -246,7 +244,6 @@ e_timezone_dialog_construct (ETimezoneDialog *etd) /* Load the content widgets */ - g_print ("Loading: %s\n", EVOLUTION_GLADEDIR "/e-timezone-dialog.glade"); priv->xml = glade_xml_new (EVOLUTION_GLADEDIR "/e-timezone-dialog.glade", NULL); if (!priv->xml) { @@ -495,6 +492,8 @@ on_map_button_pressed (GtkWidget *w, GdkEventButton *event, gpointer data) } +/* Returns the translated timezone location of the fiven EMapPoint, + e.g. "Europe/London", in the current locale's encoding (not UTF-8). */ static char* get_zone_from_point (ETimezoneDialog *etd, EMapPoint *point) @@ -527,7 +526,7 @@ get_zone_from_point (ETimezoneDialog *etd, zone_latitude - 0.005 <= latitude && zone_latitude + 0.005 >= latitude) { - return icaltimezone_get_location (zone); + return _(icaltimezone_get_location (zone)); } } @@ -540,7 +539,9 @@ get_zone_from_point (ETimezoneDialog *etd, /* Returns the TZID of the timezone set, and optionally its displayed name. The TZID may be NULL, in which case the builtin timezone with the city name of display_name should be used. If display_name is also NULL or "", then it - is assumed to be a 'local time'. */ + is assumed to be a 'local time'. Note that display_name may be translated, + so you need to convert it back to English before trying to load it. + It will be in the GTK+ encoding, i.e. not UTF-8. */ char* e_timezone_dialog_get_timezone (ETimezoneDialog *etd, char **display_name) @@ -562,7 +563,8 @@ e_timezone_dialog_get_timezone (ETimezoneDialog *etd, /* Sets the TZID and displayed name of the timezone. The TZID may be NULL for a 'local time' (i.e. display_name is NULL or "") or if it is a builtin timezone which hasn't been loaded yet. (This is done so we don't load - timezones until we really need them.) */ + timezones until we really need them.) The display_name should be the + translated name in the GTK+ - it will be displayed exactly as it is. */ void e_timezone_dialog_set_timezone (ETimezoneDialog *etd, char *tzid, @@ -625,7 +627,7 @@ find_selected_point (ETimezoneDialog *etd) zone = icalarray_element_at (zones, i); - location = icaltimezone_get_location (zone); + location = _(icaltimezone_get_location (zone)); if (!strcmp (current_zone, location)) { double zone_longitude, zone_latitude; @@ -679,3 +681,37 @@ e_timezone_dialog_reparent (ETimezoneDialog *etd, gtk_widget_reparent (priv->table, new_parent); } + + +/* Returns the builtin timezone corresponding to display_name, which is + the translated location, e.g. 'Europe/London', in the locale's encoding. + If display_name is NULL or "" it returns NULL. */ +icaltimezone* +e_timezone_dialog_get_builtin_timezone (char *display_name) +{ + icalarray *zones; + int i; + + /* If the field is empty, return NULL (i.e. a floating time). */ + if (!display_name || !display_name[0]) + return NULL; + + /* Check for UTC. */ + if (!strcmp (display_name, _("UTC"))) + return icaltimezone_get_utc_timezone (); + + /* Get the array of builtin timezones. */ + zones = icaltimezone_get_builtin_timezones (); + + for (i = 0; i < zones->num_elements; i++) { + icaltimezone *zone; + char *location; + + zone = icalarray_element_at (zones, i); + location = icaltimezone_get_location (zone); + if (!strcmp (display_name, _(location))) + return zone; + } + + return NULL; +} diff --git a/widgets/e-timezone-dialog/e-timezone-dialog.h b/widgets/e-timezone-dialog/e-timezone-dialog.h index 2496532109..00283b4bc4 100644 --- a/widgets/e-timezone-dialog/e-timezone-dialog.h +++ b/widgets/e-timezone-dialog/e-timezone-dialog.h @@ -24,6 +24,7 @@ #include <libgnome/gnome-defs.h> #include <gtk/gtkwidget.h> +#include <ical.h> @@ -59,14 +60,17 @@ ETimezoneDialog* e_timezone_dialog_new (void); /* Returns the TZID of the timezone set, and optionally its displayed name. The TZID may be NULL, in which case the builtin timezone with the city name of display_name should be used. If display_name is also NULL or "", then it - is assumed to be a 'local time'. */ + is assumed to be a 'local time'. Note that display_name may be translated, + so you need to convert it back to English before trying to load it. + It will be in the GTK+ encoding, i.e. not UTF-8. */ char* e_timezone_dialog_get_timezone (ETimezoneDialog *etd, char **display_name); /* Sets the TZID and displayed name of the timezone. The TZID may be NULL for a 'local time' (i.e. display_name is NULL or "") or if it is a builtin timezone which hasn't been loaded yet. (This is done so we don't load - timezones until we really need them.) */ + timezones until we really need them.) The display_name should be the + translated name in the GTK+ - it will be displayed exactly as it is. */ void e_timezone_dialog_set_timezone (ETimezoneDialog *etd, char *tzid, char *display_name); @@ -76,6 +80,11 @@ GtkWidget* e_timezone_dialog_get_toplevel (ETimezoneDialog *etd); void e_timezone_dialog_reparent (ETimezoneDialog *etd, GtkWidget *new_parent); +/* Returns the builtin timezone corresponding to display_name, which is + the translated location, e.g. 'Europe/London', in the GTK+ encoding. + If display_name is NULL or "" it returns NULL. */ +icaltimezone* e_timezone_dialog_get_builtin_timezone (char *display_name); + #endif /* __E_TIMEZONE_DIALOG_H__ */ |