gpt4 book ai didi

ruby-on-rails-3 - 如何国际化 CoffeeScript 中的值

转载 作者:行者123 更新时间:2023-12-05 00:01:16 24 4
gpt4 key购买 nike

下面的代码是我在 Rails 应用程序中的一个 coffeescript 文件中所拥有的。我正在努力添加对字符串值的 i18n 支持,例如“首先选择帐户”和“选择一个”。在常规的 javascript 文件中,我一直在使用 I18n.t("shared.select_account_first") 之类的东西来使用 i18n-js gem 获取字符串的国际化值。

jQuery ->
networks = $('#account_offering_network_id').html()
select_network_options = new Option("Select Account First", "", true, false)

filter_networks_by_account = (account) ->
if account is 'Select One'
$('#account_offering_network_id').html(select_network_options)
else
escaped_account = account.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g, '\\$1')
options = $(networks).filter("optgroup[label='#{escaped_account}']")
$('#account_offering_network_id').html(options.html())

# Show proper network dropdown first time
filter_networks_by_account($('#account_offering_account_id :selected').text())

# Show proper network dropdown on account change
$('#account_offering_account_id').change -> filter_networks_by_account($('#account_offering_account_id :selected').text())

所有这一切的目标是根据所选帐户过滤网络下拉列表。如果未选择帐户(帐户下拉列表的值显示“选择一个”或相应的 i18n 值),网络下拉列表应在所选区域设置中显示“首先选择帐户”。

我正在使用 i18s-js gem(https://github.com/fnando/i18n-js) 在 javascript 中启用翻译。以下是我必须在应用程序中进行的更改以支持该 gem。

在 application.js 中:

//= require i18n
//= require i18n/translations

在 production.rb 和 development.rb 中添加的属性:

# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
# the I18n.default_locale when a translation can not be found)
config.i18n.fallbacks = true
config.i18n.available_locales = [:en, :ru]

在 application.html.erb 中:

<%# For localization/i18n in javascript %>
<script type="text/javascript">
I18n.defaultLocale = "<%= I18n.default_locale %>";
I18n.locale = "<%= I18n.locale %>";
I18n.fallbacks = true;
</script>

最后我运行了“rake i18n:js:export”,它将创建一个加载了名称-值对的翻译文件 (app/javascripts/i18n/translations.js)。现在,我可以从任何 javascript 使用 I18n.t(name) 访问翻译。

最佳答案

我试图做同样的事情,但我认为你做不到,因为显然制作 coffeescript 的人做出了一个设计决定,禁止将 ruby​​ 变量注入(inject) coffeescript 文件,以避免必须重新编译 coffeescript每个请求 - 如果你问我,有点无赖!一种可怕的方法是通过内联传递您需要的翻译,但这听起来很可怕!

看看这个:How to access instance variables in CoffeeScript engine inside a Slim template

希望对您有所帮助!

关于ruby-on-rails-3 - 如何国际化 CoffeeScript 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12115146/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com