加第二种语言听起来像白送流量。实际上维护翻倍、权重被分散,只有特定条件下才值得。下面就是那些条件、Search Console 上的市场信号、以及发第一篇第二语言文章前必须就绪的 hreflang layout 模板。
问题背景
单语言站刚跑通的那一刻,最容易动加第二语言的念头——但这往往是最坏的时机。第一种语言才刚开始有效果,你就要把稀缺注意力分出去。加第二种语言的合适时机是有明确可量化信号的。
判断标准
- 主语言站点至少 100 篇、有 6 个月以上的稳定流量。
- 没发任何第二语言内容时,Search Console 里就已经能看到来自第二语言国家的流量。
- 主题能干净翻译——不是本地段子、不是某地特有的法规或文化绑定的话题。
- 能扩到 1.5 倍的产出预算,或者愿意放慢主语言。
- 能分清看两个语言各自的分析数据,不会混淆。
快速结论
只在主语言有稳定流量、主题能干净翻译、产能能撑 1.5 倍的时候上第二语言。否则继续等。
开始前准备
- Search Console 已接入,≥ 90 天数据。
- hub / 分类名翻译词表草拟好(保证命名一致)。
- layout 能从数据渲染 hreflang,不要每个文件手写。
实操步骤
- Search Console 检查”国家”信号。 Performance → 按 Country 筛 → 按 clicks/impressions 排序:
curl -X POST "https://www.googleapis.com/webmasters/v3/sites/$SITE/searchAnalytics/query" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
--data '{
"startDate":"2026-02-22","endDate":"2026-05-22",
"dimensions":["country"],"rowLimit":20
}' \
| jq -r '.rows[] | [.keys[0],.clicks,.impressions] | @tsv'
# 仅英文站 CHN 或 TWN 季度 >1000 impressions → ZH 需求是真实的
-
审视前 30 篇文章的翻译可行性,把高度本地化的剔除。
-
决定 URL 结构。 默认
/en/...和/zh/...子目录。framework 里:
src/content/articles/en/<hub>/<slug>.mdx
src/content/articles/zh/<hub>/<slug>.mdx
src/pages/[lang]/articles/[...slug].astro
- 发第一篇第二语言文章前,layout 必须先有 hreflang。 Astro 示例:
---
const { lang, translationKey } = Astro.props.article.data;
const site = Astro.site.toString().replace(/\/$/, '');
const path = Astro.url.pathname;
const otherLang = lang === 'en' ? 'zh' : 'en';
const otherPath = path.replace(`/${lang}/`, `/${otherLang}/`);
---
<link rel="canonical" href={`${site}${path}`} />
<link rel="alternate" hreflang={lang} href={`${site}${path}`} />
<link rel="alternate" hreflang={otherLang} href={`${site}${otherPath}`} />
<link rel="alternate" hreflang="x-default" href={`${site}${path.replace(`/${lang}/`, '/en/')}`} />
-
先翻(更好是重写)最强的 10 篇。 这 10 篇定格式、做种子。重写胜过直译——能把本地语境编进去。
-
加语言切换——切到对应同篇文章,不是切到首页:
---
const { lang, translationKey, urlSlug } = Astro.props.article.data;
const altLang = lang === 'en' ? 'zh' : 'en';
const altPath = `/${altLang}/articles/${urlSlug}/`;
---
<a href={altPath} rel="alternate" hreflang={altLang}>
{altLang === 'zh' ? '中文' : 'English'}
</a>
-
第二语言独立 Search Console property,曝光 / 点击数据要分得开。Domain property + 按语言路径的 URL-prefix property。
-
写到 30 篇第二语言时复盘。 曝光为零或平 → 暂停,标
noindex,follow:
{frontmatter.lang === 'zh' && pauseZh && (
<meta name="robots" content="noindex,follow" />
)}
执行检查清单
- 上线前 Search Console 已观察到国家级需求信号。
- URL 第一天就带语言前缀。
- hreflang 由 layout 发,不手写。
- 切换器同文章 ↔ 同文章,不是回首页。
- 两种语言各自独立 Search Console property。
上线后验证
- EN 文章 URL Inspection 显示 ZH 是 “alternate page with proper canonical tag”,反之亦然。
- 两种语言的 coverage 独立增长。
- 跨语言对没有 “Duplicate, Google chose different canonical”。
容易踩的坑
- 主语言才 30 篇就上双语,两边都还没扎根就一起放弃。
- 用模型自动翻译直接发——质量太差 Google 也认得出。
- 语言切换器只跳首页,读者期待对应文章却跳走了,跳出率飙升。
- 忘了 hub 和分类名也要两边一致翻译。
- 把第二语言当翻译项目而不是写作项目,文化层面的重写通常更有效。
FAQ
- 第二语言会不会抢主语言流量: 只有 hreflang 配错才会。配对了,两种语言面对不同 SERP,不互相抢。
- 该用翻译服务还是自己写第二语言: 能自己写就自己写或重写。翻译稿读起来都很平,排名也差。
- 为了 AdSense 收入值得做双语吗: 只为 AdSense 通常不值。要么为总触达、品牌,要么是另一市场的产品或联盟变现更高。
- 之后还能切回单语言吗: 可以——把放弃的那一侧 noindex,能映射的 URL 做 301,避免硬删。
- 第二语言 30 篇后流量不增长怎么办?: 要么主题不可翻译,要么再等几个月。再观察 60 天,若仍平就暂停。