class TranslationIO::Client::InitOperation::CreateYamlPoFilesStep
Attributes
all_used_yaml_locales[RW]
Public Class Methods
new(source_locale, target_locales, yaml_file_paths)
click to toggle source
# File lib/translation_io/client/init_operation/create_yaml_po_files_step.rb, line 7 def initialize(source_locale, target_locales, yaml_file_paths) @source_locale = source_locale @target_locales = target_locales @yaml_file_paths = yaml_file_paths @all_used_yaml_locales = Set.new end
Public Instance Methods
run(params)
click to toggle source
# File lib/translation_io/client/init_operation/create_yaml_po_files_step.rb, line 14 def run(params) TranslationIO.info "Importing translations from YAML files." all_translations = {} @yaml_file_paths.each do |file_path| TranslationIO.info file_path, 2, 2 file_translations = YAML::load(File.read(file_path)) unless file_translations.blank? all_translations = all_translations.deep_merge(file_translations) end end all_flat_translations = FlatHash.to_flat_hash(all_translations) all_flat_string_translations = all_flat_translations.select do |key, value| all_used_yaml_locales << key.split('.').first YamlEntry.string?(key, value) && !YamlEntry.localization?(key, value) end source_flat_string_translations = all_flat_string_translations.select do |key| YamlEntry.from_locale?(key, @source_locale) && !YamlEntry.ignored?(key) end @target_locales.each do |target_locale| po_representation = GetText::PO.new source_flat_string_translations.each_pair do |key, value| target_key = key.gsub(/\A#{TranslationIO.config.source_locale}\./, "#{target_locale}.") msgid = value msgstr = all_flat_string_translations[target_key] unless msgid.to_s.empty? po_entry = GetText::POEntry.new(:msgctxt) po_entry.msgid = msgid po_entry.msgstr = msgstr po_entry.msgctxt = key.split('.', 2).last #po_entry.references = [ value[:locale_file_path] ] po_representation[po_entry.msgctxt, po_entry.msgid] = po_entry end end params["yaml_po_data_#{target_locale}"] = po_representation.to_s end end