add jquery.i18n for client side translations
This commit is contained in:
		
							
								
								
									
										154
									
								
								library/jquery.i18n/src/jquery.i18n.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										154
									
								
								library/jquery.i18n/src/jquery.i18n.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,154 @@ | ||||
| /* | ||||
|  * 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: @VERSION (@DATE) | ||||
|  */ | ||||
|  (function($) { | ||||
| /** | ||||
|  * i18n provides a mechanism for translating strings using a jscript dictionary. | ||||
|  * | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * i18n property list | ||||
|  */ | ||||
| $.i18n = { | ||||
| 	 | ||||
| 	dict: null, | ||||
| 	 | ||||
| /** | ||||
|  * setDictionary() | ||||
|  * Initialise the dictionary and translate nodes | ||||
|  * | ||||
|  * @param property_list i18n_dict : The dictionary to use for translation | ||||
|  */ | ||||
| 	setDictionary: function(i18n_dict) { | ||||
| 		this.dict = i18n_dict; | ||||
| 	}, | ||||
| 	 | ||||
| /** | ||||
|  * _() | ||||
|  * The actual translation function. 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 transl = str; | ||||
| 		if (this.dict && this.dict[str]) { | ||||
| 			transl = this.dict[str]; | ||||
| 		} | ||||
| 		return this.printf(transl, params); | ||||
| 	}, | ||||
| 	 | ||||
| /** | ||||
|  * toEntity() | ||||
|  * Change non-ASCII characters to entity representation  | ||||
|  * | ||||
|  * @param string str : The string to transform | ||||
|  * @return string result : Original string with non-ASCII content converted to entities | ||||
|  * | ||||
|  */ | ||||
| 	toEntity: function (str) { | ||||
| 		var result = ''; | ||||
| 		for (var i=0;i<str.length; i++) { | ||||
| 			if (str.charCodeAt(i) > 128) | ||||
| 				result += "&#"+str.charCodeAt(i)+";"; | ||||
| 			else | ||||
| 				result += str.charAt(i); | ||||
| 		} | ||||
| 		return result; | ||||
| 	}, | ||||
| 	 | ||||
| /** | ||||
|  * stripStr() | ||||
|  * | ||||
|  * @param string str : The string to strip | ||||
|  * @return string result : Stripped string | ||||
|  * | ||||
|  */ | ||||
|  	stripStr: function(str) { | ||||
| 		return str.replace(/^\s*/, "").replace(/\s*$/, ""); | ||||
| 	}, | ||||
| 	 | ||||
| /** | ||||
|  * stripStrML() | ||||
|  * | ||||
|  * @param string str : The multi-line string to strip | ||||
|  * @return string result : Stripped string | ||||
|  * | ||||
|  */ | ||||
| 	stripStrML: function(str) { | ||||
| 		// Split because m flag doesn't exist before JS1.5 and we need to | ||||
| 		// strip newlines anyway | ||||
| 		var parts = str.split('\n'); | ||||
| 		for (var i=0; i<parts.length; i++) | ||||
| 			parts[i] = stripStr(parts[i]); | ||||
| 	 | ||||
| 		// Don't join with empty strings, because it "concats" words | ||||
| 		// And strip again | ||||
| 		return stripStr(parts.join(" ")); | ||||
| 	}, | ||||
|  | ||||
| /* | ||||
|  * printf() | ||||
|  * C-printf like function, which substitutes %s with parameters | ||||
|  * given in list. %%s is used to escape %s. | ||||
|  * | ||||
|  * Doesn't work in IE5.0 (splice) | ||||
|  * | ||||
|  * @param string S : string to perform printf on. | ||||
|  * @param string L : Array of arguments for printf() | ||||
|  */ | ||||
| 	printf: function(S, L) { | ||||
| 		if (!L) return S; | ||||
|  | ||||
| 		var nS     = ""; | ||||
| 		var search = /%(\d+)\$s/g; | ||||
| 		// replace %n1$ where n is a number | ||||
| 		while (result = search.exec(S)) { | ||||
| 			var index = parseInt(result[1], 10) - 1; | ||||
| 			S = S.replace('%' + result[1] + '\$s', (L[index])); | ||||
| 			L.splice(index, 1); | ||||
| 		} | ||||
| 		var tS = S.split("%s"); | ||||
|  | ||||
| 		if (tS.length > 1) { | ||||
| 			for(var i=0; i<L.length; i++) { | ||||
| 				if (tS[i].lastIndexOf('%') == tS[i].length-1 && i != L.length-1) | ||||
| 					tS[i] += "s"+tS.splice(i+1,1)[0]; | ||||
| 				nS += tS[i] + L[i]; | ||||
| 			} | ||||
| 		} | ||||
| 		return nS + tS[tS.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); | ||||
		Reference in New Issue
	
	Block a user