From 04b0beba0d6b0a7ee51957ea75dae49a3a2eb276 Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Thu, 5 Sep 2013 11:03:36 +0300 Subject: [PATCH] Do not discard user-specified languages from intl.accept_languages when switching staff client locale. Signed-off-by: Pasi Kallinen --- Open-ILS/xul/staff_client/chrome/content/util/mozilla.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/Open-ILS/xul/staff_client/chrome/content/util/mozilla.js b/Open-ILS/xul/staff_client/chrome/content/util/mozilla.js index a5cbe8ca8e..fb2a191141 100644 --- a/Open-ILS/xul/staff_client/chrome/content/util/mozilla.js +++ b/Open-ILS/xul/staff_client/chrome/content/util/mozilla.js @@ -58,13 +58,24 @@ util.mozilla.change_locale = function( locale ) { var current_locale = 'en-US'; try { current_locale = util.mozilla.prefs().getCharPref('general.useragent.locale'); } catch(E) { alert('util.locale.change, prefs() = ' + E); } if (locale != current_locale) { + var accept_langs; + try { accept_langs = util.mozilla.prefs().getCharPref('intl.accept_languages').split(","); } catch(E) { } + if (typeof(accept_langs)!='undefined' && accept_langs.length) { + var locre = new RegExp('\\b' + locale + '\\b'); + for (var i = accept_langs.length-1; i >= 0; i--) + if (accept_langs[i].match(locre)) + accept_langs.splice(i, 1); + accept_langs.unshift(locale); + } else { + accept_langs = new Array(locale); + } util.mozilla.prefs().setCharPref('general.useragent.locale',locale); - util.mozilla.prefs().setCharPref('intl.accept_languages',locale); + util.mozilla.prefs().setCharPref('intl.accept_languages',accept_langs.join()); util.mozilla.chromeRegistry().reloadChrome(); } } catch(E) { - alert('FIXME: util.mozilla.change_locale( "' + locale + ") = " + E); + alert('FIXME: util.mozilla.change_locale( "' + locale + '" ) = ' + E); } } -- 2.11.0