commit 8e6479d33cf85df7ed284f2a5fee404c7797e40f Author: David Fifield david@bamsoftware.com Date: Sat May 4 12:34:10 2013 -0700
Walk over an array of language codes, not just a single code.
My idea is that we can get this information from the Accept-Language header if not present in the "lang" parameter. --- proxy/flashproxy.js | 30 +++++++++++++++++++++--------- 1 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/proxy/flashproxy.js b/proxy/flashproxy.js index 7455321..c3e6305 100644 --- a/proxy/flashproxy.js +++ b/proxy/flashproxy.js @@ -369,10 +369,17 @@ function get_param_byte_count(query, param, default_val) { return parse_byte_count(spec); }
-/* Return the user's preferred IETF language tag, or undefined if there is no - language preference. */ -function get_lang() { - return get_param_string(query, "lang"); +/* Return an array of the user's preferred IETF language tags, in descending order + of priority. Return an empty array in case of no preference. */ +function get_langs() { + var param, result; + + result = []; + param = get_param_string(query, "lang"); + if (param !== undefined) + result.push(param); + + return result; }
/* Parse an address in the form "host:port". Returns an Object with @@ -871,10 +878,15 @@ var LOCALIZATIONS = { }; var DEFAULT_LOCALIZATION = { filename: "badge.png", text: "Internet Freedom" }; /* Return an object with "filename" and "text" keys appropriate for the given - language code. Returns a default value if there is no localization for the - code. */ -function get_badge_localization(code) { - return LOCALIZATIONS[code] || DEFAULT_LOCALIZATION; + array of language codes. Returns a default value if there is no localization + for any of the codes. */ +function get_badge_localization(langs) { + for (var i = 0; i < langs.length; i++) { + var localization = LOCALIZATIONS[langs[i]]; + if (localization !== undefined) + return localization; + } + return DEFAULT_LOCALIZATION; }
/* The usual embedded HTML badge. The "elem" member is a DOM element that can be @@ -895,7 +907,7 @@ function Badge() { a.setAttribute("target", "_blank"); td.appendChild(a); img = document.createElement("img"); - var localization = get_badge_localization(get_lang()); + var localization = get_badge_localization(get_langs()); img.setAttribute("src", localization.filename); img.setAttribute("alt", localization.text); a.appendChild(img);
tor-commits@lists.torproject.org