RailsI18n在URL中不包含默认的区域设置



TL;DR

我正在做一个多语言&区域RubyonRails(6.0(项目。我希望URL不包含默认的语言环境&区域(I18n(,而所有其他语言和区域必须出现。

电流:

mysite.com/en-us/xyzmysite.com/es-mx/xyz

预期:

mysite.com/xyzmysite.com/es-mx/xyz

附加信息:

因此,我正在为一个客户端开发一个多语言应用程序,将一个简单的Wordpress网站变成一个真正的Web应用程序。大多数要求都发生在登录之后,因此我不关心SEO的角度。

然而,最初的网站只有英文。我们仍然重用(重建(几个可以公开访问的页面,这些页面在谷歌的SERP中排名很好。我们不能失去这些网站,即使是在短期内,所以301重定向不会做到这一点。

现在,我现在拥有的是针对语言和地区的URL-这里有一个摘录:

  • myapp.com/en-us/xyz
  • myapp.com/en-gb/xyz
  • myapp.com/es mx/xyz
  • myapp.com/he il/xyz
  • myapp.com/hi在/xyz

一切都很好,除了我需要英文-美国版本,这是不出现在URL中的默认语言和地区。

  • en-US:myapp.com/xyz-->默认语言(应为:无区域设置!(
  • en-GB:myapp.com/en-GB/xyz
  • es MX:myapp.com/es MX/xyz
  • he IL:myapp.com/he IL/xyz
  • 嗨在:myapp.com/嗨在/xyz

我浏览了可用的资源,但什么都找不到:

  • https://guides.rubyonrails.org/i18n.html
  • 如何避免在生成的URL中添加默认区域设置

非常感谢任何指针或可能的解决方案!

假设您的application_controller.rb中有

def default_url_options
{ locale: I18n.locale }
end

尝试

def default_url_options
{ locale: ((I18n.locale == I18n.default_locale) ? nil : I18n.locale) }
end

最新更新