@@ -178,40 +178,43 @@ def localization_keys
178
178
179
179
def find_localization ( locale , key_without_locale , value = nil , force_array = false , update_value = false )
180
180
unless value . is_a? ( Hash )
181
- localization_key = find_localization_key ( key_without_locale )
182
- localization = Lit ::Localization . where ( locale_id : locale . id ) .
183
- where ( localization_key_id : localization_key . id ) . first_or_initialize
184
- if update_value || localization . new_record?
185
- if value . is_a? ( Array )
186
- unless force_array
187
- new_value = nil
188
- value_clone = value . dup
189
- while ( v = value_clone . shift ) && v . present?
190
- pv = parse_value ( v , locale )
191
- new_value = pv unless pv . nil?
181
+ ActiveRecord ::Base . transaction do
182
+ localization_key = find_localization_key ( key_without_locale )
183
+ localization = Lit ::Localization . where ( locale_id : locale . id ) .
184
+ where ( localization_key_id : localization_key . id ) . first_or_initialize
185
+ if update_value || localization . new_record?
186
+ if value . is_a? ( Array )
187
+ unless force_array
188
+ new_value = nil
189
+ value_clone = value . dup
190
+ while ( v = value_clone . shift ) && v . present?
191
+ pv = parse_value ( v , locale )
192
+ new_value = pv unless pv . nil?
193
+ end
194
+ value = new_value
192
195
end
193
- value = new_value
196
+ else
197
+ value = parse_value ( value , locale ) unless value . nil?
194
198
end
195
- else
196
- value = parse_value ( value , locale ) unless value . nil?
197
- end
198
- if value . nil?
199
- if Lit . fallback
200
- @locale_cache . keys . each do |lc |
201
- if lc != locale . locale
202
- nk = "#{ lc } .#{ key_without_locale } "
203
- v = localizations [ nk ]
204
- value = v if v . present? && value . nil?
199
+ if value . nil?
200
+ if Lit . fallback
201
+ @locale_cache . keys . each do |lc |
202
+ if lc != locale . locale
203
+ nk = "#{ lc } .#{ key_without_locale } "
204
+ v = localizations [ nk ]
205
+ value = v if v . present? && value . nil?
206
+ end
205
207
end
206
208
end
209
+ if value . nil? && Lit . humanize_key
210
+ value = key_without_locale . split ( '.' ) . last . humanize
211
+ end
207
212
end
208
- if value . nil? && Lit . humanize_key
209
- value = key_without_locale . split ( '.' ) . last . humanize
210
- end
213
+ localization . update_default_value ( value )
211
214
end
212
- localization . update_default_value ( value )
215
+ return localization
216
+
213
217
end
214
- return localization
215
218
else
216
219
nil
217
220
end
0 commit comments