define([

'jquery',
'require'

], function ($, require) {

function Translation (dict) {
  this.dict = dict || {};
}

Translation.prototype.all = function () {
  return this.dict;
};

Translation.prototype.get = function (key) {
  return this.dict[key];
};

Translation.prototype.extend = function (translation) {
  this.dict = $.extend({}, translation.all(), this.dict);
};

// Static functions

Translation._cache = {};

Translation.loadPath = function (path) {
  if (!(path in Translation._cache)) {
    var translations = require(path);

    Translation._cache[path] = translations;
  }

  return new Translation(Translation._cache[path]);
};

return Translation;

});