Class: CopyTunerClient::TranslationLog
- Inherits:
-
Object
- Object
- CopyTunerClient::TranslationLog
- Defined in:
- lib/copy_tuner_client/translation_log.rb
Overview
リクエスト中に翻訳されたキーと結果をスレッドローカルに記録する(Copyray オーバーレイの JSON 出力に使う)
Class Method Summary collapse
- .add(key, result) ⇒ Object
- .clear ⇒ Object
- .initialized? ⇒ Boolean
- .install_hook ⇒ Object
- .translations ⇒ Object
Class Method Details
.add(key, result) ⇒ Object
16 17 18 19 20 21 22 23 |
# File 'lib/copy_tuner_client/translation_log.rb', line 16 def self.add(key, result) # local_first(CopyTuner 管理外でローカル config/locales 優先)のキーは記録しない。 # ここに集約することで、Copyray オーバーレイの JSON(window.CopyTuner.data)にも # local_first キーが混入しない。key は I18n.normalize_keys(nil, ...) 由来の locale なし形式。 return if CopyTunerClient.configuration.local_first_key?(key) translations[key] = result if initialized? && !translations.key?(key) end |
.clear ⇒ Object
8 9 10 |
# File 'lib/copy_tuner_client/translation_log.rb', line 8 def self.clear Thread.current[:translations] = {} end |
.initialized? ⇒ Boolean
12 13 14 |
# File 'lib/copy_tuner_client/translation_log.rb', line 12 def self.initialized? !Thread.current[:translations].nil? end |
.install_hook ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/copy_tuner_client/translation_log.rb', line 25 def self.install_hook I18n.class_eval do # alias_method が参照するため、alias_method 群より先に定義する必要がある # rubocop:disable Style/ClassMethodsDefinitions class << self def translate_with_copy_tuner_hook(key = nil, **) scope = [:scope] scope = scope.dup if scope.is_a?(Array) || scope.is_a?(String) result = translate_without_copy_tuner_hook(key, **) pairs = key.is_a?(Array) ? key.zip(result) : [[key, result]] pairs.each do |k, v| next if v.is_a?(Array) CopyTunerClient::TranslationLog.add(I18n.normalize_keys(nil, k, scope).compact.join('.'), v) end result end if CopyTunerClient.configuration.enable_middleware? alias_method :translate_without_copy_tuner_hook, :translate alias_method :translate, :translate_with_copy_tuner_hook alias_method :t, :translate end end # rubocop:enable Style/ClassMethodsDefinitions end end |
.translations ⇒ Object
4 5 6 |
# File 'lib/copy_tuner_client/translation_log.rb', line 4 def self.translations Thread.current[:translations] end |