module Translation

The part where the actual translation happens.

Attributes

language[RW]
to_language[RW]

Public Instance Methods

available_languages() click to toggle source
# File lib/translate_self/translation.rb, line 8
def available_languages
  @@languages
end
translate() click to toggle source

Translates self to the desired language. \ Sample usage: hello = 'hello'\ hello.to_language = 'fi' moi = hello.translate pp moi # 'Hei' @return [String] a new and shiny translated string!

# File lib/translate_self/translation.rb, line 20
def translate
  call_deepl(language, to_language)
end
translate!() click to toggle source

Replaces self with the translation. \ Sample usage: hello = 'hello'\ hello.to_language = 'fi' hello.translate! pp hello # 'Hei' @return [String] self replaced with the new translation

# File lib/translate_self/translation.rb, line 32
def translate!
  replace translate
end

Private Instance Methods

break_text_into_sentences() click to toggle source
# File lib/translate_self/translation.rb, line 59
def break_text_into_sentences
  last_letter = if self[-1] == '.'
                  '.'
                else
                  ''
                end
  tr_count = (bytesize / 25_000.to_f).ceil
  sentences = split('.')
  number_of_sentences = sentences.length / tr_count
  current_count = 0
  tr_count.times.map do |num|
    txt = sentences[current_count..(current_count + number_of_sentences)].join('.')
    current_count += number_of_sentences.next
    txt + last_letter if num == tr_count.pred
  end
end
break_up(to_lan) click to toggle source
# File lib/translate_self/translation.rb, line 52
def break_up(to_lan)
  sentences = break_text_into_sentences
  sentences.length.times.map.with_index do |_i, i|
    sentences[i].send "translate_to_#{to_lan}"
  end.join(' ')
end
call_deepl(language = self.language, to_lan = to_language) click to toggle source
# File lib/translate_self/translation.rb, line 76
def call_deepl(language = self.language, to_lan = to_language)
  warn 'No language given!' and return if to_lan.nil?
  return break_up(to_lan) if bytesize > 30_000

  response = DeepL.translate self, language, to_lan
  self.language = response.detected_source_language.downcase if self.language.nil? && !frozen?
  actual_translation = response.text
  actual_translation.language = to_lan
  actual_translation
end