2016-01-05 35 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