对于我与Middleman建立的网站,我正在按照"Localization" section底部文档中的说明本地化整个模板。所以文件树的相关部分如下所示:
/localizable
|
|- index.en.html.haml
|- index.ru.html.haml
|- about.en.html.haml
|- about.ru.html.haml
我可以使用路径助手从index.en页面链接到about.en页面,如下所示:
= link_to 'about me', '/about.html'
但是当我尝试做一个类似的技巧来创建一个从index.ru页面到about.ru页面的链接:
= link_to 'some russian text', '/russian/about.html'
帮助者没有工作。它会忽略/russian
文件夹,并在root中创建指向/about.html的链接。
我是否遗漏了某些东西,或者路径助手无法用于本地化模板?是直接使用<a>
标记的唯一选项吗?
============
Update1 :我的config.ru文件的相关部分:
set :css_dir, 'stylesheets'
set :js_dir, 'javascripts'
set :images_dir, 'images'
activate :relative_assets
set :relative_links, true
activate :i18n, :langs => [:en, :ru], :lang_map => { :en => :english, :ru => :russian }
activate :blog do |blog|
blog.prefix = "blog"
blog.paginate = true
end
# Build-specific configuration
configure :build do
# For example, change the Compass output style for deployment
# activate :minify_css
# Minify Javascript on build
# activate :minify_javascript
# Enable cache buster
# activate :asset_hash
# Use relative URLs
# activate :relative_assets
# Or use a different image path
# set :http_prefix, "/Content/images/"
end
答案 0 :(得分:0)
如果没有看到 config.rb 文件和文件系统的结构,那么真的可以说是什么问题。
我对您的问题的猜测就像this here
或者你必须将'russian'改为'ru',这可能很简单,因为那是文件名。
编辑:
现在使用你的config.rb,我可以看到你正在使用:en作为默认值和:ru as russian
由于您使用:en作为默认值(非前缀),您不必映射它。或者如果你想要映射而不是默认值,你可能需要使用':mount_at_root =&gt; false'with activate'activate:i18n,'
尝试以下解决方案
activate :i18n, :langs => [:en,:ru], :lang_map => {:ru => :russian}
就像我说的那样,我只是简单地删除了:en mapping并且它在我的测试中起作用。由于你将:en作为默认值,你不必映射它。如果要正确映射两种语言,请使用以下
activate :i18n, :mount_at_root => false, :langs => [:en,:ru], :lang_map => {:en => :english ,:ru => :russian}