feat: Add Google Translate API Integration (#6454)
This commit is contained in:
@@ -18,6 +18,24 @@ class Api::V1::Accounts::Conversations::MessagesController < Api::V1::Accounts::
|
||||
end
|
||||
end
|
||||
|
||||
def translate
|
||||
return head :ok if already_translated_content_available?
|
||||
|
||||
translated_content = Integrations::GoogleTranslate::ProcessorService.new(
|
||||
message: message,
|
||||
target_language: permitted_params[:target_language]
|
||||
).perform
|
||||
|
||||
if translated_content.present?
|
||||
translations = {}
|
||||
translations[permitted_params[:target_language]] = translated_content
|
||||
translations = message.translations.merge!(translations) if message.translations.present?
|
||||
message.update!(translations: translations)
|
||||
end
|
||||
|
||||
render json: { content: translated_content }
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def message
|
||||
@@ -29,6 +47,10 @@ class Api::V1::Accounts::Conversations::MessagesController < Api::V1::Accounts::
|
||||
end
|
||||
|
||||
def permitted_params
|
||||
params.permit(:id)
|
||||
params.permit(:id, :target_language)
|
||||
end
|
||||
|
||||
def already_translated_content_available?
|
||||
message.translations.present? && message.translations[permitted_params[:target_language]].present?
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user