Многоязычный на одной странице - Ruby on Rails - PullRequest
0 голосов
/ 28 июня 2018

Можно ли добиться использования более одного языка при загрузке одной страницы с использованием I18n в Rails 5. Скажем, например: у меня есть страница вопросов и ответов, где вопрос может быть отображен на «английском» языке, ниже которого другой региональный язык в качестве перевода для пользователя, чтобы понять. Означает одновременное отображение двух языков. Это достижимо? что было бы способ сделать то же самое.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Я думаю, что на подобной странице это невозможно, но для другой страницы это возможно.

Эффективный способ установки языка - добавить его в качестве префикса к URL. Это позволяет поисковым системам лучше управлять версиями на разных языках. Предположим, если мы хотим, чтобы localhost: 3000 / de отображал немецкую версию нашей домашней страницы, а localhost: 3000 / en - английскую версию. Нам нужно написать в config / rout.rb

myapp::Application.routes.draw do
 scope "(:locale)", :locale => /en|de/ do
  root :to => 'page#index'
  get "page/index"
 end
end

Далее нам нужно установить before_filter в app / controllers / application_controller.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
end
0 голосов
/ 28 июня 2018

rails-i18n предоставляет метод with-locale для переопределения глобально установленной локали для определенного блока кода. например если вы установили глобальный I18n.locale, скажите «японский» для конкретного запроса:

# application_controller.rb
I18n.locale = :ja

но вы хотите показать часть контента в своем представлении, используя другой языковой стандарт, как вы говорите, «английский», вы можете сделать это следующим образом:

<!-- 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 -->
...