Rails I18n 不包括 URL 中的默认语言环境
Rails I18n do not include default locale in URL
TL;DR
我正在从事一个多语言和区域 Ruby-on-Rails (6.0) 项目。我希望 URL 不包含默认语言环境和地区 (I18n),而所有其他语言和地区必须出现。
当前:
我的网站。com/en-us/xyz
我的网站.com/es-mx/xyz
预期:
我的网站。com/xyz
我的网站.com/es-mx/xyz
附加信息:
所以我正在为客户开发一个多语言应用程序,将一个简单的 Wordpress 站点变成一个实际的 Web 应用程序。大多数要求都发生在登录后,因此从 SEO 的角度来看,我并不关心这个世界。
但是,原始站点只有英文版。我们仍然重用(重建)几个可公开访问并在 Google 的 SERP 中排名靠前的页面。我们不能丢失这些网站,即使是短 运行,所以 301 重定向不会这样做。
现在我拥有的是针对语言和地区的 URLs - 这里是摘录:
- myapp.com/zh-cn/xyz
- myapp.com/en-gb/xyz
- myapp.com/es-mx/xyz
- myapp.com/he-il/xyz
- myapp.com/高输入/xyz
一切都很好,除了我需要美国英语版本,它是默认语言和地区,不会出现在 URL 中。
- en-US: myapp.com/xyz --> 默认语言(预期:无语言环境!)
- en-GB: myapp.com/en-gb/xyz
- es-MX: myapp.com/es-mx/xyz
- 他-伊尔:myapp.com/他-伊尔/xyz
- 高输入:myapp.com/高输入/xyz
我查看了所有可用资源,但找不到任何内容:
- https://guides.rubyonrails.org/i18n.html
- How to avoid adding the default Locale in generated URLs?
非常感谢任何指示或可能的解决方案!
假设你的 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
TL;DR
我正在从事一个多语言和区域 Ruby-on-Rails (6.0) 项目。我希望 URL 不包含默认语言环境和地区 (I18n),而所有其他语言和地区必须出现。
当前:
我的网站。com/en-us/xyz 我的网站.com/es-mx/xyz
预期:
我的网站。com/xyz 我的网站.com/es-mx/xyz
附加信息:
所以我正在为客户开发一个多语言应用程序,将一个简单的 Wordpress 站点变成一个实际的 Web 应用程序。大多数要求都发生在登录后,因此从 SEO 的角度来看,我并不关心这个世界。
但是,原始站点只有英文版。我们仍然重用(重建)几个可公开访问并在 Google 的 SERP 中排名靠前的页面。我们不能丢失这些网站,即使是短 运行,所以 301 重定向不会这样做。
现在我拥有的是针对语言和地区的 URLs - 这里是摘录:
- myapp.com/zh-cn/xyz
- myapp.com/en-gb/xyz
- myapp.com/es-mx/xyz
- myapp.com/he-il/xyz
- myapp.com/高输入/xyz
一切都很好,除了我需要美国英语版本,它是默认语言和地区,不会出现在 URL 中。
- en-US: myapp.com/xyz --> 默认语言(预期:无语言环境!)
- en-GB: myapp.com/en-gb/xyz
- es-MX: myapp.com/es-mx/xyz
- 他-伊尔:myapp.com/他-伊尔/xyz
- 高输入:myapp.com/高输入/xyz
我查看了所有可用资源,但找不到任何内容:
- https://guides.rubyonrails.org/i18n.html
- How to avoid adding the default Locale in generated URLs?
非常感谢任何指示或可能的解决方案!
假设你的 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