惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Fortinet All Blogs
爱范儿
爱范儿
P
Proofpoint News Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Tailwind CSS Blog
J
Java Code Geeks
宝玉的分享
宝玉的分享
Jina AI
Jina AI
B
Blog
N
Netflix TechBlog - Medium
Recent Announcements
Recent Announcements
aimingoo的专栏
aimingoo的专栏
腾讯CDC
C
Check Point Blog
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
博客园 - Franky
罗磊的独立博客
B
Blog RSS Feed
WordPress大学
WordPress大学
小众软件
小众软件
博客园 - 叶小钗
M
MIT News - Artificial intelligence
GbyAI
GbyAI

愆伏

vue feedback 指令开发 通过webpack对css压缩后所引起的重名问题 NPM 撤回已发布的版本 昆虫有趋光性吗 数组转成字符串(css 属性) 关于grid布局的一些思考 阿里云和腾讯云网站字体族对比 Vue组件抛事件和Function prop的差别 Vue 事件参数传递 Vue Data里面下划线命名无效并报错 使用sublime中的正则处理数据格式 通过nodejs创建目录与文件 macOS 下npm run dev 无法局域网访问 mac 下使用ssh访问非22端口的gitlab 世界是平的,在科学上网之后 使用sublime text3和Markdown来写博客 如果非要给一个标题,那就是2014年非工作总结 不专业呢,就别捣乱 对知乎大号怒撤事件的一点看法 拒绝SB思维 嘀嘀与快的的商业博弈 关于收藏夹功能的思考 你居然都不用微信 一个英语培训机构的外呼电话 智商是硬伤就无解了 扁鹊三兄弟 竖子不足与谋 美丽说、蘑菇街今天一定开了好几个小时的会 个人独立博客会死掉吗? iPad作画
静态博客多语言架构设计:从“翻译问题”到“三层分离模型”
tortorse · 2026-03-01 · via 愆伏

这几天我完成了一件拖了很久的事:把自己的 Hexo 博客改成双语站点。

但真正让我想清楚的,不是配置怎么写,而是一个更本质的问题:多语言站点的核心不是翻译,而是架构分离。

在改造过程中,我逐渐把问题拆成了三个层级。这也是我这次最大的收获。


一、多语言博客的三层模型

在实践之前,我犯的第一个错误,是把“界面多语言”和“内容多语言”混为一谈。实际上,它们是三层不同的机制。

第一层是界面层(UI 文案),包括菜单、按钮、分页、提示语。这是主题层解决的问题,它只负责两件事:语言切换、文案映射。它不负责内容隔离。

第二层是路由层(URL 结构)。URL 决定语言空间是否被真正隔离。我的设计原则是:默认语言(中文)保持原有 URL 结构;英文内容统一走 /en/...;同一篇文章通过 id 关联;使用 lang 字段区分语言版本。这一层决定的是语言是否成为“路径维度”,而不是“分类维度”。分类只是内容标签,语言必须是路由结构。

第三层是内容层(列表与统计),也是最容易被忽略的一层。默认情况下,首页、归档、分类页、标签页往往会混合所有语言文章。所以我做了三件事:一是自定义生成器,按 lang 过滤列表页;二是分类和标签总览页增加 helper 过滤;三是切换语言时增加兜底逻辑,避免 404。核心原则很简单:当前语言环境,只展示对应语言内容。


二、我踩过的典型误区

第一个误区是把语言当成分类。最初我以为给文章加一个 English 分类即可,后来发现这条路天然不成立。分类是内容属性,不是语言维度。语言必须进入路由层,才能形成稳定可维护的多语言结构。

第二个误区是追求一次性全站翻译。我最开始的心理压力来自“是不是必须一次翻完所有历史文章”。后来我改变了策略:先完成架构,再逐篇补充。语言架构先搭好,内容可以渐进式完善。


三、技术改动概览

我这次的改动可以归纳为四组:

  1. Hexo 层:配置 zh-CN + en,修改 permalink 加入语言段,使用统一 id + lang 管理版本。
  2. NexT 主题层:启用 language_switcher,补齐自定义语言映射。
  3. 内容生成层:自定义 generator 过滤列表页,helper 处理分类与标签统计,body-end 增加语言切换 fallback。
  4. 细节修复:修复语言下拉宽度异常,修复移动端表格溢出。

四、AI 在这次改造中的角色

AI 在这件事里的价值,不是“自动写完代码”,而是帮我快速定位问题边界、验证假设、提供实现方向、减少试错时间。最终的架构选择和取舍,仍然由我决定,但效率显著提升。


五、我现在的双语策略

我给自己定下三个规则:第一,先确保界面多语言稳定;第二,内容按价值逐步补英文;第三,用统一 id + lang 管理版本。双语站点不是一个按钮,而是一套清晰的内容管理策略。


六、一个更大的认知收获

这次改造让我意识到,多语言问题本质是信息结构问题。当结构清晰后,翻译变得可控,内容扩展变得自然,维护成本也可预期。

接下来,我会逐步把更有代表性的历史文章补成英文版本,让英文区从“可用”慢慢走向“好用”。