日期:2026年1月10日22时45分 摘要:将英文设为默认回落语言,并基于浏览器可接受语言自动选择页面语言(无匹配则显示英文)。
【question】 设置英文为默认语言,并且判断浏览器可接受语言作为页面语言,网站没有对应语言则显示英文
【try to solve】 实现两层语言选择策略:
- Worker(动态路由)
- 将英文设为默认回落语言(
SITE_DEFAULT_LANG=en)。 - 对工具路由等由 Worker 返回 HTML 的页面,按
Accept-Language选择最匹配语言;若请求的语言不受支持或未启用,则回落英文。
- 静态页面(首页 / devlogs)
- 由于静态资源可能被平台优先直接命中,为保证“按浏览器语言选择”,在所有静态生成页面的
<head>注入一段极早执行的脚本:- 读取
navigator.languages(或navigator.language)选择最匹配的站点语言; - 当 URL 未带语言前缀时,若选择结果为英文,则跳转到
/en/...; - 若浏览器语言没有匹配站点语言,则回落英文。
- 读取
【执行操作】
- 更新:
wrangler.jsonc(SITE_DEFAULT_LANG改为en) - 更新:
worker-configuration.d.ts(重新 typegen) - 更新:
src/index.ts(增加 Accept-Language 协商与回落英文逻辑,用于 Worker 返回的 HTML 路由) - 更新:
scripts/site/layout.mjs(静态页注入浏览器语言自动选择/跳转脚本) - 更新:
README.md(补充浏览器语言说明) - 生成:重新运行
build:site输出静态页面