Arabic-Indic digits and g_date_strftime()
- From: Gaurav Jain <gaurav anywhere gmail com>
- To: gtk-app-devel-list gnome org, gtk-i18n-list gnome org
- Cc:
- Subject: Arabic-Indic digits and g_date_strftime()
- Date: Fri, 30 Sep 2005 13:32:29 +0530
Hi,
I'm trying to print a date onto a GtkLabel in "ar_SA" (arabic) locale. For
this, I'm using the API g_date_strftime(), in which the format being passed
is "%c" (to use the current locale's prefered format).
The problem is that the output generated is a corrupt value, such as
"[??????? %.1d ????? 2005 %.1H:00:00] (the ? stands for an arabic character,
which is probably fine, but the actual corruption is due to the unwanted
"%.1d" and "%.1H" in the output). What I really want is the Arabic-Indic
representation of the date, in which all the numerals are in the
arabic-indic digits, but this is obviously not producing that.
Could any one point out what I'm doing wrong here (or how to achive my
goal)?
Thanks,
Gaurav
---sample program that I'm using follows ------
#include <stdio.h>
#include <stdlib.h>
#include <gtk/gtk.h>
#include <gdk/gdk.h>
#include <locale.h>
int main(int argc, char *argv[])
{
GtkWidget *window;
GtkWidget *vbox, *hbox;
GtkWidget *label;
/* set the default locale - ar_SA for this particular test */
setlocale(LC_ALL, "");
/* generate the date string */
char buffer[400] = "";
char format[] = "%c";
char *utf8_format = g_locale_to_utf8(format, -1, NULL, NULL, NULL);
GDate dateRec;
dateRec.day = 30;
dateRec.month = 9;
dateRec.year = 2005;
if (g_date_strftime(buffer, sizeof(buffer), utf8_format, &dateRec) == 0)
buffer[0] = '\0';
printf("buffer is [%s]\n", buffer);
gtk_init (&argc, &argv);
/* create a new window */
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_set_size_request (GTK_WIDGET (window), 200, 100);
gtk_window_set_title (GTK_WINDOW (window), "Date");
g_signal_connect (G_OBJECT (window), "destroy",
G_CALLBACK (gtk_main_quit), NULL);
g_signal_connect_swapped (G_OBJECT (window), "delete_event",
G_CALLBACK (gtk_widget_destroy),
G_OBJECT (window));
vbox = gtk_vbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (window), vbox);
gtk_widget_show (vbox);
/* create new label with the date buffer */
label = gtk_label_new(buffer);
gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE, 0);
gtk_widget_show (label);
hbox = gtk_hbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (vbox), hbox);
gtk_widget_show (hbox);
gtk_widget_show (window);
gtk_main();
return 0;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]