var constants = require("./constants")(); /** * Encapsulates methods which return a label in a specific language for a preferred language. */ module.exports = (function (){ var languageTools = {}; languageTools.textInLanguage = function ( textObject, preferredLanguage ){ if ( typeof textObject === "undefined" ) { return undefined; } if ( typeof textObject === "string" ) { return textObject; } if ( preferredLanguage && textObject.hasOwnProperty(preferredLanguage) ) { return textObject[preferredLanguage]; } var textForLanguage = searchLanguage(textObject, "en"); if ( textForLanguage ) { return textForLanguage; } textForLanguage = searchLanguage(textObject, constants.LANG_UNDEFINED); if ( textForLanguage ) { return textForLanguage; } return textObject[constants.LANG_IRIBASED]; }; function searchLanguage( textObject, preferredLanguage ){ for ( var language in textObject ) { if ( language === preferredLanguage && textObject.hasOwnProperty(language) ) { return textObject[language]; } } } return function (){ /* Use a function here to keep a consistent style like webvowl.path.to.module() * despite having just a single languageTools object. */ return languageTools; }; })();