`render': 使用 jekyll 多语言插件时未定义的方法 `access'
`render': undefined method `access' when using jekyll multiple languages plugin
我是第一次尝试设置 jekyll-multiple-languages-plugin。
example website 确实有效。虽然,我自己的网站没有。
这是输出,每当我 运行 bundle exec jekyll serve --verbose
:
/var/lib/gems/2.7.0/gems/jekyll-multiple-languages-plugin-1.7.0/lib/jekyll-multiple-languages-plugin.rb:360:in `render': undefined method `access' for false:FalseClass (NoMethodError)
液体:
<div class="intro-lead-in">{% t page.header.text %}</div>
pt.yml:
---
header:
overlay: "no"
text: It's Nice To Meet You
button: Tell Me More
buttonlink: "#services"
---
宝石规格:
spec.required_ruby_version = '>= 2.5.0'
spec.add_runtime_dependency "jekyll", ">= 4.0", "< 4.3"
spec.add_development_dependency "bundler", "~> 2.0"
spec.add_development_dependency "rake", "~> 13.0"
_config.yml
plugins:
- jekyll-multiple-languages-plugin
languages: ["en", "pt"]
exclude_from_localizations: ["assets", "favicon.ico"]
由于在“jekyll-multiple-languages-plugin”中引发了异常gem让我们快速浏览一下source。
# lib/jekyll-multiple-languages-plugin.rb:360
translation = site.parsed_translations[lang].access(key) if key.is_a?(String)
为了生成消息 "undefined method `access' for false:FalseClass" 这意味着 .access
被调用 false
.因为上面只有一个 access
调用,这意味着 site.parsed_translations[lang]
必须评估为 false
.
作为图书馆用户,您如何影响这个值?我们首先得看看这个值是怎么来的。
# lib/jekyll-multiple-languages-plugin.rb:25
site.parsed_translations[lang] = YAML.load_file("#{site.source}/_i18n/#{lang}.yml")
这意味着 false
值是解析您的 .yml
文件之一的 return 值。 YAML.load_file
文档对这个 return 值说了以下内容:
load_file(filename, fallback: false)
Load the document contained in filename
. Returns the yaml contained in
filename
as a Ruby object, or if the file is empty, it returns the
specified fallback
return value, which defaults to false
.
在这里我们可以看到一个空文件导致 false
return 值。因此,要么您的 _i18n/pt.yml
或 _i18n/en.yml
文件为空,要么其中的内容计算为 false
。例如 YAML.load('false') #=> false
和 YAML.load('no') #=> false
我是第一次尝试设置 jekyll-multiple-languages-plugin。
example website 确实有效。虽然,我自己的网站没有。
这是输出,每当我 运行 bundle exec jekyll serve --verbose
:
/var/lib/gems/2.7.0/gems/jekyll-multiple-languages-plugin-1.7.0/lib/jekyll-multiple-languages-plugin.rb:360:in `render': undefined method `access' for false:FalseClass (NoMethodError)
液体:
<div class="intro-lead-in">{% t page.header.text %}</div>
pt.yml:
---
header:
overlay: "no"
text: It's Nice To Meet You
button: Tell Me More
buttonlink: "#services"
---
宝石规格:
spec.required_ruby_version = '>= 2.5.0'
spec.add_runtime_dependency "jekyll", ">= 4.0", "< 4.3"
spec.add_development_dependency "bundler", "~> 2.0"
spec.add_development_dependency "rake", "~> 13.0"
_config.yml
plugins:
- jekyll-multiple-languages-plugin
languages: ["en", "pt"]
exclude_from_localizations: ["assets", "favicon.ico"]
由于在“jekyll-multiple-languages-plugin”中引发了异常gem让我们快速浏览一下source。
# lib/jekyll-multiple-languages-plugin.rb:360
translation = site.parsed_translations[lang].access(key) if key.is_a?(String)
为了生成消息 "undefined method `access' for false:FalseClass" 这意味着 .access
被调用 false
.因为上面只有一个 access
调用,这意味着 site.parsed_translations[lang]
必须评估为 false
.
作为图书馆用户,您如何影响这个值?我们首先得看看这个值是怎么来的。
# lib/jekyll-multiple-languages-plugin.rb:25
site.parsed_translations[lang] = YAML.load_file("#{site.source}/_i18n/#{lang}.yml")
这意味着 false
值是解析您的 .yml
文件之一的 return 值。 YAML.load_file
文档对这个 return 值说了以下内容:
load_file(filename, fallback: false)
Load the document contained in
filename
. Returns the yaml contained infilename
as a Ruby object, or if the file is empty, it returns the specifiedfallback
return value, which defaults tofalse
.
在这里我们可以看到一个空文件导致 false
return 值。因此,要么您的 _i18n/pt.yml
或 _i18n/en.yml
文件为空,要么其中的内容计算为 false
。例如 YAML.load('false') #=> false
和 YAML.load('no') #=> false