globalize-automatic 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|