表記法 (「main:message:new」など) を、参照されるオブジェクト プロパティ (resource[main][message][new]) に変換する必要があります。
var notation = 'main:message:new';
var ressource = {
message: { new: 'something' }
};
var splitKeys = function(keys, object) {
var keys, pointer;
pointer = object;
keys = keys.split(':');
for (i = 0; i < keys.length; i++) {
// here is the error
if (pointer[keys[i]] === undefined) break;
pointer = pointer[keys[i]];
}
return pointer;
};
console.log(splitKeys(notation, ressource));
ご覧のとおり、エラー処理に問題がありました。具体的なリソースと一致しないリソース表記がある場合は、何も返しません。残念ながら、「未定義のプロパティを読み取れません」というエラーが常にスローされます...