:-: 自定义语言
## 语言功能基础使用
在任意想要使用的地方
**示例1:默认语言或用户选择后语言 用语言别名输出**
```
echo L('username'); //输出语言别名 用户名
echo L('username',null,'item'); //输出语言语言配置 请输入你的账号
```
**示例2:默认语言或用户选择后语言 用语言名称输出**
```
echo L('用户名'); //输出语言别名 用户名
echo L('用户名',null,'请输入你的账号); //输出语言语言配置 请输入你的账号
```
**示例3:用指定语言做模板**
在开发中,如果用语言别名对于英文差的,很容易脑壳疼,可以用这种这种方式避免。
比如我们熟悉的简体中文做模板语言
```
echo L('提交','zh-Hans','提交表单'); //输出结果为 提交表单,如果默认语言更换为英文就会显示 submit Form
echo L('提交','zh-Hans'); //输出结果为 提交,如果默认语言更换为英文就会显示 submit
```
**示例3:锁定语言**
默认不锁定 其他值为锁定; 锁定后只能显示指定语言(除非输出为空默认语言替代)
```
echo L('提交','zh-Hans',null,2); //输出 提交 不管怎么切换默认语言还是 用户设置语言都显示指定的语言
//或
echo L('submit','zh-Hans',null,2); //输出 提交 不管怎么切换默认语言还是 用户设置语言都显示指定的语言
```
## 开发使用
**定义用户选择后的语言**
```
$_SESSION['LANG']['lang']='en'; //将会输出语言为英文
```
**拓展开发(语言缓存与输出)**
读取指定的语言信息(如果语言没缓存则自动缓存)
```
app::Lang('zh-Hans'); //输出为改语言的数组
```
# :-: 机翻语言
使用示例:
1.在想要显示的位置添加 语言选项
```
<select ui-jq="chosen" class="input-sm form-control" onchange="window.location = this.value;" style="width: 160px;height: 10px;">
<?php
foreach (DB('sys_language_google')->where("status='1'")->order('sort asc')->select() as $res) {
if ($_GET['glang'] == null && $res['lang'] == 'zh-CN' && $_COOKIE['googtrans']==null) {
$selected = 'selected';
} else if ($res['lang'] == $_GET['glang'] || $_COOKIE['googtrans']=='/zh-CN/'.$res['lang']) {
$selected = 'selected';
} else {
$selected = '';
}
echo '<option value="?glang=' . $res['lang'] . '" ' . $selected . '><img src="/public/min/area/CN.png" height="16" alt="中国">' . $res['name'] . '</option>';
}
?>
</select>
```
2.在底部增加JS控制
注意1:为了方便测试,正式对外使用时请采用 `//translate.google.com/`
注意2:需引入JQ与jquery.cookie.js
注意3:下面的`.cmspro.cn`改成你的顶级域名,不管使用在哪个子域名都需要填写顶级域名
```
<style>
/*解决底部拉伸的问题,注意需要同时一起移除顶部的翻译状态栏,否则状态栏会把第一行内容遮住*/
body{
top:0px!important;
min-height: 0px!important;
}
/*去除顶部的当前翻译状态栏,建议不要移出,或者通过dom+属性覆盖+cookie的方式自行实现翻译状态的管理*/
.goog-te-banner-frame{
display:none
}
/*去除翻译后鼠标移到正文的hover显示*/
.goog-tooltip {
display: none !important;
}
.goog-tooltip:hover {
display: none !important;
}
.goog-text-highlight {
background-color: transparent !important;
border: none !important;
box-shadow: none !important;
}
</style>
<script>
var index = layer.load(1, {
shade: [1, '#fff'] //0.1透明度的白色背景
});
setTimeout(function () {
layer.close(index);
}, 800);
function googleTranslateElementInit() {
new google.translate.TranslateElement({
pageLanguage: 'zh-CN',
//这个是你需要翻译的语言,比如你只需要翻译成越南和英语,这里就只写en,vi
includedLanguages: 'en,vi,zh-TW,zh-CN,ar,az,ga,et,be,bg,is,pl,fa,af,da,de,ru,fr,tl,fi,ka,gu,ht,ko,nl,gl,ca,cs,hr,la,lv,lt,ro,mt,ms,mk,bn,no,pt,ja,sv,sr,eo,sk,sl,sw,th,tr,cy,uk,iw,el,eu,es,hu,hy,it,yi,hi,kn,te,ta,ur,id,mg,ml,mn,mr,uz,my,ne,bs,sd,se,si,sn,so,gd,sq,kk,st,km,co,ky,pa,tg',
autoDisplay: false,
gaTrack: true,
layout: google.translate.TranslateElement.InlineLayout.SIMPLE
}, 'google_translate_element');
}
</script>
<?php
//判断浏览器语言 非中文用com
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 4);
if (!preg_match("/zh/i", $lang)) {
echo '<script src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>';
} else {
echo '<script src="//translate.google.cn/translate_a/element.js?cb=googleTranslateElementInit"></script>';
}
?>
```
3.程序处理写入新的语言
注意:以下为PHP代码,一般放到统一的顶部或者入口文件
```
//自定义翻译语言,原始语言 翻译成对应语言
if ($_GET['glang'] != 'zh-CN') {
setcookie("googtrans", "/zh-CN/{$_GET['glang']}");
}
//清除COOKIE
if ($_GET['glang'] != null) {
$google_lang = '/zh-CN/' . $_GET['glang'];
if ($google_lang != $_COOKIE['googtrans'] && $_COOKIE['googtrans'] != null) {
?>
<script src="/public/min/kindeditor/lib/jquery.min.js"></script>
<script src="/public/min/js/jquery.cookie.js"></script>
<script>
jQuery.removeCookie('googtrans', {path: '/'});
jQuery.removeCookie('googtrans', {domain: '.cmspro.cn'}); //注意是顶级域名
window.location.reload();
</script>
<?php
exit;
}
}
```
- 关于CMSPRO
- 安装使用
- 首次使用
- 功能使用
- 系统后台
- 系统
- 系统配置
- 开发使用
- 基础学习
- php如何修改文件创建时间
- 类方法
- 系统框架
- 系统入口框架
- URL处理
- 自动附加封装类、函数入口
- 内置应用
- GET与POST
- 字符控制
- 多语言使用
- 数据库使用
- 页面跳转
- 数组控制
- 时间相关
- 文件操作
- 获取系统设置的应用目录
- IP获取与解析
- 数据分页
- 内置插件
- 短信发送
- 信息模板
- 消息操作
- 消息操作(旧)
- 资金操作
- 优惠券
- 积分操作
- 服务器接口
- 宝塔接口
- 域名接口
- 西部数据
- whois查询
- 事件管理器
- 规则管理器
- 电子邮件
- 常用代码
- 数据获取与分页
- 模型自动构建表单
- 排版布局
- 常用样式
- 编辑表单
- tab选项卡
- JS相关
- 插件
- 钩子
- 高级进阶
- 消息和模板组合使用
- API接口
- 充值支付
- 积分充值兑换
- 短信验证码
- 邮箱验证码
- 微信消息模板
- 获取货币信息
- 获取积分信息
- 商品操作
- 信息反馈
- LayIM相关
- 自定义一级URL
- 自定义功能
- 用户中心
- 网站管理
- 模板引擎v2
- 基础学习
- 变量输出
- 使用函数
- 运算符
- 原样输出
- 模板注释
- 模板继承
- 包含文件
- 内置标签
- 循环标签
- 比较标签
- 条件判断
- 资源文件加载
- 标签嵌套
- 原生PHP
- 定义标签
- 功能应用
- 站点统计
- 数据列表
- 单条数据
- 功能动作
- 账户资金
- 账户积分
- 网站导航
- 从零使用
- 结构了解
- 基础工作
- 模板引擎v1
- 模板标签
- 导航菜单
- 获取数据列表
- 获取单条数据
- 广告以及连接
- if判断
- 判断是否登录
- 判断系统变量
- 自定义判断
- 常规判断
- 模板表单
- 高级使用
- 前后分离v1
- 通用
- 支付
- 积分
- 论坛
- 下载
- 微信
- 云服务SDK开发
- 通用请求