module Aerogel::I18n

Aerogel::I18n provides localization support for aerogel applications.

Public Class Methods

available_locales() click to toggle source
# File lib/aerogel/core/i18n.rb, line 60
def self.available_locales
  ::I18n.available_locales
end
default_locale() click to toggle source
# File lib/aerogel/core/i18n.rb, line 57
def self.default_locale
  ::I18n.default_locale
end
l( *args ) click to toggle source
# File lib/aerogel/core/i18n.rb, line 36
def self.l( *args )
  if args.first.nil? && args.second.is_a?( Hash ) && args.second.key?(:default)
    default_value = args.second[:default]
    if default_value.is_a? Symbol
      ::I18n.t default_value
    else
      default_value
    end
  else
    ::I18n.l( *args )
  end
end
locale( *args ) click to toggle source
# File lib/aerogel/core/i18n.rb, line 49
def self.locale( *args )
  ::I18n.locale( *args )
end
locale=( *args ) click to toggle source
# File lib/aerogel/core/i18n.rb, line 53
def self.locale=( *args )
  ::I18n.send :'locale=', *args
end
registered(app) click to toggle source
# File lib/aerogel/core/i18n.rb, line 8
def self.registered(app)
  # load locales
  reload!

  # register reloader
  setup_reloader(app) if Aerogel.config.aerogel.reloader?
end
t( *args ) click to toggle source

Translation helper with chainable key access support. You can call t using standard i18n way:

t 'aerogel.admin.welcome', username: 'John'

Or using aerogel syntactic sugar:

t.aerogel.admin.welcome username: 'John'
# File lib/aerogel/core/i18n.rb, line 26
def self.t( *args )
  if args.size > 0
    # puts "** I18n.t original t: #{args}"
    ::I18n.t( *args )
  else
    # puts "** I18n.t chainable t: #{args}"
    Chainable.new( *args )
  end
end

Private Class Methods

get_locale_files() click to toggle source

Returns list of locale translation files.

# File lib/aerogel/core/i18n.rb, line 83
def self.get_locale_files
  Aerogel.get_resource_list( :locales, "**/*.yml" )
end
reload!( files = nil ) click to toggle source

Reload locales.

# File lib/aerogel/core/i18n.rb, line 89
def self.reload!( files = nil )
  ::I18n.load_path = files || get_locale_files
  ::I18n.reload!
  ::I18n.available_locales = Aerogel.config.locales.enabled! if Aerogel.config.locales.enabled?
  if Aerogel.config.locales.default?
    ::I18n.default_locale = Aerogel.config.locales.default!
  else
    ::I18n.default_locale = ::I18n.available_locales.first
  end
end
setup_reloader(app) click to toggle source

Sets up reloader for locales.

# File lib/aerogel/core/i18n.rb, line 75
def self.setup_reloader(app)
  app.use Aerogel::Reloader, ->{ get_locale_files } do |files|
    reload! files
  end
end