【问题标题】:Ruby on Rails - I18n in assetsRuby on Rails - 资产中的 I18n
【发布时间】:2013-10-11 21:41:07
【问题描述】:

我正在创建一个类似 API 的网站,其中大部分是 JSON 响应和 jQuery ajax 回调。 为了响应而不通过控制器操作通过 JSON 发送所有文本,我想在我的资产中使用 I18n。由于资产是静态的,我必须为每种语言预编译一个版本,然后根据数据库中的用户语言设置提供版本。

目前我真的不知道如何解决这个问题。我可以只创建 js 文件并将其中的所有 I18n 变量定义为 javascript - 然后使用 javascript_include_tag 加载正确的变量。但是通过这种方式,我让所有用户都可以访问完整的语言文件,而且我已经觉得我只使用 JSON 响应让我的应用程序过于开放。 有没有办法只在我的资产中使用 I18n?以及如何单独预编译和提供它们?

【问题讨论】:

  • 看看i18n-js gem
  • @Stefan 如果我理解正确的话,gem 基本上所做的是我想要避免的——在一个 .js 文件中提供所有 I18n 翻译。我不希望用户能够一次访问和复制所有翻译。但我想如果没有其他办法,这可能是一个替代方案......

标签: javascript ruby-on-rails internationalization rake asset-pipeline


【解决方案1】:

坦率地说,我并没有完全理解。但它可能对你有用:你可以像这样在你的 js 文件中定义 I18n:

views/example.html.erb

<%= javascript_tag do %>
  window.variable = '<%= j t('variable') %>';
<% end -%>

【讨论】:

  • 他表示不想在动作/视图中渲染字符串;而且他根本不使用 JS,而是使用 JSON(即 AJAX 请求)。不幸的是,在 Rails 4 中,这个问题似乎仍然没有很好的解决方案。 stackoverflow.com/questions/9310044/rails-i18n-of-css-file 至少对 CSS 资产有一个很好的解决方案(hack?)。
猜你喜欢
  • 2018-02-19
  • 1970-01-01
  • 2015-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-26
  • 1970-01-01
相关资源
最近更新 更多