(function() {
  'use strict';

  /**
   * I18n
   *
   * This module stores and serves translated strings, according to the users language settings.
   *
   * Translations are stored in /messages/frontend/*.msg.
   *
   * To make additions to any of these files accessible to JavaScrip Utilities
   * you need to add them to the respective *.msg file and to the list of FrontendMessages
   * in /src/Utils/Frontend/I18n.hs.
   *
   */
  window.I18n = (function() {

    var translations = {};

    function addTranslation(id, translation) {
      translations[id] = translation;
    }

    function addManyTranslations(manyTranslations) {
      Object.keys(manyTranslations).forEach(function(key) {
        addTranslation(key, manyTranslations[key]);
      });
    }

    function getTranslation(id) {
      if (!translations[id]) {
        throw new Error('I18N Error: Translation missing for »' + id + '«!');
      }
      return translations[id];
    }

    // public API
    return {
      add: addTranslation,
      addMany: addManyTranslations,
      get: getTranslation,
    };
  })();
})();
