首页 / 开发文档 / 多语言建站

多语言建站

一种语言一个地址、内容按语言分区、界面文案按语言覆盖,以及为什么语言要写在地址里。

先看效果,再决定要不要上

没配语言时,这个功能对前台没有任何影响 —— 没有多出来的前缀、没有切换器、没有 hreflang。所以可以放心地先升级到有这个功能的版本。

一条规则管住全部

内容的「语言」字段:留空 = 所有语言通用;填了 = 只属于那一种语言。

你配了什么中文站看到英文站看到
全部留空(还没开始翻译)全部全部
一条留空 + 一条标 en留空的那条两条都有
全部标了语言只有中文的只有英文的

所以「只翻了一半」不会让页面缺一块:没翻的用通用版顶上,翻了的就显示翻译版。

怎么配

  1. 后台 → 多语言,先把默认语言加进去(第一种添加的会自动成为默认语言)。
  2. 再加别的语言,填代码(en、ja)与前缀。前缀留空就用语言代码。
  3. 打开总开关。此时默认语言仍然是 /,其它语言是 /en、/ja。
  4. 去栏目 / 导航 / 内容里给每一项选语言。新建时默认跟着当前筛选的语言走。
每种语言各建一套栏目。栏目本身也有语言字段 —— 英文站的导航要指向英文栏目,否则英文导航点进去是中文列表。

页面文案怎么翻译

按语言覆盖模板,不用把所有中文抽成 key:

templates/default/header.html          ← 原版
templates/default/en/header.html       ← 只放你翻过的那几个文件

模板解析会先找 <主题>/<语言>/,找不到才用原版。 所以「想翻哪个页面就复制哪个页面」,没翻的自动继承 —— 也不必担心主题升级把翻译冲掉:你的文件在语言子目录里,与官方文件不冲突。

嫌复制麻烦的话,只需要翻译页头页脚两颗文件,导航菜单本来就在后台配。 如果你的站点连导航文案都想跟着语言变,那就要建两套导航。

为什么语言写在地址里,而不是记在 cookie

因为 SEO:语言进了 URL,每种语言就有一个稳定且唯一的地址, canonical 与 hreflang 才有意义,搜索引擎也才会分别收录。

靠 cookie 或浏览器语言猜的话,同一个地址对不同的人(和不同的爬虫)返回不同内容, 会被判成重复内容,甚至把另一种语言那一版当成正版收走。

所以用户手动切换语言时,程序做的是跳到那个语言的地址, 而不是"记住你的选择" —— 分享出去的链接自带语言,别人打开看到的就是同一个版本。

自动做了的事

  • 页面里所有站内链接自动带上当前语言的前缀(模板里写死的那些也一样), 所以不会出现"切到英文站,一点导航又跳回中文"。
  • 页头输出 hreflang 标注,多一条 x-default; canonical 按语言区分。这两样少了,搜索引擎只会收一版,另一种语言等于白翻。
  • 整页缓存按语言分开,不会把先访问的那一版发给另一边。
  • /sitemap 会把所有语言的地址都列出来(否则英文内容永远不会被发现)。
  • 后台不参与语言切换:后台列表永远显示全部语言的数据 —— 否则你建完一条英文内容,切回默认语言就再也找不到它了。

绑定独立域名(可选)

给某种语言填上域名(如 en.example.com),那个域名就代表那种语言, 地址里不再需要 /en。适合不同地区用不同域名的场合。 域名优先于前缀:命中域名时,前缀不再参与。

用独立域名时,记得把那个域名的解析与证书也配好 —— 证书由面板签发,域名要先在面板里绑定到这个站点。

关掉之后会怎样

关掉总开关只是不再对外提供多语言:前缀、切换器、hreflang 全部消失, 站点以默认语言对外。但内容分区仍然生效—— 其它语言的内容不会混进默认语言的页面里;语言定义与内容也都不会被删。 想彻底回到单语言,去各列表里把内容的语言清空即可。

没找到答案? 可以在 联系我们 留言说明使用场景,我们会补充进文档。