【问题标题】:Switch to the another language on the same page?在同一页面上切换到另一种语言?
【发布时间】:2019-02-01 03:58:29
【问题描述】:

我正在尝试为 Middleman 添加一个语言转换器,但它没有生成正确的链接。我的默认和 root 是英语。

url_for("/#{current_page.path}", locale: :ja)

我希望 JA 中当前页面的等效项是带有 JA 前缀的相同 URL。有谁知道如何解决这个问题?

【问题讨论】:

    标签: middleman middleman-4


    【解决方案1】:

    我是一个中间人初学者,但在做了一堆谷歌搜索之后,这似乎是一个相当普遍的问题。我试图通过中间人的资源来查看是否可以找到解决方案,但我一直无法。我对此有点失望,因为看起来中间商对本地化有一流的支持。无法轻松地从一个到另一个链接似乎是一个令人惊讶的遗漏。

    我所做的是做一个小助手,如果需要,可以在路径中交换本地化。

    def change_locale_in_path(path, locale)
      locale_prefix = I18n.locale
    
      path.gsub(/^#{locale_prefix}/, locale.to_s)
    end
    

    不过,这不是一个很好的解决方案。如果您更改 i18n :path,则需要对其进行调整,除非您 mount_at_root: false,否则它将无法正常工作。但是,它运作良好,足以让我继续前进。我真的很想看到更好的解决方案。

    我发现了一些似乎引用了这个问题的 GitHub 问题。 Here's one.

    【讨论】:

      【解决方案2】:

      我正在使用以下帮助程序为当前页面生成不同语言的 URL。它最初是基于this gist,然后对其进行了一些调整,使其无论是否使用mount_at_root都能正常工作。

      def current_url_for_locale(loc)
        url_regex = /\A\/(?:(#{I18n.available_locales.join('|')})\/)?/
        locale_root = url_for('/', locale: loc)
        current_page.url.gsub(url_regex, '').blank? ?
            locale_root :
            current_page.url.gsub(url_regex, locale_root)
      end
      

      【讨论】:

        猜你喜欢
        • 2013-05-10
        • 2018-05-14
        • 1970-01-01
        • 2018-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多