AnQiCMS 提供了强大的多语言支持功能,帮助我们将网站内容轻松地推广到全球用户。然而,要让多语言内容正确切换和显示,我们需要理解 AnQiCMS 在这方面的设计思路,并通过几个关键步骤进行配置和管理。它主要通过结合“多站点管理”来实现不同语言版本的独立内容,同时提供“默认语言包”和“翻译标签”来处理系统内置文本和模板中的静态文本。
理解 AnQiCMS 的多语言机制
首先,我们需要明确 AnQiCMS 对“多语言”的定义和处理方式。对于用户发布的核心内容(如文章、产品、单页面等),AnQiCMS 倾向于采用多站点模式。这意味着,如果您想为您的中文文章提供一个英文翻译版本,通常的做法是在一个专门的英文站点上创建或翻译这篇文章。这种设计的好处在于,每个语言版本的网站可以拥有独立的域名、独立的模板样式、独立的内容和 SEO 策略,提供了最大的灵活性和可管理性。
与此同时,AnQiCMS 也提供了针对系统内置文本(如后台界面提示、默认消息)和模板中硬编码的静态文本(如导航菜单项、页脚版权信息中的“联系我们”等)的翻译机制。这使得即使是单个网站,也可以在保持核心内容不变的情况下,切换这些辅助性文本的显示语言。
综合来看,AnQiCMS 的多语言支持可以分解为以下几个主要配置环节:
1. 规划和搭建多语言站点架构
正如前面提到的,对于不同语言版本的内容主体(例如,一篇中文产品介绍和对应的英文产品介绍),AnQiCMS 最推荐的做法是为每种语言设置一个独立的站点。
想象一下,您有一个主站 yourcompany.com 运营中文内容,那么您可能需要创建一个新的站点 en.yourcompany.com 来承载您的英文内容。在 AnQiCMS 的“多站点管理”功能中,您可以轻松添加和配置这些新站点。每个站点都将拥有独立的数据库、文件存储和后台管理入口,但它们都由同一个 AnQiCMS 实例高效管理。
在创建新站点时,您需要为每个语言站点指定一个唯一的域名或子域名,并为其配置数据库和后台管理员账号。随后,您可以在每个语言站点的后台独立发布和管理该语言下的所有文章、产品、页面等内容。
2. 配置系统默认语言包
这一步主要是为了管理 AnQiCMS 后台界面以及网站前端某些由系统生成或内置的文本显示语言。
在 AnQiCMS 后台,进入“后台设置”下的“全局功能设置”页面,您会看到一个“默认语言包”的选项。这里内置了中文和英文等多种语言供选择。当您为一个站点选择并保存了特定的语言包后,该站点的后台管理界面以及一些系统默认显示的文本(例如,如果您的模板直接调用了系统内置的“上一篇”、“下一篇”导航文本)将根据所选语言显示。
重要的是要记住,这个设置并不会自动翻译您在后台发布的文章、产品或页面的具体内容。它主要影响的是系统层面的语言显示。
3. 模板中的静态文本翻译
许多网站模板中包含了一些固定不变的文本,比如“首页”、“关于我们”、“联系我们”、“隐私政策”等。这些文本通常不是由后台内容管理系统动态生成的,而是直接写在模板文件(.html 文件)里的。为了让这些静态文本也能根据当前站点的语言设置进行切换,AnQiCMS 引入了“翻译标签”和 locales 目录。
您需要在您的模板文件夹内创建一个 locales 目录。在这个目录下,为每种目标语言创建一个子文件夹,文件夹名称应对应语言代码(例如 zh-cn 代表简体中文,en-us 代表美式英语,ja 代表日语等)。在每个语言子文件夹内,创建一个 default.yml 文件。
例如,对于一个支持中英双语的网站:
/template/您的模板名/locales/zh-cn/default.yml"yourLocation": "您的位置" "contactUs": "联系我们"/template/您的模板名/locales/en-us/default.yml"yourLocation": "Your Location" "contactUs": "Contact Us"
在您的模板文件中,您就可以使用 {% tr "键名" %} 标签来引用这些翻译文本。例如,将 <div>联系我们</div> 改为 <div>{% tr "contactUs" %}</div>。当访问对应语言的站点时,系统会根据该站点的“默认语言包”设置,自动从相应的 default.yml 文件中加载并显示正确的翻译文本。
4. 实现前端语言切换功能
为了让用户能够在不同语言站点之间进行切换,您需要在网站前端提供一个语言切换器。AnQiCMS 提供了 {% languages websites %} 标签来帮助您实现这一功能。
这个标签会获取所有在多站点管理中配置为多语言的站点列表。您可以在模板中遍历这个列表,为每个语言站点生成一个链接,用户点击这些链接就可以跳转到对应语言的网站。
例如,在您的模板文件(通常是页眉或页脚的公共部分)中,可以这样使用:
{% languages websites %}
{% if websites %}
<div>
<span>切换语言:</span>
{% for item in websites %}
<a href="{{item.Link}}">
{% if item.LanguageIcon %}
<img src="{{item.LanguageIcon}}" alt="{{item.LanguageName}}" />
{% else %}
{{item.LanguageEmoji}} <!-- 如果没有图标,可以显示语言对应的 Emoji 符号 -->
{% endif %}
{{item.LanguageName}}
</a>
{% endfor %}
</div>
{% endif %}
{% endlanguages %}
除了展示语言切换链接,别忘了为 SEO 优化添加 hreflang 标签。这能帮助搜索引擎理解您的网站内容提供了不同语言或地区版本,避免重复内容问题,并确保用户能访问到最适合其语言和地区的页面。您可以在 <head> 区域添加类似以下的代码:
{% languages websites %}
{% for item in websites %}
<link rel="alternate" href="{{item.Link}}" hreflang="{{item.Language}}">
{% endfor %}
{% endlanguages %}
这里 item.Link 会指向您各个语言站点的网址,item.Language 则会是对应的语言代码(例如 en-us, zh-cn)。
总结
AnQiCMS 的多语言支持策略是其企业级定位的重要体现。它通过灵活的多站点管理来隔离和管理不同语言版本的内容,同时提供细致入微的系统语言包和模板翻译机制来处理辅助性文本。结合 {% languages %} 标签实现前端切换和 hreflang 标签进行 SEO 优化,您就能构建一个功能强大、对全球用户友好的多语言网站。
常见问题 (FAQ)
1. AnQiCMS 会自动翻译我的文章或产品内容吗? 不会。AnQiCMS 采用“内容隔离”的多站点管理模式来处理不同语言版本的核心内容。这意味着您需要为每种语言维护一个独立的站点,并在这些站点上分别创建、上传或翻译您的文章、产品描述等内容。系统不会自动进行内容翻译。
2. 如果我只运行一个网站,但想让某些固定文本(如页脚的版权声明、导航链接)支持多语言切换,可以实现吗?
可以的。在这种情况下,您可以不使用多站点功能来区分内容主体,但仍然可以利用“配置系统默认语言包”和“模板中的静态文本翻译”这两项功能。您可以在您的模板中配置 locales 目录和 {% tr %} 标签来翻译静态文本。至于语言切换,您可以通过 {% languages websites %} 标签创建一个指向自身不同语言路径的链接,或者手动控制链接逻辑,但请注意,此时切换的只是模板中的静态文本和系统内置文本,而您在后台发布的文章内容仍然会保持原语言不变。
**3. 如何在模板中判断当前页面显示的是哪种