因此,我们有一个现有的Rails 2.3.5应用程序,它根本不支持国际化。现在,我很熟悉Rails I18n的东西,但是我们在/javascripts/
中有很多输出字符串。我不是这种方法的狂热粉丝,但不幸的是,现在修复它已经太晚了。
我们如何在Rails应用程序中国际化JS文件中存储的字符串?Rails甚至不提供JS文件...
我在想,我总是可以让Rails应用程序提供JS文件,但这似乎相当粗俗。有没有插件可以做到这一点?
发布于 2012-05-16 07:48:37
为什么不做一些简单的事情,比如:
<script type="text/javascript">
window.I18n = <%= I18n.backend.send(:translations).to_json.html_safe %>
</script>
然后,在JS中,您可以执行以下操作:
I18n["en-US"]["alpha"]["bravo"];
我已经把我的包在一个应用程序助手中了。
def current_translations
@translations ||= I18n.backend.send(:translations)
@translations[I18n.locale].with_indifferent_access
end
然后我在application.html.erb中的调用如下所示:
<script type="text/javascript">
window.I18n = <%= current_translations.to_json.html_safe %>
</script>
这使您不必了解JavaScript中的当前区域设置。
I18n["alpha"]["bravo"];
或
I18n.alpha.bravo;
发布于 2012-02-16 17:52:20
巴利布被遗弃了。使用i18n-js:https://github.com/fnando/i18n-js
发布于 2013-09-18 10:03:09
Ryan上面的解决方案是完美的,除了后端需要初始化,如果还没有初始化的话。
I18n.backend.send(:init_translations) unless I18n.backend.initialized?
# now you can safely dump the translations to json
https://stackoverflow.com/questions/2701749
复制相似问题