ruby-on-rails 如何使用i18n本地化Stimulus JS值?

mgdq6dx1  于 7个月前  发布在  Ruby
关注(0)|答案(2)|浏览(74)

我正在使用rails 6应用程序,我试图将所有显示的字符串存储在locales文件中。我有一个名为countdown_controller.js的Stimulus控制器:

import { Controller } from "@hotwired/stimulus";

export default class extends Controller {

  static values = {
    message: { type: String, default: "Deal closed!" }
  }
}

字符串
en.yml

en:
 deals:
   status:
     closed: "Deal closed!"


我想在countdown_controller.js中使用I18n.t("deals.status.closed")作为messageValue的值,而不是直接写入字符串。我不知道如何做到这一点。

neekobn8

neekobn81#

简单地将countdown_controller.js转换为countdown_controller.js.erb对我来说很有效。然后我使用插值来注入I18n.t("deals.status.closed"),如下所示:

import { Controller } from "@hotwired/stimulus";

export default class extends Controller {

  static values = {
    message: { type: String, default: "<%= I18n.t('deals.status.closed') %>" }
  }
}

字符串
P.S.我最初得到一个错误,因为我改变了注解,使用以#开头的ruby语法,而不是以//开头的JS语法。

kb5ga3dv

kb5ga3dv2#

我所做的是将翻译作为Stimulus控制器元素数据集的一部分发送,因此它在connect上可用。在我的情况下,有多个,所以我从视图或助手发送一个散列,如下所示:

localizations = {
  processing_images: :suggestions_processing_images.t,
  processing_image: :suggestions_processing_image.t,
  processing_results: :suggestions_processing_results.t,
  error: :suggestions_error.t
}.to_json

button_tag(:suggest_names.l,
           type: :button, 
           data: { localization: localizations,
                   controller: "suggestions",
                   action: "suggestions#suggestNames" })

个字符

相关问题