我正在尝试为 Middleman 添加一个语言转换器,但它没有生成正确的链接。我的默认和根是英语。
url_for("/#{current_page.path}", locale: :ja)
我希望 JA 中当前页面的等效项与 JA 前缀相同的 URL。有谁知道如何解决这一问题?
我正在尝试为 Middleman 添加一个语言转换器,但它没有生成正确的链接。我的默认和根是英语。
url_for("/#{current_page.path}", locale: :ja)
我希望 JA 中当前页面的等效项与 JA 前缀相同的 URL。有谁知道如何解决这一问题?
我是一个中间人初学者,但在做了一堆谷歌搜索之后,这似乎是一个相当普遍的问题。我试图通过中间人的资源来查看是否可以找到解决方案,但我一直无法。我对此有点失望,因为看起来中间人对本地化有一流的支持。无法轻松地从一个到另一个链接似乎是一个令人惊讶的遗漏。
如果需要,我所做的是制作一个可以在路径中交换本地化的小助手。
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 问题。这是一个。
我正在使用以下帮助程序以不同语言为当前页面生成 URL。它最初是基于这个 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