0
0
Fork 0

Translate CW, poll options and media descriptions (#24175)

Co-authored-by: Claire <claire.github-309c@sitedethib.com>
This commit is contained in:
Christian Schmidt 2023-06-01 00:10:21 +02:00 committed by GitHub
parent 44cd88adc4
commit 69057467cb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
25 changed files with 603 additions and 100 deletions

View file

@ -8,8 +8,8 @@ class TranslationService::LibreTranslate < TranslationService
@api_key = api_key
end
def translate(text, source_language, target_language)
body = Oj.dump(q: text, source: source_language.presence || 'auto', target: target_language, format: 'html', api_key: @api_key)
def translate(texts, source_language, target_language)
body = Oj.dump(q: texts, source: source_language.presence || 'auto', target: target_language, format: 'html', api_key: @api_key)
request(:post, '/translate', body: body) do |res|
transform_response(res.body_with_limit, source_language)
end
@ -44,12 +44,17 @@ class TranslationService::LibreTranslate < TranslationService
end
end
def transform_response(str, source_language)
json = Oj.load(str, mode: :strict)
def transform_response(json, source_language)
data = Oj.load(json, mode: :strict)
raise UnexpectedResponseError unless data.is_a?(Hash)
raise UnexpectedResponseError unless json.is_a?(Hash)
Translation.new(text: json['translatedText'], detected_source_language: source_language, provider: 'LibreTranslate')
data['translatedText'].map.with_index do |text, index|
Translation.new(
text: text,
detected_source_language: data.dig('detectedLanguage', index, 'language') || source_language,
provider: 'LibreTranslate'
)
end
rescue Oj::ParseError
raise UnexpectedResponseError
end