@@ -223,7 +223,8 @@ def localize_text(text, target_locale:, source_locale: nil, fast: nil, reference
223223 callback &.call ( progress )
224224 end
225225
226- response [ :text ] || ''
226+ raise APIError , 'API did not return localized text' unless response . key? ( 'text' )
227+ response [ 'text' ]
227228 end
228229
229230 # Localizes all string values in a Hash.
@@ -255,7 +256,7 @@ def localize_object(obj, target_locale:, source_locale: nil, fast: nil, referenc
255256
256257 callback = block || on_progress
257258
258- localize_raw (
259+ response = localize_raw (
259260 obj ,
260261 target_locale : target_locale ,
261262 source_locale : source_locale ,
@@ -264,6 +265,9 @@ def localize_object(obj, target_locale:, source_locale: nil, fast: nil, referenc
264265 concurrent : concurrent ,
265266 &callback
266267 )
268+
269+ raise APIError , 'API returned empty localization response' if response . empty?
270+ response
267271 end
268272
269273 # Localizes chat messages while preserving structure.
@@ -321,7 +325,8 @@ def localize_chat(chat, target_locale:, source_locale: nil, fast: nil, reference
321325 callback &.call ( progress )
322326 end
323327
324- response [ :chat ] || [ ]
328+ raise APIError , 'API did not return localized chat' unless response . key? ( 'chat' )
329+ response [ 'chat' ]
325330 end
326331
327332 # Localizes an HTML document while preserving structure and formatting.
@@ -870,7 +875,8 @@ def localize_chunk(chunk, target_locale:, source_locale:, fast:, reference:, wor
870875 raise APIError , data [ :error ]
871876 end
872877
873- data [ :data ] || { }
878+ # Normalize all keys to strings for consistent access throughout the SDK
879+ ( data [ :data ] || { } ) . transform_keys ( &:to_s )
874880 rescue StandardError => e
875881 raise APIError , "Request failed: #{ e . message } "
876882 end
0 commit comments