文件内容:

/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. [Machine Learning]学习笔记-线性回归

    模型 假定有i组输入输出数据.输入变量可以用\(x^i\)表示,输出变量可以用\(y^i\)表示,一对\(\{x^i,y^i\}\)名为训练样本(training example),它们的集合则名为训 ...

  2. H5+JS+JQuery+ECharts实现异步加载

    这几天,看了一下ECharts官网的API和Demo发现很有意思,于是就利用模型预测产生的数据做一个伪实时的动态数据显示 . 首先,创建一个index.html的文件,我用的vscode打开的,进行编 ...

  3. AndroidStudio cannot resolve symbol 解决办法 清楚缓存

    <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android=&qu ...

  4. 已有模板与tp框架结合

    具体实现步骤: ①复制模板文件到view指定文件目录: ②复制css.js.img到view指定文件目录: ③把静态资源(css.js.img)文件的路径设置为“常量”信息(在index.php入口文 ...

  5. Numpy入门 - 线性代数运算

    本节矩阵线性代数有很多内容,这里重点演示计算矩阵的行列式.求逆矩阵和矩阵的乘法. 一.计算矩阵行列式[det] import numpy as np from numpy.linalg import ...

  6. Python入门 - 函数方法

    本节主讲python函数的基本用法,主要包括传递参数.匿名函数和变量作用域. 一.传递参数 python除了传递必需参数外,还可以传递默认参数,不定长参数和关键字参数. 1. 传递必需参数 def m ...

  7. 快速上手使用Maven

    maven的相关命令 mvn archetype:create :创建 Maven 项目 mvn compile :编译源代码(编译到target文件夹中) mvn test-compile :编译测 ...

  8. springboot之Jwt验证

    简介 什么是JWT(Json Web Token) jwt是为了在网络应用环境间传递声明而执行的一种基于json的开放标准.该token被设计紧凑且安全的,特别适用于SSO场景. jwt的声明一般被用 ...

  9. mysql如何查看索引使用情况以及优化 - guols0612

    mysql中支持hash和btree索引.innodb和myisam只支持btree索引,而memory和heap存储引擎可以支持hash和btree索引 我们可以通过下面语句查询当前索引使用情况: ...

  10. PhpStorm2017版激活方法、汉化方法以及界面配置

    PhpStorm激活和汉化文件下载网址:http://pan.baidu.com/s/1nuHF1St(提取密码:62cg) PHPMailer的介绍 PhpStorm是一个轻量级且便捷的PHP ID ...