Skip to content

Commit 0dc44ca

Browse files
committed
Fixing plugin to get jQuery passed it
1 parent 2d6b1bd commit 0dc44ca

6 files changed

+695
-725
lines changed

dist/jquery.localize.js

+168-173
Original file line numberDiff line numberDiff line change
@@ -9,187 +9,182 @@ http://keith-wood.name/localisation.html
99
*/
1010

1111
(function() {
12-
var $, normaliseLang;
13-
14-
$ = jQuery;
15-
16-
normaliseLang = function(lang) {
17-
lang = lang.replace(/_/, '-').toLowerCase();
18-
if (lang.length > 3) {
19-
lang = lang.substring(0, 3) + lang.substring(3).toUpperCase();
20-
}
21-
return lang;
22-
};
23-
24-
$.defaultLanguage = normaliseLang(navigator.language || navigator.userLanguage);
25-
26-
$.localize = function(pkg, options) {
27-
var defaultCallback, fileExtension, intermediateLangData, jsonCall, lang, loadLanguage, localizeElement, localizeForSpecialKeys, localizeImageElement, localizeInputElement, localizeOptgroupElement, notifyDelegateLanguageLoaded, regexify, setAttrFromValueForKey, setTextFromValueForKey, valueForKey, wrappedSet;
28-
if (options == null) {
29-
options = {};
30-
}
31-
wrappedSet = this;
32-
intermediateLangData = {};
33-
fileExtension = options.fileExtension || "json";
34-
loadLanguage = function(pkg, lang, level) {
35-
var file;
36-
if (level == null) {
37-
level = 1;
38-
}
39-
switch (level) {
40-
case 1:
41-
intermediateLangData = {};
42-
if (options.loadBase) {
43-
file = pkg + ("." + fileExtension);
44-
return jsonCall(file, pkg, lang, level);
45-
} else {
46-
return loadLanguage(pkg, lang, 2);
47-
}
48-
break;
49-
case 2:
50-
if (lang.length >= 2) {
51-
file = "" + pkg + "-" + (lang.substring(0, 2)) + "." + fileExtension;
52-
return jsonCall(file, pkg, lang, level);
53-
}
54-
break;
55-
case 3:
56-
if (lang.length >= 5) {
57-
file = "" + pkg + "-" + (lang.substring(0, 5)) + "." + fileExtension;
58-
return jsonCall(file, pkg, lang, level);
59-
}
12+
(function($) {
13+
var normaliseLang;
14+
normaliseLang = function(lang) {
15+
lang = lang.replace(/_/, '-').toLowerCase();
16+
if (lang.length > 3) {
17+
lang = lang.substring(0, 3) + lang.substring(3).toUpperCase();
6018
}
19+
return lang;
6120
};
62-
jsonCall = function(file, pkg, lang, level) {
63-
var ajaxOptions, errorFunc, successFunc;
64-
if (options.pathPrefix != null) {
65-
file = "" + options.pathPrefix + "/" + file;
21+
$.defaultLanguage = normaliseLang(navigator.language || navigator.userLanguage);
22+
$.localize = function(pkg, options) {
23+
var defaultCallback, fileExtension, intermediateLangData, jsonCall, lang, loadLanguage, localizeElement, localizeForSpecialKeys, localizeImageElement, localizeInputElement, localizeOptgroupElement, notifyDelegateLanguageLoaded, regexify, setAttrFromValueForKey, setTextFromValueForKey, valueForKey, wrappedSet;
24+
if (options == null) {
25+
options = {};
6626
}
67-
successFunc = function(d) {
68-
$.extend(intermediateLangData, d);
69-
notifyDelegateLanguageLoaded(intermediateLangData);
70-
return loadLanguage(pkg, lang, level + 1);
71-
};
72-
errorFunc = function() {
73-
if (options.fallback && options.fallback !== lang) {
74-
return loadLanguage(pkg, options.fallback);
27+
wrappedSet = this;
28+
intermediateLangData = {};
29+
fileExtension = options.fileExtension || "json";
30+
loadLanguage = function(pkg, lang, level) {
31+
var file;
32+
if (level == null) {
33+
level = 1;
34+
}
35+
switch (level) {
36+
case 1:
37+
intermediateLangData = {};
38+
if (options.loadBase) {
39+
file = pkg + ("." + fileExtension);
40+
return jsonCall(file, pkg, lang, level);
41+
} else {
42+
return loadLanguage(pkg, lang, 2);
43+
}
44+
break;
45+
case 2:
46+
if (lang.length >= 2) {
47+
file = "" + pkg + "-" + (lang.substring(0, 2)) + "." + fileExtension;
48+
return jsonCall(file, pkg, lang, level);
49+
}
50+
break;
51+
case 3:
52+
if (lang.length >= 5) {
53+
file = "" + pkg + "-" + (lang.substring(0, 5)) + "." + fileExtension;
54+
return jsonCall(file, pkg, lang, level);
55+
}
7556
}
7657
};
77-
ajaxOptions = {
78-
url: file,
79-
dataType: "json",
80-
async: false,
81-
timeout: options.timeout != null ? options.timeout : 500,
82-
success: successFunc,
83-
error: errorFunc
84-
};
85-
if (window.location.protocol === "file:") {
86-
ajaxOptions.error = function(xhr) {
87-
return successFunc($.parseJSON(xhr.responseText));
58+
jsonCall = function(file, pkg, lang, level) {
59+
var ajaxOptions, errorFunc, successFunc;
60+
if (options.pathPrefix != null) {
61+
file = "" + options.pathPrefix + "/" + file;
62+
}
63+
successFunc = function(d) {
64+
$.extend(intermediateLangData, d);
65+
notifyDelegateLanguageLoaded(intermediateLangData);
66+
return loadLanguage(pkg, lang, level + 1);
8867
};
89-
}
90-
return $.ajax(ajaxOptions);
91-
};
92-
notifyDelegateLanguageLoaded = function(data) {
93-
if (options.callback != null) {
94-
return options.callback(data, defaultCallback);
95-
} else {
96-
return defaultCallback(data);
97-
}
98-
};
99-
defaultCallback = function(data) {
100-
$.localize.data[pkg] = data;
101-
return wrappedSet.each(function() {
102-
var elem, key, value;
103-
elem = $(this);
104-
key = elem.data("localize");
105-
key || (key = elem.attr("rel").match(/localize\[(.*?)\]/)[1]);
106-
value = valueForKey(key, data);
107-
return localizeElement(elem, key, value);
108-
});
109-
};
110-
localizeElement = function(elem, key, value) {
111-
if (elem.is('input')) {
112-
localizeInputElement(elem, key, value);
113-
} else if (elem.is('img')) {
114-
localizeImageElement(elem, key, value);
115-
} else if (elem.is('optgroup')) {
116-
localizeOptgroupElement(elem, key, value);
117-
} else if (!$.isPlainObject(value)) {
118-
elem.html(value);
119-
}
120-
if ($.isPlainObject(value)) {
121-
return localizeForSpecialKeys(elem, value);
122-
}
123-
};
124-
localizeInputElement = function(elem, key, value) {
125-
var val;
126-
val = $.isPlainObject(value) ? value.value : value;
127-
if (elem.is("[placeholder]")) {
128-
return elem.attr("placeholder", val);
129-
} else {
130-
return elem.val(val);
131-
}
132-
};
133-
localizeForSpecialKeys = function(elem, value) {
134-
setAttrFromValueForKey(elem, "title", value);
135-
return setTextFromValueForKey(elem, "text", value);
136-
};
137-
localizeOptgroupElement = function(elem, key, value) {
138-
return elem.attr("label", value);
139-
};
140-
localizeImageElement = function(elem, key, value) {
141-
setAttrFromValueForKey(elem, "alt", value);
142-
return setAttrFromValueForKey(elem, "src", value);
143-
};
144-
valueForKey = function(key, data) {
145-
var keys, value, _i, _len;
146-
keys = key.split(/\./);
147-
value = data;
148-
for (_i = 0, _len = keys.length; _i < _len; _i++) {
149-
key = keys[_i];
150-
value = value != null ? value[key] : null;
151-
}
152-
return value;
153-
};
154-
setAttrFromValueForKey = function(elem, key, value) {
155-
value = valueForKey(key, value);
156-
if (value != null) {
157-
return elem.attr(key, value);
158-
}
159-
};
160-
setTextFromValueForKey = function(elem, key, value) {
161-
value = valueForKey(key, value);
162-
if (value != null) {
163-
return elem.text(value);
164-
}
165-
};
166-
regexify = function(string_or_regex_or_array) {
167-
var thing;
168-
if (typeof string_or_regex_or_array === "string") {
169-
return "^" + string_or_regex_or_array + "$";
170-
} else if (string_or_regex_or_array.length != null) {
171-
return ((function() {
172-
var _i, _len, _results;
173-
_results = [];
174-
for (_i = 0, _len = string_or_regex_or_array.length; _i < _len; _i++) {
175-
thing = string_or_regex_or_array[_i];
176-
_results.push(regexify(thing));
68+
errorFunc = function() {
69+
if (options.fallback && options.fallback !== lang) {
70+
return loadLanguage(pkg, options.fallback);
17771
}
178-
return _results;
179-
})()).join("|");
180-
} else {
181-
return string_or_regex_or_array;
72+
};
73+
ajaxOptions = {
74+
url: file,
75+
dataType: "json",
76+
async: false,
77+
timeout: options.timeout != null ? options.timeout : 500,
78+
success: successFunc,
79+
error: errorFunc
80+
};
81+
if (window.location.protocol === "file:") {
82+
ajaxOptions.error = function(xhr) {
83+
return successFunc($.parseJSON(xhr.responseText));
84+
};
85+
}
86+
return $.ajax(ajaxOptions);
87+
};
88+
notifyDelegateLanguageLoaded = function(data) {
89+
if (options.callback != null) {
90+
return options.callback(data, defaultCallback);
91+
} else {
92+
return defaultCallback(data);
93+
}
94+
};
95+
defaultCallback = function(data) {
96+
$.localize.data[pkg] = data;
97+
return wrappedSet.each(function() {
98+
var elem, key, value;
99+
elem = $(this);
100+
key = elem.data("localize");
101+
key || (key = elem.attr("rel").match(/localize\[(.*?)\]/)[1]);
102+
value = valueForKey(key, data);
103+
return localizeElement(elem, key, value);
104+
});
105+
};
106+
localizeElement = function(elem, key, value) {
107+
if (elem.is('input')) {
108+
localizeInputElement(elem, key, value);
109+
} else if (elem.is('img')) {
110+
localizeImageElement(elem, key, value);
111+
} else if (elem.is('optgroup')) {
112+
localizeOptgroupElement(elem, key, value);
113+
} else if (!$.isPlainObject(value)) {
114+
elem.html(value);
115+
}
116+
if ($.isPlainObject(value)) {
117+
return localizeForSpecialKeys(elem, value);
118+
}
119+
};
120+
localizeInputElement = function(elem, key, value) {
121+
var val;
122+
val = $.isPlainObject(value) ? value.value : value;
123+
if (elem.is("[placeholder]")) {
124+
return elem.attr("placeholder", val);
125+
} else {
126+
return elem.val(val);
127+
}
128+
};
129+
localizeForSpecialKeys = function(elem, value) {
130+
setAttrFromValueForKey(elem, "title", value);
131+
return setTextFromValueForKey(elem, "text", value);
132+
};
133+
localizeOptgroupElement = function(elem, key, value) {
134+
return elem.attr("label", value);
135+
};
136+
localizeImageElement = function(elem, key, value) {
137+
setAttrFromValueForKey(elem, "alt", value);
138+
return setAttrFromValueForKey(elem, "src", value);
139+
};
140+
valueForKey = function(key, data) {
141+
var keys, value, _i, _len;
142+
keys = key.split(/\./);
143+
value = data;
144+
for (_i = 0, _len = keys.length; _i < _len; _i++) {
145+
key = keys[_i];
146+
value = value != null ? value[key] : null;
147+
}
148+
return value;
149+
};
150+
setAttrFromValueForKey = function(elem, key, value) {
151+
value = valueForKey(key, value);
152+
if (value != null) {
153+
return elem.attr(key, value);
154+
}
155+
};
156+
setTextFromValueForKey = function(elem, key, value) {
157+
value = valueForKey(key, value);
158+
if (value != null) {
159+
return elem.text(value);
160+
}
161+
};
162+
regexify = function(string_or_regex_or_array) {
163+
var thing;
164+
if (typeof string_or_regex_or_array === "string") {
165+
return "^" + string_or_regex_or_array + "$";
166+
} else if (string_or_regex_or_array.length != null) {
167+
return ((function() {
168+
var _i, _len, _results;
169+
_results = [];
170+
for (_i = 0, _len = string_or_regex_or_array.length; _i < _len; _i++) {
171+
thing = string_or_regex_or_array[_i];
172+
_results.push(regexify(thing));
173+
}
174+
return _results;
175+
})()).join("|");
176+
} else {
177+
return string_or_regex_or_array;
178+
}
179+
};
180+
lang = normaliseLang(options.language ? options.language : $.defaultLanguage);
181+
if (!(options.skipLanguage && lang.match(regexify(options.skipLanguage)))) {
182+
loadLanguage(pkg, lang, 1);
182183
}
184+
return wrappedSet;
183185
};
184-
lang = normaliseLang(options.language ? options.language : $.defaultLanguage);
185-
if (!(options.skipLanguage && lang.match(regexify(options.skipLanguage)))) {
186-
loadLanguage(pkg, lang, 1);
187-
}
188-
return wrappedSet;
189-
};
190-
191-
$.fn.localize = $.localize;
192-
193-
$.localize.data = {};
186+
$.fn.localize = $.localize;
187+
return $.localize.data = {};
188+
})(jQuery);
194189

195190
}).call(this);

dist/jquery.localize.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)