Class: Fastlane::Helper::TranslateGptReleaseNotesHelper

Inherits:
Object
  • Object
show all
Defined in:
lib/fastlane/plugin/translate_gpt_release_notes/helper/translate_gpt_release_notes_helper.rb

Instance Method Summary collapse

Constructor Details

#initialize(params) ⇒ TranslateGptReleaseNotesHelper

Returns a new instance of TranslateGptReleaseNotesHelper.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/fastlane/plugin/translate_gpt_release_notes/helper/translate_gpt_release_notes_helper.rb', line 10

def initialize(params)
  @params = params
  provider_name = params[:provider] || 'openai'

  # Validate provider selection
  unless Providers::ProviderFactory.valid_provider?(provider_name)
    UI.warning "Unknown provider '#{provider_name}', falling back to OpenAI"
    provider_name = 'openai'
  end

  # Create provider via factory (handles credential resolution)
  @provider = Providers::ProviderFactory.create(provider_name, params)

  # Validate provider configuration
  unless @provider.valid?
    UI.user_error!("Provider configuration errors: #{@provider.config_errors.join(', ')}")
  end

  # Initialize glossary loader if glossary parameters are provided
  if params[:glossary] || params[:glossary_dir]
    @glossary_loader = GlossaryLoader.new(params)
    UI.message("Glossary sources: #{[params[:glossary] && 'file', params[:glossary_dir] && 'directory'].compact.join(' + ')}")
  end
end

Instance Method Details

#translate_text(text, target_locale, _platform) ⇒ Object

Request a translation from the configured provider



36
37
38
39
40
41
42
43
44
45
# File 'lib/fastlane/plugin/translate_gpt_release_notes/helper/translate_gpt_release_notes_helper.rb', line 36

def translate_text(text, target_locale, _platform)
  source_locale = @params[:master_locale]
  glossary_terms = @glossary_loader&.terms_for(text, target_locale) || {}

  if glossary_terms.any?
    UI.message("Glossary: #{glossary_terms.size} terms matched for #{target_locale}")
  end

  @provider.translate(text, source_locale, target_locale, glossary_terms: glossary_terms)
end