Add support for reloading the language table.

This commit is contained in:
Tom Hughes 2009-09-03 21:55:42 +00:00
parent d40b83af67
commit 73340e1780
3 changed files with 22 additions and 7 deletions

View file

@ -3,6 +3,22 @@ class Language < ActiveRecord::Base
has_many :diary_entries, :foreign_key => 'language' has_many :diary_entries, :foreign_key => 'language'
def self.load(file)
Language.transaction do
YAML.load(File.read(file)).each do |k,v|
begin
Language.update(k, :english_name => v["english"], :native_name => v["native"])
rescue ActiveRecord::RecordNotFound
Language.create do |l|
l.code = k
l.english_name = v["english"]
l.native_name = v["native"]
end
end
end
end
end
def name def name
name = english_name name = english_name
name += " (#{native_name})" unless native_name.nil? name += " (#{native_name})" unless native_name.nil?

View file

@ -10,13 +10,7 @@ class CreateLanguages < ActiveRecord::Migration
add_primary_key :languages, [:code] add_primary_key :languages, [:code]
YAML.load(File.read(RAILS_ROOT + "/config/languages.yml")).each do |k,v| Language.load(RAILS_ROOT + "/config/languages.yml")
Language.create do |l|
l.code = k
l.english_name = v["english"]
l.native_name = v["native"]
end
end
add_foreign_key :users, [:locale], :languages, [:code] add_foreign_key :users, [:locale], :languages, [:code]
add_foreign_key :diary_entries, [:language_code], :languages, [:code] add_foreign_key :diary_entries, [:language_code], :languages, [:code]

5
script/locale/reload_languages Executable file
View file

@ -0,0 +1,5 @@
#!/usr/bin/env ruby
require File.dirname(__FILE__) + '/../../config/environment'
Language.load(RAILS_ROOT + "/config/languages.yml")