用途:在已有 Astro 项目中集成 @cloudflare/polystella-astro,实现构建期内容本地化。它把内容集合(.md、.mdx、.toml、.json、.yaml)用 AI(Workers AI 或 Anthropic)翻译为其他语言,译文缓存在 Cloudflare R2,按源字节+术语表+模型做内容寻址,未变更内容重建不产生费用;为每个非默认语言注入 /[lang]/... 路由;访客拿到的是静态字节,运行时无 AI 调用。
主要能力:在 Astro.locals 提供 t、lhref、getLocalizedEntry、getLocalizedCollection 运行时 API,以及 React 的 useTranslations、useLocalizedHref;用每语言 JSON 字典维护 UI 字符串,支持漂移检测、同步与 AI 填充;支持术语表(file/http/r2/inline,路径用 {locale})与手写覆盖文件(i18n/overrides/{locale}/<镜像路径>,优先于 AI 输出且不写入 R2);R2 缓存按本地/CI 主分支/CI 预览分支自动隔离,本地构建只读不会覆盖生产。
使用方式:pnpm add @cloudflare/polystella-astro(对等依赖 astro ^7.0.10),配置 astro.config.mjs、polystella.config.mjs、src/content.config.ts、src/env.d.ts 四个文件,语言集合只在 astro.config.mjs 的 i18n 中定义。CLI 命令包括 polystella translate(可加 --branch、--locale、--file、--dry-run、--prefix)、check-ui、sync-ui、translate-ui。也可仅采用 JSON 目录流程(catalog/astro 或 catalogMiddleware),此时只绑定 Astro.locals.t 与 lhref。
适用场景与限制:适合需要多语言静态站点、希望避免运行时翻译调用的 Astro 项目。注意 Workers AI maxTokens 默认 8192 不要调低;sync-ui 只对齐键,需再跑 translate-ui 填充空值,否则构建漂移检查失败;翻译路由需在 routesImports 列出全局 CSS;不要提交 R2 凭据或 API 密钥;覆盖文件改动不触发缓存失效。构建后生成 dist/i18n-r2-report.json 记录每对结果,可用于排查。具体收费、价格与效果资料未提供。