2016-01-05 50 views
1

我有一個使用節點上的i18next的頁面。使用i18next構建菜單

在翻譯文件,也有各種各樣的東西(這是像小幫手片段數據庫)

翻譯(杜)現在我想建立一個頁面,用戶可單獨查看它們。

想法

我要訪問的加載xx-translation.json並作出(下拉?)包含了所有的菜單條目在一個命名空間

{ 
    "category": { 
     "subcategory": { // i want to get ["bla", "blu", "bli"] as result 
      "bla" : "ble", 
      "blu" : "blo", 
      "bli" : "bly" 
     } 
    } 
} 

我在考慮一個簡單的循環,像

var amountOfEntries = translationJSON.category.subcategory.length; 
for (var i = 0; i < amountOfEntries; i++) { 
    $('#menu'). //append that entry somehow 
} 

tldr問題

有沒有辦法訪問我的「正常」js內的translation.json並計算條目數量? 和 我怎樣才能建立一個片段與條目的菜單? (這是獎金,我想我能做到這一點。主要的問題是第一位的)

感謝

+0

我剛剛發佈了一個問題的答案,但我想我可能誤解了你的問題。你是否說你的節點應用程序中的translation.json文件,但你想從你的客戶端JavaScript訪問它? – Ben

+0

翻譯文件是在客戶端加載的ajax('.i18n.init({// etc,resGetPath:'/locales/__lng__-__ns__.json'),// etc)}'。有對GET請求的JSON文件,我可以在devtools中看到,我可以切換它們(沒有重新加載=它們必須在瀏覽器中的某處)。現在我想知道如果(如果)我可以從(也是客戶端)browser.js訪問這些文件來計算條目 – user3787706

+0

更新我的答案。我不是超級熟悉i18next,所以讓我知道,如果這不是你在 – Ben

回答

1

退房lodash.js一些好的集合實用功能。你可以用類似的方法遍歷對象:

_.each(subcategory, function(val, key){ 
    $(".menu").append("<li>" + key + ": " + val + "</li>"); 
}); 

對您有幫助嗎?

UPDATE

澄清上述評論你的問題後,我以爲你在找什麼或者是getResource()getResourceBundle()

+0

看起來很有前途後,我會看看它是否有效:) – user3787706

+0

它似乎是正確的方向。出現了一些問題(v1.10而不是2.x),但我在舊文檔中找到了相同的功能,現在我設法對這些條目進行計數。要試圖彎曲成我所需要的:)謝謝 – user3787706

+0

我正在與一個問題鬥爭......也許你有一個想法?在i18next的init-callback中, ,'i18n.getResourceBundle('en')'工作並檢索我想要的東西。 但如果我移動完全相同的功能到另一個文件,它不會。 'var lng = i18n.lng()'給出了正確的語言,但'i18n.getResourceBundle(lng);'返回一個空對象(如果我用''en''調用它)也是如此。我無法弄清楚爲什麼....:/ – user3787706