code: function process (oObject, oTranslator, iCurrentLevel, iMaxLevel, oParams) {
  		if (iCurrentLevel === iMaxLevel) {
  			return;
  		}
  
  		if (Array.isArray(oObject)) {
  			oObject.forEach(function (vItem, iIndex, aArray) {
  				if (typeof vItem === "object") {
  					process(vItem, oTranslator, iCurrentLevel + 1, iMaxLevel, oParams);
  				} else if (isProcessable(vItem, oObject, oParams)) {
  					aArray[iIndex] = processPlaceholder(vItem, oParams);
  				} else if (isTranslatable(vItem) && oTranslator) {
  					aArray[iIndex] = oTranslator.getText(vItem.substring(2, vItem.length - 2));
  				}
  			}, this);
  		} else {
  			for (var sProp in oObject) {
  				if (typeof oObject[sProp] === "object") {
  					process(oObject[sProp], oTranslator, iCurrentLevel + 1, iMaxLevel, oParams);
  				}  else if (isProcessable(oObject[sProp], oObject, oParams)) {
  					oObject[sProp] = processPlaceholder(oObject[sProp], oParams);
  				} else if (isTranslatable(oObject[sProp]) && oTranslator) {
  					oObject[sProp] = oTranslator.getText(oObject[sProp].substring(2, oObject[sProp].length - 2));
  				}
  			}
  		}
  	}
docs: Process a manifest.
  
  @private
  @param {Object} oObject The Manifest to process.
  @param {Object} oTranslator The translator.
  @param {number} iCurrentLevel The current level of recursion.
  @param {number} iMaxLevel The maximum level of recursion.
  @param {Object} oParams The parameters to be replaced in the manifest.