7 static const char *AvailLang[] = {
11 /* TODO: we skip the language weightening so far. */
12 /* Accept-Language: 'de-de,en-us;q=0.7,en;q=0.3' */
13 void httplang_to_locale(const char *LocaleString)
16 char *wanted_locales[10];
19 size_t len = strlen(LocaleString);
22 char *search = (char *) malloc(len);
25 // char *webcitdir = WEBCITDIR;
27 locale_t my_Empty_Locale;
29 // len = strlen(LocaleString);
30 memcpy(search, LocaleString, len);
32 /* the web browser sends '-', we need '_' */
33 for (i = 0; i < len; i++)
37 while ( !done && (nFound < 10)) {
38 if ((search[i] == ',') || (search[i] == ';') || (search[i] == '\0'))
40 if ((search[i] == ';') || (search[i] == '\0'))
43 wanted_locales[nFound] = (char *) &search[j];
52 if (nFound > 0) for (i = 0; i <= nFound; i++) {
53 for (j = 0; j < nAvail; j++) {
54 int ret = strncasecmp(wanted_locales[i],
56 strlen(wanted_locales[i]));
58 locale = (char *) AvailLang[j]; //wanted_locales[i];
68 memcpy(search, locale, len);
69 memcpy(&search[len], ".UTF8", 5);
70 search[len + 5] = '\0';
71 my_Empty_Locale = newlocale(LC_ALL_MASK, NULL, NULL); /* create default locale */
72 my_Locale = newlocale(LC_MESSAGES_MASK /*|LC_TIME_MASK FIXME */ ,
73 search, my_Empty_Locale);
76 // freelocale(my_Locale);
77 // freelocale(my_Empty_Locale);