如何使用i18n值将coffeescript中的字符串国际化?

Nic*_*art 4 javascript ruby-on-rails internationalization coffeescript rails-i18n

我的问题很简单:我的一个coffeescripts中有一个字符串,我需要在我的Rails应用程序中使用i18n值进行国际化.这是我的代码:

 $ ->
      $("#order_accepted_terms").on 'invalid', ->
        this.setCustomValidity('Die AGB müssen akzeptiert werden.')
Run Code Online (Sandbox Code Playgroud)

有人有任何想法吗?

tru*_*ich 8

我通常使用这个宝石 - https://github.com/fnando/i18n-js.它的行为很像原生Rails I18n.在配置gem之后(检查github上的自述文件),添加到布局的末尾(例子是在Haml中)

  = javascript_tag do
    I18n.defaultLocale = "#{I18n.default_locale}"
    I18n.locale = "#{I18n.locale}"
Run Code Online (Sandbox Code Playgroud)

设置默认和当前语言环境然后你可以在javascript(和coffeescript)中使用I18n如下(自述文件中的一些例子):

I18n.t("some.scoped.translation")
I18n.l("time.formats.short", "2009-09-18 23:12:43")
Run Code Online (Sandbox Code Playgroud)

还支持将参数传递给翻译.考虑到你有翻译

en:
  users:
    greet: "Hello %{name}!"
Run Code Online (Sandbox Code Playgroud)

你可以这样做

I18n.t("users.greet", {name: 'Nick'})
Run Code Online (Sandbox Code Playgroud)

你会得到结果

Hello Nick!
Run Code Online (Sandbox Code Playgroud)

您可以在上面的链接中找到更多示例.