Skip to content
Snippets Groups Projects
i18n.js 1.38 KiB
import Vue from 'vue';
import VueI18n from 'vue-i18n';

import en from '@/assets/locales/en.json';
import fr from '@/assets/locales/fr.json';

// const defaultImpl = VueI18n.prototype.getChoiceIndex;

// VueI18n.prototype.getChoiceIndex = function(choice, choicesLength) {
//   // this === VueI18n instance, so the locale property also exists here
//   if (this.locale !== 'fr') {
//     // proceed to the default implementation
//     return defaultImpl.apply(this, arguments)
//   }

//   if (choice === 0) {
//     return 0;
//   }

//   const teen = choice > 10 && choice < 20;
//   const endsWithOne = choice % 10 === 1;

//   if (!teen && endsWithOne) {
//     return 1;
//   }

//   if (!teen && choice % 10 >= 2 && choice % 10 <= 4) {
//     return 2;
//   }

//   return (choicesLength < 4) ? 2 : 3;
// }

Vue.use(VueI18n);

const dateTimeFormats = {
  'en': {
    short: {
      year: 'numeric',
      month: 'short',
      day: 'numeric'
    }
  },
  'fr': {
    short: {
      year: 'numeric',
      month: 'numeric',
      day: 'numeric'
    }
  }
};

const numberFormats = {
  'fr': {
    currency: {
      style: 'currency', currency: 'EUR'
    }
  }
};

const i18n = new VueI18n({
  locale: process.env.VUE_APP_I18N_DEFAULT_LOCALE || 'fr',
  fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || 'fr',
  messages: { en, fr },
  dateTimeFormats,
  numberFormats
});

export default i18n;