i18n 로켈을 JavaScript에 전달

다국적 언어 앱을 만드는 과정에서 막혔어요.


jQuery 및 Ajax를 사용하여 상위 범주를 선택하면 드롭다운 메뉴에 하위 범주 후보가 표시됩니다.
그러나 하위 범주만 기본 태그의 베트남어로 번역할 수 있습니다.
예: 상위 분류 => 질문
하위 클래스=>1, Ng.ngng7919ăn hóa
         2,Tập huấn kỹ thuật
         3,Ứng dụng và thủ tục

까닭


Ajax가 하위 범주를 가져올 때 컨트롤러에 로켈을 전달하지 않았기 때문입니다.
category_pulldown.js
$("#parent").on("change", function () {
  // 選択した親カテゴリからIDを取得
  var id = document.getElementById("parent").value;
// 中略
$.ajax({
  type: 'GET',
  data: { parent_id: id }, // IDをparams[:parent_id]に入れて送信
  url: '/categories/pulldown', // categoriesコントローラにて、受け取ったIDで子カテゴリを取得
  dataType: 'json',
}).done(function (children) { // 取得した子カテゴリを表示させる処理...
일부 발췌문이지만 언어 환경을 얻는 것은 다음과 같은 방법으로 진행된다.
application_controller.rb
before_action :set_locale

  private

  def set_locale
    I18n.locale = locale
  end

  def locale
    @locale ||= params[:locale] ||= I18n.default_locale
  end

  def default_url_options(options = {})
    options.merge(locale: locale)
  end

Java Script에 현재 로켈 전달


우선, 현재 언어 환경을 유지하기 위해 input 탭을 사용하십시오.
아래와 같이type="hidden" 사용자가 봐도 화면에 표시되지 않습니다.
hoge.html.erb
<input type="hidden" class="current_locale" value="<%= I18n.locale %>">
다음 추가locale: $('.current_locale').val()하면
친자류의 번역 언어가 통일되었다.
category_pulldown.js
$("#parent").on("change", function () {
  // 選択した親カテゴリからIDを取得
  var id = document.getElementById("parent").value;
// 中略
$.ajax({
  type: 'GET',
  data: { parent_id: id, locale: $('.current_locale').val() }, // IDをparams[:parent_id]に入れて送信
  url: '/categories/pulldown', // categoriesコントローラにて、受け取ったIDで子カテゴリを取得
  dataType: 'json',
}).done(function (children) { // 取得した子カテゴリを表示させる処理...
HTML은 루비와 자바스크립트로부터 정보를 전달할 수 있어 매우 편리하다

좋은 웹페이지 즐겨찾기