diff --git a/web/admin-spa/src/views/ApiStatsView.vue b/web/admin-spa/src/views/ApiStatsView.vue
index f26df4e5..104dd3a0 100644
--- a/web/admin-spa/src/views/ApiStatsView.vue
+++ b/web/admin-spa/src/views/ApiStatsView.vue
@@ -6,10 +6,15 @@
+
+
+
+
+
@@ -28,7 +33,7 @@
to="/user-login"
>
- 用户登录
+ {{ t('apiStats.userLogin') }}
- 管理后台
+ {{ t('apiStats.adminPanel') }}
@@ -54,14 +59,14 @@
@click="currentTab = 'stats'"
>
- 统计查询
+ {{ t('apiStats.statsQuery') }}
@@ -93,7 +98,7 @@
统计时间范围{{ t('apiStats.timeRange') }}
@@ -104,7 +109,7 @@
@click="switchPeriod('daily')"
>
- 今日
+ {{ t('apiStats.today') }}
@@ -140,7 +145,7 @@
@@ -150,21 +155,28 @@
import { ref, onMounted, onUnmounted, watch, computed } from 'vue'
import { useRoute } from 'vue-router'
import { storeToRefs } from 'pinia'
+import { useI18n } from 'vue-i18n'
import { useApiStatsStore } from '@/stores/apistats'
import { useThemeStore } from '@/stores/theme'
+import { useLocaleStore } from '@/stores/locale'
import LogoTitle from '@/components/common/LogoTitle.vue'
import ThemeToggle from '@/components/common/ThemeToggle.vue'
+import LanguageSwitch from '@/components/common/LanguageSwitch.vue'
import ApiKeyInput from '@/components/apistats/ApiKeyInput.vue'
import StatsOverview from '@/components/apistats/StatsOverview.vue'
import TokenDistribution from '@/components/apistats/TokenDistribution.vue'
import LimitConfig from '@/components/apistats/LimitConfig.vue'
import AggregatedStatsCard from '@/components/apistats/AggregatedStatsCard.vue'
import ModelUsageStats from '@/components/apistats/ModelUsageStats.vue'
-import TutorialView from './TutorialView.vue'
+import TutorialViewZhCn from './TutorialView.vue'
+import TutorialViewZhTw from './TutorialView.vue'
+import TutorialViewEn from './TutorialView.vue'
const route = useRoute()
+const { t } = useI18n()
const apiStatsStore = useApiStatsStore()
const themeStore = useThemeStore()
+const localeStore = useLocaleStore()
// 当前标签页
const currentTab = ref('stats')
@@ -172,6 +184,17 @@ const currentTab = ref('stats')
// 主题相关
const isDarkMode = computed(() => themeStore.isDarkMode)
+// 根据当前语言选择教程组件
+const currentTutorialComponent = computed(() => {
+ const locale = localeStore.currentLocale
+ const components = {
+ 'zh-cn': TutorialViewZhCn,
+ 'zh-tw': TutorialViewZhTw,
+ 'en': TutorialViewEn
+ }
+ return components[locale] || TutorialViewZhCn
+})
+
const {
apiKey,
apiId,