class XliffTransReader
Attributes
file[RW]
languages[RW]
path[RW]
Public Class Methods
new(path, file, languages)
click to toggle source
# File lib/transync/xliff_trans/xliff_trans_reader.rb, line 8 def initialize(path, file, languages) self.path = path self.file = file self.languages = languages end
Public Instance Methods
check_all() { |lang_a, lang_b, xliff_lang_value, x_trans_key, translations_lang_b, length == i| ... }
click to toggle source
# File lib/transync/xliff_trans/xliff_trans_reader.rb, line 79 def check_all self.languages.each do |lang_a| self.languages.each do |lang_b| next if lang_a == lang_b xliff_reader = XliffTransReader.new(self.path, self.file, self.languages) translations_lang_a = self.translations(lang_a)[:translations] keys = translations_lang_a.keys i = 1 keys.each do |x_trans_key| translations_lang_b = xliff_reader.translations(lang_b)[:translations] xliff_lang_value = translations_lang_b[x_trans_key] yield(lang_a, lang_b, xliff_lang_value, x_trans_key, translations_lang_b, keys.length == i) # last key? i += 1 end end end end
fill_with_missing_keys()
click to toggle source
# File lib/transync/xliff_trans/xliff_trans_reader.rb, line 43 def fill_with_missing_keys missing_translation_text = TransyncConfig::CONFIG['MISSING_TRANSLATION_TEXT'] || '#MISSING-TRANS#' all_translations_for_language = {file: file, language: nil, translations: {}} added = false clean = true check_all do |lang_a, lang_b, xliff_lang_value, x_trans_key, translations_lang_b, last| # x_trans_key comes from lang_a translations all_translations_for_language[:language] = lang_b if xliff_lang_value.nil? p "Comparing #{file}.#{lang_a} against #{file}.#{lang_b} => #{file}.#{lang_b} "\ "was missing translation for key '#{x_trans_key}' => setting value: '#{missing_translation_text} - #{x_trans_key}'" all_translations_for_language[:translations][x_trans_key] = "#{missing_translation_text} - #{x_trans_key}" added = true clean = false else all_translations_for_language[:translations][x_trans_key] = xliff_lang_value end if last if added all_translations_for_language[:translations] = translations_lang_b.merge(all_translations_for_language[:translations]) xliff_trans_writer = XliffTransWriter.new(path, file) xliff_trans_writer.write(all_translations_for_language) end # clear all_translations_for_language[:translations] = {} added = false end end # return if any key was added clean end
open_file(language) { |doc| ... }
click to toggle source
Reading from source tags in xliff
# File lib/transync/xliff_trans/xliff_trans_reader.rb, line 101 def open_file(language) begin xml_file = File.open(file_path(language)) doc = Nokogiri::XML(xml_file) yield doc rescue Errno::ENOENT => e abort(e.message) end end
translations(language)
click to toggle source
# File lib/transync/xliff_trans/xliff_trans_reader.rb, line 14 def translations(language) data = { file: file, language: language, translations: {} } open_file(language) do |doc| doc.remove_namespaces! doc.xpath('//trans-unit').each do |node| key = node.xpath('source').text value = node.xpath('target').text data[:translations][key] = value end end data end
valid?()
click to toggle source
# File lib/transync/xliff_trans/xliff_trans_reader.rb, line 29 def valid? missing = 0 check_all do |lang_a, lang_b, xliff_lang_value, x_trans_key| if xliff_lang_value.nil? p "Comparing #{file}.#{lang_a} against #{file}.#{lang_b} => #{file}.#{lang_b} "\ "is missing translation for key '#{x_trans_key}'" missing += 1 end end missing == 0 end
Private Instance Methods
file_path(language)
click to toggle source
# File lib/transync/xliff_trans/xliff_trans_reader.rb, line 113 def file_path(language) "#{path}/#{file}.#{language}.xliff" end