GVKun编程网logo

thinkPHP多语言切换设置方法详解(thinkphp 多语言)

17

如果您想了解thinkPHP多语言切换设置方法详解的相关知识,那么本文是一篇不可错过的文章,我们将对thinkphp多语言进行全面详尽的解释,并且为您提供关于Nginx下ThinkPHP5的配置方法详

如果您想了解thinkPHP多语言切换设置方法详解的相关知识,那么本文是一篇不可错过的文章,我们将对thinkphp 多语言进行全面详尽的解释,并且为您提供关于Nginx下ThinkPHP5的配置方法详解、php简单实现多语言切换的方法,php语言切换、php简单实现多语言切换的方法,php语言切换_PHP教程、PHP编程:Thinkphp搭建包括JS多语言的多语言项目实现方法的有价值的信息。

本文目录一览:

thinkPHP多语言切换设置方法详解(thinkphp 多语言)

thinkPHP多语言切换设置方法详解(thinkphp 多语言)

本文实例讲述了thinkPHP多语言切换设置方法。分享给大家供大家参考,具体如下:

thinkPHP多语言设置有点‘高大上',为什么说它有点‘高大上'呢?因为本人设置了好久才弄好,而本人之所以弄了好久的原因,竟然是因为‘开启语言设置必须得先开启初始化系统的行为类',所以,在这里,因为本人的经验有限,姑且认为tp的多语言设置必须的先初始化tp的CheckLangBehavior.class.PHP

怎么初始化CheckLangBehavior.class.PHP呢?下面进行讲解。

tp框架下面,所有模块初始化CheckLangBehavior.class.PHP,下面截图:

路径大家应该看得懂吧,就在你的公用模块配置文件config.PHP那里新建一个tags.PHP就行了,tags.PHP的内容如下:

rush:PHP;"> array('Behavior\CheckLangBehavior'),//开启语言功能 );

上面的checkLangBehavior.class.PHP在tp的内置行为类文件夹下面,截图证明一下先:

这个类和上面那个类是不是一模一样啊?你自己可以进入tp框架的Library/Behavior的文件夹里面看看这个类是否存在,它里面的内容到底是什么,这里就不解析了。

配置好了上面的tags.PHP之后,我们就必须配置tp的配置文件config.PHP了

这个config.PHP就在上面的第一个截图中,你只要在那里添加下面的代码:

true,//开启多语言支持开关 'DEFAULT_LANG' => 'zh-cn',// 默认语言 'LANG_LIST' => 'zh-cn,en-us',// 允许切换的语言列表 用逗号分隔 'LANG_AUTO_DETECT' => true,// 自动侦测语言

配置好这个之后就是多语言的文件配置了,不多说,截图:

下面是配置en-us.PHP文件中的代码:

rush:PHP;"> 'TRAVEL','_WELLCOME_' => 'Wellcome here!',);

zh-cn.PHP文件中的代码:

rush:PHP;"> '来往','_WELLCOME_' => '欢迎来往!',);

下面是我IndexController.class.PHP的lang方法的代码:

assign('wellcome',$wellcome); $this->display(); }

这是我的IndexController.class.PHP控制器中的lang方法下面的默认模板lang.html,下面就可以做测试了,

rush:xhtml;"> Tp语言设置测试

Nginx下ThinkPHP5的配置方法详解

Nginx下ThinkPHP5的配置方法详解

《PHP实例:Nginx下ThinkPHP5的配置方法详解》要点:
本文介绍了PHP实例:Nginx下ThinkPHP5的配置方法详解,希望对您有用。如果有疑问,可以联系我们。

PHP实战本文主要给大家介绍了关于Nginx下ThinkPHP5的配置方法,分享出来供大家参考学习,下面话不多说,来一起看看详细的介绍:

PHP实战url里public目录的隐藏

PHP实战出于安全的考虑,TP5的入口文件改成放在public下了,因为这样的话能防止被恶意用户访问到“/thinkPHP/”、“/vendor/”等等这些目录下的文件.所以当你以之前的习惯将网站documentroot配置为项目根目录的时候就会需要在url后面加上/public/来访问.当然可能也会有童鞋把入口文件放回到根目录下,然后还是以之前3.x版那样的形式访问了.

PHP实战但是很显然,这么做并不是那么的科学.

