Sha256: 0d4b943dcb10b437204ada1d384df4aad8619a3684f42ba034d83ba4dc0981cf
Contents?: true
Size: 1.56 KB
Versions: 1
Compression:
Stored size: 1.56 KB
Contents
require 'nokogiri' class XliffTransReader attr_accessor :dir, :file, :language, :languages def initialize(dir, file, language, languages) self.dir = dir self.file = file self.language = language self.languages = languages end def get_translations data = { language: language, translations: [] } open_file do |doc| # hacky hack, xliff is dirty as hell doc.remove_namespaces! doc.xpath('//trans-unit').each do |node| data[:translations] << { key: node.xpath('source').text, value: node.xpath('target').text, } end end data end # will go through each and find if any xliff is missing keys for translations def valid? self.get_translations[:translations].each do |x_trans| self.languages.each do |key_lang| next if key_lang == language xliff_reader = XliffTransReader.new(self.dir, self.file, key_lang, self.languages) xliff_lang = xliff_reader.get_translations[:translations] xliff_lang_value = xliff_lang.detect{ |xt| xt[:key] == x_trans[:key] } if xliff_lang_value.nil? p "#{file}.#{key_lang} is missing translation for key '#{x_trans[:key]}'" return false end end end true end # Reading from source tags in xliff def open_file begin xml_file = File.open(file_path) doc = Nokogiri::XML(xml_file) yield doc rescue Errno::ENOENT => e abort(e.message) end end private def file_path "#{dir}/#{file}.#{language}.xliff" end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
transync-0.0.1 | lib/transync/xliff_trans/xliff_trans_reader.rb |