Project

General

Profile

Download (2.13 KB) Statistics
| Branch: | Tag: | Revision:
require 'fast_gettext'

module Foreman
module Gettext
module Support
def self.detect_locale_type
if Rails.env.development?
:po
else
:mo
end
end

def self.register_available_locales(locale_domain, locale_dir)
locale_type = detect_locale_type

if Rails.env.development?
locale_search_path = File.join(locale_dir, "*", "#{locale_domain}.#{locale_type}")
locale_search_re = Regexp.new(".*/([^/]*)/#{locale_domain}.#{locale_type}")
else
locale_search_path = File.join(locale_dir, "*", "LC_MESSAGES", "#{locale_domain}.#{locale_type}")
locale_search_re = Regexp.new(".*/([^/]*)/LC_MESSAGES/#{locale_domain}.#{locale_type}")
end

begin
if Rails.env.test?
FastGettext.default_available_locales = ['en']
else
FastGettext.default_available_locales = Dir.glob(locale_search_path).collect {|f| locale_search_re.match(f)[1] }
end
rescue => e
Rails.logger.warn "Unable to set available locales for domain #{locale_domain}: #{e}"
FastGettext.default_available_locales = ['en']
end
end

def self.add_text_domain(locale_domain, locale_dir)
FastGettext.add_text_domain locale_domain,
:path => locale_dir,
:type => detect_locale_type,
:ignore_fuzzy => true,
:report_warning => false
end

def self.register_human_localenames
original_locale = FastGettext.locale
FastGettext.class.class_eval { attr_accessor :human_available_locales }
FastGettext.human_available_locales = []
FastGettext.default_available_locales.sort.each do |locale|
FastGettext.locale = locale
# TRANSLATORS: Provide locale name in native language (e.g. English, Deutsch or Portugues)
human_locale = _("locale_name")
human_locale = locale if human_locale == "locale_name"
FastGettext.human_available_locales << [ human_locale, locale ]
end
ensure
FastGettext.locale = original_locale
end
end
end
end
(3-3/3)