我有一个有 2 种语言的网站。我想为每个语言环境创建一个子域。例如:en.site.com 和 fr.site.com。
我用谷歌搜索过,但没有运气。我只找到了从查询中提取语言环境名称的解决方案,例如:site.com/en/post/1
如何实现这样的事情?
问问题
496 次
2 回答
1
您可以在 rails 指南中找到一个示例:http: //guides.rubyonrails.org/i18n.html#setting-the-locale-from-the-domain-name
它是关于域名的,但你可以很容易地适应你的需要。
请记住,子域会给您的应用程序带来很多复杂性。cookie、javascript 和 ssl 对域敏感。确保值得使用子域与路径。
于 2013-10-15T11:12:31.123 回答
1
我找到了一个简单的例子,你可以很容易地遵循中等: https ://medium.com/unexpected-token/making-your-website-multi-regional-using-top-level-domains-cdbbdb951b65
这个想法是在语言环境和主机之间定义一个清晰的一对一映射
HOSTS_MAPPING = {
'en' => 'en.example.com',
'fr' => 'fr.example.com'
}
然后使用新的映射ApplicationController
class ApplicationController < ActionController::Base
before_action :set_locale
def set_locale
I18n.locale = HOSTS_MAPPING.invert[request.host] || I18n.default_locale
end
end
据说您的主机en.example.com
将使用语言环境en
于 2019-03-01T07:43:01.417 回答