Class: Decidim::MachineTranslationSaveJob
- Inherits:
 - 
      ApplicationJob
      
        
- Object
 - ActiveJob::Base
 - ApplicationJob
 - Decidim::MachineTranslationSaveJob
 
 
- Defined in:
 - app/jobs/decidim/machine_translation_save_job.rb
 
Overview
This job is used by machine translation services to store the result of a field translation. This way services do not need to care about how to save it and also enables storing translations asynchronously when the translation service returns the translated text in a webhook.
Instance Method Summary collapse
- 
  
    
      #perform(resource, field_name, target_locale, translated_text)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Performs the job.
 
Instance Method Details
#perform(resource, field_name, target_locale, translated_text) ⇒ Object
Performs the job. It will not perform anything if the ‘Decidim.machine_translation_service` config is not set.
resource - Any kind of ‘Decidim::TranslatableResource` model instance field_name - A Symbol representing the name of the field being translated target_locale - A Symbol representing the target locale for the translation translated_text - A String with the value of the field_name, translated
into the target_locale
  
      19 20 21 22 23 24 25 26 27 28 29 30 31 32 33  | 
    
      # File 'app/jobs/decidim/machine_translation_save_job.rb', line 19 def perform(resource, field_name, target_locale, translated_text) resource.with_lock do if resource[field_name]["machine_translations"].present? resource[field_name]["machine_translations"] = resource[field_name]["machine_translations"].merge(target_locale => translated_text) else resource[field_name] = resource[field_name].merge("machine_translations" => { target_locale => translated_text }) end # rubocop:disable Rails/SkipsModelValidations resource.update_column field_name.to_sym, resource[field_name] # rubocop:enable Rails/SkipsModelValidations end send_translated_report_notifications(resource) if reported_resource_in_organization_language?(resource, target_locale) end  |