Trying to translate more dialogs ; Implement localization of numbers ; Handle arg substitution for arrays.

This commit is contained in:
Frédéric Wang 2013-02-20 15:42:12 +01:00
parent 4ced117e05
commit ca2f87ad7c
5 changed files with 204 additions and 80 deletions

View File

@ -2481,7 +2481,7 @@ MathJax.Hub.Startup = {
MathJax.Localization = {
locale: "fr",
locale: "en",
directory: "[MathJax]/localization",
strings: {
fr: {
@ -2491,24 +2491,61 @@ MathJax.Localization = {
strings: {
}
},
// FontWarnings: {
// isLoaded: true,
// strings: {
// fonts:
// [
// ["p"],
// "MathJax peut utiliser soit les ",
// ["a",{href:"http://www.stixfonts.org/",target:"_blank"},"polices STIX"],
// " soit les ",
// ["a",{href:"http://www.mathjax.org/help-v2/fonts/",target:"_blank"},["polices TeX de MathJax"]],
// ". Téléchargez et installez une de ces familles pour rendre plus confortable votre utilisation de MathJax."
// ]
// }
// },
FontWarnings: {
isLoaded: true,
strings: {
webFont:
"MathJax utilise les polices Web pour afficher les expressions " +
"mathématiques sur cette page. Celles-ci mettent du temps à être "+
"téléchargées et la page serait affichée plus rapidement si vous "+
"installiez les polices mathématiques directement dans le dossier "+
"des polices de votre système.",
imageFonts:
"MathJax utilise des images de caractères plutôt que les polices "+
"Web ou locales. Ceci rend le rendu plus lent que la normale et "+
"les expressions mathématiques peuvent ne pas s'imprimer à la "+
"résolution maximale de votre imprimante",
noFonts:
"MathJax n'est pas parvenu à localiser une police pour afficher "+
"les expressions mathématiques et les images de caractères ne "+
"sont pas disponibles. Comme solution de dernier recours, il "+
"utilise des caractères Unicode génériques en espérant que votre "+
"navigateur sera capable de les afficher. Certains pourront ne "+
"être rendus de façon incorrect voire pas du tout.",
webFonts:
"La plupart des navigateurs modernes permettent de télécharger "+
"des polices à partir du Web. En mettant à jour pour une version "+
"plus récente de votre navigateur (ou en changeant de navigateur) "+
"la qualité des expressions mathématiques sur cette page pourrait "+
"être améliorée.",
fonts:
"%1 MathJax peut utiliser les %2 ou bien les %3. Téléchargez et"+
"installez l'une de ces familles de polices pour améliorer votre"+
"expérience avec MathJax.",
PageDesigned:
"%1 Cette page est conçue pour utiliser les %2. Téléchargez "+
" et installez ces polices pour améliorer votre expérience "+
"avec MathJax",
STIXfonts:
"Polices STIX",
TeXfonts:
"Polices TeX de MathJax",
}
},
Menu: {
isLoaded: true,
strings: {
AboutBox:
"%1 utilisant %2",
WebkitNativeMMLWarning:
"Votre navigateur ne semble pas comporter de support MathML, " +
@ -2564,7 +2601,7 @@ MathJax.Localization = {
"en utilisant la commande Alt-Clic sur une expression.",
NoOriginalForm:
"Aucune forme originelle",
"Aucune forme d'origine disponible.",
Close:
"Fermer",
@ -2572,17 +2609,46 @@ MathJax.Localization = {
EqSource:
"Source de l'équation MathJax"
}
},
ConfigWarning: {
isLoaded: true,
strings: {
MissingConfig:
"%1 MathJax ne charge plus de fichier de configuration par défaut"+
" ; vous devez spécifier ces fichiers de façons explicites. Cette"+
" page semble utiliser l'ancien fichier de configuration par "+
"défaut %2 and doit donc être mise à jour. Ceci est expliqué "+
"en détails à l'addresse suivante: %3"
}
},
Message: {
isLoaded: true,
strings: {
LoadFailed: "Échec du chargement du fichier %1"
}
}
},
plural: function(n) {
if (0 <= n && n < 2) return 1; // one
return 2; // other
},
number: function(n) {
return n.replace(".", ","); // replace dot by comma
}
}
},
_: function (messageId, englishPhrase) {
// These variables are used in string parsing
var plural = this.plural;
var locale = this;
var args = arguments;
var i, s, result;
var i, s, resultString, resultArray;
function parseNextUnicodePoint(appendToResult)
{
@ -2590,13 +2656,13 @@ MathJax.Localization = {
if (n <= 0xD7FF || 0xE000 <= n) {
// Code points U+0000 to U+D7FF and U+E000 to U+FFFF.
// Append the character.
if (appendToResult) result += s[i]
if (appendToResult) resultString += s[i]
i++;
return;
} else if (i+1 < m) {
// Code points U+10000 to U+10FFFF
// Append the surrogate pairs.
if (appendToResult) { result += s[i]; result += s[i+1]; }
if (appendToResult) { resultString += s[i]; resultString += s[i+1]; }
i+=2
return;
}
@ -2614,12 +2680,26 @@ MathJax.Localization = {
i += argIndex.length;
var key = +argIndex+1;
if (key in args) {
if (appendToResult) { result += args[key]; }
if (appendToResult) {
var e = args[key];
if (Array.isArray(e)) {
// if that's an array, concatenate it to the result array
resultArray.push(resultString);
resultArray = resultArray.concat(e);
resultString = "";
} else if (typeof e === "number") {
// if that's a number, append a localized version.
resultString += locale.number(e.toString())
} else {
// otherwise, just concatenate it to the result string
resultString += e;
}
}
return true;
}
// invalid index: just %INTEGER and continue
if (appendToResult) { result += "%" + argIndex; }
if (appendToResult) { resultString += "%" + argIndex; }
i++;
return true;
}
@ -2630,7 +2710,7 @@ MathJax.Localization = {
if (!number) return false;
// %{INTEGER} escaped integer
if (appendToResult) { result += number[1]; }
if (appendToResult) { resultString += number[1]; }
i += number[0].length;
return true;
}
@ -2697,7 +2777,8 @@ MathJax.Localization = {
s = string;
i = 0;
m = s.length;
result = "";
resultString = "";
resultArray = [];
while (i < m) {
if (s[i] != "%" || i+1 == m) {
@ -2716,14 +2797,16 @@ MathJax.Localization = {
if (parseInteger(true)) continue;
// %\{plural:%INTEGER|form1|form2 ... \} plural forms
if (parseChoiceBlock("plural", plural)) continue;
if (parseChoiceBlock("plural", locale.plural)) continue;
// %CHAR: escaped character
parseNextUnicodePoint(true);
continue;
}
return result;
if (resultArray.length == 0) return resultString;
return resultArray;
}
function transformHTMLSnippet(snippet)
@ -2772,6 +2855,8 @@ MathJax.Localization = {
setLocale: function(locale) {
this.locale = locale;
this.plural = this.strings[locale].plural;
this.number = this.strings[locale].number;
// TODO
},
@ -2784,7 +2869,11 @@ MathJax.Localization = {
},
plural: function(n) {
if (n == 1) return 1;
return 2;
if (n == 1) return 1; // one
return 2; // other
},
number: function(n) {
return n;
}
};

View File

@ -1,3 +1,5 @@
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/*************************************************************
*
* MathJax/extensions/FontWarnings.js
@ -85,6 +87,12 @@
(function (HUB,HTML) {
var VERSION = "2.1";
var _ = function (id) {
return MathJax.Localization._.apply(MathJax.Localization,
[ ["FontWarnings",id] ].concat([].slice.call(arguments,1))
);
}
var CONFIG = HUB.CombineConfig("FontWarnings",{
//
// The CSS for the message window
@ -112,29 +120,33 @@
Message: {
webFont: [
["closeBox"],
"MathJax is using web-based fonts to display the mathematics ",
"on this page. These take time to download, so the page would ",
"render faster if you installed math fonts directly in your ",
"system's font folder.",
_("webFont",
"MathJax is using web-based fonts to display the mathematics "+
"on this page. These take time to download, so the page would "+
"render faster if you installed math fonts directly in your "+
"system's font folder."),
["fonts"]
],
imageFonts: [
["closeBox"],
"MathJax is using its image fonts rather than local or web-based fonts. ",
"This will render slower than usual, and the mathematics may not print ",
"at the full resolution of your printer.",
_("imageFonts",
"MathJax is using its image fonts rather than local or web-based fonts. "+
"This will render slower than usual, and the mathematics may not print "+
"at the full resolution of your printer."),
["fonts"],
["webfonts"]
],
noFonts: [
["closeBox"],
"MathJax is unable to locate a font to use to display ",
"its mathematics, and image fonts are not available, so it ",
"is falling back on generic unicode characters in hopes that ",
"your browser will be able to display them. Some characters ",
"may not show up properly, or possibly not at all.",
_("noFonts",
"MathJax is unable to locate a font to use to display "+
"its mathematics, and image fonts are not available, so it "+
"is falling back on generic unicode characters in hopes that "+
"your browser will be able to display them. Some characters "+
"may not show up properly, or possibly not at all."),
["fonts"],
["webfonts"]
]
@ -168,35 +180,37 @@
[["span",{style:{position:"relative", bottom:".2em"}},["x"]]]
]],
webfonts: [
webFonts: [
["p"],
"Most modern browsers allow for fonts to be downloaded over the web. ",
"Updating to a more recent version of your browser (or changing browsers) ",
"could improve the quality of the mathematics on this page."
_("webFonts",
"Most modern browsers allow for fonts to be downloaded over the web. "+
"Updating to a more recent version of your browser (or changing"+
"browsers) could improve the quality of the mathematics on this page.")
],
fonts: [
["p"],
"MathJax can use either the ",
["a",{href:"http://www.stixfonts.org/",target:"_blank"},"STIX fonts"],
" or the ",
["a",{href:"http://www.mathjax.org/help-v2/fonts/",target:"_blank"},["MathJax TeX fonts"]],
". Download and install either one to improve your MathJax experience."
],
fonts: _("fonts",
"%1 MathJax can use either the %2 or the % "+
". Download and install either one to improve your MathJax experience.",
[["p"]],
[["a",{href:"http://www.stixfonts.org/",target:"_blank"},
_("STIXfonts", "STIX fonts")]],
[["a",{href:"http://www.mathjax.org/help-v2/fonts/",target:"_blank"},
[_("TeXfonts", "MathJax TeX fonts")]]]
),
STIXfonts: [
["p"],
"This page is designed to use the ",
["a",{href:"http://www.stixfonts.org/",target:"_blank"},"STIX fonts"],
". Download and install those fonts to improve your MathJax experience."
],
STIXfonts: _("PageDesigned",
"%1 This page is designed to use the %2."+
" Download and install those fonts to improve your MathJax experience.",
[["p"]],
[["a",{href:"http://www.mathjax.org/help-v2/fonts/",target:"_blank"},
[_("STIXfonts", "STIX fonts")]]]),
TeXfonts: [
["p"],
"This page is designed to use the ",
["a",{href:"http://www.mathjax.org/help-v2/fonts/",target:"_blank"},["MathJax TeX fonts"]],
". Download and install those fonts to improve your MathJax experience."
]
TeXfonts: _("PageDesigned",
"%1 This page is designed to use the %2."+
" Download and install those fonts to improve your MathJax experience.",
[["p"]],
[["a",{href:"http://www.mathjax.org/help-v2/fonts/",target:"_blank"},
[_("TeXfonts", "MathJax TeX fonts")]]])
},

View File

@ -622,9 +622,11 @@
MENU.About.div = MENU.Background(MENU.About);
var about = HTML.addElement(MENU.About.div,"div",{
id: "MathJax_About"
},[
["b",{style:{fontSize:"120%"}},["MathJax"]]," v"+MathJax.version,["br"],
"using "+font,["br"],["br"],
},
_("AboutBox", "%1 using %2",
[["b",{style:{fontSize:"120%"}},["MathJax"]],
" v"+MathJax.version,["br"]],
[font,["br"],["br"],
["span",{style:{
display:"inline-block", "text-align":"left", "font-size":"80%",
"max-height":"20em", overflow:"auto",
@ -635,8 +637,8 @@
src: CONFIG.closeImg,
style: {width:"21px", height:"21px", position:"absolute", top:".2em", right:".2em"},
onclick: MENU.About.Remove
}]
]);
}]])
);
var doc = (document.documentElement||{});
var H = window.innerHeight || doc.clientHeight || doc.scrollHeight || 0;
if (MENU.prototype.msieAboutBug) {

View File

@ -26,6 +26,13 @@
(function (HUB,HTML) {
var VERSION = "2.1";
var _ = function (id) {
return MathJax.Localization._.apply(
MathJax.Localization,
[ ["ConfigWarning", id] ].concat([].slice.call(arguments,1))
);
};
var CONFIG = {
style: {
position:"fixed", bottom:"4em", left:"3em", width:"40em",
@ -56,8 +63,13 @@
CONFIG.style.position = "absolute";
} else {delete CONFIG.style.filter}
CONFIG.style.maxWidth = (document.body.clientWidth-75) + "px";
DIV = HTML.addElement(frame,"div",{id:"MathJax_ConfigWarning",style:CONFIG.style},[
[
DIV = HTML.addElement(frame,"div",{id:"MathJax_ConfigWarning",style:CONFIG.style},
_("MissingConfig",
"%1 MathJax no longer loads a default configuration file; " +
"you must specify such files explicitly. " +
"This page seems to use the older default %2 file"+
", and so needs to be updated. This is explained further at %3",
[[
"div",{
style: {
position:"absolute", overflow:"hidden", top:".1em", right:".1em",
@ -73,18 +85,14 @@
onclick: function () {DIV.style.display = "none"}
},
[["span",{style:{position:"relative", bottom:".2em"}},["x"]]]
],
"MathJax no longer loads a default configuration file; " +
"you must specify such files explicitly. " +
"This page seems to use the older default ",["code",{},["config/MathJax.js"]],
" file, and so needs to be updated. This is explained further at",
["p",{style:{"text-align":"center"}},[
]],
[["code",{},["config/MathJax.js"]]],
[["p",{style:{"text-align":"center"}},[
["a",
{href:"http://www.mathjax.org/help/configuration"},
["http://www.mathjax.org/help/configuration"]
]
]]
]);
]]]))
});
})(MathJax.Hub,MathJax.HTML);

View File

@ -0,0 +1,11 @@
["Do this",
["b", null,
["now!", ["img", {src: url}]]
]
]
_("dothis", "Do this %1",
["b", null,
_("now", "now! %1", ["img", {src: url}])
]
)