@@ -9,187 +9,182 @@ http://keith-wood.name/localisation.html
9
9
*/
10
10
11
11
( 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 ( ) ;
60
18
}
19
+ return lang ;
61
20
} ;
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 = { } ;
66
26
}
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
+ }
75
56
}
76
57
} ;
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 ) ;
88
67
} ;
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 ( / l o c a l i z e \[ ( .* ?) \] / ) [ 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 ) ;
177
71
}
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 ( / l o c a l i z e \[ ( .* ?) \] / ) [ 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 ) ;
182
183
}
184
+ return wrappedSet ;
183
185
} ;
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 ) ;
194
189
195
190
} ) . call ( this ) ;
0 commit comments