2012-10-22 48 views
2

是否有一些gem或工具可用於解析我的代碼並將i18n鍵提取到yml文件?從rails項目中提取I18n轉換鍵項目

所以如果我在代碼:

<%= t("homepage.header", default: "Cool website") %> 

這將添加到YML文件

homepage: 
    header: "Cool website" 

的getText可以做到這一點,但我的項目,現在我們使用的是默認的軌道設置。當我需要新的翻譯密鑰時,它讓我感到很困惑,因爲我必須手動更新yml文件。

回答

1

我還沒有聽說過Ruby on Rails這樣的工具,但我確定它存在。在另一方面,你可以自己創建一個 - 這是可以做到使用相對簡單的正則表達式,如:

\s+t\(\"(?<key>.*?)\"\s*,\s*default:\s*\"(?<value>.*?)\"\) 

所有你需要做的話,訪問指定的組(在上面的例子中鍵和值)並將其寫入YAML文件。根據您希望用來捕獲此正則表達式的編程語言,您可能希望在正則表達式前添加(?s)或(?-s),以允許將行結束視爲空白(即多行聲明) 。

+0

謝謝。我會試一試。 – egze

2

如果您使用default:到處則有可能爲你工作的解決方案:在

  • 團長Locale並創建一個帳戶和一個新的項目
  • 搭建localeapp寶石在你的rails項目,使用API​​密鑰等進行配置...
  • 默認情況下,當您使用類似於您的示例的翻譯訪問頁面時,它會將翻譯發送到語言環境服務器,並將其同步回到你的YAML。
  • 另外,如果你有很好的測試覆蓋率,你可以配置localeapp在測試環境中運行並運行你的測試套件。

不理想,也不是Locale的主要目的(這是爲了避免手工編輯YAML文件),但它應該在這種情況下工作。

完全披露:我共同創立了Locale。

+0

感謝您的回答,但我不想找比可以管理它的所有服務。 – egze

2

對於任何來自Google的人來說,現在都有一種適用於所有這類東西的寶石。

https://github.com/glebm/i18n-tasks

+0

'default'屬性是i18n-tasks不包括的一件事。否則它是相當不錯的。 –