我有几个资源,我想以某种方式在标题中有一个 :lang 参数。所以 /en/posts/ 将使用 params[:lang] == en 指向 posts_controller/index。
这通常是怎么做的?必须在每个链接上添加 ?lang=en 看起来很难看,而且感觉非常不规范。
我想你知道我在说什么,即使我不是很清楚,这里的规范是什么?
我有几个资源,我想以某种方式在标题中有一个 :lang 参数。所以 /en/posts/ 将使用 params[:lang] == en 指向 posts_controller/index。
这通常是怎么做的?必须在每个链接上添加 ?lang=en 看起来很难看,而且感觉非常不规范。
我想你知道我在说什么,即使我不是很清楚,这里的规范是什么?
一种方法是:
map.resources :yourresources, :path_prefix => '/:lang'
您还可以添加语言参数过滤器:
map.resources :yourresources, :path_prefix => '/:lang', :lang => /(en|de|jp)/
似乎为 Rails 2.3 计划的最新功能就在您的小巷:http ://afreshcup.com/2009/02/01/rails-23-localized-views/
您不应该完全避开路由,并根据浏览器的 HTTP Accept-Language 标头设置语言吗?见这里。
我想您应该为您的用户提供更改语言的选项,然后将该值存储在 cookie 中,然后可以在before_filter
.
为什么要这样做?好吧,“HTTP 最佳实践”指出每个资源都应该有一个 URI。一篇文章仍然是同一篇文章,无论是西班牙语还是英语,所以应该有相同的 URI。site.com/en/article
和site.com/es/article
明显不是同一个URI,违反了这个原则