极致CMS外贸独立站帮助文档极致CMS外贸独立站帮助文档
首页
官网
演示站点
演示后台
首页
官网
演示站点
演示后台
  • 引言
  • 条款
  • 起步
  • 多语言建站

    • 多语言概述
    • 语言管理
    • 模板中的多语言
    • 翻译配置与语言包
  • URL与路由

    • URL规则设置
    • 自定义路由
  • 基础标签

    • 系统配置
    • 配置栏目
    • 栏目导航
    • 面包屑导航
    • 栏目列表
    • 单页
    • 文章内容页
    • 商品内容页
    • 点击量
    • 点赞
    • 收藏
    • 评论
    • 购买
    • 轮播图/幻灯片
    • 友情链接
    • 网站底部
    • 自定义字段
    • TAG
    • 内链
    • 碎片化
  • LOOP标签

    • 基本用法
    • 分页
    • 空数据
    • tid
    • like
    • notlike
    • limit
    • jzattr
    • day
    • table
    • sql
    • jzcache
    • notjz
  • Screen筛选
  • 功能标签
  • 极致模型函数
  • 导航管理
  • 相关统计
  • 邮箱配置
  • AI 模块

    • AI助手
    • 大模型管理
  • 搜索模块

    • 单模型搜索
    • 多模型搜索
    • 搜索结果页
  • 留言模块

    • 基本用法
    • 高级用法
  • 自定义模块
  • 模板制作

    • 准备工作
    • 网站栏目
    • 页面规划
    • 自定义函数
    • 模板信息
    • 客户权限
    • 桌面设置
    • 上线部署
  • 模板列表
  • 插件相关

    • 安装卸载
    • 控制器方法覆盖(简单)
    • 控制器方法钩子(高级)
    • 覆盖Common公共控制器
    • 极致CMS升级插件
    • 系统API接口插件
    • 数据库修复插件
    • 模板助手插件
    • 独立静态网站插件
    • 云储存插件
    • Excel导入导出插件
    • 后台登录安全插件
    • 屏蔽IP插件
    • 在线编辑模板插件
    • 生成多尺寸缩略图插件
    • 火车头采集Web发布插件
    • 留言发送邮箱插件
    • 留言提交安全插件
    • Skycaiji蓝天采集API接口插件
    • 多域名绑定插件
    • 极致插件示例
    • 栏目便捷工具
  • 支付相关

    • 支付配置
    • 支付宝支付
    • 微信支付
    • PayPal支付
    • Stripe支付
    • 立即支付
    • 接入第三方支付
  • 会员模块

    • 页面模板说明
    • 个人中心
    • 我的资料/修改密码
    • 我的关注
    • 我的粉丝
    • 我的投稿
    • 我的收藏
    • 我的喜欢
    • 我的评论
    • 我的钱包
    • 购买记录
    • 我的购物车
    • 订单管理
    • 消息设置
    • 公开页
    • 会员登录
    • 会员注册
    • 忘记密码
  • Windows部署
  • 宝塔一键部署
  • 伪静态配置
  • 系统架构
  • 数据字典
  • 视频教程
  • 版本更新
  • Vue & App接入

    • 验证码
    • 上传文件
    • 会员注册
    • 会员登录
    • 找回密码
    • 获取用户信息
    • 修改用户信息
    • 我的文章
    • 发布文章
    • 删除文章
    • 获取单篇文章信息
    • 我的收藏
    • 收藏/取消收藏
    • 是否收藏
    • 我的点赞
    • 点赞/取消点赞
    • 是否点赞
  • 常见问题

    • 如何判断首页,栏目页,详情页,单页?
    • 如何调用关联和相关文章内容?
    • 搜索超出设定范围如何解决?
    • 判断用户是否购买商品?
    • 判断会员分组?
    • 如何输出内容图片?
    • 如何判断自己是否适合使用极致CMS?
    • ajax数据交互,加载更多功能实现?
    • 如何实现后台录入时自定义检测重复内容的功能?
  • 附录

    • 时间格式
    • 富文本编辑器
    • 二维码生成
    • 验证码生成
    • 自定义后台主页
    • 客户端判断
    • classtypedata数据详解
    • 文章归档
    • RSS
    • 制作内容分页
    • 各种时间查询问题解决
    • 更换编辑器

模板中的多语言


