Merge pull request #89 from SELab-2/feat/frontend-languages
feat(frontend): Vertaling Engels/Nederlands via menubalk
This commit is contained in:
		
						commit
						7e53c802e3
					
				
					 8 changed files with 62 additions and 9 deletions
				
			
		|  | @ -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
									
								
							
							
						
						
									
										22
									
								
								frontend/src/i18n/i18n.ts
									
										
									
									
									
										Normal 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; | ||||
							
								
								
									
										3
									
								
								frontend/src/i18n/locale/de.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								frontend/src/i18n/locale/de.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| { | ||||
|     "welcome": "Willkommen" | ||||
| } | ||||
							
								
								
									
										9
									
								
								frontend/src/i18n/locale/en.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								frontend/src/i18n/locale/en.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,9 @@ | |||
| { | ||||
|     "welcome": "Welcome", | ||||
|     "student": "student", | ||||
|     "teacher": "teacher", | ||||
|     "assignments": "assignments", | ||||
|     "classes": "classes", | ||||
|     "discussions": "discussions", | ||||
|     "logout": "log out" | ||||
| } | ||||
							
								
								
									
										3
									
								
								frontend/src/i18n/locale/fr.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								frontend/src/i18n/locale/fr.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| { | ||||
|     "welcome": "Bienvenue" | ||||
| } | ||||
							
								
								
									
										9
									
								
								frontend/src/i18n/locale/nl.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								frontend/src/i18n/locale/nl.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,9 @@ | |||
| { | ||||
|     "welcome": "Welkom", | ||||
|     "student": "leerling", | ||||
|     "teacher": "leerkracht", | ||||
|     "assignments": "opdrachten", | ||||
|     "classes": "klassen", | ||||
|     "discussions": "discussies", | ||||
|     "logout": "log uit" | ||||
| } | ||||
|  | @ -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"); | ||||
|  |  | |||
|  | @ -118,7 +118,8 @@ | |||
| 
 | ||||
|         /* Completeness */ | ||||
|         // "skipDefaultLibCheck": true,                      /* Skip type checking .d.ts files that are included with TypeScript. */ | ||||
|         "skipLibCheck": true | ||||
|         "skipLibCheck": true, | ||||
|         /* Skip type checking all .d.ts files. */ | ||||
|         "resolveJsonModule": true | ||||
|     } | ||||
| } | ||||
|  |  | |||
		Reference in a new issue
	
	 GitHub
							GitHub