trabajo-afectivo/app/models/translation.rb

93 lines
2.1 KiB
Ruby
Raw Normal View History

2014-02-03 19:23:00 +00:00
# Copyright (C) 2012-2014 Zammad Foundation, http://zammad-foundation.org/
class Translation < ApplicationModel
2012-05-18 14:24:00 +00:00
before_create :set_initial
after_create :cache_clear
after_update :cache_clear
after_destroy :cache_clear
2012-05-18 14:24:00 +00:00
def self.list(locale, admin = false)
# check cache
if !admin
list = cache_get( locale )
end
if !list
list = []
translations = Translation.where( :locale => locale.downcase ).order( :source )
translations.each { |item|
if admin
data = [
item.id,
item.source,
item.target,
item.target_initial,
]
list.push data
else
data = [
item.id,
item.source,
item.target,
]
list.push data
end
}
# set cache
if !admin
cache_set( locale, list )
end
end
2013-08-06 08:18:50 +00:00
timestamp_map_default = 'yyyy-mm-dd HH:MM'
timestamp_map = {
:de => 'dd.mm.yyyy HH:MM',
}
timestamp = timestamp_map[ locale.to_sym ] || timestamp_map_default
2014-09-10 12:19:44 +00:00
date_map_default = 'yyyy-mm-dd'
date_map = {
:de => 'dd.mm.yyyy',
}
date = date_map[ locale.to_sym ] || date_map_default
2013-08-06 08:18:50 +00:00
return {
:list => list,
:timestampFormat => timestamp,
2014-09-10 12:19:44 +00:00
:dateFormat => date,
2013-08-06 08:18:50 +00:00
}
end
def self.translate(locale, string)
# translate string
records = Translation.where( :locale => locale, :source => string )
records.each {|record|
return record.target if record.source == string
}
# fallback lookup in en
records = Translation.where( :locale => 'en', :source => string )
records.each {|record|
return record.target if record.source == string
}
return string
end
2012-05-18 14:24:00 +00:00
private
def set_initial
self.target_initial = self.target
end
def cache_clear
Cache.delete( 'Translation::' + self.locale.downcase )
end
def self.cache_set(locale, data)
Cache.write( 'Translation::' + locale.downcase, data )
end
def self.cache_get(locale)
Cache.get( 'Translation::' + locale.downcase )
end
2012-05-18 14:24:00 +00:00
end