文件内容:

/include/language.php

  1. <?php
  2. $languages = array ();
  3. $languages ['zh-cn'] ["name"] = "china";
  4. $languages ["zh-cn"] ["image"] = "flag1.jpg";
  5. $languages ["en"] ["name"] = "english";
  6. $languages ["en"] ["image"] = "flag2.jpg";
  7. class Language {
  8. public $language_area;
  9. public $language_country;
  10. public $language_dir;
  11. public $dir;
  12. public function __construct() {
  13. $this->dir = str_replace ( "\\", "/", dirname ( __FILE__ ) ) . "/language/";
  14. $this->initDefaultLanguage ();
  15. if (empty ( $this->language_country ) && ! empty ( $this->language_area )) {
  16. $this->language_country = substr ( $this->language_area, 0, strpos ( $this->language_area, "-" ) );
  17. }
  18. $this->initLanguageDir ();
  19. }
  20. /*
  21. 取得语言文件的绝对路径
  22. */
  23. public function getFileDir($file) {
  24. $dir = $this->dir;
  25. if (file_exists ( $this->getLanguageDir () . $file )) {
  26. return $this->getLanguageDir () . $file;
  27. } else if (file_exists ( $dir . $this->language_area . "/" . $file )) {
  28. return $dir . $this->language_area . "/" . $file;
  29. } else if (file_exists ( $dir . $this->language_country . "/" . $file )) {
  30. return $dir . $this->language_country . "/" . $file;
  31. } else if (file_exists ( $dir . "en/" . $file )) {
  32. return $dir . "en/" . $file;
  33. } else {
  34. return false;
  35. }
  36. }
  37. /*
  38. 取得当前使用语言的文件夹
  39. */
  40. public function getLanguageDir() {
  41. return $this->language_dir;
  42. }
  43. /*
  44. 初始化语言文件夹
  45. */
  46. private function initLanguageDir() {
  47. $dir = $this->dir;
  48. if (file_exists ( $dir . $this->language_area ) && ! empty ( $this->language_area )) {
  49. $this->language_dir = $dir . $this->language_area . "/";
  50. } else if (file_exists ( $dir . $this->language_country ) && ! empty ( $this->language_country )) {
  51. $this->language_dir = $dir . $this->language_country . "/";
  52. } else {
  53. $this->language_dir = $dir . "en/";
  54. }
  55. }
  56. /*
  57. 初始化默认语言
  58. */
  59. public function initDefaultLanguage() {
  60. if ($this->getCookieLanguage ()) {
  61. return;
  62. }
  63. $language = $_SERVER ['HTTP_ACCEPT_LANGUAGE'];
  64. preg_match_all ( "/[\w-]+/", $language, $language );
  65. $this->language_area = $language [0] [0];
  66. @$this->language_country = $language [0] [1];
  67. $this->setCookieLanguage ();
  68. }
  69. /*
  70. 从cookie中导入语言种类
  71. */
  72. public function getCookieLanguage() {
  73. if (! @empty ( $_COOKIE ['lang'] )) {
  74. $language = $_COOKIE ['lang'];
  75. if (strpos ( $language, "-" )) {
  76. $this->language_area = $language;
  77. } else {
  78. $this->language_country = $language;
  79. }
  80. return true;
  81. }
  82. return false;
  83. }
  84. /*
  85. 把当前的语言种类放到cookie中
  86. */
  87. public function setCookieLanguage($lang = "") {
  88. if (empty ( $lang )) {
  89. $lang = $this->language_area;
  90. }
  91. if (empty ( $lang )) {
  92. $lang = $this->language_country;
  93. }
  94. if (empty ( $lang )) {
  95. return false;
  96. }
  97. setcookie ( "lang", $lang, time () + 365 * 24 * 3600, "/", $this->getDomain () );
  98. return true;
  99. }
  100. public function getDomain() {
  101. if (empty ( $this->domain )) {
  102. $domain = $_SERVER ['SERVER_NAME'];
  103. if (strcasecmp ( $domain, "localhost" ) === 0) {
  104. $this->domain = $domain;
  105. return $this->domain;
  106. }
  107. if (preg_match ( "/^(\d+\.){3}\d+$/", $domain, $domain_temp )) {
  108. $this->domain = $domain_temp [0];
  109. return $this->domain;
  110. }
  111. preg_match_all ( "/\w+\.\w+$/", $domain, $domain );
  112. $this->domain = $domain [0] [0];
  113. return $this->domain;
  114. } else {
  115. return $this->domain;
  116. }
  117. }
  118. }
  119. ?>

