Merge pull request #89 from SELab-2/feat/frontend-languages

feat(frontend): Vertaling Engels/Nederlands via menubalk
This commit is contained in:
Tibo De Peuter 2025-03-12 21:38:42 +01:00 committed by GitHub
commit 7e53c802e3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 62 additions and 9 deletions

View file

@ -2,8 +2,10 @@
import { ref } from "vue";
import { useRoute } from "vue-router";
import dwengoLogo from "../../../assets/img/dwengo-groen-zwart.svg";
import {useI18n} from "vue-i18n";
const route = useRoute();
const { t, locale } = useI18n()
// Instantiate variables to use in html to render right
// Links and content dependent on the role (student or teacher)
@ -27,6 +29,8 @@
// Logic to change the language of the website to the selected language
const changeLanguage = (langCode: string) => {
locale.value = langCode;
localStorage.setItem('user-lang', langCode);
console.log(langCode);
};
</script>
@ -46,7 +50,7 @@
:src="dwengoLogo"
/>
<p class="caption">
{{ role }}
{{ t(`${role}`) }}
</p>
</router-link>
</li>
@ -55,21 +59,21 @@
:to="`/${role}/${userId}/assignment`"
class="menu_item"
>
assignments
{{ t('assignments') }}
</router-link>
</li>
<li>
<router-link
:to="`/${role}/${userId}/class`"
class="menu_item"
>classes</router-link
>{{ t('classes') }}</router-link
>
</li>
<li>
<router-link
:to="`/${role}/${userId}/discussion`"
class="menu_item"
>discussions</router-link
>{{ t('discussions') }} </router-link
>
</li>
<li>
@ -104,7 +108,7 @@
<li>
<router-link :to="`/login`">
<v-tooltip
text="log out"
:text="t('logout')"
location="bottom"
>
<template v-slot:activator="{ props }">

22
frontend/src/i18n/i18n.ts Normal file
View file

@ -0,0 +1,22 @@
import { createI18n } from 'vue-i18n';
// Import translations
import en from "@/i18n/locale/en.json";
import nl from "@/i18n/locale/nl.json";
import fr from "@/i18n/locale/fr.json";
import de from "@/i18n/locale/de.json";
const savedLocale = localStorage.getItem('user-lang') || 'en';
const i18n = createI18n({
locale: savedLocale,
fallbackLocale: 'en',
messages: {
en: en,
nl: nl,
fr: fr,
de: de,
},
});
export default i18n;

View file

@ -0,0 +1,3 @@
{
"welcome": "Willkommen"
}

View file

@ -0,0 +1,9 @@
{
"welcome": "Welcome",
"student": "student",
"teacher": "teacher",
"assignments": "assignments",
"classes": "classes",
"discussions": "discussions",
"logout": "log out"
}

View file

@ -0,0 +1,3 @@
{
"welcome": "Bienvenue"
}

View file

@ -0,0 +1,9 @@
{
"welcome": "Welkom",
"student": "leerling",
"teacher": "leerkracht",
"assignments": "opdrachten",
"classes": "klassen",
"discussions": "discussies",
"logout": "log uit"
}

View file

@ -1,15 +1,17 @@
import { createApp } from "vue";
import {createApp} from "vue";
// Vuetify
import "vuetify/styles";
import { createVuetify } from "vuetify";
import {createVuetify} from "vuetify";
import * as components from "vuetify/components";
import * as directives from "vuetify/directives";
import i18n from "./i18n/i18n.ts";
// Components
import App from "./App.vue";
import router from "./router";
const app = createApp(App);
app.use(router);
@ -24,5 +26,5 @@ const vuetify = createVuetify({
directives,
});
app.use(vuetify);
app.use(i18n);
app.mount("#app");