2013-04-09 17 views
3

我將i18n支持添加到相對較新的應用中。這是一款模塊化應用程序。就目前而言,我們只會有英文(也可能是爲了測試目的而拉丁文拉丁文),但我想確保我們不會在腳下自我射擊。我有兩種想法來組織翻譯文件:爲模塊化應用組織Javascript i18n文件

  1. 一個大的全局翻​​譯列表,包含任何模塊中使用的每個字符串。這會對全局文件造成一定程度的爭用。這個文件會更大,我想知道下載的時間。

  2. 每個模塊都有自己的翻譯文件。這會對多個模塊中出現的字符串造成一定程度的重複。如果我們將這些文件發送給他們進行翻譯,我們將不得不整合這些文件。

我們使用Javascript,加上Backbone.js,Require.js,Aura等,我們正在計劃使用i18next。

哪種方式最好組織文件?還是有其他一些我失蹤的方式。

回答

3

通過爲每個模塊創建一個文件,您將重複自己。如果在十個模塊中使用該字符串,則必須翻譯「發生錯誤」十次。我的建議是聚集所有的翻譯在一個大的JSON文件的結構是這樣的:

{ 
    "common": { 
    "welcome": "welcome", 
    ... 
    }, 
    "module1": { 
    "loaded": "module1 is loaded" 
    .... 
    } 
} 

你將有包裹在一個對象它自己的目標和共同的字符串模塊的特定翻譯。

備註:您可以從John Resig的blog post瞭解有關i18n的JavaScript。

0

在這個問題上遇到了&以爲我想給出一個替代的看法。

背景

創建一個龐大的翻譯文件是確定的,當你只是:

  1. 開發企業級網站/系統,以及;
  2. 在一個大團隊中工作。

我一直在做一個Angular應用程序一年多,需要一個大型的開發團隊,而且是一個相當大規模的系統。

當你的系統變得龐大和你有一個大的團隊和你在一起,一個語言文件不是最好的選擇,因爲:

  1. 根據你的開發人員的技能&時間框架,在一個已經很大的語言文件中添加新的字符串會產生懶惰,並且''的心態哦,我將把它放在這裏,然後重構'。這會導致不必要的重複,如果使用相同的思維方式來嘗試找到已存在的項目。
  2. 在大型文件和大型團隊註釋中,如果兩個人正在處理相同的文件併發生衝突,衝突解決可能會導致錯誤並浪費時間。
  3. 如果您的框架/技術支持,可以延遲加載較小的文件。爲什麼要爲可能不使用的子系統加載語言文件?是

摘要&根據我的經驗,建議

我的建議如下:

做什麼是最適合你的項目,它的時間內,它的需求。從長遠來看,如果你在一個大系統上工作,爲了節省時間,那麼從分開的文件開始。從一開始就制定標準並堅持下去以節省時間。