123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- /*
- * jQuery i18n plugin
- * @requires jQuery v1.1 or later
- *
- * See http://recursive-design.com/projects/jquery-i18n/
- *
- * Licensed under the MIT license:
- * http://www.opensource.org/licenses/mit-license.php
- *
- * Version: 1.0.0 (201210141329)
- */
- (function($) {
- /**
- * i18n provides a mechanism for translating strings using a jscript dictionary.
- *
- */
- /*
- * i18n property list
- */
- $.i18n = {
-
- dict: null,
-
- /**
- * setDictionary()
- *
- * Initialises the dictionary.
- *
- * @param property_list i18n_dict : The dictionary to use for translation.
- */
- setDictionary: function(i18n_dict) {
- this.dict = i18n_dict;
- },
-
- /**
- * _()
- *
- * Looks the given string up in the dictionary and returns the translation if
- * one exists. If a translation is not found, returns the original word.
- *
- * @param string str : The string to translate.
- * @param property_list params : params for using printf() on the string.
- *
- * @return string : Translated word.
- */
- _: function (str, params) {
- var result = str;
- if (this.dict && this.dict[str]) {
- result = this.dict[str];
- }
-
- // Substitute any params.
- return this.printf(result, params);
- },
- /*
- * printf()
- *
- * Substitutes %s with parameters given in list. %%s is used to escape %s.
- *
- * @param string str : String to perform printf on.
- * @param string args : Array of arguments for printf.
- *
- * @return string result : Substituted string
- */
- printf: function(str, args) {
- if (!args) return str;
- var result = '';
- var search = /%(\d+)\$s/g;
-
- // Replace %n1$ where n is a number.
- var matches = search.exec(str);
- while (matches) {
- var index = parseInt(matches[1], 10) - 1;
- str = str.replace('%' + matches[1] + '\$s', (args[index]));
- matches = search.exec(str);
- }
- var parts = str.split('%s');
- if (parts.length > 1) {
- for(var i = 0; i < args.length; i++) {
- // If the part ends with a '%' chatacter, we've encountered a literal
- // '%%s', which we should output as a '%s'. To achieve this, add an
- // 's' on the end and merge it with the next part.
- if (parts[i].length > 0 && parts[i].lastIndexOf('%') == (parts[i].length - 1)) {
- parts[i] += 's' + parts.splice(i + 1, 1)[0];
- }
-
- // Append the part and the substitution to the result.
- result += parts[i] + args[i];
- }
- }
-
- return result + parts[parts.length - 1];
- }
- };
- /*
- * _t()
- *
- * Allows you to translate a jQuery selector.
- *
- * eg $('h1')._t('some text')
- *
- * @param string str : The string to translate .
- * @param property_list params : Params for using printf() on the string.
- *
- * @return element : Chained and translated element(s).
- */
- $.fn._t = function(str, params) {
- return $(this).text($.i18n._(str, params));
- };
- })(jQuery);
|