我是使用红宝石和中间人的新手,我创建了我的项目并且一切正常,但是当我转到/es
路径时,我没有得到任何翻译。我搜索了没有任何结果的信息,并尝试在测试配置的文件夹之间移动代码而没有。
我的文件夹结构是:
|locales
|---en.yml
|---es.yml
|source
|es
|---index.html.haml
|layouts
|---layout.html.haml
|partials
|_header.html.haml
|_navigation.html.haml
|---index.html.haml
我的YAML文件
en.yml
en:
home: 'Home'
es.yml
es:
home: 'Inicio'
我的HAML
%nav
= link_to t(:home), '/', class: "#{'active' if current_page.url == '/'}"
= link_to 'Portfolio', '/portfolio', class: "#{'active' if current_page.url == '/portfolio/'}"
= link_to t(:skills), '/skills', class: "#{'active' if current_page.url == '/skills/'}"
= link_to t(:about), '/about', class: "#{'active' if current_page.url == '/about/'}"
= link_to t(:contact), '/contact', class: "#{'active' if current_page.url == '/contact/'}"
我的配置
config.rb
###
# Page options, layouts, aliases and proxies
###
# Per-page layout changes:
#
# With no layout
page '/*.xml', layout: false
page '/*.json', layout: false
page '/*.txt', layout: false
# With alternative layout
# page "/path/to/file.html", layout: :otherlayout
# Proxy pages (http://middlemanapp.com/basics/dynamic-pages/)
# proxy "/this-page-has-no-template.html", "/template-file.html", locals: {
# which_fake_page: "Rendering a fake page with a local variable" }
# General configuration
set :partials_dir, 'partials'
activate :i18n, :templates_dir => 'partials'
activate :directory_indexes
# Reload the browser automatically whenever files change
configure :development do
activate :livereload
end
###
# Helpers
###
# Methods defined in the helpers block are available in templates
# helpers do
# def some_helper
# "Helping"
# end
# end
# Build-specific configuration
configure :build do
# Minify CSS on build
activate :minify_css
# Minify Javascript on build
activate :minify_javascript
end
答案 0 :(得分:0)
我不能写评论,但我认为这可能是原因,你的es.yml是错的,因为它开始了:
en:
home: 'Inicio'
不应该是
es:
home: 'Inicio'
答案 1 :(得分:0)
我知道这个问题已经过了几个月但是我遇到了同样的问题,在网上看了好几个小时试图找到并回答并设法通过在激活 i18n 后添加这些参数来解决问题:
<强> config.rb 强>
configure :build do
activate :i18n,
:mount_at_root => 'en',
:lang_map => { :'en' => 'en', :'es' => 'es' },
:path => '/'
end
显然,如果您想要“es”作为默认值,请更改 mount_at_root 。
希望这有帮助。
答案 2 :(得分:0)
我用英语和西班牙语实现了具有单独URL的本地化路径
在源目录的根目录中添加 index.es.html.erb
并设置激活:i18n,:path =&gt; config.rb中的“/:locale /”
在浏览器中,我的语言选择器会将用户发送到 / 或 / es :
英
http://website.com/
西班牙语
http://website.com/es
文件夹结构
|data
|---home.json
|locales
|---en.yml
|---es.yml
|source
|---index.html.erb
|---index.es.html.erb
|---_slide.erb
|---config.rb
<强> config.rb 强>
configure :build do
activate :i18n, :path => "/:locale/"
activate :directory_indexes
...
end
<强> slide.erb 强>
使用 t 作为 I18n.t 的快捷方式,我通过数据动态引用翻译后的值。
<%= link_to t([data.link.text]),
data.link.href,
:id => data.link.id,
:class => 'btn btn-primary btn-lg btn-dark'
%>
<强> home.json 强>
“ text ”的值与.yml文件中的键相关联。
{
"slides": [
{
"text": "slides.learnMore",
...
},
...
]
}
<强> en.yml 强>
en:
slides:
learnMore: "LEARN MORE"
...
<强> es.yml 强>
es:
slides:
learnMore: "APRENDE MÁS"
...
答案 3 :(得分:0)
将需要按语言复制的所有 .erb.html
移动到文件夹:/source/localizable
,如文档中所述:
您可以使用修饰符更改此文件夹名称:templates_dir
:
# Look in `source/language_specific` instead
activate :i18n, :templates_dir => "language_specific"