PHP实战假设项目目录为“/web/wwwroot/augsky.com”,那么我们在网站的Nginx配置文件里面将root配置为:

PHP实战
root /web/wwwroot/augsky.com/public;

PHP实战但是一定要记得将open_basedir设置为上一级项目的根目录下,不然应用会没有权限调用除public目录下的其他文件,网站会报500无法访问.(open_basedir的配置默认在PHP.ini里面,但如果是多个虚拟机环境的话有可能会在各个网站的user.ini文件里,这个要根据自己的实际情况来.)具体配置如下:

PHP实战
open_basedir=/web/wwwroot/augsky.com:/tmp/:/proc/

PHP实战隐藏入口文件index.PHP:

PHP实战
location /
  {
    try_files $uri $uri/ /index.PHP?s=$uri&$args;
    #如果请求不是文件或目录,则将uri交给index.PHP处理,同时保留参数
  }

PHP实战说一下try_files:

PHP实战
try_files
语法: try_files file1 [file2 ... filen] uri
     OR
  try_files file1 [file2 ... filen] =code
默认值: 无
作用域: server location

PHP实战try_files支持多个参数,每个参数代表一个文件,系统将按顺序检查这些文件是否存在,存在就直接执行,斜线“/”结尾代表目录,若都不存在,则会重定向到最后一个参数指向的文件或者返回指定的http状态码.

PHP实战pathinfo配置

PHP实战在配置文件里面增加这一段(如果你是lnmp一键包用户,请略过这一段往下翻):

PHP实战
location ~ [^/]\.PHP(/|$) {
  set $path_info "";
  #定义变量 $real_script_name,用于存放真实地址
  set $real_script_name $fastcgi_script_name;
  #如果地址与引号内的正则表达式匹配
  if ($fastcgi_script_name ~ "^(.+?\.PHP)(/.+)$") {
  #将文件地址赋值给变量 $real_script_name
  set $real_script_name $1;
  #将文件地址后的参数赋值给变量 $path_info
  set $path_info $2;
  }
  #配置fastcgi的一些参数
  fastcgi_pass unix:/tmp/php-cgi.sock;
  fastcgi_index index.PHP;
  fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
  fastcgi_param SCRIPT_NAME $real_script_name;
  fastcgi_param PATH_INFO $path_info;
  include  fastcgi_params;
}

PHP实战上面需要说明的是fastcgi_pass的设置,这个得根据你实际的PHP版本和安装目录来设定.

PHP实战好,做完这些之后,保存,重启Nginx和PHP就能生效了.如果你是lnmp一键包用户的话不用上面这样设置,往下面看:

PHP实战lnmp一键包pathinfo的设置

PHP实战其实lnmp一键包里面的pathinfo军哥已经都写好了,我们只需要把include enable-PHP.conf;修改成include enable-PHP-pathinfo.conf;然后重启lnmp就搞定了.

PHP实战
#include enable-PHP.conf;或者,你直接注释掉这一行,在下面添加新的一行
include enable-PHP-pathinfo.conf;

PHP实战就是这样简单.下面顺便附上在url里隐藏模块的方法

PHP实战url隐藏默认模块index

PHP实战很简单,在入口文件里面定义常量BIND_MODULE为你使用的模块就好了,以默认的index为例:

PHP实战
define('BIND_MODULE','index');

PHP实战这样,在url里面不会在有模块名这一级目录了.要知道,层级少一些的url对SEO是有好处的.

PHP实战下面是Nginx里面location的匹配规则

PHP实战Nginx location的匹配规则

PHP实战location 匹配优先级

PHP实战总结

PHP实战以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对小编的支持

php简单实现多语言切换的方法,php语言切换

php简单实现多语言切换的方法,php语言切换

php简单实现多语言切换的方法,php语言切换

本文实例讲述了php简单实现多语言切换的方法。分享给大家供大家参考,具体如下:

1.主程序代码:

