
module.exports = {
  t(key){
    if(this.locales[key]){
      if(this.lang){
        if(this.locales[key][this.lang]){
          return this.locales[key][this.lang];// key for current language
        }else{this.log(`Key "${key}" does not exists for language ${this.lang}`);}
      }else if(this.locales[key][this.fallback]){
        return this.locales[key][this.fallback];// key for fallback language
      }else{this.log(`Key "${key}" does not exists for fallback language ${this.fallback}`);}
    }else{this.log(`Key "${key}" does not exists.`);}
    return key;// if nothing else retrn key it self
  },
  setLang(l){
    this.lang = l
  },
  log(msg){
    console.warn(`i18n : ${msg}`);
  },
  fallback:'en',
  lang: null,
  locales:{
    'Parts':{
      'en':'Parts',
      'fr':'Parties',
      'bra':'Peças',
      'lat':'Pars'
    },
    'Mode':{
      'en':'Mode',
      'fr':'Mode',
      'bra':'Modo',
      'lat':'Modus'
    },
    'Language':{
      'en':'Language',
      'fr':'Langue',
      'bra':'Língua',
      'lat':'Lingua'
    },
    'Text':{
      'en':'Text',
      'fr':'Texte',
      'bra':'Texto',
      'lat':'Illud'
    },
    'Connections':{
      'en':'Connections',
      'fr':'Connections',
      'bra':'Conexões',
      'lat':'Hospites'
    },
    'Filters':{
      'en':'Filters',
      'fr':'Filtres',
      'bra':'Filtros',
      'lat':'Filtra'
    },
    'definition':{
      'en':'definition',
      'fr':'definition',
      'bra':'definições',
      'lat':'definitione'
    },
    'def.':{
      'en':'def.',
      'fr':'def.',
      'bra':'def.',
      'lat':'def.'
    },
    'explication':{
      'en':'explanation',
      'fr':'explication',
      'bra':'explicaçaõ',
      'lat':'explicatio'
    },
    'axiom':{
      'en':'axiom',
      'fr':'axiom',
      'bra':'axioma',
      'lat':'axiomata'
    },
    'ax.':{
      'en':'ax.',
      'fr':'ax.',
      'bra':'ax.',
      'lat':'ax.'
    },
    'proposition':{
      'en':'proposition',
      'fr':'proposition',
      'bra':'proposiçaõ',
      'lat':'propositio'
    },
    'prop.':{
      'en':'prop.',
      'fr':'prop.',
      'bra':'prop.',
      'lat':'prop.'
    },
    'demonstration':{
      'en':'demonstration',
      'fr':'demonstration',
      'bra':'demonstraçaõ',
      'lat':'demonstratio'
    },
    'demo.':{
      'en':'demo.',
      'fr':'demo.',
      'bra':'demo.',
      'lat':'demo.'
    },
    'corollaire':{
      'en':'corollary',
      'fr':'corollaire',
      'bra':'corolário',
      'lat':'corollarium'
    },
    'cor.':{
      'en':'cor.',
      'fr':'cor.',
      'bra':'cor.',
      'lat':'cor.'
    },
    'prop-axiom':{
      'en':'prop-axiom',
      'fr':'prop-axiom',
      'bra':'prop-axioma',
      'lat':'prop-axiomata'
    },
    'scolie':{
      'en':'scholium',
      'fr':'scolie',
      'bra':'escólio',
      'lat':'scholium'
    },
    'scol.':{
      'en':'schol.',
      'fr':'scol.',
      'bra':'escól.',
      'lat':'schol.'
    },
    'appendice':{
      'en':'appendix',
      'fr':'appendice',
      'bra':'apêndice',
      'lat':'appendix'
    },
    'preface':{
      'en':'preface',
      'fr':'preface',
      'bra':'prefácio',
      'lat':'preface'
    },
    'corollaire-demo':{
      'en':'corollary-demo',
      'fr':'corollaire-demo',
      'bra':'corolário-demo',
      'lat':'corollarium-demo'
    },
    'lemme':{
      'en':'lemma',
      'fr':'lemme',
      'bra':'lema',
      'lat':'lemma'
    },
    'lem.':{
      'en':'lem.',
      'fr':'lem.',
      'bra':'lem.',
      'lat':'lem.'
    },
    'lemme-demonstration':{
      'en':'lemma-demo',
      'fr':'lemme-demo',
      'bra':'lema-demo',
      'lat':'lemma-demo'
    },
    'lemme-corrollaire':{
      'en':'lemma-corollary',
      'fr':'lemme-corollaire',
      'bra':'lema-corolário',
      'lat':'lemma-corollarium'
    },
    'lemme-scolie':{
      'en':'lemma-scholium',
      'fr':'lemme-scolie',
      'bra':'lema-escólio',
      'lat':'lemma-scholium'
    },
    'postulat':{
      'en':'postulat',
      'fr':'postulat',
      'bra':'postulado',
      'lat':'postulata'
    },
    'post.':{
      'en':'post.',
      'fr':'post.',
      'bra':'post.',
      'lat':'post.'
    },
    'def-affect':{
      'en':'definitions of the emotions',
      'fr':'définitions des affections',
      'bra':'definições dos afetos',
      'lat':'affectuum definitiones'
    },
    'def-gen-affect':{
      'en':'general definition of the emotions',
      'fr':'définition générale des affections',
      'bra':'definição geral dos afetos',
      'lat':'affectum generalis definitio'
    },
    'chapitre':{
      'en':'chapter',
      'fr':'chapitre',
      'bra':'capítulo',
      'lat':'caput'
    },
    'Ethica, work without obstacle':{
      'en':'Ethica, work without obstacle',
      'fr':'Ethica, du travail sans obstacle'
    }
  }
}
