我的問題很簡單:我在我的一個咖啡文本中有一個字符串,我需要在我的Rails應用程序中使用i18n值進行國際化。這是我的代碼:如何國際化coffeescript字符串與國際化的價值?
$ ->
$("#order_accepted_terms").on 'invalid', ->
this.setCustomValidity('Die AGB müssen akzeptiert werden.')
任何人有任何想法?
我的問題很簡單:我在我的一個咖啡文本中有一個字符串,我需要在我的Rails應用程序中使用i18n值進行國際化。這是我的代碼:如何國際化coffeescript字符串與國際化的價值?
$ ->
$("#order_accepted_terms").on 'invalid', ->
this.setCustomValidity('Die AGB müssen akzeptiert werden.')
任何人有任何想法?
我通常使用這個寶石 - https://github.com/fnando/i18n-js。它的行爲很像本機Rails I18n。配置寶石(檢查在GitHub上的自述)在您添加到您的佈局結尾(例如在Haml的)
= javascript_tag do
I18n.defaultLocale = "#{I18n.default_locale}"
I18n.locale = "#{I18n.locale}"
設置默認的和當前的語言環境,然後你可以在JavaScript(和CoffeeScript的)使用的I18n如下所示(自述文件中的一些示例):
I18n.t("some.scoped.translation")
I18n.l("time.formats.short", "2009-09-18 23:12:43")
還支持將參數傳遞給翻譯。考慮到你有一個翻譯
en:
users:
greet: "Hello %{name}!"
你可以做到這一點
I18n.t("users.greet", {name: 'Nick'})
,你會得到結果
Hello Nick!
你會發現上面的鏈接下面的更多的例子。
如果您正在尋找基於JavaScript的i18n庫。你可以檢查i18next了。這對我很好。
在我看來,更好的方法(以及不需要另一個gem,記住 - 性能)的方法是將包含國際化消息的對象包含爲全局範圍的javascript變量。所以,你會去做這種方式(對於Ruby on Rails的):在你的application.html.erb添加標籤標題後立即(任何其他JavaScript文件中引用之前)
2.添加全局
1。那些內嵌腳本標籤內範圍可變對象在頭
generalMessages = {
someMessage: '<%= t 'path.to.some_message_in_yml' %>',
anotherMessage: '<%= t 'path.another_message' %>'
}
3.參考變量(在JavaScript/CoffeeScript的/打字稿)爲:
foo = generalMessages.someMessage
瞧。
一個類似的方法(只是不同的語法如何引用和打印國際化的消息,顯然)也適用於任何其他支持國際化的語言,並且無法直接在javascript中添加這些國際化字符串。
謝謝,作品像一個魅力 – NickEckhart 2014-11-04 10:37:25