-
Notifications
You must be signed in to change notification settings - Fork 255
/
locale_loader.rb
45 lines (41 loc) · 1.48 KB
/
locale_loader.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
module Pwb
class LocaleLoader
class << self
# Call from console:
# require 'pwb/locale_loader'
# or
# load "#{Pwb::Engine.root}/lib/pwb/locale_loader.rb"
# Pwb::LocaleLoader.load_locale! "en", "es"
def load_locale!(from_locale, to_locale)
# Will go through each property and populate
# the title and description for one locale
# from the other
Pwb::Prop.all.each do |prop|
col_prefixes = ["title_", "description_"]
update_single_record prop, col_prefixes, from_locale, to_locale
end
Pwb::Content.all.each do |content|
col_prefixes = ["raw_"]
update_single_record content, col_prefixes, from_locale, to_locale
end
end
protected
def update_single_record(item_to_update, col_prefixes, from_locale, to_locale)
col_prefixes.each do |col_prefix|
source_col = col_prefix + from_locale # eg title_en
dest_col = col_prefix + to_locale # eg title_de
execute_col_update item_to_update, dest_col, source_col
end
end
def execute_col_update(item_to_update, dest_col, source_col)
source_content = item_to_update.send source_col
# if item_to_update[dest_col].blank?
# above won't work
# because dest_col is available through a join
if (item_to_update.send dest_col).blank?
item_to_update.update(dest_col => source_content)
end
end
end
end
end