From 4e34df787643c369be207e9e0691e05e3de875e9 Mon Sep 17 00:00:00 2001 From: jingrow Date: Tue, 30 Dec 2025 04:02:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0vite=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=EF=BC=8C=E6=94=AF=E6=8C=81=E9=80=9A=E8=BF=87?= =?UTF-8?q?=20useI18n=20composable=20=E4=BD=BF=E7=94=A8=20t=20=E5=87=BD?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dashboard/vite-plugin-translate.mjs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/dashboard/vite-plugin-translate.mjs b/dashboard/vite-plugin-translate.mjs index a2ae5c0..29bbb20 100644 --- a/dashboard/vite-plugin-translate.mjs +++ b/dashboard/vite-plugin-translate.mjs @@ -285,11 +285,16 @@ function processVueSFC(code, translations) { ); // 再处理 t() 函数调用(从 i18n.js 导入的翻译函数) - // 检查是否有从 i18n 导入 t 函数 + // 检查是否有从 i18n 导入 t 函数,或通过 useI18n composable 使用 const hasTImport = /import\s*\{[^}]*\bt\b[^}]*\}\s*from\s*['"]\.\.?\/.*i18n['"]/i.test(scriptContent) || /import\s*\{[^}]*\bt\b[^}]*\}\s*from\s*['"]@\/.*i18n['"]/i.test(scriptContent); - if (hasTImport) { + // 检查是否通过 useI18n composable 使用 t 函数 + const hasUseI18n = /import\s*\{[^}]*useI18n[^}]*\}\s*from\s*['"]\.\.?\/.*useI18n['"]/i.test(scriptContent) || + /import\s*\{[^}]*useI18n[^}]*\}\s*from\s*['"]@\/.*useI18n['"]/i.test(scriptContent) || + /const\s*\{[^}]*\bt\b[^}]*\}\s*=\s*useI18n\(\)/i.test(scriptContent); + + if (hasTImport || hasUseI18n) { // 匹配 t('key') 或 t("key"),但排除 t.something() 或 t['something']() replacedContent = replacedContent.replace( /\bt\((['"])((?:\\.|(?!\1).)*)\1\)/g,