bitaddress.org/src/ninja.translator.js
2016-01-16 23:09:34 -04:00

127 lines
No EOL
5.1 KiB
JavaScript

(function (ninja) {
var translator = ninja.translator = {
currentCulture: "en",
autoDetectTranslation: function () {
// window.navigator.language for Firefox / Chrome / Opera Safari
// window.navigator.userLanguage for IE
var language = window.navigator.language || window.navigator.userLanguage;
if (!this.translate(language)) {
// Try to remove part after dash, for example cs-CZ -> cs
language = language.substr(0, language.indexOf('-'));
this.translate(language);
}
},
translate: function (culture) {
var dict = translator.translations[culture];
if (dict) {
// set current culture
translator.currentCulture = culture;
// update menu UI
for (var cult in translator.translations) {
var cultureElement = document.getElementById("culture" + cult);
if (cultureElement != null) {
cultureElement.setAttribute("class", "");
}
else {
console.log("DOM element not found: " + "culture" + cult);
}
document.getElementById("culture" + culture).setAttribute("class", "selected");
}
// apply translations
for (var id in dict) {
if (document.getElementById(id) && document.getElementById(id).value) {
document.getElementById(id).value = dict[id];
}
else if (document.getElementById(id)) {
document.getElementById(id).innerHTML = dict[id];
}
}
return true;
} else {
return false;
}
},
get: function (id) {
var translation = translator.translations[translator.currentCulture][id];
return translation;
},
translations: {
"en": {
// javascript alerts or messages
"testneteditionactivated": "TESTNET EDITION ACTIVATED",
"paperlabelbitcoinaddress": "Bitcoin Address:",
"paperlabelprivatekey": "Private Key (Wallet Import Format):",
"paperlabelencryptedkey": "Encrypted Private Key (Password required)",
"bulkgeneratingaddresses": "Generating addresses... ",
"brainalertpassphrasetooshort": "The passphrase you entered is too short.\n\n",
"brainalertpassphrasewarning": "Warning: Choosing a strong passphrase is important to avoid brute force attempts to guess your passphrase and steal your bitcoins.",
"brainalertpassphrasedoesnotmatch": "The passphrase does not match the confirm passphrase.",
"detailalertnotvalidprivatekey": "The text you entered is not a valid Private Key",
"detailconfirmsha256": "The text you entered is not a valid Private Key!\n\nWould you like to use the entered text as a passphrase and create a Private Key using a SHA256 hash of the passphrase?\n\nWarning: Choosing a strong passphrase is important to avoid brute force attempts to guess your passphrase and steal your bitcoins.",
"detailbip38decryptbutton": "Decrypt BIP38", //TODO: please translate
"detailbip38encryptbutton": "Encrypt BIP38", //TODO: please translate
"bip38alertincorrectpassphrase": "Incorrect passphrase for this encrypted private key.",
"bip38alertpassphraserequired": "Passphrase required for BIP38 key",
"vanityinvalidinputcouldnotcombinekeys": "Invalid input. Could not combine keys.",
"vanityalertinvalidinputpublickeysmatch": "Invalid input. The Public Key of both entries match. You must input two different keys.",
"vanityalertinvalidinputcannotmultiple": "Invalid input. Cannot multiply two public keys. Select 'Add' to add two public keys to get a bitcoin address.",
"vanityprivatekeyonlyavailable": "Only available when combining two private keys",
"vanityalertinvalidinputprivatekeysmatch": "Invalid input. The Private Key of both entries match. You must input two different keys.",
// header and menu html
"singlewallet": "Single Wallet",
"paperwallet": "Paper Wallet",
"bulkwallet": "Bulk Wallet",
"brainwallet": "Brain Wallet",
"vanitywallet": "Vanity Wallet",
"splitwallet": "Split Wallet",
"detailwallet": "Wallet Details"
}
},
showEnglishJson: function () {
var english = ninja.translator.translations["en"];
var spanish = ninja.translator.translations["es"];
var spanishClone = {};
for (var key in spanish) {
spanishClone[key] = spanish[key];
}
var newLang = {};
for (var key in english) {
newLang[key] = english[key];
delete spanishClone[key];
}
for (var key in spanishClone) {
if (document.getElementById(key)) {
if (document.getElementById(key).value) {
newLang[key] = document.getElementById(key).value;
}
else {
newLang[key] = document.getElementById(key).innerHTML;
}
}
}
var div = document.createElement("div");
div.setAttribute("class", "englishjson");
div.innerHTML = "<h3>English Json</h3>";
var elem = document.createElement("textarea");
elem.setAttribute("rows", "15");
elem.setAttribute("cols", "110");
elem.setAttribute("wrap", "off");
var langJson = "{\n";
for (var key in newLang) {
langJson += "\t\"" + key + "\"" + ": " + "\"" + newLang[key].replace(/\"/g, "\\\"").replace(/\n/g, "\\n") + "\",\n";
}
langJson = langJson.substr(0, langJson.length - 2);
langJson += "\n}\n";
elem.innerHTML = langJson;
div.appendChild(elem);
document.body.appendChild(div);
}
};
})(ninja);