class GetText::Tools::MsgInit

Constants

DESCRIPTION_TITLE
EMAIL
FIRST_AUTHOR_KEY
LANGUAGE_KEY
LANGUAGE_TEAM_KEY
LAST_TRANSLATOR_KEY
PLURAL_FORMS
POT_REVISION_DATE_KEY
VERSION
YEAR_KEY

Public Class Methods

run(*arguments) click to toggle source

Create a new .po file from initializing .pot file with user's environment and input. @param [Array<String>] arguments arguments for rmsginit. @return [void]

# File lib/gettext/tools/msginit.rb, line 44
def run(*arguments)
  new.run(*arguments)
end

Public Instance Methods

run(*arguments) click to toggle source

Create .po file from .pot file, user's inputs and metadata. @param [Array] arguments the list of arguments for rmsginit

# File lib/gettext/tools/msginit.rb, line 65
def run(*arguments)
  parse_arguments(*arguments)
  validate

  parser = POParser.new
  parser.ignore_fuzzy = false
  pot = parser.parse_file(@input_file, GetText::PO.new)
  po = replace_pot_header(pot)

  File.open(@output_file, "w") do |f|
    f.puts(po.to_s)
  end
end

Private Instance Methods

find_password_entry() click to toggle source
# File lib/gettext/tools/msginit.rb, line 217
def find_password_entry
  Etc.getpwuid
rescue ArgumentError
  nil
end
guess_full_name() click to toggle source
# File lib/gettext/tools/msginit.rb, line 202
def guess_full_name
  full_name = guess_full_name_from_password_entry
  full_name ||= ENV["USERNAME"]
  full_name
end
guess_full_name_from_password_entry() click to toggle source
# File lib/gettext/tools/msginit.rb, line 208
def guess_full_name_from_password_entry
  password_entry = find_password_entry
  return nil if password_entry.nil?

  full_name = password_entry.gecos.split(/,/).first.strip
  full_name = nil if full_name.empty?
  full_name
end
guess_mail() click to toggle source
# File lib/gettext/tools/msginit.rb, line 231
def guess_mail
  ENV["EMAIL"]
end
now() click to toggle source
# File lib/gettext/tools/msginit.rb, line 376
def now
  @now ||= Time.now
end
prompt(message, default) click to toggle source
# File lib/gettext/tools/msginit.rb, line 235
def prompt(message, default)
  print(message)
  print(" [#{default}]") if default
  print(": ")

  user_input = $stdin.gets.chomp
  if user_input.empty?
    default
  else
    user_input
  end
end
replace_comment() click to toggle source
# File lib/gettext/tools/msginit.rb, line 255
def replace_comment
  replace_description
  replace_first_author
  replace_copyright_year
  @comment = @comment.gsub(/^fuzzy$/, "")
end
replace_entry() click to toggle source
# File lib/gettext/tools/msginit.rb, line 248
def replace_entry
  replace_last_translator
  replace_pot_revision_date
  replace_language
  replace_plural_forms
end
revision_date() click to toggle source
# File lib/gettext/tools/msginit.rb, line 380
def revision_date
  now.strftime("%Y-%m-%d %H:%M%z")
end
translator_full_name() click to toggle source
# File lib/gettext/tools/msginit.rb, line 194
def translator_full_name
  read_translator_full_name
end
translator_info() click to toggle source
# File lib/gettext/tools/msginit.rb, line 184
def translator_info
  full_name = translator_full_name
  mail = translator_mail
  if not full_name.nil? and not mail.nil?
    "#{full_name} <#{mail}>"
  else
    nil
  end
end
translator_mail() click to toggle source
# File lib/gettext/tools/msginit.rb, line 223
def translator_mail
  read_translator_mail
end
valid_locale?(language_tag) click to toggle source
# File lib/gettext/tools/msginit.rb, line 164
def valid_locale?(language_tag)
  return false if language_tag.instance_of?(Locale::Tag::Irregular)

  Locale::Info.language_code?(language_tag.language)
end
validate() click to toggle source
# File lib/gettext/tools/msginit.rb, line 129
def validate
  if @input_file.nil?
    @input_file = Dir.glob("./*.pot").first
    if @input_file.nil?
      raise(ValidationError,
            _(".pot file does not exist in the current directory."))
    end
  else
    unless File.exist?(@input_file)
      raise(ValidationError,
            _("file '%s' does not exist." % @input_file))
    end
  end

  if @locale.nil?
    language_tag = Locale.current
  else
    language_tag = Locale::Tag.parse(@locale)
  end

  unless valid_locale?(language_tag)
    raise(ValidationError,
          _("Locale '#{language_tag}' is invalid. " +
              "Please check if your specified locale is usable."))
  end
  @locale = language_tag.to_simple.to_s
  @language = language_tag.language

  @output_file ||= "#{@locale}.po"
  if File.exist?(@output_file)
    raise(ValidationError,
          _("file '%s' has already existed." % @output_file))
  end
end
year() click to toggle source
# File lib/gettext/tools/msginit.rb, line 384
def year
  now.year
end