1.3 KiB
1.3 KiB
AGENTS.md — @app/i18n
职责
文案与 locale 纯函数库:静态 messages、t()、Accept-Language 解析、cookie 名。
不依赖 Astro/React/DB;islands 与 .astro 共用同一套查表,不要引入 i18next。
结构
src/
locales.ts # Locale、LOCALES、DEFAULT_LOCALE、PREFIX_LOCALE
cookie.ts # COOKIE_LANG = "app-lang"
accept-language.ts # parsePreferredLocale / shouldRedirectRootToEn
preferred.ts # resolvePreferredLocale(cookie > Accept-Language > zh-CN)
messages/zh-CN.ts # key 权威源
messages/en.ts # 必须与 zh-CN 同构
t.ts # t(locale, key, params?)
index.ts
约定
- 中文
/zh-CN、英文/en前缀;裸/仅由 middleware 检测后 302,不挂页面。 - 页面路由:
@app/web用 单套src/pages/[locale]/…动态前缀,不要复制zh-CN/、en/目录。 - 新增文案:先改
zh-CN.ts,再补en.ts(类型强制 key 对齐)。 - 插值仅支持
{name};无 ICU/复数(需要时再扩展)。 - React island:传
localeprop 或组件内t(locale, key),不靠 Provider。 - 路径检测与 302 在
@app/web的middleware.ts,本包只提供解析函数。
命令
yarn workspace @app/i18n typecheck
yarn workspace @app/i18n build