多语言网站
在相同网址上用六种语言提供页面和文章,翻译内容,并添加语言切换器。
IGC CMS 可以用多种语言提供每个页面和文章:英语(en)、中文(zh)、德语(de)、西班牙语(es)、法语(fr)和阿拉伯语(ar)。访客使用相同的网址,每个人看到的都是自己语言的版本。
如何确定访客的语言
每次请求按以下顺序,第一个适用的规则生效:
- 网址中的语言前缀 ——
/de/pricing始终显示德语。 - 访客保存的选择 —— 由网站的语言切换器设置,并记在 cookie 中。
- 浏览器的语言 —— 使用德语浏览器的首次访客会看到德语。
- 否则使用 英语。
如果某个页面没有所选语言的翻译,则显示英语版本,因此缺少翻译永远不会导致错误页面。
翻译页面
- 在编辑器中打开页面,点击工具栏中的 翻译。
- 在 添加翻译: 下选择一种语言。
- 系统会以该语言创建页面副本。打开它,替换文字,然后保存。
译本与原页面共用同一网址:/pricing 对英语访客显示英文页面,对德语访客显示德语副本。每个译本在页面列表中都是单独的一行(例如 pricing-de),编辑器中的标记会提醒你当前编辑的是哪种语言。
译本是相互独立的副本。修改英文页面不会同步过去,内容变化时请逐个更新各语言版本。
翻译文章
文章的操作相同:打开文章,找到其 翻译 部分,添加语言即可。列出文章的区块(如文章列表)会按访客的语言显示文章,没有译本时回退到英语。
添加语言切换器
给访客提供选择的方式。切换器只需保存选择并重新加载页面:
<select onchange="document.cookie='cms_locale='+this.value+';path=/;max-age=31536000';location.reload()">
<option value="en">English</option>
<option value="zh">中文</option>
<option value="de">Deutsch</option>
<option value="es">Español</option>
<option value="fr">Français</option>
<option value="ar">العربية</option>
</select>
把它放进共享布局(参见《可复用区块与模板》),让它出现在每个页面上。注意:网址中的语言前缀优先于保存的选择,因此在 /de/pricing 这样的页面上,切换器应跳转到 /pricing,而不是重新加载。也可以直接用带语言前缀的网址链接到某种语言,例如 /fr/。
翻译共享的页头和页脚
网站页头(Layout Frame 区块)和页脚(Site Footer 区块)各只有一个,由所有语言共用。其中的文字不是固定内容,而是标记,页面渲染时会按页面语言填入。标记同样适用于页面自身的内容(包括页面放进页头/页脚框架中的部分),因此一个页面可以只写一次,却以各种语言显示文字:
| 标记 | English | 中文 |
|---|---|---|
{{nav.pricing}} | Pricing | 价格 |
{{nav.login}} | Log in | 登录 |
{{footer.tagline}} | Intelligent Governance & Content Management | 智能治理与内容管理 |
链接使用 {{site.prefix}}:英语为空,其他语言为 /zh、/de 等——例如 {{site.prefix}}/pricing。
在 管理后台 → 管理 → 站点文本 中编辑这些文字:每个标记一行,每种语言一列。保存后立即生效,无需重新构建。空白单元格回退到英语,再回退到标记名本身。
要新增菜单项,只需在区块中添加一次(标签使用 {{nav.support}} 这样的标记),然后在站点文本中添加键 nav.support 并填写各语言的文字。
哪些文字算作标记
只有紧跟带点名称、再以 }} 结尾且中间没有空格的 {{ 才是标记——例如 {{nav.pricing}}。其他写法都会原样显示:{{name}}、{{ nav.pricing }}、{{ x + y }}。
原样显示形如标记的文字
如果需要在区块的 HTML 部分显示 {{nav.pricing}} 这段文字本身,请把第一个花括号写成 HTML 实体:
{{nav.pricing}}
访客看到的是 {{nav.pricing}},且不会被替换。(仅适用于区块的 HTML 部分——菜单标签等普通字段会把实体原样显示。)
用你的语言使用后台
管理后台有独立的语言设置:在后台侧边栏的语言菜单中选择。选择阿拉伯语时,后台也会切换为从右到左的布局。