@@ -4,6 +4,7 @@ import { ThemeProvider } from '@lobehub/ui'
44import MainLayout from './_layout'
55import { RouterProvider , createBrowserRouter } from 'react-router-dom'
66import { lazy , Suspense } from 'react'
7+ import { useTranslation } from 'react-i18next'
78
89import Nav from './components/@nav/default'
910import useThemeStore from './store/theme'
@@ -28,134 +29,135 @@ const PanelPage = lazy(() => import('./pages/panel/page'))
2829const ModelMapPage = lazy ( ( ) => import ( './pages/model-map/page' ) )
2930const UserGroupPage = lazy ( ( ) => import ( './pages/user-group/page' ) )
3031
31- const router = createBrowserRouter ( [ {
32- element : < MainLayout nav = { < Nav /> } /> ,
33- children : [
34- {
35- path : 'panel' , element : < Suspense fallback = { < FullscreenLoading title = '加载面板中' /> } >
36- < PanelPage />
37- </ Suspense >
38- } ,
39- {
40- path : 'channel' , element : < Suspense fallback = { < FullscreenLoading title = '加载渠道中' /> } >
41- < ChannelPage />
42- </ Suspense >
43- } ,
44- {
45- path : 'token' , element : < Suspense fallback = { < FullscreenLoading title = '加载Token管理中' /> } >
46- < TokenPage />
47- </ Suspense >
48- } ,
49- {
50- path : 'model-manager' , element : < Suspense fallback = { < FullscreenLoading title = '加载模型管理中' /> } >
51- < ModelManager />
52- </ Suspense >
53- } ,
54- {
55- path : 'product' , element : < Suspense fallback = { < FullscreenLoading title = '加载产品页面中' /> } >
56- < ProductPage />
57- </ Suspense >
58- } ,
59- {
60- path : 'logger' , element : < Suspense fallback = { < FullscreenLoading title = '加载日志页面中' /> } >
61- < LoggerPage />
62- </ Suspense >
63- } ,
64- {
65- path : 'redeem-code' , element : < Suspense fallback = { < FullscreenLoading title = '加载兑换码页面中' /> } >
66- < RedeemCodePage />
67- </ Suspense >
68- } ,
69- {
70- path : 'user' , element : < Suspense fallback = { < FullscreenLoading title = '加载用户页面中' /> } >
71- < UserPage />
72- </ Suspense >
73- } ,
74- {
75- path : 'current' , element : < Suspense fallback = { < FullscreenLoading title = '加载当前页面中' /> } >
76- < CurrentPage />
77- </ Suspense >
78- } ,
79- {
80- path : 'setting' , element : < Suspense fallback = { < FullscreenLoading title = '加载设置页面中' /> } >
81- < SettingPage />
82- </ Suspense >
83- } ,
84- {
85- path : 'rate-limit' , element : < Suspense fallback = { < FullscreenLoading title = '加载限速页面中' /> } >
86- < RateLimit />
87- </ Suspense >
88- } ,
89- {
90- path : 'model-map' , element : < Suspense fallback = { < FullscreenLoading title = '加载模型映射页面中' /> } >
91- < ModelMapPage />
92- </ Suspense >
93- } ,
94- {
95- path : 'user-group' , element : < Suspense fallback = { < FullscreenLoading title = '加载用户分组页面中' /> } >
96- < UserGroupPage />
97- </ Suspense >
98- }
99- ]
100- } , {
101- path : "/login" ,
102- element : < Suspense fallback = { < FullscreenLoading title = '加载登录页面中' /> } >
103- < LoginPage />
104- </ Suspense >
105- } , {
106- path : "/register" ,
107- element : < Suspense fallback = { < FullscreenLoading title = '加载注册页面中' /> } >
108- < RegisterPage />
109- </ Suspense >
110- } , {
111- path : "/auth" ,
112- element : < Suspense fallback = { < FullscreenLoading title = '加载认证页面中' /> } >
113- < Auth />
114- </ Suspense >
115- } , {
116- path : "/auth/gitee" ,
117- element : < Suspense fallback = { < FullscreenLoading title = '加载认证页面中' /> } >
118- < Auth />
119- </ Suspense >
120- } , {
121- path : "/auth/casdoor" ,
122- element : < Suspense fallback = { < FullscreenLoading title = '加载认证页面中' /> } >
123- < Auth />
124- </ Suspense >
125- } ,
126- {
127- element : < Suspense fallback = { < FullscreenLoading title = '加载默认布局中' /> } >
128- < DefaultLayout />
129- </ Suspense > ,
130- children : [
131- {
132- path : '' , element : < Suspense fallback = { < FullscreenLoading title = '加载欢迎页面中' /> } >
133- < WelcomePage />
134- </ Suspense >
135- } ,
136- {
137- path : "/doc" ,
138- element : < Suspense fallback = { < FullscreenLoading title = '加载文档页面中' /> } >
139- < DocPage />
140- </ Suspense >
141- } , {
142- path : "/doc/*" ,
143- element : < Suspense fallback = { < FullscreenLoading title = '加载文档页面中' /> } >
144- < DocPage />
145- </ Suspense >
146- } , {
147- path : "/model" ,
148- element : < Suspense fallback = { < FullscreenLoading title = '加载模型页面中' /> } >
149- < ModelPage />
150- </ Suspense >
151- } ,
152- ]
153- } ,
154-
155- ] )
156-
15732function App ( ) {
15833 const { themeMode, toggleTheme } = useThemeStore ( ) ;
34+ const { t } = useTranslation ( ) ;
35+
36+ const router = createBrowserRouter ( [ {
37+ element : < MainLayout nav = { < Nav /> } /> ,
38+ children : [
39+ {
40+ path : 'panel' , element : < Suspense fallback = { < FullscreenLoading title = { t ( 'pageTitle.loading.panel' ) } /> } >
41+ < PanelPage />
42+ </ Suspense >
43+ } ,
44+ {
45+ path : 'channel' , element : < Suspense fallback = { < FullscreenLoading title = { t ( 'pageTitle.loading.channel' ) } /> } >
46+ < ChannelPage />
47+ </ Suspense >
48+ } ,
49+ {
50+ path : 'token' , element : < Suspense fallback = { < FullscreenLoading title = { t ( 'pageTitle.loading.token' ) } /> } >
51+ < TokenPage />
52+ </ Suspense >
53+ } ,
54+ {
55+ path : 'model-manager' , element : < Suspense fallback = { < FullscreenLoading title = { t ( 'pageTitle.loading.modelManager' ) } /> } >
56+ < ModelManager />
57+ </ Suspense >
58+ } ,
59+ {
60+ path : 'product' , element : < Suspense fallback = { < FullscreenLoading title = { t ( 'pageTitle.loading.product' ) } /> } >
61+ < ProductPage />
62+ </ Suspense >
63+ } ,
64+ {
65+ path : 'logger' , element : < Suspense fallback = { < FullscreenLoading title = { t ( 'pageTitle.loading.logger' ) } /> } >
66+ < LoggerPage />
67+ </ Suspense >
68+ } ,
69+ {
70+ path : 'redeem-code' , element : < Suspense fallback = { < FullscreenLoading title = { t ( 'pageTitle.loading.redeemCode' ) } /> } >
71+ < RedeemCodePage />
72+ </ Suspense >
73+ } ,
74+ {
75+ path : 'user' , element : < Suspense fallback = { < FullscreenLoading title = { t ( 'pageTitle.loading.user' ) } /> } >
76+ < UserPage />
77+ </ Suspense >
78+ } ,
79+ {
80+ path : 'current' , element : < Suspense fallback = { < FullscreenLoading title = { t ( 'pageTitle.loading.current' ) } /> } >
81+ < CurrentPage />
82+ </ Suspense >
83+ } ,
84+ {
85+ path : 'setting' , element : < Suspense fallback = { < FullscreenLoading title = { t ( 'pageTitle.loading.setting' ) } /> } >
86+ < SettingPage />
87+ </ Suspense >
88+ } ,
89+ {
90+ path : 'rate-limit' , element : < Suspense fallback = { < FullscreenLoading title = { t ( 'pageTitle.loading.rateLimit' ) } /> } >
91+ < RateLimit />
92+ </ Suspense >
93+ } ,
94+ {
95+ path : 'model-map' , element : < Suspense fallback = { < FullscreenLoading title = { t ( 'pageTitle.loading.modelMap' ) } /> } >
96+ < ModelMapPage />
97+ </ Suspense >
98+ } ,
99+ {
100+ path : 'user-group' , element : < Suspense fallback = { < FullscreenLoading title = { t ( 'pageTitle.loading.userGroup' ) } /> } >
101+ < UserGroupPage />
102+ </ Suspense >
103+ }
104+ ]
105+ } , {
106+ path : "/login" ,
107+ element : < Suspense fallback = { < FullscreenLoading title = { t ( 'pageTitle.loading.login' ) } /> } >
108+ < LoginPage />
109+ </ Suspense >
110+ } , {
111+ path : "/register" ,
112+ element : < Suspense fallback = { < FullscreenLoading title = { t ( 'pageTitle.loading.register' ) } /> } >
113+ < RegisterPage />
114+ </ Suspense >
115+ } , {
116+ path : "/auth" ,
117+ element : < Suspense fallback = { < FullscreenLoading title = { t ( 'pageTitle.loading.auth' ) } /> } >
118+ < Auth />
119+ </ Suspense >
120+ } , {
121+ path : "/auth/gitee" ,
122+ element : < Suspense fallback = { < FullscreenLoading title = { t ( 'pageTitle.loading.auth' ) } /> } >
123+ < Auth />
124+ </ Suspense >
125+ } , {
126+ path : "/auth/casdoor" ,
127+ element : < Suspense fallback = { < FullscreenLoading title = { t ( 'pageTitle.loading.auth' ) } /> } >
128+ < Auth />
129+ </ Suspense >
130+ } ,
131+ {
132+ element : < Suspense fallback = { < FullscreenLoading title = { t ( 'pageTitle.loading.defaultLayout' ) } /> } >
133+ < DefaultLayout />
134+ </ Suspense > ,
135+ children : [
136+ {
137+ path : '' , element : < Suspense fallback = { < FullscreenLoading title = { t ( 'pageTitle.loading.welcome' ) } /> } >
138+ < WelcomePage />
139+ </ Suspense >
140+ } ,
141+ {
142+ path : "/doc" ,
143+ element : < Suspense fallback = { < FullscreenLoading title = { t ( 'pageTitle.loading.doc' ) } /> } >
144+ < DocPage />
145+ </ Suspense >
146+ } , {
147+ path : "/doc/*" ,
148+ element : < Suspense fallback = { < FullscreenLoading title = { t ( 'pageTitle.loading.doc' ) } /> } >
149+ < DocPage />
150+ </ Suspense >
151+ } , {
152+ path : "/model" ,
153+ element : < Suspense fallback = { < FullscreenLoading title = { t ( 'pageTitle.loading.model' ) } /> } >
154+ < ModelPage />
155+ </ Suspense >
156+ } ,
157+ ]
158+ } ,
159+ ] ) ;
160+
159161 return (
160162 < ThemeProvider themeMode = { themeMode }
161163 onThemeModeChange = { ( mode ) => {
0 commit comments