deemixer/src/plugins/i18n.js

70 lines
1.2 KiB
JavaScript
Raw Normal View History

import Vue from 'vue'
import VueI18n from 'vue-i18n'
// Languages
import it from '@/lang/it'
import en from '@/lang/en'
2020-07-29 12:53:10 +00:00
import es from '@/lang/es'
2020-07-29 14:29:25 +00:00
import de from '@/lang/de'
2020-07-29 14:54:41 +00:00
import fr from '@/lang/fr'
2020-07-29 15:17:41 +00:00
import id from '@/lang/id'
2020-07-29 15:42:28 +00:00
import pt from '@/lang/pt-pt'
import ptBr from '@/lang/pt-br'
import ru from '@/lang/ru'
import tr from '@/lang/tr'
Vue.use(VueI18n)
const DEFAULT_LANG = 'en'
document.querySelector('html').setAttribute('lang', DEFAULT_LANG)
const locales = {
it,
2020-07-29 12:53:10 +00:00
en,
2020-07-29 14:29:25 +00:00
es,
2020-07-29 14:54:41 +00:00
de,
2020-07-29 15:17:41 +00:00
fr,
2020-07-29 15:42:28 +00:00
id,
pt,
ptBr,
ru,
tr
}
const i18n = new VueI18n({
locale: DEFAULT_LANG,
fallbackLocale: DEFAULT_LANG,
2020-07-29 14:29:25 +00:00
messages: locales,
pluralizationRules: {
/**
* @param choice {number} a choice index given by the input to $tc: `$tc('path.to.rule', choiceIndex)`
* @param choicesLength {number} an overall amount of available choices
* @returns a final choice index to select plural word by
*/
ru: function(choice, choicesLength) {
if (choice === 0) {
return 0
}
2020-07-29 14:29:25 +00:00
var n = Math.abs(choice) % 100
var n1 = n % 10
if (n > 10 && n < 20) {
return 3
}
if (n1 > 1 && n1 < 5) {
return 2
}
if (n1 == 1) {
return 1
}
return 3
}
}
})
export default i18n