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