Skip to content

Commit d9a8dbc

Browse files
committed
fix: error handling
1 parent 34c0a24 commit d9a8dbc

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

lib/lingodotdev.rb

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

spec/lingo_dot_dev/engine_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@
132132
target_locale: target_locale
133133
)
134134
expect(result).to be_a(Hash)
135-
expect(result.keys).to include(:greeting, :farewell)
135+
expect(result.keys).to include('greeting', 'farewell')
136136
end
137137

138138
it 'localizes object with source locale' do

0 commit comments

Comments
 (0)