bas*_*sex 3 url url-routing internationalization sinatra padrino
我有一个多语言网站,我把这种语言放在像domain.com/en/这样的网址中.当用户未将该语言放入URL时,我想将其重定向到主要语言的页面,如"domain.com/posts"到"domain.com/en/posts".Sinatra有一个简单的方法吗?
我有一百多条路线.因此,为每条路线做这件事并不是一个很好的选择.
获取"/:locale/posts"do ... end
得到"/帖子"做...结束
有人能帮我吗?
谢谢
使用之前的过滤器,有点像这样:
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
Run Code Online (Sandbox Code Playgroud)
随着即将发布的Sinatra,您将能够做到这一点:
before('/:locale/*') { @locale = params[:locale] }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2139 次 |
| 最近记录: |