feat(website/i18n): 6 语(加 日/韩/俄/西)+ 默认英文
- strings.ts: [zh,en] 二元组 → Record<Lang,string> 六语对象(157 条,ja/ko/ru/es 据英文翻译,无红线词,scan-redline 过);createT 回退英文;PRICES 补 4 语(复用 USD 价) - 路由:默认英文移到 /(原 zh);中文挪 /zh/;新增 /ja//ko//ru//es/;删冗余 /en/ - Site.astro:html lang / canonical / hreflang(6+x-default)/ og:locale 全部改 为按语言查表(HTML_LANG/OG_LOCALE/langPath) - Header.jsx:langseg 2 项 → 原生 select 6 语下拉(横排会挤);+ .langsel 样式 - astro build 通过,6 页生成;/ 英文、/zh/ 中文、/ja/ 日语标题均已本地化 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
This commit is contained in:
@@ -44,6 +44,13 @@ export default function Header({ lang = 'zh', t = {} }) {
|
||||
['#docs', t.docs],
|
||||
];
|
||||
|
||||
// 6 语言:默认 en=/,其余 /<lang>/。段控横排会挤,用原生下拉。
|
||||
const langs = [
|
||||
['en', 'English'], ['zh', '中文'], ['ja', '日本語'],
|
||||
['ko', '한국어'], ['ru', 'Русский'], ['es', 'Español'],
|
||||
];
|
||||
const langHref = (l) => (l === 'en' ? '/' : `/${l}/`);
|
||||
|
||||
return (
|
||||
<header class={`hdr${scrolled ? ' scrolled' : ''}`}>
|
||||
<div class="wrap row">
|
||||
@@ -57,10 +64,16 @@ export default function Header({ lang = 'zh', t = {} }) {
|
||||
))}
|
||||
</nav>
|
||||
<div class="right">
|
||||
<div class="langseg">
|
||||
<a data-lang="zh" class={lang === 'zh' ? 'on' : undefined} href="/">中文</a>
|
||||
<a data-lang="en" class={lang === 'en' ? 'on' : undefined} href="/en/">EN</a>
|
||||
</div>
|
||||
<select
|
||||
class="langsel"
|
||||
value={lang}
|
||||
onChange={(e) => { window.location.href = langHref(e.target.value); }}
|
||||
aria-label="Language"
|
||||
>
|
||||
{langs.map(([code, label]) => (
|
||||
<option key={code} value={code}>{label}</option>
|
||||
))}
|
||||
</select>
|
||||
<a class="linklogin" href={SITE.usercenter}>{t.login}</a>
|
||||
<a class="btn btn-primary" href="#download">
|
||||
<Download />
|
||||
|
||||
Reference in New Issue
Block a user