在全球化日益盛行的今天,让您的网站内容能够以多种语言呈现,是拓展市场、服务不同地区用户的重要一步。安企CMS(AnQiCMS)作为一个高效灵活的内容管理系统,充分考虑了这一需求,提供了多种方案来帮助您轻松配置和切换多语言内容。

接下来,我们将一起探索如何在安企CMS中有效地管理和展示多语言内容。

安企CMS的多语言理念:系统与内容的区分

在安企CMS中,多语言支持主要体现在两个层面:

  1. 系统级语言包: 这主要影响后台管理界面和一些内置的系统提示信息。例如,您可以选择将后台界面显示为中文或英文。
  2. 内容级多语言: 这才是我们常说的网站内容(文章、产品、单页面等)的多语言展示。安企CMS为此提供了灵活的策略,让您可以根据实际需求,选择最适合自己的实现方式。

理解这两者之间的区别非常重要。系统语言包的切换不会自动翻译您的网站文章内容,而网站内容的多语言展示则需要您采取相应的策略进行配置和管理。

配置系统级语言包

首先,我们来看看如何配置安企CMS的系统级语言。这非常简单,只需几步即可完成:

进入安企CMS的后台管理界面后,找到左侧菜单中的“后台设置”,点击进入后选择“全局功能设置”

在这个页面中,您会看到一个名为“默认语言包”的选项。安企CMS目前内置了中文和英文两种语言包。您可以根据需要选择“中文”或“英文”。

选择并保存后,您的后台界面以及一些系统默认的提示文字(例如“首页”、“联系我们”等在模板中通过 {% tr "yourLocation" %} 标签调用的静态文本)就会切换到对应的语言。

请注意,正如前面提到的,这个设置并不会自动翻译您的文章、产品描述等动态内容,那部分需要更精细的策略来管理。

管理多语言内容:灵活的内容策略

安企CMS提供了两种主要的内容多语言管理策略,您可以根据您的业务规模、内容独立性以及运营成本来选择。

策略一:利用多站点管理实现完全独立的多语言站

对于内容独立性强、SEO策略需要高度定制,或者希望每个语言版本拥有独立域名和管理团队的场景,安企CMS的多站点管理功能是您的理想选择。

通过多站点管理,您可以为每种语言创建一个独立的安企CMS站点。例如,您可能拥有:

  • www.yourdomain.com 作为中文主站
  • en.yourdomain.comwww.yourdomain.com/en/ 作为英文子站

如何实现:

  1. 创建多个站点实例: 您可以在同一台服务器上部署多个安企CMS实例,每个实例对应一个语言版本。安企CMS支持在一台服务器上通过不同的端口运行多个实例,并通过反向代理(如Nginx、Apache、宝塔面板、1Panel等)将不同域名或子目录指向不同的实例。在安企CMS后台的“多站点管理”中,可以便捷地添加和配置这些新站点,为每个站点指定独立的数据库和根目录,确保数据互不干扰。
  2. 独立发布内容: 每个语言站点的后台可以独立发布和管理该语言的内容。例如,在英文站的后台,您只发布英文文章、英文产品信息。
  3. 模板与数据互联(可选): 尽管内容是独立的,但您可以在模板层面实现一定程度的互联互通。例如,在中文站点的某个页面上,您可能需要显示对应的英文版本链接。这时,可以利用安企CMS模板标签中的 siteId 参数来调用其他站点的数据。
    • 例如,如果您想在当前站点显示另一个站点(假设站点ID为2的英文站)的某个特定文档,可以使用:
      
      {% archiveDetail enArticle with name="Title" id="123" siteId="2" %}
      <p>对应的英文文章标题:{{ enArticle }}</p>
      
    • 同样,在前端实现语言切换时,也需要获取到所有语言站点的链接,这将在后面详细介绍。

这种方式的优势在于: 内容完全隔离,管理清晰,有利于针对不同语言市场进行独立的SEO优化和运营。

策略二:在单一站点内通过内容模型管理多语言字段

如果您的多语言内容差异不大,或者预算有限、不希望维护多个独立的CMS实例,您可以在一个安企CMS站点内部通过自定义内容模型来管理多语言内容。

如何实现:

  1. 扩展内容模型: 安企CMS提供了“灵活的内容模型”功能。您可以针对“文章”、“产品”或自定义内容模型,添加语言特定的字段。
    • 例如,在您的文章模型中,除了默认的 TitleContent 字段外,您可以新增:
      • Title_EN (英文标题)
      • Content_EN (英文内容)
      • Title_ES (西班牙语标题)
      • Content_ES (西班牙语内容)
    • 这些自定义字段可以在“内容管理”下的“内容模型”中进行配置,选择字段类型(单行文本、多行文本等),并为其命名。
  2. 内容发布时填写: 在发布文章或产品时,编辑人员需要手动填写每个语言对应的字段内容。
  3. 模板中条件显示: 在前端模板中,您可以根据当前页面选择的语言(通常通过URL参数或Cookie判断),使用 if 逻辑判断标签来显示对应语言的内容。
    • 例如,在 detail.html 详情页模板中:
      
      {% if currentLanguage == "en" %}
          <h1>{{ archive.Title_EN }}</h1>
          <div>{{ archive.Content_EN|safe }}</div>
      {% else %}
          <h1>{{ archive.Title }}</h1>
          <div>{{ archive.Content|safe }}</div>
      {% endif %}
      
    • currentLanguage 这个变量通常需要在后端进行判断并传入模板。

这种方式的优势在于: 维护成本相对较低,所有内容都在一个后台管理,便于内容编辑人员操作。但对于内容量大、语言种类多的网站,可能会导致内容模型过于复杂,管理起来不如多站点清晰。

在前端实现语言切换

无论您采用哪种策略,都需要在前端为用户提供便捷的语言切换功能。安企CMS为此提供了 languages 标签,让您能够轻松构建语言切换器和优化SEO的 hreflang 标签。

语言切换器

languages 标签可以获取所有配置的多语言站点列表(如果配置了多站点)。您可以在网站头部、底部或其他显眼位置添加语言切换按钮或下拉菜单。

”`twig {%- languages websites %}