merge: 合并 main 分支的 i18n 重构到 login-page 功能分支

解决冲突:
- i18n.tsx: 采用 main 的独立文件架构(en.ts/zh.ts),新增 OAuth/branding 翻译 key
- Login.tsx: 保留左右分栏布局,合入 main 的验证消息 i18n 化
- Register.tsx: 同上,合入 main 的 placeholder i18n 化

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-03 13:31:41 +08:00
21 changed files with 1056 additions and 614 deletions

View File

@@ -1,4 +1,4 @@
import { useI18n } from '../lib/i18n';
import { useI18n, tk } from '../lib/i18n';
function Logo({ className }: { className: string }) {
return (
@@ -54,7 +54,7 @@ export default function AuthBranding() {
<path fillRule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clipRule="evenodd" />
</svg>
</div>
<span className="text-white/90 text-[15px] leading-snug">{t(key)}</span>
<span className="text-white/90 text-[15px] leading-snug">{t(tk(key))}</span>
</div>
))}
</div>