"dependencies": {
"bulma": "^1.0.4",
"sass-embedded": "^1.89.2",
- "vue": "^3.5.13"
+ "vue": "^3.5.13",
+ "vue-i18n": "^11.1.6"
},
"devDependencies": {
"@tsconfig/node22": "^22.0.1",
"node": ">=18"
}
},
+ "node_modules/@intlify/core-base": {
+ "version": "11.1.6",
+ "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-11.1.6.tgz",
+ "integrity": "sha512-gfMLnoWGiQkA1BwK6Qbrog/e3I6Lnkhqk08XObJb0lMq6sLG1Ggl2MazVaMfGnv/E1Td8pCS5UwR54Ys+fOxmQ==",
+ "dependencies": {
+ "@intlify/message-compiler": "11.1.6",
+ "@intlify/shared": "11.1.6"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
+ }
+ },
+ "node_modules/@intlify/message-compiler": {
+ "version": "11.1.6",
+ "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-11.1.6.tgz",
+ "integrity": "sha512-w0LYo5sqgQZF3vEmjLlx+5PYk5EEiB+uigsBkka/DKoAIH2c5xlXcjAxhTgSw35Vrck+GOGriahFsfbHL+ZjPw==",
+ "dependencies": {
+ "@intlify/shared": "11.1.6",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
+ }
+ },
+ "node_modules/@intlify/shared": {
+ "version": "11.1.6",
+ "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-11.1.6.tgz",
+ "integrity": "sha512-G1Pe4UILhiGOItuehRW+Pk9/NlnRaMFsdnhZ1fwBjiHvrzitmPNZdLx7Eo3GPfRrsk1mdkilZSfgH8SnM419vA==",
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
+ }
+ },
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.8",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
"he": "^1.2.0"
}
},
+ "node_modules/@vue/devtools-api": {
+ "version": "6.6.4",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
+ "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g=="
+ },
"node_modules/@vue/devtools-core": {
"version": "7.7.7",
"resolved": "https://registry.npmjs.org/@vue/devtools-core/-/devtools-core-7.7.7.tgz",
}
}
},
+ "node_modules/vue-i18n": {
+ "version": "11.1.6",
+ "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-11.1.6.tgz",
+ "integrity": "sha512-+IbsW/sTZHj7U1w0rPOYJbuSB0/7DeO1nvUo3BxvO20OQgHs+ukJ3QeLqvoUA6DiLk+8SA9+djRmKC9+FC6cAg==",
+ "dependencies": {
+ "@intlify/core-base": "11.1.6",
+ "@intlify/shared": "11.1.6",
+ "@vue/devtools-api": "^6.5.0"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
+ },
"node_modules/vue-tsc": {
"version": "2.2.10",
"resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.2.10.tgz",
import './assets/main.scss'
import { createApp } from 'vue'
+import { createI18n } from "vue-i18n"
import App from './App.vue'
-createApp(App).mount('#app')
+const app = createApp(App)
+
+// Setup translation
+app.use(
+ createI18n({
+ // Enable composition mode
+ legacy: false,
+
+ // Set the default locale
+ locale: "en",
+
+ // Load all translations
+ messages: {
+ en: {}
+ },
+
+ // Handle any missing keys
+ missing: (locale, key) => {
+ console.warn(`[i18n missing] ${key} in ${locale}`)
+
+ return key
+ }
+ })
+)
+
+app.mount('#app')