module I18n::Backend::Weeler::Exporter::ClassMethods

Public Instance Methods

as_xlsx_package() click to toggle source

Prepare xlsx package from current scope Stores all translations in translations worksheet.

# File lib/i18n/backend/weeler/exporter.rb, line 31
def as_xlsx_package
  package = Axlsx::Package.new
  package.use_shared_strings = true

  sheet = package.workbook.add_worksheet(name: "translations")

  locales = I18n.available_locales
  sheet.add_row(Translation.title_row(locales))

  types = []
  (locales.size + 1).times { types << :string }

  included_keys = []

  self.current_scope.each do |translation|
    unless included_keys.include? translation.key
      sheet.add_row(Translation.translation_row_by_key_and_locales(translation.key, locales), types: types)
      included_keys << translation.key
    end
  end
  return package
end
title_row(locales) click to toggle source
# File lib/i18n/backend/weeler/exporter.rb, line 54
def title_row locales
  row = [ 'Key' ]
  locales.each do |locale|
    row.push(locale.capitalize)
  end
  row
end
translation_row_by_key_and_locales(key, locales) click to toggle source
# File lib/i18n/backend/weeler/exporter.rb, line 62
def translation_row_by_key_and_locales key, locales
  row = [ key ]
  locales.each do |locale|
    result = Translation.locale(locale).lookup(key).load
    if result.first.present?
      row.push(result.first.value)
    else
      row.push("")
    end
  end
  row
end