安企CMS在多语言内容配置方面,提供了一套高效且灵活的方案,旨在帮助我们轻松应对全球化内容推广的需求。它巧妙地将系统级的语言设置与网站内容及模板的本地化区分开来,让我们能够精细地管理不同语种的内容,确保不同语种的用户都能顺畅地浏览网站。

接下来,我们将详细了解如何在安企CMS中配置多语言内容,并确保其正常运行。

理解安企CMS的多语言机制

在安企CMS中,多语言的实现可以从两个层面来理解:

  1. 系统界面与内置文本的翻译:这主要指的是后台管理界面、系统消息等内置文本的语言。
  2. 网站内容与模板的本地化:这才是我们网站前端展示给用户看的文章、产品、页面等动态内容,以及模板中固定文本的语言。

首先,在后台的“全局功能设置”中,我们可以找到一个“默认语言包”的选项。这里通常内置了中文、英文等多种语言供我们选择。这个设置的作用是改变后台管理界面以及系统自动生成的一些内置提示信息的语言。例如,如果我们选择了“英文”,那么后台菜单、提示信息等都会显示为英文。

然而,需要特别注意的是,这个“默认语言包”的设置并不会直接影响我们网站前端的文章、产品、分类等具体内容的语言。这些动态内容的翻译需要通过一种更强大的机制来实现——即通过创建多个独立的“站点”来承载不同语种的内容。

配置多语言“站点”

为了实现网站内容的多语言展示,安企CMS采用了“多站点管理”的核心功能。这意味着,每一种语言版本,我们都可以在安企CMS中将其配置为一个独立的“站点”。这样做的好处是,每个语种站点可以拥有自己独立的域名(或子域名、子目录)、内容、模板甚至数据库,实现了高度的隔离和灵活性。

配置多语言站点的步骤如下:

  1. 域名规划与解析:在开始之前,我们需要规划好不同语言站点的域名。例如,主站是 www.yourdomain.com,英文站可以是 en.yourdomain.com,日文站可以是 ja.yourdomain.com。规划好后,需要将这些域名解析到您的服务器上。

  2. 创建新站点:登录您的安企CMS主站后台,在左侧菜单中找到“多站点管理”功能。点击“添加新站点”按钮,开始为新的语言版本创建一个独立站点。

    在弹出的新站点配置界面,您需要填写以下关键信息:

    • 站点名称:给这个语言站点起一个易于识别的名称,例如“英文站点”、“日文站点”。
    • 站点根目录:为这个新站点指定一个独立的根目录路径。这是为了让不同站点的数据和配置能够独立存储。建议以 /app/ 开头,并使用去除点号并转换为下划线的域名作为目录名,如 /app/en_yourdomain_com
    • 网站地址:填写您为这个语言站点规划好的完整访问地址,例如 http://en.yourdomain.com
    • 管理员账号/密码:为这个新站点设置独立的后台管理账号和密码。
    • 数据库名称:为了保证数据独立性,建议为每个语言站点创建一个新的数据库。同样,可以以去除点号并转换为下划线的域名作为数据库名,如 en_yourdomain_com。如果您的数据库权限足够,可以选择“复用默认数据库账号信息”,安企CMS会自动创建新数据库。
    • 选择使用的模板:您可以为每个语言站点指定不同的模板,或者使用同一套多语言兼容模板。
  3. 反向代理配置:如果您的安企CMS是使用Docker或宝塔面板等工具部署的,并且通过反向代理实现域名访问,那么新创建的站点也需要相应地配置反向代理。这通常涉及在Nginx或Apache配置文件中添加新的 server 块,将新语言站点的域名指向安企CMS的内部端口(例如8001),并配置好伪静态规则。在宝塔面板中,可以在“网站”->“反向代理”中轻松添加。

完成这些步骤后,您的新语言站点就创建并配置完成了。它将拥有独立的后台和前端访问路径。

准备多语言内容

现在,我们已经有了独立的语言站点,接下来就是填充内容了。

  1. 动态内容的本地化: 对于文章、产品、单页面等核心动态内容,您需要登录到对应语言站点的后台进行发布和管理。例如,要发布一篇英文文章,您需要登录到英文站点的后台,然后像平时一样在“内容管理”中“添加文档”,只是此时所有内容都用英文撰写。 这意味着,如果您有一个“关于我们”页面,您将需要在中文站点后台创建中文版的“关于我们”,然后在英文站点后台创建英文版的“About Us”。每个站点的“文档分类”、“内容模型”等也可以根据需要独立配置。

  2. 静态模板文本的翻译: 对于网站模板中固定的文本,例如导航菜单的“首页”、“联系我们”等,或者表单中的“提交”、“搜索”按钮文字,我们可以使用安企CMS的模板翻译功能来实现。

    • 在您的模板目录下(例如 /template/default),创建一个名为 locales 的目录。
    • locales 目录下,为每种语言创建子目录和 yml 翻译文件。例如:
      
      ./locales
      ├── en-us
      │   └── default.yml
      └── zh-cn
          └── default.yml
      
    • zh-cn/default.yml 中,您可以定义中文翻译:
      
      "home": "首页"
      "contactUs": "联系我们"
      
    • en-us/default.yml 中,您可以定义英文翻译:
      
      "home": "Home"
      "contactUs": "Contact Us"
      
    • 在模板文件中,使用 {% tr "key" %} 标签来调用翻译:
      
      <a href="/">{% tr "home" %}</a>
      <a href="/contact.html">{% tr "contactUs" %}</a>
      
      当用户访问对应语言