A Chinese-primary site is not English hidden away
Common bilingual SEO failures: bad self-canonicals, one-way hreflang, unequal content labeled as alternates. Correct setup starts with URL strategy and content parity—not sprinkling link tags. We keep Chinese at root, English under /en, and generate reciprocal hreflang at build time. Below: executable rules and acceptance queries. Fold this into KSX Studio discover→design→build→launch: named owner, Definition of Done, staging proof, and rollback so verbal alignment does not drift.
Reciprocity: A↔B
Each locale lists all equivalents including self. Missing return links are common GSC errors. Generate from the route table—no hand edits. Fold this into KSX discover→design→build→launch checks on staging so verbal alignment does not drop the requirement. Fold this into KSX Studio discover→design→build→launch: named owner, Definition of Done, staging proof, and rollback so verbal alignment does not drift.
Where x-default points
For Chinese-primary, x-default often points to Chinese or a chooser—match business rules. Never 404. Record the decision. Fold this into KSX discover→design→build→launch checks on staging so verbal alignment does not drop the requirement. Fold this into KSX Studio discover→design→build→launch: named owner, Definition of Done, staging proof, and rollback so verbal alignment does not drift.
Coordinate with canonicals
Each locale canonicalizes to its preferred URL—do not canonical English to Chinese unless true duplicates. Paginated/filtered URLs need separate rules. Fold this into KSX discover→design→build→launch checks on staging so verbal alignment does not drop the requirement. Fold this into KSX Studio discover→design→build→launch: named owner, Definition of Done, staging proof, and rollback so verbal alignment does not drift.
Parity without raw title MT
Hreflang assumes strong parity. Do not pair thin MT pages. Localize titles and core sections; swap proof by market. Fold this into KSX discover→design→build→launch checks on staging so verbal alignment does not drop the requirement. Fold this into KSX Studio discover→design→build→launch: named owner, Definition of Done, staging proof, and rollback so verbal alignment does not drift.
Sitemaps and HTML both
Declare hreflang in HTML head and XML sitemaps. Sample crawl after deploy. Plan CDN refresh when heads change. Fold this into KSX discover→design→build→launch checks on staging so verbal alignment does not drop the requirement. Fold this into KSX Studio discover→design→build→launch: named owner, Definition of Done, staging proof, and rollback so verbal alignment does not drift.
Acceptance and GSC
Spot-check reciprocity, x-default, no 4xx/redirect chains. Clear priority International Targeting issues in GSC. Regression when routes change. Fold this into KSX discover→design→build→launch checks on staging so verbal alignment does not drop the requirement. Fold this into KSX Studio discover→design→build→launch: named owner, Definition of Done, staging proof, and rollback so verbal alignment does not drift.
Checklist
- 1One URL locale pattern sitewide
- 2Auto-generate reciprocal hreflang
- 3Document x-default decision
- 4Correct self-canonicals per locale
- 5Sitemaps include xhtml links; sample verify
Key takeaways
- Hreflang is a generation system—not page decoration.
- Do not force alternate labels on unequal content.
- Canonicals and hreflang share one route truth.
FAQ
- Only some pages have English?
- Emit hreflang only for real equivalents—never placeholders.
- zh-CN or zh?
- zh-CN is common for Mainland Simplified; match html lang and copy—stability matters.
- Use en-US?
- Use en for generic English; regional codes only with real regional content.