diff options
Diffstat (limited to 'js/jquery.i18n.js')
-rw-r--r-- | js/jquery.i18n.js | 102 |
1 files changed, 52 insertions, 50 deletions
diff --git a/js/jquery.i18n.js b/js/jquery.i18n.js index a50e612..07e015b 100644 --- a/js/jquery.i18n.js +++ b/js/jquery.i18n.js @@ -1,30 +1,33 @@ -/* Copyright Bryan W Berry, 2009, +/* Copyright Bryan W Berry, 2009, * under the MIT license http://www.opensource.org/licenses/mit-license.php - * + * * this library is heavily influenced by the GNU LIBC library * http://www.gnu.org/software/libc/manual/html_node/Locales.html */ (function($){ - // PG: Maybe put everything in namespace i18n and rename the following function $.i18n.gettext? - - $.i18n = function(string, locale){ - var lang = locale || $.i18n.lang; - if (!$.i18n[lang] || !$.i18n[lang].strings){ - return string; - } - return $.i18n[lang].strings['default'][string]||string; - }; - - $.i18n.cgettext = function(context, string, locale){ - var lang = locale || $.i18n.lang; - if (!this.i18n[lang] || !this.i18n[lang].strings){ - return string; - } - return this.i18n[lang].strings[context][string]||string; - }; + $.i18n = {}; + + $.i18n.gettext = function(string) { + var lang = $.i18n.lang; + if (!$.i18n[lang] || !$.i18n[lang].strings) { + return string; + } + return $.i18n[lang].strings[string]||string; + }; + + $.i18n.pgettext = function(context, string) { + var lang = $.i18n.lang; + if (!$.i18n[lang] || + !$.i18n[lang].contextualized_strings || + !$.i18n[lang].contextualized_strings[context]) { + return string; + } + return $.i18n[lang].contextualized_strings[context][string]||string; + }; // You can override this in messages.<lang>.json. + // We should maybe extract this from the .mo file. $.i18n.choose_pluralized_msg = function (choices, n) { return n == 1 ? choices[0] : choices[1]; }; @@ -40,55 +43,54 @@ n); }; - $._ = $.i18n; - $._c = $.i18n.cgettext; + $._ = $.i18n.gettext; - $.i18n.setLocale = function (locale){ - $.i18n.lang = locale; - }; + $.i18n.setLocale = function (locale){ + $.i18n.lang = locale; + }; - $.i18n.getLocale = function (){ - return $.i18n.lang; - }; + $.i18n.getLocale = function (){ + return $.i18n.lang; + }; - /** + /** * Converts a number to numerals in the specified locale. Currently only * supports devanagari numerals for Indic languages like Nepali and Hindi * @param {Number} Number to be converted * @param {locale} locale that number should be converted to - * @returns {String} Unicode string for localized numeral + * @returns {String} Unicode string for localized numeral */ - $.i18n._n = function(num, locale){ + $.i18n._n = function(num, locale){ + + locale = locale || $.i18n.lang; - locale = locale || $.i18n.lang; + if (!this.i18n[locale] || !this.i18n[locale].numeralBase ){ + return num; + } - if (!this.i18n[locale] || !this.i18n[locale].numeralBase ){ - return num; - } + //48 is the base for western numerals + var numBase = $.i18n[$.i18n.lang].numeralBase || 48; + var prefix = $.i18n[$.i18n.lang].numeralPrefix || "u00"; - //48 is the base for western numerals - var numBase = $.i18n[$.i18n.lang].numeralBase || 48; - var prefix = $.i18n[$.i18n.lang].numeralPrefix || "u00"; - - var convertDigit = function(digit){ - return '\\' + prefix + - (numBase + parseInt(digit)).toString(16); - }; - - var charArray = num.toString().split("").map(convertDigit); - return eval('"' + charArray.join('') + '"'); - }; + var convertDigit = function(digit){ + return '\\' + prefix + + (numBase + parseInt(digit)).toString(16); + }; + + var charArray = num.toString().split("").map(convertDigit); + return eval('"' + charArray.join('') + '"'); + }; - $._n = $.i18n._n; + $._n = $.i18n._n; - /* ToDo + /* ToDo * implement sprintf - * conversion functions for monetary and numeric + * conversion functions for monetary and numeric * sorting functions (collation) for different locales */ - })(jQuery); +})(jQuery); |