有没有可能在Rails 5中使用I18n加载一个页面时使用一种以上的语言。例如:我有一个问答页面,其中问题可以显示为“英语”,下面是另一种区域语言,供用户理解。表示同时显示两种语言。这是可以实现的吗?怎样才能做到同样的事情呢?
谢谢。
发布于 2018-06-28 15:43:26
rails-i18n提供了一个方法with-locale来覆盖特定代码块的全局设置区域设置。例如,如果您已将全局I18n.locale设置为,例如为特定请求设置‘日语’:
# application_controller.rb
I18n.locale = :ja但是你想在你的视图中显示一些内容,使用不同的语言环境,就像你说的'English',你可以这样做:
<!-- my_view.html.erb -->
<% I18n.with_locale(:en) do %>
<%= t_question %> <!-- assuming `t_question` is a method, which returns the localised text (in this case, in english) for question in your application -->
<% end %>
<%= t_answer %> <!-- this should render the answer in japanese -->发布于 2018-06-28 16:47:33
我认为在类似的页面中,这是不可能的,但对于不同的页面,这是可能的。
设置语言的有效方法是将其作为前缀添加到URL。这使得搜索引擎能够更好地管理不同的语言版本。假设我们希望localhost:3000/de显示我们主页的德语版本,而localhost:3000/en显示英语版本。我们需要在config/routes.rb中写入
myapp::Application.routes.draw do
scope "(:locale)", :locale => /en|de/ do
root :to => 'page#index'
get "page/index"
end
end接下来,我们需要在应用程序/ before_filter /ApplicationControler.rb中设置一个控制器。此筛选器将路由设置的参数区域设置为I18n.locale:
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :set_locale
private
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
endhttps://stackoverflow.com/questions/51074921
复制相似问题