Class: Translation

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/translation.rb

Class Method Summary collapse

Class Method Details

.cache_expire(name, locale, untranslated) ⇒ Object



24
25
26
# File 'app/models/translation.rb', line 24

def self.cache_expire(name, locale, untranslated)
  Rails.cache.read(cache_key(name, locale, untranslated), nil)
end

.cache_key(name, locale, untranslated) ⇒ Object

Caching methods



16
17
18
# File 'app/models/translation.rb', line 16

def self.cache_key(name, locale, untranslated)
  "#{Refinery.base_cache_key}_translation_#{name}_#{locale.to_s}_#{Digest::MD5.hexdigest(untranslated)}"
end

.cache_read(name, locale, untranslated) ⇒ Object



20
21
22
# File 'app/models/translation.rb', line 20

def self.cache_read(name, locale, untranslated)
  Rails.cache.read(cache_key(name, locale, untranslated))
end

.cache_write(name, locale, untranslated, value) ⇒ Object



28
29
30
# File 'app/models/translation.rb', line 28

def self.cache_write(name, locale, untranslated, value)
  Rails.cache.write(cache_key(name, locale, untranslated), value)
end

.for_block(name, wym = true) ⇒ Object



32
33
34
# File 'app/models/translation.rb', line 32

def self.for_block(name, wym = true)
  self.lookup(name, yield, wym)
end

.for_string(name, untranslated, wym = false) ⇒ Object



36
37
38
# File 'app/models/translation.rb', line 36

def self.for_string(name, untranslated, wym = false)
  self.lookup(name, untranslated, wym)
end

.lookup(name, untranslated = nil, wym = false) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'app/models/translation.rb', line 40

def self.lookup(name, untranslated = nil, wym = false)
  locale = I18n.locale
  return untranslated if locale == Refinery::I18n.default_locale
  
  if translation = self.cache_read(name,locale,untranslated)
    return translation
  end if RefinerySetting.find_or_set(:i18n_frontend_cache_translation, true, {:scoping => 'refinery'})
  
  if ( translation = self.find(:first, :conditions => {:name => name.to_s, :locale => locale.to_s}) ).nil?
    (Refinery::I18n.locales.keys - [Refinery::I18n.default_frontend_locale]).each do |current_locale|
      if (translation = self.find(:first, :conditions => {:name => name, :locale => current_locale.to_s})).nil?
        Translation.create(:name => name, :locale => current_locale.to_s, 
                           :value => untranslated, :untranslated => untranslated,:wym => wym,
                           :fresh => false, :freshness_key => Digest::MD5.hexdigest(untranslated))
      end
    end
    translation = self.find(:first, :conditions => {:name => name.to_s, :locale => locale.to_s})
  else
    if translation.fresh
      unless translation.freshness_key == Digest::MD5.hexdigest(untranslated)
        translation.freshness_key = Digest::MD5.hexdigest(untranslated)
        translation.untranslated = untranslated
        translation.fresh = false
        translation.save
      end
    end
  end

  self.cache_write(name, locale, untranslated, translation.value) if RefinerySetting.find_or_set(:i18n_frontend_cache_translation, true, {:scoping => 'refinery'})
  translation.value
end

.per_pageObject

will_paginate per_page



11
12
13
# File 'app/models/translation.rb', line 11

def self.per_page
  20
end