多语言网站
一个网站,容纳你需要的所有语言。
vagejs 是一款内置多语言支持的静态网站生成器。一个网站容纳所有语言,每种语言放在自己的文件夹里,每个页面都有正确的语言标签和 hreflang 标签,还有一项检查会列出仍在等待翻译的页面。这个功能从 0.10 版本起就是 vagejs 的一部分。
npm create vagejs@latest my-site它是怎么工作的
你的访客读的不都是同一种语言。英文页面就留在原来的位置,法语页面放进 fr 文件夹,德语页面放进 de。每个页面都知道自己的语言,各个译文版本之间互相指向。
| 你写的文件 | 访客看到的 |
|---|---|
src/pages/about.md |
/about/,英文版 |
src/pages/fr/about.md |
/fr/about/,法语版 |
src/pages/de/ueber-uns.md,带 translationOf: /about/ |
/de/ueber-uns/,德语版,有自己的德语网址 |
语言文件夹里文件名相同的页面,就是对应页面的译文。想用访客自己语言的网址?加一行说明它翻译的是哪个页面就行。你的语言只需在 vage.config.ts 里列一次:
export default defineConfig({
site: "https://example.com",
lang: "en",
i18n: { locales: ["fr", "de"] },
});你能得到什么
多语言网站里那些琐碎的事交给我们,你只管专心写内容。
每个页面都标对语言
法语页面会标明自己是法语,这样屏幕阅读器能正确朗读,搜索引擎也知道它是给谁看的。
自动写好 hreflang 标签
一个页面的每个版本都会链接到其他版本。Google 会根据这些链接,给用户展示他们自己语言的版本。
语言切换器,不用手动维护
你的布局会拿到当前页面的译文列表,所以切换器指向的永远是真实存在的页面。
检查缺失的翻译
npm run check会列出在某种语言里还没有版本的每个页面,并指出要添加的文件。语言标签写错,或者译文指向了不存在的页面,都会让构建停止。按语言分开的订阅源
/fr/blog/的博客订阅源只包含法语文章,并且会标明它是法语的。按语言分开的菜单和列表
给每种语言配一个自己的菜单,再用
collection()只列出一种语言的页面,比如法语博客文章。详见 在你的布局中
vagejs 多语言网站适合谁用
用多种语言服务客户的企业
你用两三种语言服务客户,只想维护一个网站,而不是三个。
有多语言文档的产品
你一次翻译一页文档,检查会帮你记着还剩哪些。
让 AI 助手来翻译的任何人
检查会准确告诉你的助手还缺什么,由你来审核它写的内容。
它不做什么
我们宁愿一开始就把限制说清楚。
- vagejs 不会替你翻译页面。每个版本由你、译者或你的 AI 助手来写。
- 它不会根据访客的浏览器设置把他们引导到某种语言。在静态网站上,语言切换器更可靠。
llms.txt和网站地图会把所有语言列在一起,而不是每种语言一个文件。
进一步了解 vagejs 多语言网站
其他一些静态网站生成器也内置了多语言支持,其中有些历史更久,能应对更复杂的配置。参见 vagejs 对比。
- 一步步来:搭建多语言静态网站
- 所有选项和检查:文档中的多语言网站
- 其他功能:vagejs 全部功能
关于多语言网站的常见问题
我必须翻译每个页面吗?
不必。没有译文的页面就只以一种语言存在。如果你只翻译部分页面,把它们列在 vage.config.ts 的 i18n.pages 下(vagejs 0.15.1 及更新版本),vage check 就只会要求这些页面的译文。
缺少译文会让网站构建失败吗?
不会。缺少译文只是警告,所以你边翻译,网站照样能构建。如果你希望警告也算失败,就运行 vage check --strict。真正的错误,比如语言标签写错,或者 translationOf 指向了不存在的页面,才是错误。
我可以用哪些语言代码?
标准的语言代码,比如 fr、de 或 pt-BR。主语言写在 lang 里,其他语言写在 i18n.locales 里。不要把主语言再列一遍。
我能给已有的网站添加语言吗?
能。主语言页面的网址保持不变,所以你已经发布的内容都不会移动。把新语言加到 vage.config.ts 里,再把每篇译文放进对应语言的文件夹。
一条命令即可开始。
一分钟内网站就能运行。
npm create vagejs@latest my-site