文件内容:

/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. Linux下安装Redis php-redis扩展 redis重启shell脚本 超详细!

    前言 前面刚写过nosql其中三款热门产品的对比,这次主要写关于Redis的一些事情,Redis的介绍.安装以及扩展(php-redis,因为我是phper)安装等等.同时是写给我的朋友(cccjjj ...

  2. 在JQuery中如何获取当前时间?

    ////发表时间(now) function p(s) { return s < 10 ? '0' + s : s; } var myDate = new Date(); //获取当前年 var ...

  3. 数细胞-swust oj

    数细胞(0964) 一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数.编程需要用到的队列及其相关函数已经实现,你只需要完 ...

  4. SpringMvc架构下css、js、jpg加载失败问题

    SpringMvc架构下css.js.jpg加载失败问题 springMvc搭建成功后,页面出现一些错误,jsp.js等静态资源加载失败.导致页面没有显示任何样式以及 此处原因很简单,是因为相对路径在 ...

  5. webpack中实现按需加载

    webpack中的require.ensure()可以实现按需加载资源包括js,css等,它会给里面require的文件单独打包,不和主文件打包在一起,webpack会自动配置名字,如0.js,1.j ...

  6. Dashboard集群

    #Dashboard集群 openstack pike 部署 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html ##.Dashboard集群 #####在 ...

  7. 算法提高 9-3摩尔斯电码 map

    算法提高 9-3摩尔斯电码 时间限制:1.0s   内存限制:256.0MB     问题描述 摩尔斯电码破译.类似于乔林教材第213页的例6.5,要求输入摩尔斯码,返回英文.请不要使用"z ...

  8. fiddler+android抓包工具配置使用

    今天临时增加一个工作,手机需要抓包,查看了不同的抓包工具,最后确定使用fiddler抓包工具进行操作,这里以android为例记录一下工具的配置和使用操作. fiddler的安装 网上有很多fiddl ...

  9. Okio 之初探黄龙

    Okio 是一个包装了 java.io 和 java.nio api 的库,以便可以更容易的访问.存储以及处理数据. ByteStrings 和 Buffers Okio 是围绕着两个容器类构建起来的 ...

  10. java线程池的创建使用

    利用java的多线程编程可以大大的提高系统的并发运行效率,线程越多并发执行的任务就越多,但是并不意味着效率会一直提高,相反会得到适得其反的效果. java中的多线程编程一共有三种方法: 继承Threa ...