2012-01-15 10 views
5

Tôi đang cố gắng đạt được quốc tế hóa đầy đủ các tuyến đường của mình trong ứng dụng Rails3.1. Tôi đã sử dụng số rails-translate-routes của Francesc Pla để bản địa hóa các hành động và tài nguyên tuyến đường. Bước cuối cùng là để có thể dịch sên cho một số mô hình của tôi.Cách tốt nhất để dịch sên trong các tuyến đường Rails

Hướng đến được dịch:

http://myhost.com/products/pharmacy --> http://myhost.com/productos/farmacia 

Tôi có một con đường lồng nhau của các hình thức

# routes.rb 
match 'products/:category_slug' => "products#index" 

Tôi có một loại mô hình với một thể hiện #<Category id: 1, slug: "pharmacy"> và tôi làm find_by_slug loại trong ProductsController tôi.

Bất kỳ ý tưởng nào về cách dịch phiên bản :category_slug một phần của tuyến đường?

Trả lời

0

Theo như tôi biết, bạn có thể gọi người trợ giúp dịch trực tiếp từ bộ điều khiển của bạn miễn là bạn không gian tên chính xác với I18n.

Vì vậy ProductsController của bạn có thể chứa một cái gì đó như sau:

class ProductsController < ApplicationController 
    def index 
    i18n_slug = I18n.t("locale.category.#{params[:category_slug]}") 
    @category = Category.find_by_slug(i18n_slug) 
    end 
end 

Bạn có lẽ nên thông báo cho mình là những rủi ro an ninh tiềm năng đi qua các params trực tiếp vào công cụ dịch, mặc dù tôi không biết về bất kỳ. Bạn cũng có thể xem xét di chuyển bộ lọc đó vào bộ lọc trước hoặc vào bộ điều khiển ứng dụng nếu nó sẽ được sử dụng trong nhiều thao tác điều khiển.