2013-06-12 96 views
1

我正在使用github.com/fnando/i18n-js gem進行JavaScript翻譯。我注意到當我查看源頁面並檢查翻譯.js時,它會加載完整的翻譯文件,即使該頁面只使用一個翻譯詞。Rails翻譯問題使用i18n-js

任何想法JavaScript如何加載當前頁面所需的翻譯,而不是加載完整的文件。

回答

3

最好你可以做的是讓i18n-js生成幾個翻譯文件,每個翻譯文件只包含你需要的一部分翻譯。例如。看到這片從文檔:

translations: 
- file: 'public/javascripts/path-to-your-messages-file.js' 
    only: '*.date.formats' 
- file: 'public/javascripts/path-to-your-second-file.js' 
    only: ['*.activerecord', '*.admin.*.title'] 

通過在您HMTL頁面的相應文件,只需加載您在HTML頁面中需要翻譯。因此,挑戰在於組織好你的網頁和翻譯。

+0

我在config/i18n-js.yml文件中添加了上述配置,現在翻譯應該讀取public/javascripts/en.js文件中存在的文件。但現在不翻譯翻譯。我正在使用rails 3.2.12。我錯過了什麼? – Kashif

+0

我將每種語言的完整應用翻譯保存在一個不同的文件中。在config/en.yml中輸入英文。 Java腳本加載完整的應用翻譯 我只想爲每種語言提供一個新的單獨文件,其中只包含JavaScript使用的翻譯。所以它不應該加載所有的java腳本的翻譯。 我試過並把文件放在'public/javascripts/en.js中,但它沒有解決。任何想法如何我可以得到這個實施。使用Rails 3.2.12和國際化,JS 2.1.2 這樣:我要爲每郎兩個文件: 配置/ en.yml完整的應用程序 javascipt的/ en.js爲javascipt的 – Kashif

+0

謝謝你們 - 我找到解決方案。我需要添加 app/asserts/javascipt/i18n/translation.js 這一個文件translation.js將具有所有與js相關的翻譯。此文件將具有不同的部分,如 國際化域名。譯文= { \t EN:{ \t VALID_EMAIL: 「有效的電子郵件地址是必需的」, \t company_name_required: 「必須提供公司名稱」 \t} FN:{ \t VALID_EMAIL: 「一些法國」, \t company_name_required :「sss french」 \t} } – Kashif

0

沒有辦法做到這一點!

translations.js包含所有鍵的原因是Rails無法預先知道您想在js中使用哪些短語。

我自己做的一個破解是我沒有手動/在資產編譯時生成translations.js,而是我手動創建了它,只包含我需要的東西。這種方法當然有缺陷 - 如果您開始使用其他翻譯,您需要再次手動添加它們。

另一種可能性可能是遵循Configuration section和:

  • 把JavaScript中使用的所有transations一個關鍵
  • 配置國際化-JS下,因此出口僅這一個關鍵