我有一个多语言网站,我将语言放在URL中,例如domain.com/en/。当用户不将语言放入URL中时,我想以“ domain.com/posts”(例如domain.com/en/posts''之类的主要语言将他重定向到页面。有什么简单的方法可以使用Sinatra做到这一点?

我有一百多个路线。因此,每条路线都不是一个很好的选择。

获取“/:语言环境/帖子”做...结束

获取“/帖子”做...结束

有人能帮我吗?

谢谢

有帮助吗?

解决方案

使用前过滤器,有点像这样:

set :locales, %w[en sv de]
set :default_locale, 'en'
set :locale_pattern, /^\/?(#{Regexp.union(settings.locals)})(\/.+)$/

helpers do
  def locale
    @locale || settings.default_locale
  end
end

before do
  @locale, request.path_info = $1, $2 if request.path_info =~ settings.locale_pattern
end

get '/example' do
  case locale
  when 'en' then 'Hello my friend!'
  when 'de' then 'Hallo mein Freund!'
  when 'sv' then 'Hallå min vän!'
  else '???'
  end
end

随着Sinatra的即将发布,您将能够做到这一点:

before('/:locale/*') { @locale = params[:locale] }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top