Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
m1k1o
GitHub Repository: m1k1o/neko
Path: blob/master/client/src/plugins/i18n.ts
1301 views
1
import Vue from 'vue'
2
import VueI18n from 'vue-i18n'
3
import { messages } from '~/locale'
4
import { get } from '~/utils/localstorage'
5
6
Vue.use(VueI18n)
7
8
const fallbackLocale = 'en'
9
10
function detectBrowserLanguage(): string {
11
const browserLang = navigator.language.toLowerCase()
12
13
const supportedLangs = Object.keys(messages)
14
if (supportedLangs.includes(browserLang)) {
15
return browserLang
16
}
17
18
const baseLang = browserLang.split('-')[0]
19
const matchingLang = supportedLangs.find((lang) => lang.startsWith(baseLang))
20
if (matchingLang) {
21
return matchingLang
22
}
23
24
return fallbackLocale
25
}
26
27
export const i18n = new VueI18n({
28
locale: get<string>('lang', detectBrowserLanguage()),
29
fallbackLocale,
30
messages,
31
})
32
33