Tôi đang thêm I18N vào ứng dụng đường ray của mình bằng cách chuyển miền địa phương bằng cách sử dụng thông số url. Các url của tôi trông giống như http://example.com/en/users và http://example.com/ar/users (đối với các ngôn ngữ tiếng Anh và tiếng Ả Rập tương ứng).Đường ray liên kết tới trang hiện tại và chuyển tham số tới trang
Trong tập tin tuyến đường của tôi, tôi đã xác định các tuyến đường của tôi với một: Tùy chọn path_prefix:
map.resources :users, :path_prefix => '/:locale'
Và locale đang được thiết lập bằng cách sử dụng before_filter quy định tại ApplicationController
def set_locale
I18n.locale = params[:locale]
end
tôi cũng xác định ApplicationController # default_url_options, để thêm ngôn ngữ vào tất cả các url được tạo bởi ứng dụng:
def default_url_options(options={})
{:locale => I18n.locale}
end
Điều tôi muốn là thêm liên kết vào tiêu đề bố cục (được hiển thị trong tất cả các trang) sẽ liên kết đến cùng một trang nhưng với ngôn ngữ khác.
Ví dụ: nếu tôi đang duyệt ngôn ngữ arabic, tôi muốn liên kết "tiếng Anh" trong tiêu đề, sẽ chuyển hướng tôi trở lại trang hiện tại của tôi và đặt ngôn ngữ thành tiếng Anh. Có cách nào để làm điều này trong đường ray?
Thanx, đây sẽ là một giải pháp thanh lịch. Tuy nhiên, nó không hoạt động với các url an toàn: s – Faisal
Điều này thật tuyệt vời và thanh lịch, tôi đã tìm kiếm một giải pháp như thế này trong nhiều giờ ... Tôi không hiểu tại sao nó không liên quan đến các url RESTful? bạn có thể đưa ra một ví dụ không ? – Alex
Nếu bạn muốn chặn ngôn ngữ: url_for (: locale => nil) –