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

推荐订阅源

C
Cisco Blogs
爱范儿
爱范儿
有赞技术团队
有赞技术团队
博客园 - 【当耐特】
Jina AI
Jina AI
Project Zero
Project Zero
宝玉的分享
宝玉的分享
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
Simon Willison's Weblog
Simon Willison's Weblog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tenable Blog
F
Fortinet All Blogs
大猫的无限游戏
大猫的无限游戏
Last Week in AI
Last Week in AI
月光博客
月光博客
雷峰网
雷峰网
G
Google Developers Blog
V
V2EX
T
Tor Project blog
罗磊的独立博客
Schneier on Security
Schneier on Security
Know Your Adversary
Know Your Adversary
W
WeLiveSecurity
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
P
Privacy International News Feed
S
Securelist
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
P
Proofpoint News Feed
Blog — PlanetScale
Blog — PlanetScale
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
小众软件
小众软件
Scott Helme
Scott Helme
I
Intezer
T
Threat Research - Cisco Blogs
The GitHub Blog
The GitHub Blog
N
Netflix TechBlog - Medium
C
CERT Recently Published Vulnerability Notes
Security Archives - TechRepublic
Security Archives - TechRepublic
酷 壳 – CoolShell
酷 壳 – CoolShell
L
LINUX DO - 最新话题
N
News | PayPal Newsroom
L
Lohrmann on Cybersecurity
T
Troy Hunt's Blog
Google DeepMind News
Google DeepMind News
P
Proofpoint News Feed
人人都是产品经理
人人都是产品经理
Latest news
Latest news
AWS News Blog
AWS News Blog
Apple Machine Learning Research
Apple Machine Learning Research

愆伏

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作画 google reader即将关闭,谁来候补? 去年 美国人又火星了 一个简单的flash射击游戏 Draw an angry bird with pure CSS 用css3画一坨屎 一只音箱——漫步者M0pro 瓢虫图标 如果能够收集到世界上所有人的梦 作为一名产品经理 wordpress换域名 程序员和站长之间资源的交换 独角仙饲育日记1 男人是得有点装备的 镇江火车站、新汽车站到香逸渔港大酒店路线 jquery的slideUp、slideDown在IE中的闪动bug 《玩赚你的网站》是本难得的好书 腾讯微博邀请,欢迎自取 福特2010最新款家用普及型车 关于小霸王是否可以玩魔兽世界的问题 君要臣死,臣不得不死 wordpress主题发布:iCake 1.0 脆弱的域名服务 舍身成仁,舍己为人 欲练神功,挥刀自宫——在没有google之后 杯具掉的手作软陶皮卡丘 凶猛的阿凡达 js+css控制字体变换 2009年下半年南艺自考设计素描(本科) 愤怒摔食图——去TMD的xxx 改裤衩 紫金山捉虫记 态度问题还是能力问题 慷慨的饭店老板 南艺自考顺利达标 2009上半年南艺艺术设计自考毕业设计 说说产品经理-前言 在线生成卡通头像 CG weaver 1~3期打包下载 育儿网招聘网页设计师 google calendar的另类用法 互联网产品、运营二三事 小情调 干切牛肉雪菜面加煎蛋x2 永远的龙珠 M8:我不是山寨 终于回来了 还不都为了大客户 古典音乐——冷笑话 豆瓣盈利能力堪忧? 骑马与砍杀(mount&blade)——另类的爽快 溺爱的代价 开心不开心? 超赞的视频广告——wario land shake 神奇的《孢子spore》 该相信用户的话吗? chrome——google浏览器真的来了! 浏览器:web世界之门 赤壁——三国梦 项目管理就是博弈 Pia ji 一声的快感 Memories 拿来主义 一声叹息 禅心 LBS^2转到wordpress2.5 尽我们所能帮助灾区,希望灾民平安度过难关 游高崇寺 Avant Browser的复兴 “知”的提升
静态博客多语言架构设计:从“翻译问题”到“三层分离模型”
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 管理版本。双语站点不是一个按钮,而是一套清晰的内容管理策略。


六、一个更大的认知收获

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

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