API Docs for: 0.2.9
Show:

File: src\localization\index.js

define(['lyria/language', 'lyria/template/string', 'lyria/mixin/language'], function(Language, templateString, langMixin) {

  var Localization = (function() {
    var Localization = function(data) {
      if (data == null) {
        data = {};
      }
      
      this.data = data;

      var langValue = Language.language;

      langMixin('language', 'change')(this, langValue, this);
    };

    /**
     * Gets all localizable elements from a localization 
     */
    Localization.elements = function(localeData, localeLang, fallbackLang) {
      if (fallbackLang == null) {
        fallbackLang = 'en';
      }
      
      return function(name, parameter) {
        if (!localeData || Object.keys(localeData).length === 0) {
          return '[[No language data found]]';          
        }
        
        if (!localeData[localeLang] || Object.keys(localeData[localeLang]).length === 0) {
          localeLang = fallbackLang;
        }
        
        if (localeData[localeLang]) {
          
          if (localeData[localeLang][name] == null) {
            return '[[Missing localization for ' + name + ']]';
          }

          if ( typeof localeData[localeLang][name] === 'string') {
            return templateString.process(localeData[localeLang][name], parameter);
          } else {
            return {
              plural: function(n) {
                if (localeData[localeLang][name][n]) {
                  return templateString.process(localeData[localeLang][name][n], parameter);
                } else {
                  return templateString.process(localeData[localeLang][name]['n'], parameter);
                }
              }
            };
          }
        } else {
          return '[[No language definition found for ' + localeLang + ']]';
        }
      };
    };

    /**
     * Check if name does exist in the localization
     * 
     * @param {String} name
     */
    Localization.prototype.exists = function(name) {
      return !!(this.data && this.data[this.language] && this.data[this.language][name]);
    };

    /**
     * Shorthand function to use translation 
     */
    Localization.prototype.t = function() {
      return Localization.elements(this.data, this.language).apply(this, arguments);
    };

    return Localization;
  })();

  return Localization;
});