He.Bootstrap('He.Framework.Lang'); He.Bootstrap('He.Framework.Lang.lookUp'); He.Framework.Lang.gather = true; He.Framework.Lang.lang = He.Application.Common.UserLang || 'en'; He.IncludeJavascript('/He/Application/Lang/' + He.Framework.Lang.lang + '/i18n.js'); He.Framework.Lang.SubstArgs = function(_str, _params) { var p = 0; var n = _params.lenght; for (var i; i < n; ++i) { var param = _params[i]; var index = '%' + ++p; _str = _str.replace(Regexp('/' + index + '/g'), param); } return _str; } He.Framework.Lang.DeleteKey = function(_key) { delete He.Framework.Lang.lookUp[_key]; } He.Framework.Lang.UpdateKey = function(_key, _newValue) { He.Framework.Lang.lookUp[_key] = _newValue; } He.Framework.Lang.FeedDB = function(_key, _str, _lang) { if (He.IsNumber(_str)) { return; } He.Framework.Lang.UpdateKey(_key, _str); He.Framework.Ajax.Request('/qsb.php',{cmd:'FeedLangDB',key: _key, str : _str, lang: _lang}); } He.Framework.Lang.Localize = function(_str) { var params = Array.prototype.slice.call(arguments); params.shift(); if (!_str || He.IsNumber(_str)) { return _str; } var key = _str.toUpperCase(); if (!He.IsUndefined(He.Framework.Lang.lookUp[key])) { _str = He.Framework.Lang.lookUp[key]; } else if (He.Framework.Lang.gather) { He.Framework.Lang.FeedDB.defer(key, _str, He.Framework.Lang.lang); } if(_str == '##EMPTY##') { return ''; } if (params.length) { _str = He.Framework.Lang.SubstArgs(_str, params); } return _str; } He.Framework.Lang.Localize_P = function(_str, _plural, _count) { _count = _count ? _count : 1; _plural = _plural ? _plural : ''; var params = Array.prototype.slice.call(arguments); params.shift(); params.shift(); params.shift(); if (_count == 1) { params.unshift(_str); } else { params.unshift(_plural); } _str = He_Framework_Lang.Localize.apply(this, _params); return _str.replace(/%d/g, _count); } function _T(_str) { var args = Array.prototype.slice.call(arguments); return He.Framework.Lang.Localize.apply(this, args); } function _Ts(_str, _plural, _count) { var args = Array.prototype.slice.call(arguments); return He.Framework.Lang.Localize_P.apply(this, args); }