{"version":3,"sources":["vendor/andywer/js-localization/resources/js/localization.js"],"names":["applyReplacements","message","replacements","replacementName","replacement","String","replace","RegExp","toUpperCase","charAt","substr","locale","messages","Lang","get","messageKey","forceLocale","uselocale","prop","result","indexOf","obj","hasOwnProperty","isEmpty","has","choice","count","messageSplitted","split","setLocale","localeId","Error","addMessages","_messages","key","this","trans","transChoice"],"mappings":"CAAA,WAgBA,SAAAA,EAAAC,EAAAC,GACA,IAAA,IAAAC,KAAAD,EAAA,CACA,IAAAE,EAAAC,OAAAH,EAAAC,IAaAF,GALAA,GALAA,EAAAA,EAAAK,QACA,IAAAC,OAAA,IAAAJ,EAAA,KACAC,IAGAE,QACA,IAAAC,OAAA,IAAAJ,EAAAK,cAAA,KACAJ,EAAAI,gBAGAF,QACA,IAAAC,OAAA,KAAAJ,EAAAM,OAAA,GAAAD,cAAAL,EAAAO,OAAA,IAAA,KACAN,EAAAK,OAAA,GAAAD,cAAAJ,EAAAM,OAAA,IAIA,OAAAT,EApCA,IAAAU,EACAC,EAAA,GAuDAC,EAAA,CAWAC,IAAA,SAAAC,EAAAb,EAAAc,GACA,IAAAC,EACAD,EACAA,EAFAL,EAIA,QAAA,IAAAC,EAAAK,GAAAF,GAAA,CAEA,IACAG,EADAC,EAAA,GACA,IAAAD,KAAAN,EAAAK,IACA,EAAAC,EAAAE,QAAAL,EAAA,OACAI,EAAAD,GAAAN,EAAAK,GAAAC,IAGA,OAzCA,SAAAG,GACA,IAAA,IAAAH,KAAAG,EACA,GAAAA,EAAAC,eAAAJ,GACA,OAAA,EAGA,OAAA,EAmCAK,CAAAJ,GAIAJ,EAHAI,EAMAlB,EAAAW,EAAAK,GAAAF,GAMA,OAJAb,IACAD,EAAAD,EAAAC,EAAAC,IAGAD,GAWAuB,IAAA,SAAAT,GACA,YAAA,IAAAH,EAAAD,GAAAI,IAiBAU,OAAA,SAAAV,EAAAW,EAAAxB,GACA,QAAA,IAAAU,EAAAD,GAAAI,GACA,OAAAA,EAGA,IACAY,EAAAf,EAAAD,GAAAI,GAAAa,MAAA,KAGA3B,EADA,GAAAyB,EACAC,EAAA,GAEAA,EAAA,GAOA,OAJAzB,IACAD,EAAAD,EAAAC,EAAAC,IAGAD,GAYA4B,UAAA,SAAAC,GAGA,IAAAlB,EAFAD,EAAAmB,GAGA,MAAA,IAAAC,MACA,oCAAAD,EAAA,yDAaAnB,OAAA,WACA,OAAAA,GAWAqB,YAAA,SAAAC,GACA,IAAA,IAAAC,KAAAD,EACArB,EAAAsB,GAAAD,EAAAC,KAQAC,KAAAtB,KAAAA,EACAsB,KAAAC,MAAAvB,EAAAC,IACAqB,KAAAE,YAAAxB,EAAAY,OAnMA","file":"lang.min.js","sourcesContent":["(function() {\n var locale;\n var messages = {};\n\n\n /* Utility functions: */\n\n /**\n * Replace variables used in the message by appropriate values.\n *\n * @method applyReplacements\n * @static\n * @param {String} message Input message.\n * @param {Object} replacements Associative array: { variableName: \"replacement\", ... }\n * @return {String} The input message with all replacements applied.\n */\n var applyReplacements = function (message, replacements) {\n for (var replacementName in replacements) {\n var replacement = String(replacements[replacementName]);\n\n // 'welcome' => 'Welcome, :name' => 'Welcome, dayle'\n message = message.replace(\n new RegExp(':' + replacementName, 'g'),\n replacement\n );\n // 'welcome' => 'Welcome, :NAME' => 'Welcome, DAYLE'\n message = message.replace(\n new RegExp(':' + replacementName.toUpperCase(), 'g'),\n replacement.toUpperCase()\n );\n // 'welcome' => 'Welcome, :Name' => 'Welcome, Dayle'\n message = message.replace(\n new RegExp(':' + (replacementName.charAt(0).toUpperCase() + replacementName.substr(1)), 'g'),\n replacement.charAt(0).toUpperCase() + replacement.substr(1)\n );\n }\n\n return message;\n };\n\n var isEmpty = function (obj) {\n for(var prop in obj) {\n if(obj.hasOwnProperty(prop))\n return false;\n }\n\n return true;\n };\n\n\n /* Lang: */\n\n /**\n * Lang class. Works similar to the Laravel Lang object.\n * @class Lang\n */\n\n var Lang = {\n\n /**\n * Translate a message.\n *\n * @method get\n * @static\n * @param {String} messageKey The message key (message identifier).\n * @param {Object} [replacements] Associative array: { variableName: \"replacement\", ... }\n * @return {String} Translated message.\n */\n get : function(messageKey, replacements, forceLocale) {\n var uselocale = locale;\n if (forceLocale) {\n uselocale = forceLocale;\n }\n if (typeof messages[uselocale][messageKey] == \"undefined\") {\n /* like Lang::get(), if messageKey is the name of a lang file, return it as an array */\n var result = {};\n for (var prop in messages[uselocale]) {\n if (prop.indexOf(messageKey + '.') > -1) {\n result[prop] = messages[uselocale][prop];\n }\n };\n if (!isEmpty(result)) {\n return result;\n }\n /* if there is nothing to return, return messageKey */\n return messageKey;\n }\n\n var message = messages[uselocale][messageKey];\n\n if (replacements) {\n message = applyReplacements(message, replacements);\n }\n\n return message;\n },\n\n /**\n * Returns whether the given message is defined or not.\n *\n * @method has\n * @static\n * @param {String} messageKey Message key.\n * @return {Boolean} True if the given message exists.\n */\n has : function(messageKey) {\n return typeof messages[locale][messageKey] != \"undefined\";\n },\n\n /**\n * Choose one of multiple message versions, based on\n * pluralization rules. Only English pluralization\n * supported for now. If `count` is one then the first\n * version of the message is retuned, otherwise the\n * second version.\n *\n * @method choice\n * @static\n * @param {String} messageKey Message key.\n * @param {Integer} count Subject count for pluralization.\n * @param {Object} [replacements] Associative array: { variableName: \"replacement\", ... }\n * @return {String} Translated message.\n */\n choice : function(messageKey, count, replacements) {\n if (typeof messages[locale][messageKey] == \"undefined\") {\n return messageKey;\n }\n\n var message;\n var messageSplitted = messages[locale][messageKey].split('|');\n\n if (count == 1) {\n message = messageSplitted[0];\n } else {\n message = messageSplitted[1];\n }\n\n if (replacements) {\n message = applyReplacements(message, replacements);\n }\n\n return message;\n },\n\n /**\n * Sets the current locale. Normally only used once\n * during initialization. The value comes from the backend.\n *\n * @method setLocale\n * @static\n * @param {String} localeId The locale returned by Laravel's Lang::locale().\n * @throws {Error} An error is thrown if messages[localeId] is not defined.\n */\n setLocale : function(localeId) {\n locale = localeId;\n\n if (!messages[localeId]) {\n throw new Error(\n 'No messages defined for locale: \"' + localeId + '\". ' +\n 'Did you forget to enable it in the configuration?'\n );\n }\n },\n\n /**\n * Returns the current locale.\n *\n * @method locale\n * @static\n * @return {String} The current locale.\n */\n locale : function() {\n return locale;\n },\n\n /**\n * Used to initialize the message catalog. You may use this\n * method to add further messages on runtime if necessary.\n *\n * @method addMessages\n * @static\n * @param {Object} _messages An associative array: { messageKey: \"message\", ... }\n */\n addMessages : function(_messages) {\n for (var key in _messages) {\n messages[key] = _messages[key];\n }\n }\n };\n\n\n /* Export: */\n\n this.Lang = Lang;\n this.trans = Lang.get;\n this.transChoice = Lang.choice;\n})();\n"]}