CC-1960: Internationalize Airtime / Support translations
-added jquery.i18n library
This commit is contained in:
parent
e9b9f63630
commit
06c3dcb69e
|
@ -0,0 +1,117 @@
|
|||
/*
|
||||
* 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);
|
Loading…
Reference in New Issue