class TranslationIO::Client::InitOperation::UpdateAndCollectPoFilesStep

Public Class Methods

new(target_locales, pot_path, locales_path) click to toggle source
# File lib/translation_io/client/init_operation/update_and_collect_po_files_step.rb, line 5
def initialize(target_locales, pot_path, locales_path)
  @target_locales = target_locales
  @pot_path       = pot_path
  @locales_path   = locales_path
end

Public Instance Methods

run(params) click to toggle source
# File lib/translation_io/client/init_operation/update_and_collect_po_files_step.rb, line 11
def run(params)
  TranslationIO.info "Updating PO files."

  text_domain = TranslationIO.config.text_domain

  @target_locales.each do |target_locale|
    po_path = "#{@locales_path}/#{Locale::Tag.parse(target_locale).to_s}/#{text_domain}.po"
    TranslationIO.info po_path, 2, 2

    if File.exist?(po_path)
      GetText::Tools::MsgMerge.run(po_path, @pot_path, '-o', po_path, '--no-fuzzy-matching', '--no-obsolete-entries')
    else
      FileUtils.mkdir_p(File.dirname(po_path))
      GetText::Tools::MsgInit.run('-i', @pot_path, '-o', po_path, '-l', target_locale, '--no-translator')
    end

    params["po_data_#{target_locale}"] = File.read(po_path)
  end

  return self
end