thinkphp5多语言切换,大神们帮帮忙!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkphp5多语言切换,大神们帮帮忙!相关的知识,希望对你有一定的参考价值。
thinkphp5多语言切换,大神们帮帮忙!Lang::setAllowLangList(['zh-cn','en-us']);这段代码放哪里的的?
tp自带配置里面有设置语言,所以你这个应该是单独为某个页面设置语言
应该是在控制器下,为当前页面做修改语言 参考技术A 放在common.php中
Thinkphp3.2.3多语言翻译以及使用百度翻译
一、Thinkphp多语言翻译
首先在Common/conf/config.php文件中写入如下内容:
<?php return array( //‘配置项‘=>‘配置值‘ //语言包配置 ‘LANG_SWITCH_ON‘ => true, // 开启语言包功能 ‘LANG_AUTO_DETECT‘ => true, // 自动侦测语言 开启多语言功能后有效 ‘LANG_LIST‘ => ‘zh-cn,en-us,zh-tw‘, //必须写可允许的语言列表 ‘VAR_LANGUAGE‘ => ‘l‘, // 默认语言切换变量 ); ?>
然后在Common/conf文件夹下新建一个tags.php文件,写入内容:
<?php /** * 语言包配置文件 */ return array( // 添加下面一行定义即可 ‘app_begin‘ => array(‘Behavior\CheckLangBehavior‘), ); ?>
当然还要写入自己的语言包文件,在Think/Lang/下面有四个语言包文件,你可以在这四个或新建语言包文都可以,或者你在模块下面新建一个Lang文件夹,比如Home/Lang,在下面新增zh-cn.php,en-us.php等等语言包文件。简体中文语言包可以这样写如下:
<?php /** * 简体中文语言包 */ return array( ‘_Login‘ => "登录", );
英文语言包可以这样写如下:
<?php /** * 英文语言包 */ return array( ‘_Login‘ => "Login", );
然后随便在一个页面,写入如下内容:
{$Think.lang._Login}
最后在浏览器访问该页面,即可看到,比如在地址栏输入如下URL:
http://localhost/index.php?l=zh-cn http://localhost/index.php?l=en-us
这样就可以看到中英文切换了,大家可以自己试一试。
二、使用百度翻译
我这里说的百度翻译并不是在http://fanyi.baidu.com/这个网址中输入内容点击翻译这样的,这里我是以代码的形式利用CURL进行翻译的。
翻译文件放在/Home/Common/function.php中,内容如下:
<?php class Translate { /** * 支持的语种 * @var ArrayAccess */ static $Lang = Array ( ‘auto‘ => ‘自动检测‘, ‘en‘ => ‘英语‘, ‘zh‘ => ‘中文‘, ‘cht‘ => ‘中文繁体‘, ); /** * 获取支持的语种 * @return array 返回支持的语种 */ static function getLang() { return self::$Lang; } /** * 执行文本翻译 * @param string $text 要翻译的文本 * @param string $from 原语言语种 默认:中文 * @param string $to 目标语种 默认:英文 * @return boolean string 翻译失败:false 翻译成功:翻译结果 */ static function exec($text, $from = ‘zh‘, $to = ‘en‘) { $url = "http://fanyi.baidu.com/v2transapi"; $data = array ( ‘from‘ => $from, ‘to‘ => $to, ‘query‘ => $text ); $data = http_build_query ( $data ); $ch = curl_init (); curl_setopt ( $ch, CURLOPT_URL, $url ); curl_setopt ( $ch, CURLOPT_REFERER, "http://fanyi.baidu.com" ); curl_setopt ( $ch, CURLOPT_USERAGENT, ‘Mozilla/5.0 (Windows NT 6.1; rv:37.0) Gecko/20100101 Firefox/37.0‘ ); curl_setopt ( $ch, CURLOPT_HEADER, 0 ); curl_setopt ( $ch, CURLOPT_POST, 1 ); curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data ); curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt ( $ch, CURLOPT_TIMEOUT, 5 ); $result = curl_exec ( $ch ); curl_close ( $ch ); $result = json_decode ( $result, true ); // 出错状态码 999 if ($result [‘error‘]) { return false; } return $result [‘trans_result‘] [‘data‘] [‘0‘] [‘dst‘]; } } ?>
大家可以根据自己的需求对其进行修改。
echo Translate::exec ( "大家好","zh",“en”); //这里输出是:Hello everyone
这样就翻译成功了。
本文出自 “高万耀” 博客,请务必保留此出处http://gaowanyao.blog.51cto.com/11272977/1951473
以上是关于thinkphp5多语言切换,大神们帮帮忙!的主要内容,如果未能解决你的问题,请参考以下文章