You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Astro中自定义defineCollection实现多语言内容聚合

多语言MDX内容集合合并方案求助

场景

我的网站包含多语言MDX页面,习惯将同一「条目」的所有相关文件放在单个文件夹中,目录结构如下:

- blog
  - 01
    - index.th.mdx // 对应路径 /blog/01
    - index.en.mdx // 对应路径 /en/blog/01
  - 02
    - index.th.mdx // 对应路径 /blog/02;/en/blog/02 将重定向到 /blog/02

我曾尝试通过操作getStaticPaths函数解析每个条目对应的slug,但出现了问题。

遇到的挑战

这种方式虽然能运行,但会生成3个独立条目:

  • /blog/01/indexth
  • /blog/01/indexen
  • /blog/02/indexth
    导致我在列举博客时需要手动过滤内容,且使用reference引用blog/01时无法正常生效。

期望的效果

我需要得到如下结构的集合:

entries: [
  {
    id: 'blog/01',
    th: { ... },
    en: { ... },
  },
  {
    id: 'blog/02',
    th: { ... },
    en: null
  },
]

这样查询集合时能得到正确数量的条目,后续可自行处理getStaticPaths。

已尝试的方案

  • 尝试自定义加载器:参考Astro的glob源码实现,但因部分私有方法存在,无法完成构建;
  • 考虑创建两个对应不同语言的集合,但需要额外处理两个集合的查询与合并。

需求

现寻求更优方案,需实现以下任一目标:

  • 拦截getCollection的结果并进行处理,确保Content Collection中的reference也能获取处理后的结果;
  • 在默认glob加载器执行后修改存储内容。

内容的提问来源于stack exchange,提问作者Art

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 20:54:58