Sha256: bdb96c68789446d7cbb20eea15d248a4e6ad5c1278c2bd263c0063b07e545681
Contents?: true
Size: 1.75 KB
Versions: 1
Compression:
Stored size: 1.75 KB
Contents
require 'fileutils' class TranslationEngine::Downloader def self.etag?(etag) response = @current_etag == etag Rails.logger.info { "Translations are up to date" } if response @current_etag = etag @cache_timeout = Time.now + TranslationEngine.cache_timeout response end def update return nil if @cache_timeout && Time.now < @cache_timeout return nil if self.class.etag?(connection.get_translations_head[:etag]) I18n.backend.reload! end def store if (yml_data = receive_translations) Rails.logger.info { "Storing translations to #{locale_file}" } write(locale_file, yml_data) add_translation_file_to_i18n I18n.backend.reload! end end def store_release(release) locale = release.split('_')[0...-1].join('_') filename = releases_dir.join("#{locale.downcase}.yml") if (yml_data = connection.get_release(release).try(:body)) Rails.logger.info { "Storing release #{release} to #{filename}" } write(filename, yml_data) end end private def add_translation_file_to_i18n unless I18n.load_path.include?(locale_file) I18n.load_path += [locale_file] end end def connection @connection ||= TranslationEngine::Connection.new end def locale_dir Rails.root.join('config', 'locales') end def locale_file locale_dir.join('z_translation_engine.yml') end def receive_translations return if self.class.etag?(connection.get_translations_head[:etag]) connection.get_translations.try(:body) end def releases_dir dir = Rails.root.join('config', 'locales', 'z_releases') FileUtils.mkdir_p(dir) unless File.exists?(dir) dir end def write(filename, data) File.open(filename, 'wb') do |f| f.write data end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
translation_engine-0.0.5 | app/models/translation_engine/downloader.rb |