diff --git a/apps/web/.eslintrc.js b/apps/web/.eslintrc.js
index 9b9214710..8872bfcd2 100644
--- a/apps/web/.eslintrc.js
+++ b/apps/web/.eslintrc.js
@@ -34,10 +34,30 @@ module.exports = {
'alt',
'name',
'type',
- 'placeholder', // 部分 placeholder 可能需要 i18n,視情況調整
+ 'placeholder',
+ 'aria-label',
+ 'title',
+ 'rel',
+ 'target',
+ ],
+ // 忽略特定函數調用 (翻譯函數 + console)
+ ignoreCallee: [
+ 'console.log', 'console.error', 'console.warn', 'console.info',
+ 't', 'tRisk', 'tBlast', 'tBrand', 'tApproval', 'tMock', 'tDryRun',
+ 'useTranslations',
+ ],
+ // 忽略技術字串模式 (版本號、程式碼標識符)
+ ignore: [
+ // 版本號
+ /^v\d+\.\d+\.\d+$/,
+ /^v\d+\.\d+$/,
+ // 技術標籤 (全大寫英文 2-20 字元)
+ /^[A-Z][A-Z0-9_\s\-]{1,19}$/,
+ // 單一字元 (x, n, y, $, |)
+ /^.$/,
+ // CSS 類別
+ /^[a-z][a-z0-9\-_]*$/,
],
- // 忽略特定函數調用
- ignoreCallee: ['console.log', 'console.error', 'console.warn', 't', 'tRisk', 'tBlast'],
}],
// TypeScript strict rules
diff --git a/apps/web/messages/en.json b/apps/web/messages/en.json
index 549af10e8..8f40fbdcd 100644
--- a/apps/web/messages/en.json
+++ b/apps/web/messages/en.json
@@ -29,6 +29,7 @@
"slogan": "Zero-Touch Ops. Human-Centric Decisions.",
"sloganAlt": "零干預維運,以人為本的決策。",
"tagline": "AI-Powered Intelligent Operations Platform",
+ "aiTagline": "AI Sees. AI Acts. You Approve.",
"version": "v1.0.0",
"environment": "Production"
},
@@ -476,6 +477,12 @@
"next": "Next"
}
},
+ "placeholder": {
+ "underConstruction": "Under Construction",
+ "authorizations": "[ AUTHORIZATIONS MODULE UNDER CONSTRUCTION ]",
+ "knowledgeBase": "[ KNOWLEDGE BASE MODULE UNDER CONSTRUCTION ]",
+ "settings": "[ SETTINGS MODULE UNDER CONSTRUCTION ]"
+ },
"footer": {
"copyright": "© 2026 岑洋國際行銷有限公司",
"poweredBy": "Powered by leWOOOgo Engine"
diff --git a/apps/web/messages/zh-TW.json b/apps/web/messages/zh-TW.json
index 1ea25d210..f2b9e3ee6 100644
--- a/apps/web/messages/zh-TW.json
+++ b/apps/web/messages/zh-TW.json
@@ -29,6 +29,7 @@
"slogan": "零干預維運,以人為本的決策。",
"sloganAlt": "Zero-Touch Ops. Human-Centric Decisions.",
"tagline": "智能戰情室",
+ "aiTagline": "AI 觀察。AI 行動。您簽核。",
"version": "v1.0.0",
"environment": "正式環境"
},
@@ -476,6 +477,12 @@
"next": "下一頁"
}
},
+ "placeholder": {
+ "underConstruction": "建置中",
+ "authorizations": "[ 授權中心建置中 ]",
+ "knowledgeBase": "[ 知識殿堂建置中 ]",
+ "settings": "[ 系統設定建置中 ]"
+ },
"footer": {
"copyright": "© 2026 岑洋國際行銷有限公司",
"poweredBy": "由 leWOOOgo 引擎驅動"
diff --git a/apps/web/src/app/[locale]/authorizations/page.tsx b/apps/web/src/app/[locale]/authorizations/page.tsx
index 8b1ec701e..8400933bc 100644
--- a/apps/web/src/app/[locale]/authorizations/page.tsx
+++ b/apps/web/src/app/[locale]/authorizations/page.tsx
@@ -4,6 +4,7 @@
* Authorizations Page - 授權中心
* ==============================
* Phase 7.0: 防禦性路由佔位
+ * Wave 3: i18n 國際化支援 (2026-03-31)
*
* Nothing.tech 空態設計:
* - 畫面正中央極簡文字
@@ -11,17 +12,20 @@
*/
import { AppLayout } from '@/components/layout'
+import { useTranslations } from 'next-intl'
export default function AuthorizationsPage({
params,
}: {
params: { locale: string }
}) {
+ const t = useTranslations('placeholder')
+
return (
- [ 授權中心建置中 / AUTHORIZATIONS_MODULE_UNDER_CONSTRUCTION ]
+ {t('authorizations')}
- AI Sees. AI Acts. You Approve. + {tBrand('aiTagline')}
diff --git a/apps/web/src/app/[locale]/knowledge-base/page.tsx b/apps/web/src/app/[locale]/knowledge-base/page.tsx index ceef37472..5b00bd5bc 100644 --- a/apps/web/src/app/[locale]/knowledge-base/page.tsx +++ b/apps/web/src/app/[locale]/knowledge-base/page.tsx @@ -4,6 +4,7 @@ * Knowledge Base Page - 知識殿堂 * ============================== * Phase 7.0: 防禦性路由佔位 + * Wave 3: i18n 國際化支援 (2026-03-31) * * Nothing.tech 空態設計: * - 畫面正中央極簡文字 @@ -11,17 +12,20 @@ */ import { AppLayout } from '@/components/layout' +import { useTranslations } from 'next-intl' export default function KnowledgeBasePage({ params, }: { params: { locale: string } }) { + const t = useTranslations('placeholder') + return (- [ 知識殿堂建置中 / KNOWLEDGE_BASE_MODULE_UNDER_CONSTRUCTION ] + {t('knowledgeBase')}
- [ 系統設定建置中 / SETTINGS_MODULE_UNDER_CONSTRUCTION ] + {t('settings')}