const TAB_KEYS = ['nav.home', 'nav.ai', 'nav.message', 'nav.mine'] /** 与 pages.json tabBar.list[].pagePath 一致(无开头 /) */ const TAB_PAGE_PATHS = new Set([ 'pages/home/index', 'pages/ai/index', 'pages/message/index', 'pages/mine/index' ]) /** * 当前栈顶是否为原生 TabBar 页;分包等页面调用 setTabBar* 会报 not TabBar page。 */ export function isTabBarPage() { const stack = getCurrentPages() if (!stack.length) return false const cur = stack[stack.length - 1] const route = cur.route || '' return TAB_PAGE_PATHS.has(route) } /** * 原生 tabBar 的 text 不能写进 pages.json 的 i18n,需在运行时按当前语言更新。 * @param {(key: string) => string} t 如 (k) => this.$t(k) */ export function syncTabBarText(t) { if (!isTabBarPage()) return TAB_KEYS.forEach((key, index) => { uni.setTabBarItem({ index, text: t(key), fail() { /* 个别端仍可能失败,静默即可 */ } }) }) }