Class: Restaurants::FieldTranslationService
- Inherits:
-
Object
- Object
- Restaurants::FieldTranslationService
- Includes:
- ElasticAPM::SpanHelpers
- Defined in:
- app/services/restaurants/field_translation_service.rb
Overview
Service for translating a single field without saving to database Returns translated text for frontend to populate form inputs
Direct Known Subclasses
Constant Summary collapse
- SUPPORTED_LANGUAGES =
{ 'en' => 'English', 'th' => 'Thai', 'zh' => 'Chinese (Traditional)', 'cn' => 'Chinese (Simplified)', 'ru' => 'Russian', 'ko' => 'Korean', 'ja' => 'Japanese', 'ms' => 'Malay', 'fr' => 'French', 'de' => 'German', 'es' => 'Spanish', 'id' => 'Indonesian', 'vi' => 'Vietnamese', }.freeze
Instance Attribute Summary collapse
-
#field_name ⇒ Object
readonly
Returns the value of attribute field_name.
-
#source_language ⇒ Object
readonly
Returns the value of attribute source_language.
-
#source_text ⇒ Object
readonly
Returns the value of attribute source_text.
-
#target_languages ⇒ Object
readonly
Returns the value of attribute target_languages.
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(source_text:, field_name:, source_language: 'en', target_languages: []) ⇒ FieldTranslationService
constructor
A new instance of FieldTranslationService.
Constructor Details
#initialize(source_text:, field_name:, source_language: 'en', target_languages: []) ⇒ FieldTranslationService
Returns a new instance of FieldTranslationService.
28 29 30 31 32 33 |
# File 'app/services/restaurants/field_translation_service.rb', line 28 def initialize(source_text:, field_name:, source_language: 'en', target_languages: []) @source_text = source_text @source_language = source_language @target_languages = target_languages @field_name = field_name end |
Instance Attribute Details
#field_name ⇒ Object (readonly)
Returns the value of attribute field_name.
10 11 12 |
# File 'app/services/restaurants/field_translation_service.rb', line 10 def field_name @field_name end |
#source_language ⇒ Object (readonly)
Returns the value of attribute source_language.
10 11 12 |
# File 'app/services/restaurants/field_translation_service.rb', line 10 def source_language @source_language end |
#source_text ⇒ Object (readonly)
Returns the value of attribute source_text.
10 11 12 |
# File 'app/services/restaurants/field_translation_service.rb', line 10 def source_text @source_text end |
#target_languages ⇒ Object (readonly)
Returns the value of attribute target_languages.
10 11 12 |
# File 'app/services/restaurants/field_translation_service.rb', line 10 def target_languages @target_languages end |
Instance Method Details
#call ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'app/services/restaurants/field_translation_service.rb', line 35 def call validate_inputs! # Filter out unsupported languages (km, la not supported by AWS Translate) supported_targets = target_languages.select { |lang| SUPPORTED_LANGUAGES.key?(lang) } if supported_targets.blank? return failure_result('No supported target languages selected') end translations = execute_translation(supported_targets) if translations.present? success_result(translations) else failure_result('Translation failed - no results returned') end rescue StandardError => e APMErrorHandler.report(e, context: { field_name: field_name, source_language: source_language }) failure_result("Translation error: #{e.}") end |