/include/language/zh-cn/language.php

  1. <?php
  2. $language_message["china"]="中文";
  3. $language_message["english"]="英文";
  4. ?>

/include/language/en/language.php

  1. <?php
  2. $language_message["china"]="china";
  3. $language_message["english"]="english";
  4. ?>

/chang_language.php

  1. <?php
  2. include_once 'header.php';
  3. include_once 'header.tpl';
  4. $language_file=$lang->getFileDir("language.php");
  5. include($language_file);
  6. ?>
  7. <script language="javascript">
  8. var domain="<?php echo $lang->getDomain();?>";
  9. var cur_language="<?php echo $current_language;?>";
  10. function change_language(lan)
  11. {
  12. alert("lan");
  13. setCookie("lang",lan,1,"/",domain,false);
  14. if(cur_language==lan)
  15. {
  16. return ;
  17. }
  18. <?php if(!$_POST){ ?>
  19. document.location.reload();
  20. <?php } ?>
  21. }
  22. // writeCookie("myCookie", "my name", 24);
  23. // Stores the string "my name" in the cookie "myCookie" which expires after 24 hours.
  24. function setCookie( name, value, expires, path, domain, secure ) {
  25. var today = new Date();
  26. today.setTime( today.getTime() );
  27. if ( expires ) {
  28. expires = expires * 1000 * 60 * 60 * 24;
  29. }
  30. var expires_date = new Date( today.getTime() + (expires) );
  31. document.cookie = name+'='+escape( value ) +
  32. ( ( expires ) ? ';expires='+expires_date.toGMTString() : '' ) + //expires.toGMTString()
  33. ( ( path ) ? ';path=' + path : '' ) +
  34. ( ( domain ) ? ';domain=' + domain : '' ) +
  35. ( ( secure ) ? ';secure' : '' );
  36. }
  37. </script>
  38. <ul>
  39. <?php
  40. foreach($languages as $key=>$value)
  41. {
  42. echo '<li><a href="javascript://" onclick="change_language(\'',$key,'\')"';
  43. echo '>',$language_message[$languages[$key]["name"]],' <img src="data:images/',$languages[$key]["image"],'" border="0"/></a></li>';
  44. }
  45. ?>
  46. </ul>

/header.php

  1. <?php
  2. include_once (dirname ( __FILE__ ) . "/include/language.php");
  3. $lang = new Language ( );
  4. //print_r($lang->language_area);
  5. $current_language = getCurrentLanguage ();
  6. //print_r($current_language);
  7. function getCurrentLanguage() {
  8. global $lang, $languages;
  9. if (array_key_exists ( $lang->language_area, $languages )) {
  10. return $lang->language_area;
  11. } else if (array_key_exists ( $lang->language_country, $languages )) {
  12. return $lang->language_country;
  13. } else {
  14. return "en";
  15. }
  16. }
  17. ?>

/header.tpl

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>多语言测试</title>
  6. <link href="css/css.css" rel="stylesheet" type="text/css" />
  7. <script type="text/javascript" src="javascript/prototype_1_6.js"></script>
  8. </head>

/test_language.php

  1. <?php
  2. include_once 'header.php';
  3. include_once 'header.tpl';
  4. $language_file = $lang->getFileDir ( "speak_language.php" );
  5. require_once ($language_file);
  6. print_r($speak_language_message);
  7. ?>

