苹果CMS 如何做多语言站点?

域名注册
域名注册 正式会员超兽战士 👑年卡会员
发布于 2026-10-07 03:31 ·2 浏览 ·0 回复

照着这篇做完,你能把苹果CMS V10 的后台界面切成英文,并让前台站点支持中英文切换,同时知道内容本身的多语言该怎么存、伪静态和 hreflang 该怎么配。

先说一个前提:苹果CMS V10 基于 ThinkPHP 5,它自带了语言包机制,但**这个机制默认只覆盖程序内置的提示文案,不覆盖你的视频标题、栏目名这类数据**。所以"多语言"要拆成三件事来做:后台界面语言、前台模板文案、内容数据。下面按顺序来。

第一步:确认你要的是哪种多语言,选对方案

这一步决定后面怎么走。如果你只是想让后台管理界面显示英文,走第二步就够了;如果你要让访客看到英文站,那必须走第三步加第五步。

三种常见方案,按成本从低到高:

  1. 单站 + 语言包 + 语言前缀 URL:适合栏目结构小、内容量不大的站,一套数据一份模板,只翻译模板文案。
  2. 多站点(子域或子目录)共用一套程序:最适合影视站。en.example.com 和 www.example.com 各装一份,内容用不同栏目或不同数据表前缀隔离。
  3. 多站点完全独立部署:最省心,代价是维护两份后台。

注意:不要指望给 mac_vod 表加几个 _en 字段就能搞定多语言。影视站的字段有几十个,还要处理分类、演员、播放组,改到一半基本会放弃。内容量超过 200 条就选方案 2 或 3。

第二步:切换后台界面语言

做完这步,你登录后台看到的菜单和提示会变成英文。

苹果CMS V10 的语言包放在 application/lang/ 目录下,文件名类似 zh-cn.php、en-us.php。打开 application/config.php,找到 default_lang 这一项(不同小版本键名可能是 lang_switch 或 default_language,以你本地实际文件为准),把它改成 en-us,然后在后台「系统 → 基础配置 → 站点设置」里保存一次,最后手动删掉 runtime/ 目录下的缓存文件。

如果 application/lang/en-us.php 不存在或翻译不全,就复制 zh-cn.php 改名为 en-us.php,再逐条替换右边的值,键名不要动。

注意:改完必须清 runtime/cache/ 和 runtime/log/,否则你看到的还是旧文案,会误以为没生效。

第三步:让前台模板文案可翻译

做完这步,模板里的"首页""搜索""最新更新"这类写死的字,变成了可以按语言切换的变量。

在你上一步建好的语言包文件里加键值,例如前台用的一组:

'home' => 'Home',
'search' => 'Search',
'latest' => 'Latest',
'play' => 'Play Now',

然后打开你的模板目录(默认是 template/default/,如果你用了自定义模板就是 template/你的模板名/),在 html/ 下找到对应文件,把硬编码的中文替换成:

{:lang('home')}

ThinkPHP 5 的 lang() 助手函数会自动读取当前语言包。替换完一个页面,刷新看看是否生效,再批量替换其他页面。

注意:模板里凡是带下划线前缀的 {$maccms.xxx} 变量不要去套 lang(),那些是数据库取出来的值,套了会报错。只处理写死的中文。

第四步:做语言切换入口

做完这步,访客点一下就能切换语言,并且选择会被记住。

在模板的公共头部文件(通常是 template/你的模板/html/head.html 或 public/head.html)里加两个链接:

<a href="?lang=zh-cn">中文</a>
<a href="?lang=en-us">English</a>

然后在 application/common.php 的公共初始化位置,或者在自定义的中间件里加一段判断:读取 $_GET['lang'],写入 cookie,再调用 \think\Lang::range($lang) 设置当前语言。这样点击后不只当前页生效,后续访问也跟着走。

如果你的方案是多站点,这一步可以跳过——直接让两个域名指向两套程序,语言由站点自己决定。

第五步:内容多语言与 SEO 收尾

做完这步,两个语言版本的页面能被搜索引擎正确识别,不会互相抢排名。

内容上,方案 2 的做法是:英文站新建一套栏目,或者用不同的表前缀(在 application/database.php 里改 prefix),后台分别录入。方案 3 则是两个完全独立的后台。

SEO 方面,在模板的 head 区域加 hreflang 标签:

<link rel="alternate" hreflang="zh-CN" href="https://www.example.com/" />
<link rel="alternate" hreflang="en" href="https://en.example.com/" />
<link rel="alternate" hreflang="x-default" href="https://www.example.com/" />

如果你走的是语言前缀方案,就要在「系统 → URL 配置」里把伪静态规则改成带语言段的形式,比如 /{lang}/vod/type/id/1.html,并同步修改 Nginx 的 rewrite 规则。

注意:hreflang 里的网址必须是完整绝对地址,且两个版本的页面内容不能一模一样,否则会被判为重复内容。英文站的标题和简介至少要真正翻译过。

小结

  • 苹果CMS 的语言包机制只管程序文案,管不了你的视频数据,先分清需求再选方案。
  • 后台界面切英文:改 application/config.php 的 default_lang,清 runtime/ 缓存。
  • 前台文案翻译:语言包加键值,模板里用 {:lang('键名')} 替换硬编码中文。
  • 内容多语言:内容超过 200 条就别改表结构,用子域名多站点最省事。
  • SEO 别忘了 hreflang 标签和语言前缀伪静态,两版内容要真实翻译过。
版权声明:本文来自 GJ论坛《苹果CMS 如何做多语言站点?》
原文链接:https://www.gj0.com/thread-45.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~