<&#63;php
include "lib/function.php";
&#63;>
<script src="js/language.js"></script>
<&#63;php
if(isset($_GET["language"])){
  $_SESSION["language"] = $_GET["language"];
}else{
  $_SESSION["language"] = getDefalutlanguage();
}
$language_name = getLanguageName($_SESSION["language"]);
include "lang/".$language_name.".inc";
&#63;>
<SELECT NAME="language" id="language" onchange="changeLanguage(this)">
<&#63;php
  $language_array = array_language();
  foreach($language_array as $key => $value){
    if($_SESSION["language"] == $value){
      $selected = "selected = ''selected'' ";
    }else{
      $selected = "";
    }
&#63;>
<OPTION VALUE="<&#63;php echo $value;&#63;>" <&#63;php echo $selected;&#63;>><&#63;php echo getLanguageName($value);&#63;></OPTION>;
<&#63;
  }
&#63;>
</SELECT>
<&#63;php
  if($_GET["language"] == $value){
      //$selected = "selected = ''selected'' ";
    }
echo "语言:".$_SESSION["language"];
echo "测试:".$name;
&#63;>

登录后复制

2. 所包含的语言包:English.inc

<&#63;php
$name = "name";
&#63;>
Chinese.inc
<&#63;php
$name = "名字";
&#63;>

登录后复制

3. 所包含的function.php

<&#63;php
 function getVailableLanguage() {
    $language = array(
      ''af''     => ''Afrikaans'',
      ''az''     => ''Azerbaijani'',
      ''eu''     => ''Basque'',
      ''be''     => ''Belarusian'',
      ''be-lat''   => ''Belarusian latin'',
      ''bg''     => ''Bulgarian'',
      ''bs''     => ''Bosnian'',
      ''ca''     => ''Catalan'',
      ''zh''     => ''Chinese'',
      //''zh-TW''     => ''Chinese traditional'',
      //''zh-CN''     => ''Chinese simplified'',
      ''cs''     => ''Czech'',
      ''da''     => ''Danish'',
      ''de''     => ''German'',
      ''el''     => ''Greek'',
      ''en''     => ''English'',
      ''es''     => ''Spanish'',
      ''et''     => ''Estonian'',
      ''fa''     => ''Persian'',
      ''fi''     => ''Finnish'',
      ''fr''     => ''French'',
      ''gl''     => ''Galician'',
      ''he''     => ''Hebrew'',
      ''hi''     => ''Hindi'',
      ''hr''     => ''Croatian'',
      ''hu''     => ''Hungarian'',
      ''id''     => ''Indonesian'',
      ''it''     => ''Italian'',
      ''ja''     => ''Japanese'',
      ''ko''     => ''Korean'',
      ''ka''     => ''Georgian'',
      ''lt''     => ''Lithuanian'',
      ''lv''     => ''Latvian'',
      ''mk''     => ''Macedonian'',
      ''mn''     => ''Mongolian'',
      ''ms''     => ''Malay'',
      ''nl''     => ''Dutch'',
      ''no''     => ''Norwegian'',
      ''pl''     => ''Polish'',
      ''pt-BR''    => ''Brazilian portuguese'',
      ''pt''     => ''Portuguese'',
      ''ro''     => ''Romanian'',
      ''ru''     => ''Russian'',
      ''si''     => ''Sinhala'',
      ''sk''     => ''Slovak'',
      ''sl''     => ''Slovenian'',
      ''sq''     => ''Albanian'',
      ''sr-lat''   => ''Serbian latin'',
      ''sr''     => ''Serbian'',
      ''sv''     => ''Swedish'',
      ''th''     => ''Thai'',
      ''tr''     => ''Turkish'',
      ''tt''     => ''Tatarish'',
      ''uk''     => ''Ukrainian'',
    );
    return $language;
  }
 function getLanguageName($language) {
    $languages = getVailableLanguage();
    return $languages[$language];
  }
 function array_language(){
  $array_language = array("en","zh");
  return $array_language;
 }
 function getDefalutlanguage(){
    return "zh";
 }
&#63;>

登录后复制

4.所包含的language.js

立即学习“PHP免费学习笔记(深入)”;

