Maison  >  Article  >  développement back-end  >  PHP - réalisez le changement automatique de plusieurs langues

PHP - réalisez le changement automatique de plusieurs langues

韦小宝
韦小宝original
2017-12-01 09:16:1010340parcourir

Je pense que de nombreux étudiants ont parcouru de nombreux sites Web de commutation multilingue et les trouvent très bons. Aujourd'hui, l'éditeur vous propose un article sur l'utilisation de PHP pour effectuer une commutation multilingue automatique. introduire. Je pense que beaucoup d'étudiants ne savent pas que PHP peut également changer de langue, alors voyons comment PHP l'implémente !

1. Ajoutez la configuration suivante dans config.php de Home (le nom du projet que vous avez choisi)

<?php  
return array(  
    //&#39;配置项&#39;=>&#39;配置值&#39;  
        &#39;LANG_SWITCH_ON&#39;     =>     true,    //开启语言包功能          
        &#39;LANG_AUTO_DETECT&#39;     =>     true, // 自动侦测语言  
        &#39;DEFAULT_LANG&#39;         =>     &#39;zh-cn&#39;, // 默认语言          
        &#39;LANG_LIST&#39;            =>    &#39;en-us,zh-cn,zh-tw&#39;, //必须写可允许的语言列表  
        &#39;VAR_LANGUAGE&#39;     => &#39;l&#39;, // 默认语言切换变量  
);  
?>

2. Ajoutez un fichier php (tag.php) dans le dossier conf de Home et ajoutez le code suivant :

return array(  
    // 添加下面一行定义即可  
    &#39;app_begin&#39; => array(&#39;CheckLang&#39;)  
);

3. Copiez le fichier Extend/Behavior/CheckLangBehavior.class.php dans Home/lib/Behavior/ (seule la version complète du package thinkphp est disponible, sinon, veuillez le créer vous-même)

Code CheckLangBehavior.class.php :

<?php  
defined(&#39;THINK_PATH&#39;) or exit();  
/** 
 * 语言检测 并自动加载语言包 
 * @category   Extend 
 * @package  Extend 
 * @subpackage  Behavior 
 */  
class CheckLangBehavior extends Behavior {  
    // 行为参数定义(默认值) 可在项目配置中覆盖  
    protected $options   =  array(  
            &#39;LANG_SWITCH_ON&#39;        => false,   // 默认关闭语言包功能  
            &#39;LANG_AUTO_DETECT&#39;      => true,   // 自动侦测语言 开启多语言功能后有效  
            &#39;LANG_LIST&#39;             => &#39;zh-cn&#39;, // 允许切换的语言列表 用逗号分隔  
            &#39;VAR_LANGUAGE&#39;          => &#39;l&#39;,        // 默认语言切换变量  
        );  
    // 行为扩展的执行入口必须是run  
    public function run(&$params){  
        // 开启静态缓存  
        $this->checkLanguage();  
    }  
    /** 
     * 语言检查 
     * 检查浏览器支持语言,并自动加载语言包 
     * @access private 
     * @return void 
     */  
    private function checkLanguage() {  
        // 不开启语言包功能,仅仅加载框架语言文件直接返回  
        if (!C(&#39;LANG_SWITCH_ON&#39;)){  
            return;  
        }  
        $langSet = C(&#39;DEFAULT_LANG&#39;);  
        // 启用了语言包功能  
        // 根据是否启用自动侦测设置获取语言选择  
        if (C(&#39;LANG_AUTO_DETECT&#39;)){  
            if(isset($_GET[C(&#39;VAR_LANGUAGE&#39;)])){  
                $langSet = $_GET[C(&#39;VAR_LANGUAGE&#39;)];// url中设置了语言变量  
                cookie(&#39;think_language&#39;,$langSet,3600);  
            }elseif(cookie(&#39;think_language&#39;)){// 获取上次用户的选择  
                $langSet = cookie(&#39;think_language&#39;);  
            }elseif(isset($_SERVER[&#39;HTTP_ACCEPT_LANGUAGE&#39;])){// 自动侦测浏览器语言  
                preg_match(&#39;/^([a-z\d\-]+)/i&#39;, $_SERVER[&#39;HTTP_ACCEPT_LANGUAGE&#39;], $matches);  
                $langSet = $matches[1];  
                cookie(&#39;think_language&#39;,$langSet,3600);  
            }  
            if(false === stripos(C(&#39;LANG_LIST&#39;),$langSet)) { // 非法语言参数  
                $langSet = C(&#39;DEFAULT_LANG&#39;);  
            }  
        }  
        // 定义当前语言  
        define(&#39;LANG_SET&#39;,strtolower($langSet));  
        $group = &#39;&#39;;  
        $path    =   (defined(&#39;GROUP_NAME&#39;) && C(&#39;APP_GROUP_MODE&#39;)==1) ? BASE_LIB_PATH.&#39;Lang/&#39;.LANG_SET.&#39;/&#39; : LANG_PATH.LANG_SET.&#39;/&#39;;  
        // 读取项目公共语言包  
        if(is_file(LANG_PATH.LANG_SET.&#39;/common.php&#39;))  
            L(include LANG_PATH.LANG_SET.&#39;/common.php&#39;);       
        // 读取分组公共语言包  
        if(defined(&#39;GROUP_NAME&#39;)){  
            if(C(&#39;APP_GROUP_MODE&#39;)==1){ // 独立分组  
                $file = $path.&#39;common.php&#39;;  
            }else{ // 普通分组  
                $file = $path.GROUP_NAME.&#39;.php&#39;;  
                $group = GROUP_NAME.C(&#39;TMPL_FILE_DEPR&#39;);  
            }  
            if(is_file($file))  
                L(include $file);  
        }  
        // 读取当前模块语言包  
        if (is_file($path.$group.strtolower(MODULE_NAME).&#39;.php&#39;))  
            L(include $path.$group.strtolower(MODULE_NAME).&#39;.php&#39;);  
    }  
}

4. Créez 3 dossiers de langue sous le dossier lang dans Accueil. Ce sont zh-cn en-us zh-tw,

Créez un fichier common.php dans chacun de ces trois dossiers, comme indiqué sur la figure :

Dans common.php, écrivez

<?php  
return array(  
        &#39;welcome&#39;=>&#39;Welcome to use thinkphp&#39;,  
);  
?>
<?php  
return array(  
    &#39;welcome&#39;=>&#39;欢迎使用ThinkPHP&#39;,  
);
<?php  
return array(  
    &#39;welcome&#39;=>&#39;歡迎使用ThinkPHP&#39;,  
);  
?>

5. .html

<!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>

Terminé !

Langue de base Si vous Si vous souhaitez changer de langue, ajoutez un L avant chaque phrase, par exemple :

public function index(){  
print  L(&#39;add_user_error&#39;);  //add_user_error只是语言变量,具体的语言要到语言包里写  
$this->display();  
}

Ce qui précède est tout le contenu de cet article. Vous pouvez le modifier en fonction de vos besoins. utile. Les étudiants apportent de l’aide.

Recommandations associées :

Méthode simple php pour implémenter le changement de langue php, changement de langue php

Comment mettre en œuvre le paiement et le remboursement de l'applet WeChat en php

Commutation multilingue php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Méthode de crackage PHPstormArticle suivant:Méthode de crackage PHPstorm