feat: add i18n capabilities
This commit is contained in:
parent
48da61765a
commit
f074720d0f
|
@ -10,8 +10,9 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"core-js": "^2.6.5",
|
"core-js": "^2.6.5",
|
||||||
"vanilla-tilt": "^1.7.2",
|
"vanilla-tilt": "^1.7.2",
|
||||||
"vue": "^2.6.10",
|
"vue": "^2.6.14",
|
||||||
"vue-class-component": "^7.0.2",
|
"vue-class-component": "^7.0.2",
|
||||||
|
"vue-i18n": "8.27.1",
|
||||||
"vue-property-decorator": "^8.1.0"
|
"vue-property-decorator": "^8.1.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
@ -20,7 +21,7 @@
|
||||||
"@vue/cli-service": "^3.7.0",
|
"@vue/cli-service": "^3.7.0",
|
||||||
"sass": "^1.18.0",
|
"sass": "^1.18.0",
|
||||||
"sass-loader": "^7.1.0",
|
"sass-loader": "^7.1.0",
|
||||||
"typescript": "^3.4.3",
|
"typescript": "^4.8.4",
|
||||||
"vue-template-compiler": "^2.5.21"
|
"vue-template-compiler": "^2.5.21"
|
||||||
},
|
},
|
||||||
"postcss": {
|
"postcss": {
|
||||||
|
|
|
@ -12,6 +12,7 @@ import { tID } from '@/model/skills';
|
||||||
import Home from './components/Home.vue';
|
import Home from './components/Home.vue';
|
||||||
import Timeline from './components/Timeline.vue';
|
import Timeline from './components/Timeline.vue';
|
||||||
import SkillPicker from './components/SkillPicker.vue';
|
import SkillPicker from './components/SkillPicker.vue';
|
||||||
|
import { Locales } from './locales';
|
||||||
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
@ -48,6 +49,13 @@ export default class App extends Vue {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
picker.select(tID.Vue, false);
|
picker.select(tID.Vue, false);
|
||||||
|
|
||||||
|
// change app language
|
||||||
|
if( navigator.language.indexOf('fr') > -1 ){
|
||||||
|
this.$i18n.locale = Locales.FR;
|
||||||
|
} else {
|
||||||
|
this.$i18n.locale = Locales.EN;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
<h1>Adrien<br>Marquès</h1>
|
<h1>Adrien<br>Marquès</h1>
|
||||||
<br>
|
<br>
|
||||||
<br>
|
<br>
|
||||||
<h2>FREELANCE DEVELOPER</h2>
|
<h2>{{ $t('home.title') }}</h2>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<div class='separator'></div>
|
<div class='separator'></div>
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"home.title": "FREELANCE DEVELOPER"
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"home.title": "DÉVELOPPEUR FREELANCE"
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
export enum Locales {
|
||||||
|
EN = 'en-US',
|
||||||
|
FR = 'fr-FR',
|
||||||
|
}
|
||||||
|
|
||||||
|
export const LOCALES = [
|
||||||
|
{ value: Locales.EN, caption: 'English' },
|
||||||
|
{ value: Locales.FR, caption: 'Français' }
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
import en from './en.json';
|
||||||
|
import fr from './fr.json';
|
||||||
|
|
||||||
|
export const messages = {
|
||||||
|
[Locales.EN]: en,
|
||||||
|
[Locales.FR]: fr
|
||||||
|
};
|
||||||
|
|
||||||
|
export const defaultLocale = Locales.EN;
|
11
src/main.ts
11
src/main.ts
|
@ -1,8 +1,19 @@
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import App from './App.vue';
|
import App from './App.vue';
|
||||||
|
import VueI18n from 'vue-i18n';
|
||||||
|
import { messages, defaultLocale } from '@/locales';
|
||||||
|
|
||||||
Vue.config.productionTip = false;
|
Vue.config.productionTip = false;
|
||||||
|
|
||||||
|
Vue.use(VueI18n);
|
||||||
|
|
||||||
|
const i18n = new VueI18n({
|
||||||
|
messages,
|
||||||
|
locale: defaultLocale,
|
||||||
|
fallbackLocale: defaultLocale
|
||||||
|
});
|
||||||
|
|
||||||
new Vue({
|
new Vue({
|
||||||
|
i18n,
|
||||||
render: (h) => h(App),
|
render: (h) => h(App),
|
||||||
}).$mount('#app');
|
}).$mount('#app');
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
"experimentalDecorators": true,
|
"experimentalDecorators": true,
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
"allowSyntheticDefaultImports": true,
|
"allowSyntheticDefaultImports": true,
|
||||||
|
"resolveJsonModule": true,
|
||||||
"sourceMap": true,
|
"sourceMap": true,
|
||||||
"baseUrl": ".",
|
"baseUrl": ".",
|
||||||
"types": [
|
"types": [
|
||||||
|
|
Loading…
Reference in New Issue