@@ -18,9 +18,9 @@ normaliseLang = (lang) ->
18
18
$ .defaultLanguage = normaliseLang (navigator .language || navigator .userLanguage )
19
19
20
20
$ .localize = (pkg , options = {}) ->
21
- wrappedSet = this
21
+ wrappedSet = this
22
22
intermediateLangData = {}
23
- fileExtension = options .fileExtension || " json"
23
+ fileExtension = options .fileExtension || " json"
24
24
25
25
loadLanguage = (pkg , lang , level = 1 ) ->
26
26
switch level
@@ -59,36 +59,44 @@ $.localize = (pkg, options = {}) ->
59
59
ajaxOptions .error = (xhr ) -> successFunc ($ .parseJSON (xhr .responseText ))
60
60
$ .ajax (ajaxOptions)
61
61
62
+ notifyDelegateLanguageLoaded = (data ) ->
63
+ if options .callback ?
64
+ options .callback (data, defaultCallback)
65
+ else
66
+ defaultCallback (data)
67
+
62
68
defaultCallback = (data ) ->
63
69
$ .localize .data [pkg] = data
64
70
wrappedSet .each ->
65
- elem = $ (this )
66
- key = elem .data (" localize" )
71
+ elem = $ (this )
72
+ key = elem .data (" localize" )
67
73
key ||= elem .attr (" rel" ).match (/ localize\[ (. *? )\] / )[1 ]
68
74
value = valueForKey (key, data)
69
- if elem .is (' input' )
70
- if elem .is (" [placeholder]" )
71
- elem .attr (" placeholder" , value)
72
- else
73
- elem .val (value)
74
- else if elem .is (' optgroup' )
75
- elem .attr (" label" , value)
76
- else if elem .is (' img' )
77
- applyValueToAttribute (key, " alt" , data, elem)
78
- applyValueToAttribute (key, " src" , data, elem)
79
- else unless $ .isPlainObject (value)
80
- elem .html (value)
81
-
82
- if $ .isPlainObject (value)
83
- applyValueToAttribute (key, " title" , data, elem)
84
- value = valueForKey (" #{ key} .text" , data)
85
- elem .text (value) if value?
75
+ localizeElement (elem, key, value)
86
76
87
- notifyDelegateLanguageLoaded = (data ) ->
88
- if options .callback ?
89
- options .callback (data, defaultCallback)
77
+ localizeElement = (elem , key , value ) ->
78
+ if elem .is (' input' ) then localizeInputElement (elem, key, value)
79
+ else if elem .is (' img' ) then localizeImageElement (elem, key, value)
80
+ else if elem .is (' optgroup' ) then localizeOptgroupElement (elem, key, value)
81
+ else unless $ .isPlainObject (value) then elem .html (value)
82
+ localizeForSpecialKeys (elem, value) if $ .isPlainObject (value)
83
+
84
+ localizeInputElement = (elem , key , value ) ->
85
+ if elem .is (" [placeholder]" )
86
+ elem .attr (" placeholder" , value)
90
87
else
91
- defaultCallback (data)
88
+ elem .val (value)
89
+
90
+ localizeForSpecialKeys = (elem , value ) ->
91
+ setAttrFromValueForKey (elem, " title" , value)
92
+ setTextFromValueForKey (elem, " text" , value)
93
+
94
+ localizeOptgroupElement = (elem , key , value ) ->
95
+ elem .attr (" label" , value)
96
+
97
+ localizeImageElement = (elem , key , value ) ->
98
+ setAttrFromValueForKey (elem, " alt" , value)
99
+ setAttrFromValueForKey (elem, " src" , value)
92
100
93
101
valueForKey = (key , data ) ->
94
102
keys = key .split (/ \. / )
@@ -97,9 +105,13 @@ $.localize = (pkg, options = {}) ->
97
105
value = if value? then value[key] else null
98
106
value
99
107
100
- applyValueToAttribute = (key , attribute , data , elem ) ->
101
- value = valueForKey (" #{ key} .#{ attribute} " , data)
102
- elem .attr (attribute, value) if value?
108
+ setAttrFromValueForKey = (elem , key , value ) ->
109
+ value = valueForKey (key, value)
110
+ elem .attr (key, value) if value?
111
+
112
+ setTextFromValueForKey = (elem , key , value ) ->
113
+ value = valueForKey (key, value)
114
+ elem .text (value) if value?
103
115
104
116
regexify = (string_or_regex_or_array ) ->
105
117
if typeof (string_or_regex_or_array) == " string"
0 commit comments