本文档介绍模板制作时与多语言相关的方法:如何制作语言切换器、如何显示当前语言、如何输出翻译内容。
官方默认模板 static/trade/header.html 中有一个完整的语言切换器示例,可直接参考或复制。

语言切换器


语言列表保存在 website 表中,用 loop 标签循环输出,切换链接使用 ?lang=切换标识:

<div class="lang-switch">
    {php $now_lang = defined('LANG') ? strtolower(LANG) : (function_exists('current_lang') ? current_lang() : ''); /}
    {loop table="website" orderby="is_default desc,id asc" isshow="1" as="lv"}
    <a href="{fun get_domain()}?lang={$lv['change_lang']}" class="{if(strtolower($lv['lang'])==$now_lang)}on{/if}">{$lv['name']}</a>
    {/loop}
</div>

说明:

  • {$lv['name']}:语言显示名称(后台语言管理中填写的"国家名称")
  • {$lv['change_lang']}:切换标识,如 en-US
  • {$lv['lang']}:语言标识,如 en,用来给当前语言加高亮样式(on)
  • orderby="is_default desc,id asc":默认语言排在最前面

如果希望切换语言后仍然停留在当前页面(路径不变),可以基于当前地址追加切换参数:

{php $j = strpos(REQUEST_URI,'?')!==false ? '&' : '?'; /}
{loop table="website" orderby="is_default desc,id asc" isshow="1" as="lv"}
<a href="{fun REQUEST_URI}{$j}lang={$lv['change_lang']}">{$lv['name']}</a>
{/loop}

注意:切换语言后,页面内容(栏目、文章、配置)都会变成目标语言的版本,但当前页面路径中的栏目标识(htmlurl)各语言是相同的,所以可以停留在"同一个页面"。

多语言模式下(URL 带语言前缀),访问 {fun get_domain()}/en/ 会自动进入英文环境,再点栏目即为英文链接;两种方式可以混用。

显示当前语言


前台公共控制器为每个页面 assign 了 currentLang 变量(当前语言的完整信息,来自语言管理):

当前语言名称:{$currentLang['name']}
当前语言标识:{$currentLang['lang']}
当前切换标识:{$currentLang['change_lang']}

在 {fun} 或 {php} 中也可以直接使用函数:

{fun current_lang()}
// php 代码块中
$lang = current_lang();          // 当前语言标识,如 en
$L    = current_lang_data();     // 当前语言的完整配置(数组)

按语言输出不同内容:

{if($currentLang['lang']=='en')}
    <p>Welcome to our website!</p>
{else if($currentLang['lang']=='ja')}
    <p>ようこそ!</p>
{else}
    <p>欢迎访问我们的网站!</p>
{/if}

翻译系统固定文字(JZLANG)


模板中的按钮、提示语等固定文字使用语言包函数输出:

<a href="{fun U('login/index')}">{fun JZLANG('会员登录')}</a>
<button>{fun JZLANG('立即购买')}</button>
  • 语言包文件:app/home/lang/{语言标识}.php(前台)、app/admin/lang/{语言标识}.php(后台)
  • 语言包以"中文原文"为键:'会员登录' => 'Sign in'
  • 可在后台【多语言】→【翻译配置】中在线维护,参考:翻译配置与语言包

系统配置按语言输出


后台系统设置中,每个配置项都可以按语言单独保存一份(多语言翻译)。模板中照常输出,系统自动取当前语言的值,当前语言没有单独设置时使用默认值:

{$webconf['web_name']}
{$webconf['web_desc']}
{$webconf['web_tel']}
<img src="{$webconf['web_logo']}">

导航与栏目链接


  • 栏目、内容详情的链接($classtypedata、$v['url']、gourl() 生成的地址)由系统按当前 URL 模式自动生成,多语言模式下自带语言前缀(如 /en/news.html),模板中不需要任何处理。
  • 如果使用了后台【导航管理】制作的多套导航,模板中通过 $jznav 输出,参考:导航管理。

内容列表按语言自动切换


loop 标签输出内容列表时,系统自动读取当前语言的数据表,无需指定语言:

{loop table="article" tid="1" limit="10" as="v"}
    <a href="{$v['url']}">{$v['title']}</a>
{/loop}

中文访客看到中文列表,英文访客看到英文列表,同一套模板通用。

Last Updated:
Contributors: RMC
Prev
语言管理
Next
翻译配置与语言包