많은 학생들이 다국어 전환 기능이 있는 많은 웹사이트를 탐색해 보고 매우 좋다고 느꼈을 것입니다. 오늘 편집자는 자동 다국어 전환을 위해 PHP를 사용하는 기능을 소개할 것입니다. 많은 학생들이 PHP가 언어를 전환할 수도 있다는 사실을 모르고 있다고 생각합니다. 따라서 PHP가 이를 어떻게 달성하는지 살펴보겠습니다!
1. Home의 config.php(선택한 프로젝트 이름)에 다음 구성을 추가합니다.
<?php return array( //'配置项'=>'配置值' 'LANG_SWITCH_ON' => true, //开启语言包功能 'LANG_AUTO_DETECT' => true, // 自动侦测语言 'DEFAULT_LANG' => 'zh-cn', // 默认语言 'LANG_LIST' => 'en-us,zh-cn,zh-tw', //必须写可允许的语言列表 'VAR_LANGUAGE' => 'l', // 默认语言切换变量 ); ?>
2. Home의 conf 폴더에 php 파일(tag.php)을 추가합니다. 다음 코드:
return array( // 添加下面一行定义即可 'app_begin' => array('CheckLang') );
3. Extend/Behavior/CheckLangBehavior.class.php 파일을 Home/lib/Behavior/에 복사합니다(그렇지 않은 경우 전체 버전의 thinkphp 패키지만 사용할 수 있습니다). , 직접 만들어주세요)
CheckLangBehavior.class.php 코드:
<?php defined('THINK_PATH') or exit(); /** * 语言检测 并自动加载语言包 * @category Extend * @package Extend * @subpackage Behavior */ class CheckLangBehavior extends Behavior { // 行为参数定义(默认值) 可在项目配置中覆盖 protected $options = array( 'LANG_SWITCH_ON' => false, // 默认关闭语言包功能 'LANG_AUTO_DETECT' => true, // 自动侦测语言 开启多语言功能后有效 'LANG_LIST' => 'zh-cn', // 允许切换的语言列表 用逗号分隔 'VAR_LANGUAGE' => 'l', // 默认语言切换变量 ); // 行为扩展的执行入口必须是run public function run(&$params){ // 开启静态缓存 $this->checkLanguage(); } /** * 语言检查 * 检查浏览器支持语言,并自动加载语言包 * @access private * @return void */ private function checkLanguage() { // 不开启语言包功能,仅仅加载框架语言文件直接返回 if (!C('LANG_SWITCH_ON')){ return; } $langSet = C('DEFAULT_LANG'); // 启用了语言包功能 // 根据是否启用自动侦测设置获取语言选择 if (C('LANG_AUTO_DETECT')){ if(isset($_GET[C('VAR_LANGUAGE')])){ $langSet = $_GET[C('VAR_LANGUAGE')];// url中设置了语言变量 cookie('think_language',$langSet,3600); }elseif(cookie('think_language')){// 获取上次用户的选择 $langSet = cookie('think_language'); }elseif(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){// 自动侦测浏览器语言 preg_match('/^([a-z\d\-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches); $langSet = $matches[1]; cookie('think_language',$langSet,3600); } if(false === stripos(C('LANG_LIST'),$langSet)) { // 非法语言参数 $langSet = C('DEFAULT_LANG'); } } // 定义当前语言 define('LANG_SET',strtolower($langSet)); $group = ''; $path = (defined('GROUP_NAME') && C('APP_GROUP_MODE')==1) ? BASE_LIB_PATH.'Lang/'.LANG_SET.'/' : LANG_PATH.LANG_SET.'/'; // 读取项目公共语言包 if(is_file(LANG_PATH.LANG_SET.'/common.php')) L(include LANG_PATH.LANG_SET.'/common.php'); // 读取分组公共语言包 if(defined('GROUP_NAME')){ if(C('APP_GROUP_MODE')==1){ // 独立分组 $file = $path.'common.php'; }else{ // 普通分组 $file = $path.GROUP_NAME.'.php'; $group = GROUP_NAME.C('TMPL_FILE_DEPR'); } if(is_file($file)) L(include $file); } // 读取当前模块语言包 if (is_file($path.$group.strtolower(MODULE_NAME).'.php')) L(include $path.$group.strtolower(MODULE_NAME).'.php'); } }
4. 홈의 lang 폴더 아래에 언어 폴더 3개를 만듭니다. zh-cn en-us zh-tw,
그림과 같이 이 세 폴더 각각에 common.php 파일을 만듭니다.
common.php에서 그에 따라
<?php return array( 'welcome'=>'Welcome to use thinkphp', ); ?>
<?php return array( 'welcome'=>'欢迎使用ThinkPHP', );
<?php return array( 'welcome'=>'歡迎使用ThinkPHP', ); ?>
5. tpl/Index/ 폴더
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ThinkPHP示例:多语言</title> </head> <body> <div class="main"> <div>切换语言:<a href="?l=zh-cn">简体中文</a> | <a href="?l=zh-tw">繁体中文</a> | <a href="?l=en-us">英文</a></div> <div class="result">{$Think.lang.welcome}</div> </div> </body> </html>
Done!
배경 언어를 전환하려면 각 문장 앞에 L을 추가하세요. as:
public function index(){ print L('add_user_error'); //add_user_error只是语言变量,具体的语言要到语言包里写 $this->display(); }
위 내용은 모두 이 글의 내용입니다. 각자의 필요에 맞게 수정하여 사용하시길 바랍니다.
관련 추천:
php 다국어 전환을 구현하는 간단한 방법, php 언어 전환
위 내용은 PHP - 여러 언어의 자동 전환 실현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!