class Tr8n::Source

Public Class Methods

cache_key(locale, source) click to toggle source
# File lib/tr8n/source.rb, line 58
def self.cache_key(locale, source)
  File.join(locale, 'sources', source.split('/'))
end
generate_key(source) click to toggle source
# File lib/tr8n/source.rb, line 54
def self.generate_key(source)
  "#{Digest::MD5.hexdigest("#{source}")}~"[0..-2]
end
new(attrs = {}) click to toggle source
Calls superclass method Tr8n::Base::new
# File lib/tr8n/source.rb, line 62
def initialize(attrs = {})
  super
  self.key ||= Tr8n::Source.generate_key(attrs[:source])
end
normalize(url) click to toggle source
# File lib/tr8n/source.rb, line 40
def self.normalize(url)
  return nil if url.nil? or url == ''
  uri = URI.parse(url)
  path = uri.path
  return '/' if uri.path.nil? or uri.path == ''
  return path if path == '/'

  # always must start with /
  path = "/#{path}" if path[0] != '/'
  # should not end with /
  path = path[0..-2] if path[-1] == '/'
  path
end

Public Instance Methods

cached_translations(locale, key) click to toggle source
# File lib/tr8n/source.rb, line 95
def cached_translations(locale, key)
  self.translations ||= {}
  self.translations[locale] ||= {}
  self.translations[locale][key]
end
fetch_translations(locale) click to toggle source
# File lib/tr8n/source.rb, line 67
def fetch_translations(locale)
  self.translations ||= {}
  return self if self.translations[locale]

  self.translations[locale] = {}

  results = self.application.api_client.get(
    "sources/#{self.key}/translations",
    {:locale => locale, :per_page => 10000},
    {:cache_key => Tr8n::Source.cache_key(locale, self.source)}
  )

  results.each do |key, data|
    translations_data = data.is_a?(Hash) ? data['translations'] : data
    self.translations[locale][key] = translations_data.collect do |t|
      Tr8n::Translation.new(
        :locale => t['locale'] || locale,
        :label => t['label'],
        :context => t['context']
      )
    end
  end

  self
rescue Tr8n::Exception => ex
  self
end
reset_cache() click to toggle source
# File lib/tr8n/source.rb, line 101
def reset_cache
  application.languages.each do |lang|
    Tr8n.cache.delete(Tr8n::Source.cache_key(lang.locale, self.source))
  end
end