如何使用中间人为不同的本地化使用不同的域?

时间:2016-06-14 23:44:31

标签: ruby-on-rails localization middleman

所以,我有两个本地化--en和es。我希望他们找到

en.site.com es.site.com

site.en site.es

但是遵循这个教程https://middlemanapp.com/advanced/localization/我只能像

一样

site.com/photos site.com/es/photos

看起来并不好。

我的源/ CNAME文件只有一行

site.com

也许我必须用它做什么?如果是,究竟是什么?我根本无法找到任何教程或示例>< 如果您知道如何在中间人中为两个本地化使用不同的域,请提供帮助。提前谢谢!

1 个答案:

答案 0 :(得分:0)

我之前从未使用过Middleman,但是我最近构建了一个需要类似提供多租户的应用程序。

我所做的是创建了一个机架中间件层,它将根据传入的请求主机设置某些变量。在您的情况下,您可以为每个请求设置Rails default_locale,或者配置Middleman以更改区域设置。

你可以做一些非常基本的实现:

应用/中间件/ locale_switcher_middleware.rb

class LocaleSwitcherMiddleware
  def initialize(app)
    @app = app
  end

  def call(env)
    request = Rack::Request.new(env)

    if request.host.include("es.")
        I18n.default_locale = :es
    else
        # default to english
        I18n.default_locale = :en
    end

    @app.call(env)
  end
end

application.rb中

config.middleware.use "LocaleSwitcherMiddleware"