php多语言切换---转载的更多相关文章

  1. vue中实现国际化--语言切换(转载)

    https://segmentfault.com/a/1190000011800593

  2. vue 国际化i18n 多语言切换

    安装 npm install vue-i18n 新建一个文件夹 i18n ,内新建 en.js zh.js index.js 三个文件 准备翻译信息 en.js export default { ho ...

  3. vue-i18n vue-cli项目中实现国际化 多语言切换功能 一

    vue-cli项目中引入vue-i18n 安装: npm install vue-i18n可参考vue-i18n官网文档 main.js中引入: import Vue from 'vue' impor ...

  4. 动态语言切换(续)-designer中的retranslateUi(带源码)

    本站所有文章由本站和原作者保留一切权力,仅在保留本版权信息.原文链接.原文作者的情况下允许转载,转载请勿删改原文内容, 并不得用于商业用途. 谢谢合作.原文链接:动态语言切换(续)-designer中 ...

  5. DataGrid 列头实现国际化语言切换

    <DataGrid> <DataGrid.Columns> <DataGridTextColumn Binding="{x:Null}" Width= ...

  6. Android app应用多语言切换功能实现

    最近在做一个多语言切换的功能,类似于微信的语言切换,搜了下资料基本上都是以下这种: 1. 实现的效果 和微信类似,在设置界面打开切换语言的界面,选择语言后重启 HomeActivity,语言切换完成, ...

  7. ABP的语言切换

    在ABP官网http://www.aspnetboilerplate.com/创建一个Multi Page Web Application项目并打开,在Web项目下可以找到一个Controllers/ ...

  8. iOS 语言切换、本地化,国际化

    什么是本地化处理? 本地化处理就是我们的应用程序有可能发布到世界的很多国家去,因为每个国家应用的语言是不一样的,所以我们要把我们的应用程序的语言要进行本地化处理一下. 本地化处理需要处理那些文件? ( ...

  9. 【转】Android 语言切换过程分析

    最近在看一个bug,系统切换语言后,本来退到后台的音乐,会在通知栏上显示通知.为了解决这个bug,我学习了下android的语言切换流程,也参考了大量其他人的资料.(主要参考了http://blog. ...

随机推荐

  1. 去培训机构参加IT培训值不值

    近几年,IT培训机构可谓是琳琅满目,稂莠不齐.培训Java的,培训PHP的,培训大数据的等等吧,不一而足. 自己也算是IT技术圈子待了好多年了,面试过一些机构培训出来的学生,也有几个好哥们在培训机构做 ...

  2. 使用Navicat导入.csv文件(过程和注意点)

    1.创建一个数据库,右键点击表,选择导入向导. 2.在跳出的弹窗中选择.CSV文件,点击下一步 3.选择文件来源和编码规格,点击下一步 如果发现上传后中文出现乱码请使用10008这个编码规则 4.选择 ...

  3. Ceph luminous 安装配置

    Ceph luminous 安装配置 #环境centos7 , Ceph V12 openstack pike 与 ceph 集成 http://www.cnblogs.com/elvi/p/7897 ...

  4. zoj 3195 Design the city LCA Tarjan

    题目链接 : ZOJ Problem Set - 3195 题目大意: 求三点之间的最短距离 思路: 有了两点之间的最短距离求法,不难得出: 对于三个点我们两两之间求最短距离 得到 d1 d2 d3 ...

  5. 完成你的第一个superMap示例

    1.从官网下载superMap安装包,我选择setup包 2.解压压缩文件后,按照readme指导书,运行setup.exe进行安装 解压后压缩包包含文件: 执行setup.exe进行安装,其中Sup ...

  6. php接入支付宝的流程

    php接入支付宝的流程写在这里供像我一样的小白参考. 1.首先要有一个创建一个应用(选好自己想要的功能,关于支付的功能,貌似都需要签约) 2.下载SDK&Dome(网址https://doc. ...

  7. linux API函数大全

    获取当前执行路径:getcwd1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAdd ...

  8. Etcd全套安装教程

    一.安装 1.1 二进制安装 从这里下载: etcd-v3.2.11-linux-amd64.tar.gz 下载包后解压即可运行: # 解压 tar zxvf etcd-v3.2.11-linux-a ...

  9. 关于PHP新手学习的一些指导与建议,新手快到我碗里来!

    新手小白想要系统性学好PHP开发,首先需要了解需要学些什么,然后给自己定下来一个学习路线,然后就朝着这个路线奋斗吧! 关于学习路线:(1) 熟悉HTML/CSS/JS等网页基本元素,完成阶段可自行制作 ...

  10. python自带库及第三方库api察看

    今天发现一个很有意思的功能,python自带了所有库的文档查看器,配置如下: 配置pydoc服务,cmd中输入如下代码: python –m pydoc –p 1234 回车后 ,使用过程中,该窗口不 ...