@@ -18,9 +18,9 @@ normaliseLang = (lang) ->
1818$ .defaultLanguage = normaliseLang (navigator .language || navigator .userLanguage )
1919
2020$ .localize = (pkg , options = {}) ->
21- wrappedSet = this
21+ wrappedSet = this
2222 intermediateLangData = {}
23- fileExtension = options .fileExtension || " json"
23+ fileExtension = options .fileExtension || " json"
2424
2525 loadLanguage = (pkg , lang , level = 1 ) ->
2626 switch level
@@ -59,36 +59,44 @@ $.localize = (pkg, options = {}) ->
5959 ajaxOptions .error = (xhr ) -> successFunc ($ .parseJSON (xhr .responseText ))
6060 $ .ajax (ajaxOptions)
6161
62+ notifyDelegateLanguageLoaded = (data ) ->
63+ if options .callback ?
64+ options .callback (data, defaultCallback)
65+ else
66+ defaultCallback (data)
67+
6268 defaultCallback = (data ) ->
6369 $ .localize .data [pkg] = data
6470 wrappedSet .each ->
65- elem = $ (this )
66- key = elem .data (" localize" )
71+ elem = $ (this )
72+ key = elem .data (" localize" )
6773 key ||= elem .attr (" rel" ).match (/ localize\[ (. *? )\] / )[1 ]
6874 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)
8676
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)
9087 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)
92100
93101 valueForKey = (key , data ) ->
94102 keys = key .split (/ \. / )
@@ -97,9 +105,13 @@ $.localize = (pkg, options = {}) ->
97105 value = if value? then value[key] else null
98106 value
99107
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?
103115
104116 regexify = (string_or_regex_or_array ) ->
105117 if typeof (string_or_regex_or_array) == " string"
0 commit comments