МедияУики:Common.js/CoreObjects.js
От БГ-Фантастика
// from http://www.quirksmode.org/js/cookies.html
// escape(), unescape() methods added
var Cookie = {
create: function(name, value, days) {
var expires;
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days*24*60*60*1000));
expires = "; expires=" + date.toGMTString();
} else {
expires = "";
}
document.cookie = Cookie.escape(name) + "=" + Cookie.escape(value)
+ expires + "; path=/";
},
read: function(name) {
var nameEQ = Cookie.escape(name) + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0)==' ') {
c = c.substring(1, c.length);
}
if (c.indexOf(nameEQ) === 0) {
return Cookie.unescape(c.substring(nameEQ.length, c.length));
}
}
return null;
},
erase: function(name) {
Cookie.create(name, "", -1);
},
escape: function(v) {
return encodeURIComponent(v);
},
unescape: function(v) {
return decodeURIComponent(v);
}
};
var _lang_messages = {};
var _debug_lang = false;
function MessageLanguage() {
this.lang = DEFAULT_USER_LANGUAGE;
this.messages = new Object();
this.prefix = "";
this.addMessages = function(messages, code, prefix) {
if ( typeof this.messages[code] == "undefined" ) {
this.messages[code] = new Object();
}
var p = typeof prefix == "string" ? prefix : "";
for (var key in messages) {
if ( typeof key == "string" ) {
this.messages[code][p + key] = messages[key];
}
}
};
this.setLanguage = function(langCode) {
this.lang = langCode;
this.importMessages( this.lang );
};
this.setPrefix = function(prefix) {
this.prefix = prefix;
};
this.msg = function(key) {
key = this.prefix + key;
var msg = this.messages[this.lang] && this.messages[this.lang][key];
if ( typeof msg == "undefined" ) {
if ( _debug_lang ) alert(key + " го няма на "+this.lang);
msg = this.messages[FALLBACK_USER_LANGUAGE]
&& this.messages[FALLBACK_USER_LANGUAGE][key];
}
if ( typeof msg == "undefined" ) {
return "{"+ key +"}";
}
for (var i = 1; i < arguments.length; i++) {
msg = msg.replace( new RegExp("\\$"+i, "g"), arguments[i]);
}
return msg;
};
this.importMessages = function(lang) {
importScript("MediaWiki:Messages/" + lang + ".js");
};
}
var gLang = new MessageLanguage();
// import message files
gLang.setLanguage( wgUserLanguage );
var mainLangs = [ DEFAULT_USER_LANGUAGE, FALLBACK_USER_LANGUAGE ];
if ( ! inArray( wgUserLanguage, mainLangs ) ) {
gLang.importMessages( FALLBACK_USER_LANGUAGE );
}
// add messages on load
addOnloadHook( function() {
if ( typeof _lang_messages[ wgUserLanguage ] == "object" ) {
gLang.addMessages( _lang_messages[ wgUserLanguage ], wgUserLanguage );
}
if ( typeof _lang_messages[ FALLBACK_USER_LANGUAGE ] == "object" ) {
if ( ! inArray( wgUserLanguage, mainLangs ) ) {
gLang.addMessages( _lang_messages[ FALLBACK_USER_LANGUAGE ],
FALLBACK_USER_LANGUAGE );
}
}
});