Heim > Backend-Entwicklung > PHP-Tutorial > PHP – Automatische Umschaltung mehrerer Sprachen realisieren

PHP – Automatische Umschaltung mehrerer Sprachen realisieren

韦小宝
Freigeben: 2023-03-17 17:14:01
Original
10450 Leute haben es durchsucht

Ich glaube, dass viele Studenten viele Websites zum Wechseln mehrerer Sprachen durchsucht haben und diese für sehr gut halten. Heute hat Ihnen der Herausgeber einen Artikel über die Verwendung von PHP für die automatische Umschaltung mehrerer Sprachen gebracht. einführen. Ich glaube, dass viele Studenten nicht wissen, dass PHP auch die Sprache wechseln kann, also schauen wir uns an, wie PHP es implementiert!

1. Fügen Sie die folgende Konfiguration in config.php von Home (den von Ihnen gewählten Projektnamen) hinzu

<?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;, // 默认语言切换变量  
);  
?>
Nach dem Login kopieren

2. Fügen Sie eine PHP-Datei (tag.php) zum conf-Ordner von Home hinzu und fügen Sie den folgenden Code hinzu:

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

3. Kopieren Sie die Datei Extend/Behavior/CheckLangBehavior.class.php nach Home/lib/Behavior/ (nur die Vollversion des thinkphp-Pakets ist verfügbar, falls nicht, erstellen Sie es bitte selbst)

CheckLangBehavior.class.php-Code:

<?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;);  
    }  
}
Nach dem Login kopieren

4. Erstellen Sie 3 Sprachordner unter dem Ordner „lang“ auf der Startseite. Sie sind zh-cn en-us zh-tw,

Erstellen Sie in jedem dieser drei Ordner eine common.php-Datei, wie in der Abbildung gezeigt:

Schreiben Sie in common.php

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

5. Erstellen Sie im Ordner tpl/Index/ Index anzeigen .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>
Nach dem Login kopieren

Fertig!

Hintergrundsprache Wenn Sie Wenn Sie die Sprache wechseln möchten, fügen Sie vor jedem Satz ein L hinzu, z. B.:

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

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass dies möglich ist hilfreich. Schüler bringen Hilfe mit.

Verwandte Empfehlungen:

Einfache PHP-Methode zur Implementierung der Mehrsprachenumschaltung, PHP-Sprachumschaltung

So implementieren Sie WeChat-Applet-Zahlung und -Rückerstattung in PHP

PHP-Mehrsprachenumschaltung

Das obige ist der detaillierte Inhalt vonPHP – Automatische Umschaltung mehrerer Sprachen realisieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage