首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单页面中的MultiLingual - Ruby on Rails

单页面中的MultiLingual - Ruby on Rails
EN

Stack Overflow用户
提问于 2018-06-28 12:52:24
回答 2查看 367关注 0票数 0

有没有可能在Rails 5中使用I18n加载一个页面时使用一种以上的语言。例如:我有一个问答页面,其中问题可以显示为“英语”,下面是另一种区域语言,供用户理解。表示同时显示两种语言。这是可以实现的吗?怎样才能做到同样的事情呢?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2018-06-28 15:43:26

rails-i18n提供了一个方法with-locale来覆盖特定代码块的全局设置区域设置。例如,如果您已将全局I18n.locale设置为,例如为特定请求设置‘日语’:

代码语言:javascript
复制
# application_controller.rb
I18n.locale = :ja

但是你想在你的视图中显示一些内容,使用不同的语言环境,就像你说的'English',你可以这样做:

代码语言:javascript
复制
<!-- 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 -->
票数 3
EN

Stack Overflow用户

发布于 2018-06-28 16:47:33

我认为在类似的页面中,这是不可能的,但对于不同的页面,这是可能的。

设置语言的有效方法是将其作为前缀添加到URL。这使得搜索引擎能够更好地管理不同的语言版本。假设我们希望localhost:3000/de显示我们主页的德语版本,而localhost:3000/en显示英语版本。我们需要在config/routes.rb中写入

代码语言:javascript
复制
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:

代码语言:javascript
复制
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :set_locale

private
 def set_locale
  I18n.locale = params[:locale] || I18n.default_locale
 end
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51074921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档