]> git.openstreetmap.org Git - rails.git/blob - vendor/plugins/globalize2/lib/globalize/model/active_record.rb
Merged I18N branch to head.
[rails.git] / vendor / plugins / globalize2 / lib / globalize / model / active_record.rb
1 require 'globalize/translation'
2 require 'globalize/locale/fallbacks'
3 require 'globalize/model/active_record/adapter'
4 require 'globalize/model/active_record/translated'
5
6 module Globalize
7   module Model
8     module ActiveRecord
9       class << self                
10         def create_proxy_class(klass)
11           Object.const_set "#{klass.name}Translation", Class.new(::ActiveRecord::Base){
12             belongs_to "#{klass.name.underscore}".intern
13             
14             def locale
15               read_attribute(:locale).to_sym
16             end
17             
18             def locale=(locale)
19               write_attribute(:locale, locale.to_s)
20             end
21           }
22         end
23
24         def define_accessors(klass, attr_names)
25           attr_names.each do |attr_name|
26             klass.send :define_method, attr_name, lambda {
27               globalize.fetch self.class.locale, attr_name
28             }
29             klass.send :define_method, "#{attr_name}=", lambda {|val|
30               globalize.stash self.class.locale, attr_name, val
31               self[attr_name] = val
32             }
33           end
34         end
35       end
36     end
37   end
38 end