i18n-tasks icon indicating copy to clipboard operation
i18n-tasks copied to clipboard

Undefined 'each' for nil when running translate-missing

Open dylanjha opened this issue 6 years ago • 7 comments

running:

GOOGLE_TRANSLATE_API_KEY= i18n-tasks translate-missing

It seems to use the key correctly and make a request, but I'm getting this error:

ruby-2.4.1@pj/gems/i18n-tasks-0.9.21/lib/i18n/tasks/google_translation.rb:88:in `next': undefined method `each' for nil:NilClass (NoMethodError)
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/gems/i18n-tasks-0.9.21/lib/i18n/tasks/google_translation.rb:88:in `parse_value'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/gems/i18n-tasks-0.9.21/lib/i18n/tasks/google_translation.rb:86:in `block in parse_value'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/gems/i18n-tasks-0.9.21/lib/i18n/tasks/google_translation.rb:86:in `map'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/gems/i18n-tasks-0.9.21/lib/i18n/tasks/google_translation.rb:86:in `parse_value'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/gems/i18n-tasks-0.9.21/lib/i18n/tasks/google_translation.rb:63:in `from_values'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/gems/i18n-tasks-0.9.21/lib/i18n/tasks/google_translation.rb:40:in `fetch_google_translations'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/gems/i18n-tasks-0.9.21/lib/i18n/tasks/google_translation.rb:30:in `block in google_translate_list'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/gems/i18n-tasks-0.9.21/lib/i18n/tasks/google_translation.rb:29:in `each'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/gems/i18n-tasks-0.9.21/lib/i18n/tasks/google_translation.rb:29:in `map'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/gems/i18n-tasks-0.9.21/lib/i18n/tasks/google_translation.rb:29:in `google_translate_list'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/gems/i18n-tasks-0.9.21/lib/i18n/tasks/google_translation.rb:13:in `block in google_translate_forest'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/gems/i18n-tasks-0.9.21/lib/i18n/tasks/data/tree/nodes.rb:17:in `each'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/gems/i18n-tasks-0.9.21/lib/i18n/tasks/data/tree/nodes.rb:17:in `each'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/gems/i18n-tasks-0.9.21/lib/i18n/tasks/google_translation.rb:12:in `inject'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/gems/i18n-tasks-0.9.21/lib/i18n/tasks/google_translation.rb:12:in `google_translate_forest'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/gems/i18n-tasks-0.9.21/lib/i18n/tasks/command/commands/missing.rb:43:in `translate_missing'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/gems/i18n-tasks-0.9.21/lib/i18n/tasks/command/commander.rb:26:in `run'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/gems/i18n-tasks-0.9.21/lib/i18n/tasks/cli.rb:41:in `block in run'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/gems/i18n-0.9.1/lib/i18n.rb:265:in `with_locale'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/gems/i18n-tasks-0.9.21/lib/i18n/tasks/cli.rb:39:in `run'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/gems/i18n-tasks-0.9.21/lib/i18n/tasks/cli.rb:19:in `block in start'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/gems/i18n-tasks-0.9.21/lib/i18n/tasks/cli.rb:201:in `auto_output_coloring'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/gems/i18n-tasks-0.9.21/lib/i18n/tasks/cli.rb:17:in `start'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/gems/i18n-tasks-0.9.21/lib/i18n/tasks/cli.rb:11:in `start'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/gems/i18n-tasks-0.9.21/bin/i18n-tasks:15:in `<top (required)>'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/bin/i18n-tasks:23:in `load'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/bin/i18n-tasks:23:in `<main>'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/bin/ruby_executable_hooks:15:in `eval'
	from /Users/dylanjhaveri/.rvm/gems/ruby-2.4.1@pj/bin/ruby_executable_hooks:15:in `<main>'/da

dylanjha avatar Mar 16 '18 15:03 dylanjha

I am finding the same issue. Maybe this is because we have blank keys? Like https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/es-ES.yml#L183

atd avatar Apr 11 '18 10:04 atd

Maybe this is because we have blank keys?

I don't think so, I've added a test in https://github.com/glebm/i18n-tasks/commit/4c83cf358b7d7958a0b7a09f32cda754536c321b and it didn't fail.

See https://github.com/glebm/i18n-tasks/commit/fc529e78d2421ad08e7a93c0164e5d0be1492e40 for where this is handled

glebm avatar Aug 20 '18 21:08 glebm

Same issue here. any ideas?

beneggett avatar Dec 19 '19 18:12 beneggett

For what it's worth, I was getting this error while trying to use a locale that doesn't exist (I was using jp instead of ja)

pcothenet avatar May 18 '22 00:05 pcothenet

Also had an issue for locales, that don't exist, but also had the same issue when tried translating from en to en. Had to Monkey patch to catch an exception at lib/i18n/tasks/translators/base_translator.rb#translate pairs. For me it looks like it doesn't handle exception from EasyTranslate properly.

Environment: os: macOS arm ruby: 2.7.1 rails: 6.0.4.8 easy_translate: 0.5.1 i18n-tasks: 0.9.37

Here is a stack trace:

Bad language pair: en|en
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/easy_translate-0.5.1/lib/easy_translate/request.rb:47:in `perform_raw'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/easy_translate-0.5.1/lib/easy_translate/translation.rb:34:in `request_translations'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/easy_translate-0.5.1/lib/easy_translate/threadable.rb:24:in `block in threaded_process'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/easy_translate-0.5.1/lib/easy_translate/threadable.rb:24:in `map'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/easy_translate-0.5.1/lib/easy_translate/threadable.rb:24:in `threaded_process'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/easy_translate-0.5.1/lib/easy_translate/translation.rb:20:in `translate'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/i18n-tasks-0.9.37/lib/i18n/tasks/translators/google_translator.rb:19:in `translate_values'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/i18n-tasks-0.9.37/lib/i18n/tasks/translators/base_translator.rb:52:in `fetch_translations'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/i18n-tasks-0.9.37/lib/i18n/tasks/translators/base_translator.rb:36:in `block in translate_pairs'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/i18n-tasks-0.9.37/lib/i18n/tasks/translators/base_translator.rb:34:in `each'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/i18n-tasks-0.9.37/lib/i18n/tasks/translators/base_translator.rb:34:in `map'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/i18n-tasks-0.9.37/lib/i18n/tasks/translators/base_translator.rb:34:in `translate_pairs'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/i18n-tasks-0.9.37/lib/i18n/tasks/translators/base_translator.rb:16:in `block in translate_forest'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/i18n-tasks-0.9.37/lib/i18n/tasks/data/tree/nodes.rb:16:in `each'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/i18n-tasks-0.9.37/lib/i18n/tasks/data/tree/nodes.rb:16:in `each'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/i18n-tasks-0.9.37/lib/i18n/tasks/translators/base_translator.rb:15:in `inject'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/i18n-tasks-0.9.37/lib/i18n/tasks/translators/base_translator.rb:15:in `translate_forest'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/i18n-tasks-0.9.37/lib/i18n/tasks/translation.rb:18:in `translate_forest'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/i18n-tasks-0.9.37/lib/i18n/tasks/command/commands/missing.rb:43:in `translate_missing'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/i18n-tasks-0.9.37/lib/i18n/tasks/command/commander.rb:25:in `run'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/i18n-tasks-0.9.37/lib/i18n/tasks/cli.rb:51:in `block in run'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/i18n-1.12.0/lib/i18n.rb:322:in `with_locale'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/i18n-tasks-0.9.37/lib/i18n/tasks/cli.rb:49:in `run'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/i18n-tasks-0.9.37/lib/i18n/tasks/cli.rb:19:in `block in start'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/i18n-tasks-0.9.37/lib/i18n/tasks/cli.rb:212:in `auto_output_coloring'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/i18n-tasks-0.9.37/lib/i18n/tasks/cli.rb:18:in `start'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/i18n-tasks-0.9.37/lib/i18n/tasks/cli.rb:12:in `start'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/i18n-tasks-0.9.37/bin/i18n-tasks:16:in `<top (required)>'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/bin/i18n-tasks:23:in `load'
/Users/Andriy_Lukashchuk/.rbenv/versions/2.7.2/bin/i18n-tasks:23:in `<main>'
{:to=>"en", :from=>"en"}

Andriy-Access avatar Aug 18 '22 22:08 Andriy-Access

Same issue here!

basicfeatures avatar Nov 08 '22 17:11 basicfeatures

Same issue here, any workarounds?

viktorsmari avatar Apr 20 '23 13:04 viktorsmari