Namespace
Methods
L
N
P
Instance Protected methods
load_po(filename)
# File activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/gettext.rb, line 31
def load_po(filename)
  locale = ::File.basename(filename, '.po').to_sym
  data = normalize(locale, parse(filename))
  { locale => data }
end
normalize(locale, data)
# File activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/gettext.rb, line 41
def normalize(locale, data)
  data.inject({}) do |result, (key, value)|
    unless key.nil? || key.empty?
      key, value = normalize_pluralization(locale, key, value) if key.index("\0000")
      parts = key.split('|').reverse
      normalized = parts.inject({}) do |normalized, part|
        normalized = { part => normalized.empty? ? value : normalized }
      end
      # deep_merge by Stefan Rusterholz, see http://www.ruby-forum.com/topic/142809
      merger = proc { |key, v1, v2| Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : v2 }
      result.merge!(normalized, &merger)
    end
    result
  end
end
normalize_pluralization(locale, key, value)
# File activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/gettext.rb, line 59
def normalize_pluralization(locale, key, value)
  # FIXME po_parser includes \000 chars that can not be turned into Symbols
  key = key.gsub("\0000", I18n::Gettext::PLURAL_SEPARATOR).split(I18n::Gettext::PLURAL_SEPARATOR).first
  keys = I18n::Gettext.plural_keys(locale)
  values = value.split("\0000")
  raise "invalid number of plurals: #{values.size}, keys: #{keys.inspect}" if values.size != keys.size
  result = {}
  values.each_with_index { |value, ix| result[keys[ix]] = value }
  [key, result]
end
parse(filename)
# File activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/gettext.rb, line 37
def parse(filename)
  GetText::PoParser.new.parse(::File.read(filename), PoData.new)
end