25 #include "gnc-locale-utils.h" 28 #include <glib/gi18n.h> 32 gnc_lconv_set_utf8 (
char **p_value,
char *default_value)
34 char *value = *p_value;
37 if ((value == NULL) || (value[0] == 0))
38 value = default_value;
43 size_t count = mbstowcs (NULL, value, 0);
47 wchar_t *wvalue = g_malloc ((count + 1) *
sizeof(
wchar_t));
48 count = mbstowcs (wvalue, value, count + 1);
51 *p_value = g_utf16_to_utf8 (wvalue, -1, NULL, NULL, NULL);
57 *p_value = g_locale_to_utf8 (value, -1, NULL, NULL, NULL);
64 *p_value = default_value;
69 gnc_lconv_set_char (
char *p_value,
char default_value)
71 if ((p_value != NULL) && (*p_value == CHAR_MAX))
72 *p_value = default_value;
78 static struct lconv lc;
79 static gboolean lc_set = FALSE;
86 gnc_lconv_set_utf8(&lc.decimal_point,
".");
87 gnc_lconv_set_utf8(&lc.thousands_sep,
",");
88 gnc_lconv_set_utf8(&lc.grouping,
"\003");
89 gnc_lconv_set_utf8(&lc.int_curr_symbol,
"USD ");
90 gnc_lconv_set_utf8(&lc.currency_symbol,
"$");
91 gnc_lconv_set_utf8(&lc.mon_decimal_point,
".");
92 gnc_lconv_set_utf8(&lc.mon_thousands_sep,
",");
93 gnc_lconv_set_utf8(&lc.mon_grouping,
"\003");
94 gnc_lconv_set_utf8(&lc.negative_sign,
"-");
95 gnc_lconv_set_utf8(&lc.positive_sign,
"");
97 gnc_lconv_set_char(&lc.frac_digits, 2);
98 gnc_lconv_set_char(&lc.int_frac_digits, 2);
99 gnc_lconv_set_char(&lc.p_cs_precedes, 1);
100 gnc_lconv_set_char(&lc.p_sep_by_space, 0);
101 gnc_lconv_set_char(&lc.n_cs_precedes, 1);
102 gnc_lconv_set_char(&lc.n_sep_by_space, 0);
103 gnc_lconv_set_char(&lc.p_sign_posn, 1);
104 gnc_lconv_set_char(&lc.n_sign_posn, 1);
112 gnc_locale_default_iso_currency_code (
void)
114 static char *code = NULL;
120 lc = gnc_localeconv ();
122 code = g_strdup (lc->int_curr_symbol);
135 gnc_locale_decimal_places (
void)
137 static gboolean got_it = FALSE;
144 lc = gnc_localeconv();
145 places = lc->frac_digits;
154 gchar *gnc_locale_name (
void)
157 return g_win32_getlocale();
159 return g_strdup (setlocale(LC_ALL, NULL));