diff --git a/i18n-tasks.gemspec b/i18n-tasks.gemspec index 4492ded9..5e8d0d87 100644 --- a/i18n-tasks.gemspec +++ b/i18n-tasks.gemspec @@ -47,6 +47,7 @@ Gem::Specification.new do |s| s.add_dependency 'parser', '>= 3.2.2.1' s.add_dependency 'rails-i18n' s.add_dependency 'rainbow', '>= 2.2.2', '< 4.0' + s.add_dependency 'ruby-progressbar', '~> 1.8', '>= 1.8.1' s.add_dependency 'terminal-table', '>= 1.5.1' s.add_development_dependency 'bundler', '~> 2.0', '>= 2.0.1' s.add_development_dependency 'overcommit', '~> 0.58.0' diff --git a/lib/i18n/tasks.rb b/lib/i18n/tasks.rb index f7af80ca..0d201a57 100644 --- a/lib/i18n/tasks.rb +++ b/lib/i18n/tasks.rb @@ -66,6 +66,7 @@ module Data require 'active_support/core_ext/object/blank' require 'active_support/core_ext/object/try' +require 'ruby-progressbar' require 'rainbow' require 'erubi' diff --git a/lib/i18n/tasks/translators/base_translator.rb b/lib/i18n/tasks/translators/base_translator.rb index 3fea19ed..d586f7e2 100644 --- a/lib/i18n/tasks/translators/base_translator.rb +++ b/lib/i18n/tasks/translators/base_translator.rb @@ -14,7 +14,11 @@ def initialize(i18n_tasks) # @return [I18n::Tasks::Tree::Siblings] translated forest def translate_forest(forest, from) forest.inject @i18n_tasks.empty_forest do |result, root| - translated = translate_pairs(root.key_values(root: true), to: root.key, from: from) + pairs = root.key_values(root: true) + + @progress_bar = ProgressBar.create(total: pairs.flatten.size, format: '%a <%B> %e %c/%C (%p%%)') + + translated = translate_pairs(pairs, to: root.key, from: from) result.merge! Data::Tree::Siblings.from_flat_pairs(translated) end end diff --git a/lib/i18n/tasks/translators/deepl_translator.rb b/lib/i18n/tasks/translators/deepl_translator.rb index fa4dc747..644b5afc 100644 --- a/lib/i18n/tasks/translators/deepl_translator.rb +++ b/lib/i18n/tasks/translators/deepl_translator.rb @@ -35,6 +35,8 @@ def translate_values(list, from:, to:, **options) else results += res.map(&:text) end + + @progress_bar.progress += parts.size end results end diff --git a/lib/i18n/tasks/translators/google_translator.rb b/lib/i18n/tasks/translators/google_translator.rb index 686544ef..d230eaaa 100644 --- a/lib/i18n/tasks/translators/google_translator.rb +++ b/lib/i18n/tasks/translators/google_translator.rb @@ -17,7 +17,7 @@ def initialize(*) protected def translate_values(list, **options) - restore_newlines( + result = restore_newlines( EasyTranslate.translate( replace_newlines_with_placeholder(list, options[:html]), options, @@ -25,6 +25,10 @@ def translate_values(list, **options) ), options[:html] ) + + @progress_bar.progress += result.size + + result end def options_for_translate_values(from:, to:, **options) diff --git a/lib/i18n/tasks/translators/openai_translator.rb b/lib/i18n/tasks/translators/openai_translator.rb index 2d842464..02d9de51 100644 --- a/lib/i18n/tasks/translators/openai_translator.rb +++ b/lib/i18n/tasks/translators/openai_translator.rb @@ -76,8 +76,10 @@ def translate_values(list, from:, to:) list.each_slice(BATCH_SIZE) do |batch| translations = translate(batch, from, to) + result = JSON.parse(translations) + results << result - results << JSON.parse(translations) + @progress_bar.progress += result.size end results.flatten diff --git a/lib/i18n/tasks/translators/watsonx_translator.rb b/lib/i18n/tasks/translators/watsonx_translator.rb index 8ef01bcf..1a6d327e 100644 --- a/lib/i18n/tasks/translators/watsonx_translator.rb +++ b/lib/i18n/tasks/translators/watsonx_translator.rb @@ -83,8 +83,10 @@ def translate_values(list, from:, to:) list.each_slice(BATCH_SIZE) do |batch| translations = translate(batch, from, to) + result = JSON.parse(translations) + results << result - results << JSON.parse(translations) + @progress_bar.progress += results.size end results.flatten diff --git a/lib/i18n/tasks/translators/yandex_translator.rb b/lib/i18n/tasks/translators/yandex_translator.rb index 630da593..72a56537 100644 --- a/lib/i18n/tasks/translators/yandex_translator.rb +++ b/lib/i18n/tasks/translators/yandex_translator.rb @@ -16,7 +16,11 @@ def initialize(*) protected def translate_values(list, **options) - list.map { |item| translator.translate(item, options) } + result = list.map { |item| translator.translate(item, options) } + + @progress_bar.progress += result.size + + result end def options_for_translate_values(from:, to:, **options)