我试图在Rails3.1应用程序中实现我的路线的完全国际化。我已经在使用Francesc Pla的rails-translate-routes本地化路线行动和资源。最后一步是能够为我的一些模型转换slu ..
要翻译的路线:
http://myhost.com/products/pharmacy --> http://myhost.com/productos/farmacia
我有一个
形式的嵌套路线# routes.rb
match 'products/:category_slug' => "products#index"
我有一个带有实例#<Category id: 1, slug: "pharmacy">
的模型类别,我在我的ProductsController中有find_by_slug
类别。
有关如何翻译路线的:category_slug
部分的任何想法?
答案 0 :(得分:0)
据我所知,只要您使用I18n
正确命名,就可以直接从控制器调用翻译助手。
因此,您的ProductsController可能包含以下内容:
class ProductsController < ApplicationController
def index
i18n_slug = I18n.t("locale.category.#{params[:category_slug]}")
@category = Category.find_by_slug(i18n_slug)
end
end
你应该告诉自己将params直接传递给翻译引擎的潜在安全风险,尽管我不知道。你也可以考虑一下 如果将它用于多个控制器操作,则将其移入前置过滤器或应用程序控制器中。