From: Wilfried Göesgens Date: Tue, 29 Dec 2009 18:07:36 +0000 (+0000) Subject: * apply r8166 from the davrework-branch: X-Git-Tag: v7.86~551 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=872126a0434d55d26d5c337673e33f61f60427c3 * apply r8166 from the davrework-branch: * make the template loader recursive; now t/ can contain subdirectories * create the template key from the directory relative to t/ with '/' seperated by _ : * t/knrooms/rooms.html is represented as knrooms_rooms so it would be equal to t/knrooms_rooms.html * have an optional dbg/ directory next to t; this will be used for creating special templates for debugging / testing --- diff --git a/webcit/gettext.c b/webcit/gettext.c index e38d269ac..58facf121 100644 --- a/webcit/gettext.c +++ b/webcit/gettext.c @@ -67,10 +67,10 @@ void httplang_to_locale(StrBuf *LocaleString, wcsession *sess) StrBuf *Buf = NULL; StrBuf *SBuf = NULL; - nParts=StrBufNum_tokens(LocaleString,','); - for (i=0; ((i 1) { int sbuflen, k; - StrBufExtract_token(SBuf,Buf, 1,'='); - sbuflen=StrLength(SBuf); - for (k=0; kpriority=StrTol(SBuf); + ls->priority = StrTol(SBuf); } else { - ls->priority=1000; + ls->priority = 1000; } + /** get the locale part */ - StrBufExtract_token(SBuf ,Buf, 0, ';'); + StrBufExtract_token(SBuf, Buf, 0, ';'); + /** get the lang part, which should be allways there */ - extract_token(&ls->lang[0], ChrPtr(SBuf), 0, '-', 16); + extract_token(&ls->lang[0], + ChrPtr(SBuf), + 0, '-', + sizeof(ls->lang)); + /** get the area code if any. */ - if (StrBufNum_tokens(SBuf,'-') > 1) { - extract_token(&ls->region[0],ChrPtr(SBuf),1,'-',16); + if (StrBufNum_tokens(SBuf, '-') > 1) { + extract_token(&ls->region[0], + ChrPtr(SBuf), + 1, '-', + sizeof(ls->region)); } else { /** no ara code? use lang code */ blen=strlen(&ls->lang[0]); - memcpy(&ls->region[0], ls->lang,blen); - ls->region[blen]='\0'; - } /** area codes are uppercase */ - blen=strlen(&ls->region[0]); - for (j=0; jregion[0], ls->lang, blen); + ls->region[blen] = '\0'; + } + + /** area codes are uppercase */ + blen = strlen(&ls->region[0]); + for (j = 0; j < blen; j++) { - int chars=toupper(ls->region[j]); - ls->region[j]=(char)chars;/** \todo ?! */ + int chars; + chars = toupper(ls->region[j]); + ls->region[j] = (char)chars;/** \todo ?! */ } - sprintf(&lbuf[0],"%s_%s",&ls->lang[0],&ls->region[0]); + snprintf(&lbuf[0], + sizeof(lbuf), + "%s_%s", + &ls->lang[0], + &ls->region[0]); /** check if we have this lang */ - ls->availability=1; - ls->selectedlang=-1; - for (j=0; javailability = 1; + ls->selectedlang = -1; + for (j = 0; j < nLocalesLoaded; j++) { int result; /** match against the LANG part */ - result=strcasecmp(&ls->lang[0], AvailLangLoaded[j]); - if ((result<0)&&(resultavailability)){ - ls->availability=result; - ls->selectedlang=j; + result = strcasecmp(&ls->lang[0], AvailLangLoaded[j]); + if ((result < 0) && (result < ls->availability)){ + ls->availability = result; + ls->selectedlang = j; } /** match against lang and locale */ - if (0==strcasecmp(&lbuf[0], AvailLangLoaded[j])){ - ls->availability=0; - ls->selectedlang=j; - j=nLocalesLoaded; + if (0 == strcasecmp(&lbuf[0], AvailLangLoaded[j])){ + ls->availability = 0; + ls->selectedlang = j; + j = nLocalesLoaded; } } } - prio=0; - av=-1000; - nBest=-1; - for (i=0; ((iavailability<=0)&& - (avavailability)&& - (priopriority)&& - (ls->selectedlang!=-1)) { - nBest=ls->selectedlang; - av=ls->availability; - prio=ls->priority; + prio = 0; + av = -1000; + nBest = -1; + for (i = 0; ((i < nParts) && (iavailability <= 0) && + (av < ls->availability) && + (prio < ls->priority) && + (ls->selectedlang != -1)) { + nBest = ls->selectedlang; + av = ls->availability; + prio = ls->priority; } } if (nBest == -1) { /** fall back to C */ nBest=0; } - sess->selected_language=nBest; + sess->selected_language = nBest; lprintf(9, "language found: %s\n", AvailLangLoaded[WC->selected_language]); FreeStrBuf(&Buf); FreeStrBuf(&SBuf); @@ -207,7 +223,7 @@ void tmplput_offer_languages(StrBuf *Target, WCTemplputParams *TP) void set_selected_language(const char *lang) { #ifdef HAVE_USELOCALE int i; - for (i=0; iselected_language = i; }