diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts index b482dfd..c5ee020 100644 --- a/frontend/src/router/index.ts +++ b/frontend/src/router/index.ts @@ -1,6 +1,7 @@ import { createRouter, createWebHistory } from 'vue-router' import { useTokenStore } from '@/stores/token' import { tokenValid as apiCommonTokenValid } from '@/api/common' +import { i18n } from '@/utils/i18n' import Home from '@/views/Home.vue' import Collection from '@/views/Collection.vue' @@ -13,15 +14,15 @@ import Login from '@/views/Login.vue' import NotFound from '@/views/NotFound.vue' const routes = [ - { path: '/home', name: "Home", component: Home }, - { path: '/collection', name: "Collection", meta: { requireLoggedInCheck: true }, component: Collection }, - { path: '/calendar', name: "Calendar", meta: { requireLoggedInCheck: true }, component: Calendar }, - { path: '/todo', name: "Todo", meta: { requireLoggedInCheck: true }, component: Todo }, - { path: '/admin', name: "Admin", meta: { requireLoggedInCheck: true }, component: Admin }, + { path: '/home', name: "Home", meta: { title: 'pageName-home' }, component: Home }, + { path: '/collection', name: "Collection", meta: { title: 'pageName-collection', requireLoggedInCheck: true }, component: Collection }, + { path: '/calendar', name: "Calendar", meta: { title: 'pageName-calendar', requireLoggedInCheck: true }, component: Calendar }, + { path: '/todo', name: "Todo", meta: { title: 'pageName-todo', requireLoggedInCheck: true }, component: Todo }, + { path: '/admin', name: "Admin", meta: { title: 'pageName-admin', requireLoggedInCheck: true }, component: Admin }, - { path: '/calendar/event', name: "CalendarEventAdd", meta: { requireLoggedInCheck: true }, component: CalendarEvent }, - { path: '/calendar/event/:uuid', name: "CalendarEventUpdate", meta: { requireLoggedInCheck: true }, component: CalendarEvent }, - { path: '/login', name: "Login", meta: { requireLoggedOutCheck: true }, component: Login }, + { path: '/calendar/event', name: "CalendarEventAdd", meta: { title: 'pageName-event', requireLoggedInCheck: true }, component: CalendarEvent }, + { path: '/calendar/event/:uuid', name: "CalendarEventUpdate", meta: { title: 'pageName-event', requireLoggedInCheck: true }, component: CalendarEvent }, + { path: '/login', name: "Login", meta: { title: 'pageName-login', requireLoggedOutCheck: true }, component: Login }, { path: '/404', name: "NotFound", component: NotFound }, @@ -55,8 +56,12 @@ router.beforeEach(async (to, _from) => { if (token.isLoggedIn) { return { name: 'Default', replace: true }; } - } else { - return true; + } + + // Apply the route's window title (translated via vue-i18n). Only reached + // when the navigation is allowed — redirects short-circuit above. + if (typeof to.meta.title === 'string') { + document.title = i18n.global.t(to.meta.title) } })