diff --git a/src/App.vue b/src/App.vue
index 1972809..5627fca 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -4,7 +4,7 @@
// 语言切换:嵌入时父项目经 :locale prop 传入当前语言,watch 同步到本实例;
// 独立运行时由本组件内的语言开关 + loadLocaleAsync 自管。
import { ref, watch, defineAsyncComponent } from 'vue'
-import { useI18n } from 'vue-i18n'
+import { useLocale } from './composables/useLocale.js'
import i18n, { loadLocaleAsync } from './i18n/index.js'
import HeroSection from './components/HeroSection.vue'
import ScreenshotCarousel from './components/ScreenshotCarousel.vue'
@@ -28,7 +28,7 @@ watch(
{ immediate: true }
)
-const { t } = useI18n({ useScope: 'global' })
+const { t } = useLocale()
const tabs = subTabs
const activeTab = ref(defaultSubTab)
diff --git a/src/components/ExperimentTab.vue b/src/components/ExperimentTab.vue
index 51683e3..3364368 100644
--- a/src/components/ExperimentTab.vue
+++ b/src/components/ExperimentTab.vue
@@ -1,8 +1,8 @@
diff --git a/src/components/HeroSection.vue b/src/components/HeroSection.vue
index 69e9b11..b033cca 100644
--- a/src/components/HeroSection.vue
+++ b/src/components/HeroSection.vue
@@ -1,9 +1,9 @@
diff --git a/src/components/IterationsTab.vue b/src/components/IterationsTab.vue
index ac68a75..4f43caf 100644
--- a/src/components/IterationsTab.vue
+++ b/src/components/IterationsTab.vue
@@ -1,8 +1,8 @@
diff --git a/src/components/Leaderboard.vue b/src/components/Leaderboard.vue
index 2fbdb23..0833cff 100644
--- a/src/components/Leaderboard.vue
+++ b/src/components/Leaderboard.vue
@@ -1,9 +1,9 @@
diff --git a/src/components/TeamLeaderboardTab.vue b/src/components/TeamLeaderboardTab.vue
index e3470ce..8c4a433 100644
--- a/src/components/TeamLeaderboardTab.vue
+++ b/src/components/TeamLeaderboardTab.vue
@@ -1,9 +1,9 @@
diff --git a/src/components/VersionTimeline.vue b/src/components/VersionTimeline.vue
index 19f82db..80c150b 100644
--- a/src/components/VersionTimeline.vue
+++ b/src/components/VersionTimeline.vue
@@ -1,9 +1,9 @@
diff --git a/src/composables/useLocale.js b/src/composables/useLocale.js
new file mode 100644
index 0000000..a5ea86a
--- /dev/null
+++ b/src/composables/useLocale.js
@@ -0,0 +1,14 @@
+import { computed } from 'vue'
+import i18n from '../i18n/index.js'
+
+// ★ 子项目自有的语言辅助 composable。
+// 关键:直接读模块级 i18n 实例的 global composer,而非 useI18n() 注入。
+// 原因:useI18n({ useScope: 'global' }) 解析的是「当前运行 app 已安装的全局 i18n」,
+// 嵌入 mainPage 时那是父项目的实例(不含本子项目 mobileGame.* 文案)-> 文案回退成 key。
+// 改为直接引用本子项目实例的 .global,无论是否 app.use() 都拿到本子项目的 t。
+export function useLocale() {
+ const { t, locale } = i18n.global
+ const isZh = computed(() => locale.value === 'zh-CN')
+ const pick = (obj) => (isZh.value ? obj.zh : obj.en)
+ return { t, locale, isZh, pick }
+}