Class: Breeze::Translation
- Inherits:
-
Object
- Object
- Breeze::Translation
- Defined in:
- app/models/breeze/translation.rb
Overview
gives a handle on the translations
actual translations are stored in the object (section/card) but dealing with hashes of hashes quickly gets unwieldy, hence this class
Strings are written lasily into the object, ie no translation, no text
Instance Attribute Summary collapse
-
#object ⇒ Object
readonly
fields :objectid , :object_type # poly: card or section (id without _, no association) fields :language # the language for which the is a translation fields :text , :header, :sub_header #actual text fields.
Class Method Summary collapse
-
.find(id) ⇒ Object
find according to id, ie class_num.
Instance Method Summary collapse
- #auto_translate(editor) ⇒ Object
- #get_header ⇒ Object
- #get_text ⇒ Object
- #header ⇒ Object
- #id ⇒ Object
-
#initialize(object, language) ⇒ Translation
constructor
A new instance of Translation.
- #is_manual? ⇒ Boolean
- #is_old? ⇒ Boolean
- #set_header(header) ⇒ Object
- #set_text(text) ⇒ Object
- #text ⇒ Object
- #update(hash, editor, manual) ⇒ Object
- #updated_at ⇒ Object
Constructor Details
#initialize(object, language) ⇒ Translation
Returns a new instance of Translation.
17 18 19 20 21 22 |
# File 'app/models/breeze/translation.rb', line 17 def initialize(object , language) @object = object @language = language raise "no object type" unless object.object_type raise "not configured language #{language}" unless Breeze.has_language(language) end |
Instance Attribute Details
#object ⇒ Object (readonly)
fields :objectid , :object_type # poly: card or section (id without _, no association) fields :language # the language for which the is a translation fields :text , :header, :sub_header #actual text fields
15 16 17 |
# File 'app/models/breeze/translation.rb', line 15 def object @object end |
Class Method Details
.find(id) ⇒ Object
find according to id, ie class_num
99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'app/models/breeze/translation.rb', line 99 def self.find(id) clazz , lang , num = id.split("-") num = num.to_i case clazz when "Section" object = Section.find(num) when "Card" object = Card.find( num ) else raise "clazz not recognized #{clazz}" end object.get_translation(lang) end |
Instance Method Details
#auto_translate(editor) ⇒ Object
91 92 93 94 95 96 |
# File 'app/models/breeze/translation.rb', line 91 def auto_translate(editor) translated = { text: DeepL.translate(self.object.text, 'EN', self.language).text, header: DeepL.translate(self.object.header, 'EN', self.language).text } self.update(translated, editor , false) end |
#get_header ⇒ Object
56 57 58 59 |
# File 'app/models/breeze/translation.rb', line 56 def get_header return "" unless data = object.data[language] data[:header] || "" end |
#get_text ⇒ Object
45 46 47 48 |
# File 'app/models/breeze/translation.rb', line 45 def get_text return "" unless data = object.data[language] data[:text] || "" end |
#header ⇒ Object
34 35 36 37 38 |
# File 'app/models/breeze/translation.rb', line 34 def header t = get_header return t unless t.blank? return object.header end |
#id ⇒ Object
24 25 26 |
# File 'app/models/breeze/translation.rb', line 24 def id "#{object.object_type}-#{language}-#{object.id}" end |
#is_manual? ⇒ Boolean
40 41 42 43 |
# File 'app/models/breeze/translation.rb', line 40 def is_manual? return false unless data = object.data[language] data[:manual] || false end |
#is_old? ⇒ Boolean
67 68 69 70 71 |
# File 'app/models/breeze/translation.rb', line 67 def is_old? return false if(text.blank? and header.blank?) return true unless self.updated_at object.updated_at > self.updated_at end |
#set_header(header) ⇒ Object
61 62 63 64 65 |
# File 'app/models/breeze/translation.rb', line 61 def set_header(header) object.data[language] = {} unless object.data[language] object.data[language][:updated_at] = Time.now object.data[language][:header] = header end |
#set_text(text) ⇒ Object
50 51 52 53 54 |
# File 'app/models/breeze/translation.rb', line 50 def set_text(text) object.data[language] = {} unless object.data[language] object.data[language][:updated_at] = Time.now object.data[language][:text] = text end |
#text ⇒ Object
28 29 30 31 32 |
# File 'app/models/breeze/translation.rb', line 28 def text t = get_text return t unless t.blank? return object.text end |
#update(hash, editor, manual) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'app/models/breeze/translation.rb', line 78 def update(hash , editor , manual ) return unless hash set_text(hash[:text]) if hash.has_key?(:text) set_header(hash[:header]) if hash.has_key?(:header) object.data[language] = {} unless object.data[language] object.data[language][:updated_by] = editor object.data[language][:updated_at] = Time.now object.data[language][:manual] = manual ChangeSet.current.add(self.class.name , "#{language}:#{object.change_name}", editor) object.class.save_all end |
#updated_at ⇒ Object
73 74 75 76 |
# File 'app/models/breeze/translation.rb', line 73 def updated_at return nil unless object.data[language] object.data[language][:updated_at] end |