www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit de34c0ec7b59c75d70ec5a96da09e218c2813d1a
parent 11959f25ab0044cd2b4026b8405e58671742513b
Author: Frédéric Wang <fred.wang@free.fr>
Date:   Fri,  2 Aug 2013 17:04:46 +0200

Implement language fallback. Fix issue #492.

Diffstat:
Munpacked/MathJax.js | 20+++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/unpacked/MathJax.js b/unpacked/MathJax.js @@ -1068,7 +1068,9 @@ MathJax.Localization = { en: {menuTitle: "English", isLoaded: true}, // nothing needs to be loaded for this de: {menuTitle: "Deutsch"}, fr: {menuTitle: "Fran\u00E7ais"}, - it: {menuTitle: "Italiano"} + it: {menuTitle: "Italiano"}, + pt: {menuTitle: "portugus\u00EA", remap: "pt-br"}, + "pt-br": {menuTitle: "portugu\u00EAs do Brasil"} }, // @@ -1394,8 +1396,20 @@ MathJax.Localization = { // Set the current language // setLocale: function(locale) { - // don't set it if there isn't a definition for it - if (this.strings[locale]) {this.locale = locale} + // Selection algorithm: + // 1) Downcase locale name (e.g. "en-US" => "en-us") + // 2) Try a parent language (e.g. "en-us" => "en") + // 3) Try the fallback specified in the data (e.g. "pt" => "pt-br") + // 4) Otherwise don't change the locale. + if (!locale) return; + locale = locale.toLowerCase(); + while (!this.strings[locale]) { + var dashPos = locale.lastIndexOf("-"); + if (dashPos === -1) return; + locale = locale.substring(0, dashPos); + } + var remap = this.strings[locale].remap; + this.locale = remap ? remap : locale; if (MathJax.Menu) {this.loadDomain("MathMenu")} },