0

我有一个有 2 种语言的网站。我想为每个语言环境创建一个子域。例如:en.site.com 和 fr.site.com。
我用谷歌搜索过,但没有运气。我只找到了从查询中提取语言环境名称的解决方案,例如:site.com/en/post/1
如何实现这样的事情?

4

2 回答 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 回答