function DateTranslator(lang) {
  lang = lang || 'en';
  var months = new Months(lang);
  var days = new Days(lang);

  function Months(lang) {
    var en = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
    var fr = new Array('Janvier','F&eacute;vrier','Mars','Avril','Mai','Juin','Juillet','Ao&ucirc;t','Septembre','Octobre','Novembre','D&eacute;cembre');
    var values = (lang == 'fr') ? fr : en;
    this.get = function(date) { return values[date.getMonth()]; }
  }
  function Days(lang) {
    var en = new Array('Sunday', 'Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
    var fr = new Array('Dimanche', 'Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi');
    var values = (lang == 'fr') ? fr : en;
    this.get = function(date) { return values[date.getDay()]; }
  }
  this.displayLong = function(dateStr) {
    var date = new Date(dateStr);
    if (isNaN(date)) return '';
    date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours()+1, date.getMinutes(), date.getSeconds());
    if (lang == 'fr') {
      dateStr = days.get(date) + ', ' + date.getDate() + ' ' + months.get(date).toLowerCase() + ' ' + date.getFullYear();
    } else {
      dateStr = days.get(date) + ', ' + months.get(date) + ' ' + date.getDate() + ', ' + date.getFullYear();
    }
    return dateStr;
  }
  this.displayShort = function(dateStr) {
    return dateStr;
  }    
  this.displayMonth = function(dateStr) {
    var date = new Date(dateStr);
    return months.get(date);
  }    
}
