globalize-automatic 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/globalize/automatic.rb +51 -12
- data/lib/globalize/automatic/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ab79d320f3c47fe42bb2842a6a406c11cf8d56b3
|
4
|
+
data.tar.gz: 8ba316c7d76c35892b6014351521ee46a90d6688
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be513ece8570227e0f743e53d7f179438bffbe98febc11966f4dc169c8a8d8d56cd5ae7d25302eb8ad373803ef847b9247e53797da4d42f7bcfeceb3352470fa
|
7
|
+
data.tar.gz: 5168aa575c0d7b247c2d2e14b372ad33f1ca891a841c11276da74e12694a944d46d5e1e4eef3a405a3223b307cefa36c13549d6ebcdb518e720a97bf78fabf59
|
data/lib/globalize/automatic.rb
CHANGED
@@ -2,9 +2,6 @@
|
|
2
2
|
|
3
3
|
require 'globalize'
|
4
4
|
require 'globalize-accessors'
|
5
|
-
require 'globalize/automatic/translation'
|
6
|
-
require 'globalize/automatic/translation_job'
|
7
|
-
require 'globalize/automatic/translator/easy_translate'
|
8
5
|
require 'after_commit_action'
|
9
6
|
|
10
7
|
module Globalize::Automatic
|
@@ -20,6 +17,8 @@ module Globalize::Automatic
|
|
20
17
|
self.automatic_translation_attribute_names = []
|
21
18
|
self.automatic_translation_field_locales = Hash.new { [] }
|
22
19
|
self.automatic_translated_field_locales = Hash.new { [] }
|
20
|
+
|
21
|
+
after_update :update_automatic_translations
|
23
22
|
end
|
24
23
|
|
25
24
|
class_methods do
|
@@ -66,6 +65,11 @@ module Globalize::Automatic
|
|
66
65
|
automatic_translated_field_locales[field].include?(locale)
|
67
66
|
end
|
68
67
|
|
68
|
+
# 自動翻訳ON/OFF属性名
|
69
|
+
def automatic_translation_attribute_name_for(attr_name, locale)
|
70
|
+
"#{attr_name}_#{locale.to_s.underscore}_automatically"
|
71
|
+
end
|
72
|
+
|
69
73
|
public
|
70
74
|
def create_automatic_translation_table!(*fields)
|
71
75
|
automatic_translation_class.create_table!(*fields)
|
@@ -82,8 +86,9 @@ module Globalize::Automatic
|
|
82
86
|
end
|
83
87
|
|
84
88
|
def automatic_translation_for(locale)
|
85
|
-
|
86
|
-
|
89
|
+
automatic_translation_caches[locale] ||=
|
90
|
+
automatic_translations.where(locale: locale).
|
91
|
+
first_or_initialize(default_translation_automatically(locale))
|
87
92
|
end
|
88
93
|
|
89
94
|
# from_locale から attribute_names を自動翻訳
|
@@ -115,19 +120,48 @@ module Globalize::Automatic
|
|
115
120
|
locales.first
|
116
121
|
end
|
117
122
|
|
123
|
+
def reload(options = nil)
|
124
|
+
automatic_translation_caches.clear
|
125
|
+
automatic_translation_attribute_names.each { |attr_name| @attributes.reset(attr_name.to_s) }
|
126
|
+
super(options)
|
127
|
+
end
|
128
|
+
|
129
|
+
def initialize_dup(other)
|
130
|
+
@automatic_translation_caches = nil
|
131
|
+
super(other)
|
132
|
+
other.automatic_translation_attribute_names.each do |attr_name|
|
133
|
+
self.attributes = { attr_name => other.send(attr_name) }
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
118
137
|
private
|
119
138
|
def default_translation_automatically(locale)
|
120
139
|
# 自動翻訳元指定されていなくて、
|
121
140
|
# 自動翻訳先指定されているものを
|
122
141
|
# デフォルトで自動翻訳ONにする
|
142
|
+
#
|
143
|
+
# 自動翻訳元指定されていて
|
144
|
+
# 自動翻訳先指定されているものは
|
145
|
+
# デフォルトで自動翻訳OFFにする
|
146
|
+
#
|
147
|
+
# 自動翻訳先指定されていないものは対象外
|
123
148
|
translated_attribute_names.inject({}) do |defaults, attr_name|
|
124
|
-
|
125
|
-
|
126
|
-
|
149
|
+
if self.class.translated_field_automatically?(attr_name, locale)
|
150
|
+
defaults[:"#{attr_name}_automatically"] =
|
151
|
+
!self.class.translate_field_automatically?(attr_name, locale)
|
152
|
+
end
|
127
153
|
defaults
|
128
154
|
end
|
129
155
|
end
|
130
156
|
|
157
|
+
def automatic_translation_caches
|
158
|
+
@automatic_translation_caches ||= {}
|
159
|
+
end
|
160
|
+
|
161
|
+
def update_automatic_translations
|
162
|
+
automatic_translation_caches.values.flatten.each(&:save)
|
163
|
+
end
|
164
|
+
|
131
165
|
end
|
132
166
|
|
133
167
|
module TranslationExtension
|
@@ -177,15 +211,15 @@ module Globalize::Automatic
|
|
177
211
|
attr_names.each do |attr_name|
|
178
212
|
locales.each do |locale|
|
179
213
|
klass.class_eval(<<"EVAL")
|
180
|
-
def #{attr_name
|
214
|
+
def #{klass.automatic_translation_attribute_name_for(attr_name, locale)}
|
181
215
|
automatic_translation_for(#{locale.inspect}).#{attr_name}_automatically
|
182
216
|
end
|
183
217
|
|
184
|
-
def #{attr_name
|
218
|
+
def #{klass.automatic_translation_attribute_name_for(attr_name, locale)}=(automatically)
|
185
219
|
automatic_translation_for(#{locale.inspect}).#{attr_name}_automatically = automatically
|
186
220
|
end
|
187
221
|
|
188
|
-
self.automatic_translation_attribute_names.push(:#{attr_name
|
222
|
+
self.automatic_translation_attribute_names.push(:#{klass.automatic_translation_attribute_name_for(attr_name, locale)})
|
189
223
|
EVAL
|
190
224
|
end
|
191
225
|
end
|
@@ -221,6 +255,11 @@ EVAL
|
|
221
255
|
end
|
222
256
|
end
|
223
257
|
end
|
258
|
+
|
259
|
+
require 'globalize/automatic/translation'
|
260
|
+
require 'globalize/automatic/translation_job'
|
261
|
+
require 'globalize/automatic/translator/easy_translate'
|
262
|
+
|
224
263
|
Globalize::Automatic.asynchronously = false
|
225
264
|
Globalize::Automatic.translator = Globalize::Automatic::Translator::EasyTranslate.new
|
226
265
|
|
@@ -238,4 +277,4 @@ Globalize::ActiveRecord::ActMacro.module_eval do
|
|
238
277
|
|
239
278
|
alias_method_chain :translates, :automatic
|
240
279
|
|
241
|
-
end
|
280
|
+
end
|