Thread (11 messages) flat view 11 messages, 4 authors, 2016-06-15

Re: [PATCH] http: Add Accept-Language header if possible

From: Peter Krefting <hidden>
Date: 2016-06-15 23:01:51

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.
+	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.
+				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.
+		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.



For reference, I have my LANGUAGE variable set to 
"sv_SE.utf8:sv:nb_NO.utf8:nb:da_DK.utf8:da:nn_NO.utf8:nn:en_GB.utf8:en_US.utf8:en"

-- 
\\// Peter - http://www.softwolves.pp.se/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help