【问题标题】:Middleman’s link_to helper for localized templatesMiddleman 用于本地化模板的 link_to 助手
【发布时间】:2015-05-01 03:03:30
【问题描述】:

对于我正在使用 Middleman 构建的网站,我正在本地化整个模板,如 "Localization" section 底部的文档中所述。所以文件树的相关部分如下所示:

/localizable
     |
     |- index.en.html.haml
     |- index.ru.html.haml
     |- about.en.html.haml
     |- about.ru.html.haml 

我可以使用 path helper 从 index.en 页面链接到 about.en 页面,如下所示:

= link_to 'about me', '/about.html'

但是当我尝试做一个类似的技巧来创建从 index.ru 页面到 about.ru 页面的链接时:

= link_to 'some russian text', '/russian/about.html'

助手不起作用。它会忽略 /russian 文件夹并在根目录中创建指向 /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

【问题讨论】:

    标签: middleman


    【解决方案1】:

    如果不查看您的 config.rb 文件和文件系统的结构,就不能真正说出问题所在。

    我对你的问题的猜测是this here

    或者您必须将 'russian' 更改为 'ru' 可能非常简单,因为那是在文件名中。

    这是good example

    编辑:

    现在有了你的 config.rb ,我可以看到你使用 :en 作为默认值,使用 :ru 作为 russian

    由于您使用 :en 作为默认值(无前缀),因此您不必映射它。或者,如果您希望将其映射而不是默认设置,则可能必须使用 ':mount_at_root => false' 和 activate 'activate :i18n,'

    尝试以下解决方案

    activate :i18n, :langs => [:en,:ru], :lang_map => {:ru => :russian}
    

    就像我说的,我只是删除了 :en 映射,它在我的测试中起作用。由于您将 :en 作为默认设置,因此您不必映射它。如果您希望正确映射两种语言,请使用以下内容

    activate :i18n, :mount_at_root => false, :langs => [:en,:ru], :lang_map => {:en => :english ,:ru => :russian}
    

    【讨论】:

    • 抱歉回复晚了——我花了一段时间才回到这个项目。我更新了我的问题以包含我的 config.ru 文件中的相关信息。与第一个链接中描述的问题不同,:i18nbuild 之前被激活。
    • 按照第二个链接中的建议将= link_to 'about me', '/about.html' 更改为= link_to 'about me', '/#{I18n.locale}/about.html' 几乎可以工作...只有生成的路径是'/ru/about.html',而我将'ru'重新映射为' russian',因此生成的 url 无效。我需要生成的是'/russian/about.html'。
    • 好的,我做了一些测试,知道为什么您的配置不起作用,我可以编辑答案,但不确定为什么您当前的配置不起作用,可能是错误或奇怪的交互,因为我们有一个默认前缀。
    • 嗯,我像你说的那样从语言映射中删除了默认的英语语言,并重新启动了中间人服务器,但是 index.ru.html.haml 文件中的link_to helper (= link_to 'about me', '/about.html' ) 仍然会生成指向英文版页面的链接 :-( 您能否分享您如何在 erb/haml 文件中创建指向不同区域设置页面的链接?
    • 我什至对from GitHub 的印象是,我试图用link_to 助手做的事情是不可能的......
    猜你喜欢
    • 2015-10-23
    • 2013-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    相关资源
    最近更新 更多