2014-07-09 19:40 GMT+09:00 Peter Krefting <peter@xxxxxxxxxxxxxxxx>: > Yi EungJun: > > >> Example: >> LANGUAGE= -> "" >> LANGUAGE=ko -> "Accept-Language: ko; q=1.000, *; q=0.001" >> LANGUAGE=ko:en -> "Accept-Language: ko; q=1.000, en; q=0.999, *; q=0.001" > > > Avoid adding "q=1.000". It is redundant (the default for any unqualified > language names is 1.0, and additionally there has historically been some > buggy servers that failed if it was included. Ok, I'll fix it. > > >> + p1 = getenv("LANGUAGE"); > > > You need a fallback mechanism here to parse all the possible language > variables. I would use the first one I find of these: > > 1. LANGUAGE > 2. LC_ALL > 3. LC_MESSAGES > 4. LANG > > Only "LANGUAGE" holds a colon-separated list, but the same code can parse > all of them, just yielding a single entry for the others. I'll use setlocale(LC_MESSAGES, NULL) as well as getenv("LANGUAGE"). > > >> + strbuf_add(buf, p1, p2 - p1); > > > The tokens are on the form language_COUNTRY.encoding@identifier, whereas > Accept-Language wants language-COUNTRY, so you need to a) replace "_" with > "-", and b) chop off anything following a "." or "@". > > >> + strbuf_addf(buf, "; q=%.3f", q); >> + q -= 0.001; > > > Three decimals seems a bit overkill, but some experimentation might be > necessary. I'll use three decimals only if there are 100 or more preferred languages. > > >> + strbuf_addstr(buf, "*; q=0.001\r\n"); > > > You should probably also add an explicit "en" here, if none was already > included. I've seen some servers break horribly if "en" isn't included. I'll send Accept-Language only if there is at least one preferred language. Is it enough? Thanks for your review. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html