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
This commit is contained in:
Damon Chaplin
2002-01-12 00:24:57 +00:00
committed by Damon Chaplin
parent b2512674a0
commit 8ac60f4e7e
4 changed files with 69 additions and 11 deletions

View File

@ -1,3 +1,8 @@
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.
2001-10-24 Jon Trowbridge <trow@ximian.com>
* menus/gal-view-menus.c (gal_view_menus_apply): Ref the

View File

@ -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;
}

View File

@ -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__ */

View File

@ -2412,6 +2412,14 @@ e_calendar_item_mark_days (ECalendarItem *calitem,
if (month_offset == end_month_offset && day > end_day)
break;
if (month_offset < -1 || month_offset > calitem->rows * calitem->cols)
g_warning ("Bad month offset: %i\n", month_offset);
if (day < 1 || day > 31)
g_warning ("Bad day: %i\n", day);
#if 0
g_print ("Marking Month:%i Day:%i\n", month_offset, day);
#endif
calitem->styles[(month_offset + 1) * 32 + day] = day_style;
day++;