🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
:-: 自定义语言 ## 语言功能基础使用 在任意想要使用的地方 **示例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; } } ```