function changeLanguage(obj) {
  var url = document.URL;
  var re = re = /[&#63;&]language=[^&]*/;
  url = url.replace(re, "");
  if (url.indexOf("&#63;") > -1) {
    url += "&language=" + obj.value;
  } else {
    url += "&#63;language=" + obj.value;
  }
  location.href = url;
}

登录后复制

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数组(Array)操作技巧大全》、《PHP数据结构与算法教程》、《PHP数学运算技巧总结》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

php简单实现多语言切换的方法,php语言切换_PHP教程

php简单实现多语言切换的方法,php语言切换_PHP教程

php简单实现多语言切换的方法,php语言切换

本文实例讲述了php简单实现多语言切换的方法。分享给大家供大家参考,具体如下:

1.主程序代码:

<&#63;php
include "lib/function.php";
&#63;>
<script src="js/language.js"></script>
<&#63;php
if(isset($_GET["language"])){
  $_SESSION["language"] = $_GET["language"];
}else{
  $_SESSION["language"] = getDefalutlanguage();
}
$language_name = getLanguageName($_SESSION["language"]);
include "lang/".$language_name.".inc";
&#63;>
<SELECT NAME="language" id="language" onchange="changeLanguage(this)">
<&#63;php
  $language_array = array_language();
  foreach($language_array as $key => $value){
    if($_SESSION["language"] == $value){
      $selected = "selected = ''selected'' ";
    }else{
      $selected = "";
    }
&#63;>
<OPTION VALUE="<&#63;php echo $value;&#63;>" <&#63;php echo $selected;&#63;>><&#63;php echo getLanguageName($value);&#63;></OPTION>;
<&#63;
  }
&#63;>
</SELECT>
<&#63;php
  if($_GET["language"] == $value){
      //$selected = "selected = ''selected'' ";
    }
echo "语言:".$_SESSION["language"];
echo "测试:".$name;
&#63;>

登录后复制

2. 所包含的语言包:English.inc

<&#63;php
$name = "name";
&#63;>
Chinese.inc
<&#63;php
$name = "名字";
&#63;>

登录后复制

3. 所包含的function.php

<&#63;php
 function getVailableLanguage() {
    $language = array(
      ''af''     => ''Afrikaans'',
      ''az''     => ''Azerbaijani'',
      ''eu''     => ''Basque'',
      ''be''     => ''Belarusian'',
      ''be-lat''   => ''Belarusian latin'',
      ''bg''     => ''Bulgarian'',
      ''bs''     => ''Bosnian'',
      ''ca''     => ''Catalan'',
      ''zh''     => ''Chinese'',
      //''zh-TW''     => ''Chinese traditional'',
      //''zh-CN''     => ''Chinese simplified'',
      ''cs''     => ''Czech'',
      ''da''     => ''Danish'',
      ''de''     => ''German'',
      ''el''     => ''Greek'',
      ''en''     => ''English'',
      ''es''     => ''Spanish'',
      ''et''     => ''Estonian'',
      ''fa''     => ''Persian'',
      ''fi''     => ''Finnish'',
      ''fr''     => ''French'',
      ''gl''     => ''Galician'',
      ''he''     => ''Hebrew'',
      ''hi''     => ''Hindi'',
      ''hr''     => ''Croatian'',
      ''hu''     => ''Hungarian'',
      ''id''     => ''Indonesian'',
      ''it''     => ''Italian'',
      ''ja''     => ''Japanese'',
      ''ko''     => ''Korean'',
      ''ka''     => ''Georgian'',
      ''lt''     => ''Lithuanian'',
      ''lv''     => ''Latvian'',
      ''mk''     => ''Macedonian'',
      ''mn''     => ''Mongolian'',
      ''ms''     => ''Malay'',
      ''nl''     => ''Dutch'',
      ''no''     => ''Norwegian'',
      ''pl''     => ''Polish'',
      ''pt-BR''    => ''Brazilian portuguese'',
      ''pt''     => ''Portuguese'',
      ''ro''     => ''Romanian'',
      ''ru''     => ''Russian'',
      ''si''     => ''Sinhala'',
      ''sk''     => ''Slovak'',
      ''sl''     => ''Slovenian'',
      ''sq''     => ''Albanian'',
      ''sr-lat''   => ''Serbian latin'',
      ''sr''     => ''Serbian'',
      ''sv''     => ''Swedish'',
      ''th''     => ''Thai'',
      ''tr''     => ''Turkish'',
      ''tt''     => ''Tatarish'',
      ''uk''     => ''Ukrainian'',
    );
    return $language;
  }
 function getLanguageName($language) {
    $languages = getVailableLanguage();
    return $languages[$language];
  }
 function array_language(){
  $array_language = array("en","zh");
  return $array_language;
 }
 function getDefalutlanguage(){
    return "zh";
 }
&#63;>

登录后复制

4.所包含的language.js

立即学习“PHP免费学习笔记(深入)”;

function changeLanguage(obj) {
  var url = document.URL;
  var re = re = /[&#63;&]language=[^&]*/;
  url = url.replace(re, "");
  if (url.indexOf("&#63;") > -1) {
    url += "&language=" + obj.value;
  } else {
    url += "&#63;language=" + obj.value;
  }
  location.href = url;
}

登录后复制

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数组(Array)操作技巧大全》、《PHP数据结构与算法教程》、《PHP数学运算技巧总结》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1126070.htmlTechArticlephp简单实现多语言切换的方法,php语言切换 本文实例讲述了php简单实现多语言切换的方法。分享给大家供大家参考,具体如下: 1.主程序代...

PHP编程:Thinkphp搭建包括JS多语言的多语言项目实现方法

PHP编程:Thinkphp搭建包括JS多语言的多语言项目实现方法

《ThinkPHP搭建包括JS多语言的多语言项目@R_301_5655@》要点:
本文介绍了ThinkPHP搭建包括JS多语言的多语言项目@R_301_5655@,希望对您有用。如果有疑问,可以联系我们。

PHP应用本文实例讲述了ThinkPHP搭建包括JS多语言的多语言项目实现办法.分享给大家供大家参考.具体实现办法如下:

一、问题:

项目需要开发英文版,于是需要搭建多语言项目.

项目使用ThinkPHP框架,隐约记得ThinkPHP有多语言设置,翻看了赞助手册,果然有,这就边实验边开始:

二、实现办法:

ThinkPHP采用app_begain来检测和切换语言包,语言包和项目相关,构架等都比较简单,具体的这里:http://www.thinkPHP.cn/info/188.html

搭建好了,就可以使用URL."?l=en-us"来动态切换和调试,很不错的.

这边发现js内的多语言不好处理,总不能全部assign过去,反正多语言也不会总是配置,干脆自动生成对应的多语言js文件,然后页面根据LANG_SET来动态哀求对应的多语言文件,在基础Action类的_initialize()方法内调用下面的生成函数:

代码如下:
public function _generateJsLanguageFile(){ 
        if(C("LANG_SWITCH_ON")){ 
            $jsLangFilePath = "./Public/v2/js/lang"; 
            $langList = L(); 
            $jsLangFileName = $jsLangFilePath."/".LANG_SET.".js"; 
            //@unlink($jsLangFileName);//测试,不永久缓存语言包 
            //已存在语言包 
            if(is_file($jsLangFileName)){ 
                return; 
            } 
            $str = "var \$LANG={";
            $total = count($langList);
            $k = 1;
            foreach ($langList as $key => $value) {
                $str .=$key.":'".$value."'";
                if($k < $total){
                    $str .=",";
                }
                // $str .="\r\n";
                $k++;
            }
            if(!emptyempty($str)){
                $str .= "}";
                $file_handel = fopen($jsLangFileName,"w+");//打开文件,重写模式
                fwrite($file_handel,$str);
                fclose($file_handel);
            }
        }
}
这样,每次拜访前都会生成当前的语言包,然后在Tpl内调用.

这样,每次都会自动载入,这个js是永久缓存的,如果有语言包的更改,只需要修改ThinkPHP的语言包,然后删除旧的js语言包,让他自动重新生成.

js内就可以这么使用:top10_title = $LANG._NEW_LANGUAGE;这样整个项目就等于是双语的,并且是一处配置即可.

希望本文所述对大家的ThinkPHP框架程序设计有所赞助.

欢迎参与《ThinkPHP搭建包括JS多语言的多语言项目@R_301_5655@》讨论,分享您的想法,小编 jb51.cc为您提供专业教程。

今天关于thinkPHP多语言切换设置方法详解thinkphp 多语言的介绍到此结束,谢谢您的阅读,有关Nginx下ThinkPHP5的配置方法详解、php简单实现多语言切换的方法,php语言切换、php简单实现多语言切换的方法,php语言切换_PHP教程、PHP编程:Thinkphp搭建包括JS多语言的多语言项目实现方法等更多相关知识的信息可以在本站进行查询。

本文标签: