jekyll-multiple-languages-plugin icon indicating copy to clipboard operation
jekyll-multiple-languages-plugin copied to clipboard

no implicit conversion of nil into String since 1.8.0

Open sedrubal opened this issue 3 years ago • 5 comments

I updated to the latest version of jekyll-multiple-languages-plugin (1.8.0) and now I'm experiencing this error:

$ bundle exec jekyll build --trace
Configuration file: <website-root>/_config.yml
            Source: <website-root>
       Destination: <website-root>/_site
 Incremental build: disabled. Enable with --incremental
      Generating... 
Building site for language: "de" to: <website-root>/_site
       Jekyll Feed: Generating feed for posts
Loading translation from file <website-root>/_i18n/de.yml
Missing i18n key: de:<omitted>
Using translation '' from default language: de
  Liquid Exception: no implicit conversion of nil into String in <website-root>/_layouts/default.html
bundler: failed to load command: jekyll (<website-root>/.bundle/ruby/3.0.0/bin/jekyll)
<website-root>/.bundle/ruby/3.0.0/gems/jekyll-multiple-languages-plugin-1.8.0/lib/jekyll-multiple-languages-plugin.rb:632:in `initialize': no implicit conversion of nil into String (TypeError)
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-multiple-languages-plugin-1.8.0/lib/jekyll-multiple-languages-plugin.rb:632:in `initialize'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-multiple-languages-plugin-1.8.0/lib/jekyll-multiple-languages-plugin.rb:649:in `new'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-multiple-languages-plugin-1.8.0/lib/jekyll-multiple-languages-plugin.rb:649:in `translate'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-multiple-languages-plugin-1.8.0/lib/jekyll-multiple-languages-plugin.rb:406:in `render'
        from <website-root>/.bundle/ruby/3.0.0/gems/liquid-4.0.3/lib/liquid/block_body.rb:103:in `render_node_to_output'
        from <website-root>/.bundle/ruby/3.0.0/gems/liquid-4.0.3/lib/liquid/block_body.rb:91:in `render'
        from <website-root>/.bundle/ruby/3.0.0/gems/liquid-4.0.3/lib/liquid/template.rb:208:in `block in render'
        from <website-root>/.bundle/ruby/3.0.0/gems/liquid-4.0.3/lib/liquid/template.rb:242:in `with_profiling'
        from <website-root>/.bundle/ruby/3.0.0/gems/liquid-4.0.3/lib/liquid/template.rb:207:in `render'
        from <website-root>/.bundle/ruby/3.0.0/gems/liquid-4.0.3/lib/liquid/template.rb:220:in `render!'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/liquid_renderer/file.rb:39:in `block (3 levels) in render!'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/liquid_renderer/file.rb:59:in `measure_counts'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/liquid_renderer/file.rb:38:in `block (2 levels) in render!'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/liquid_renderer/file.rb:63:in `measure_bytes'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/liquid_renderer/file.rb:37:in `block in render!'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/liquid_renderer/file.rb:70:in `measure_time'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/liquid_renderer/file.rb:36:in `render!'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/inclusion.rb:16:in `render'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/tags/include.rb:208:in `block in render'
        from <website-root>/.bundle/ruby/3.0.0/gems/liquid-4.0.3/lib/liquid/context.rb:123:in `stack'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/tags/include.rb:206:in `render'
        from <website-root>/.bundle/ruby/3.0.0/gems/liquid-4.0.3/lib/liquid/block_body.rb:103:in `render_node_to_output'
        from <website-root>/.bundle/ruby/3.0.0/gems/liquid-4.0.3/lib/liquid/block_body.rb:91:in `render'
        from <website-root>/.bundle/ruby/3.0.0/gems/liquid-4.0.3/lib/liquid/template.rb:208:in `block in render'
        from <website-root>/.bundle/ruby/3.0.0/gems/liquid-4.0.3/lib/liquid/template.rb:242:in `with_profiling'
        from <website-root>/.bundle/ruby/3.0.0/gems/liquid-4.0.3/lib/liquid/template.rb:207:in `render'
        from <website-root>/.bundle/ruby/3.0.0/gems/liquid-4.0.3/lib/liquid/template.rb:220:in `render!'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/liquid_renderer/file.rb:39:in `block (3 levels) in render!'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/liquid_renderer/file.rb:59:in `measure_counts'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/liquid_renderer/file.rb:38:in `block (2 levels) in render!'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/liquid_renderer/file.rb:63:in `measure_bytes'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/liquid_renderer/file.rb:37:in `block in render!'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/liquid_renderer/file.rb:70:in `measure_time'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/liquid_renderer/file.rb:36:in `render!'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/renderer.rb:131:in `render_liquid'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/renderer.rb:194:in `render_layout'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/renderer.rb:163:in `place_in_layouts'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/renderer.rb:93:in `render_document'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/renderer.rb:63:in `run'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/site.rb:547:in `render_regenerated'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/site.rb:532:in `block (2 levels) in render_docs'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/site.rb:531:in `each'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/site.rb:531:in `block in render_docs'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/site.rb:530:in `each_value'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/site.rb:530:in `render_docs'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/site.rb:210:in `render'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/site.rb:80:in `process'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-multiple-languages-plugin-1.8.0/lib/jekyll-multiple-languages-plugin.rb:185:in `block in process'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-multiple-languages-plugin-1.8.0/lib/jekyll-multiple-languages-plugin.rb:171:in `each'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-multiple-languages-plugin-1.8.0/lib/jekyll-multiple-languages-plugin.rb:171:in `process'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/command.rb:28:in `process_site'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/commands/build.rb:65:in `build'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/commands/build.rb:36:in `process'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/command.rb:91:in `block in process_with_graceful_fail'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/command.rb:91:in `each'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/command.rb:91:in `process_with_graceful_fail'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/lib/jekyll/commands/build.rb:18:in `block (2 levels) in init_with_program'
        from <website-root>/.bundle/ruby/3.0.0/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `block in execute'
        from <website-root>/.bundle/ruby/3.0.0/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `each'
        from <website-root>/.bundle/ruby/3.0.0/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `execute'
        from <website-root>/.bundle/ruby/3.0.0/gems/mercenary-0.4.0/lib/mercenary/program.rb:44:in `go'
        from <website-root>/.bundle/ruby/3.0.0/gems/mercenary-0.4.0/lib/mercenary.rb:21:in `program'
        from <website-root>/.bundle/ruby/3.0.0/gems/jekyll-4.2.1/exe/jekyll:15:in `<top (required)>'
        from <website-root>/.bundle/ruby/3.0.0/bin/jekyll:25:in `load'
        from <website-root>/.bundle/ruby/3.0.0/bin/jekyll:25:in `<top (required)>'
        from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/lib/bundler/cli/exec.rb:58:in `load'
        from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/lib/bundler/cli/exec.rb:58:in `kernel_load'
        from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/lib/bundler/cli/exec.rb:23:in `run'
        from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/lib/bundler/cli.rb:477:in `exec'
        from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
        from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
        from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
        from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/lib/bundler/cli.rb:31:in `dispatch'
        from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
        from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/lib/bundler/cli.rb:25:in `start'
        from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/exe/bundle:49:in `block in <top (required)>'
        from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/lib/bundler/friendly_errors.rb:128:in `with_friendly_errors'
        from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/exe/bundle:37:in `<top (required)>'
        from /usr/bin/bundle:23:in `load'
        from /usr/bin/bundle:23:in `<main>'
$ bundle exec jekyll --version
jekyll 4.2.1

Unfortunately I don't know anything about ruby to debug this issue... Downgrading to 1.7.0 fixes this issue for me (gem 'jekyll-multiple-languages-plugin', "<1.8.0" in Gemfile).

sedrubal avatar Feb 02 '22 13:02 sedrubal

Same problem here. Thanks for the workaround @sedrubal!

obilodeau avatar Feb 16 '22 14:02 obilodeau

Same issue here

GautierDig avatar Mar 10 '22 16:03 GautierDig

In my case, it's obviously related to jekyll paginate v2. Because when generating "Page 2", this plugin thinks that there is a empty string. Version 1.7.0 works.

team-community avatar May 12 '22 12:05 team-community

Downgrading to 1.7.0 fixes this issue for me (gem 'jekyll-multiple-languages-plugin', "<1.8.0" in Gemfile).

Thanks a lot for the quick-solution!

s-gbz avatar Jun 10 '22 08:06 s-gbz

Missing i18n key: de:<omitted>
Using translation '' from default language: de
Liquid Exception: no implicit conversion of nil into String in 

This message is what you see when a string is missing from the default language. There is no check to see if the lookup from the default language (which could be the same as the current language) gives nil. This should probably display a warning that there is no translation but not crash or give a cryptic error message like this.

figgles avatar Aug 03 '23 03:08 figgles