Arabic-Indic digits and g_date_strftime()



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]