Middleman的本地化模板的link_to助手

时间:2015-05-01 03:03:31

标签: middleman

对于我与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

1 个答案:

答案 0 :(得分:0)

如果没有看到 config.rb 文件和文件系统的结构,那么真的可以说是什么问题。

我对您的问题的猜测就像this here

或者你必须将'russian'改为'ru',这可能很简单,因为那是文件名。

这是good example

编辑:

现在使用你的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}