多语言国际化1

 

//============================================

文件内容:

/include/language.php

Java代码  

  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.     */  
  24.     public function getFileDir($file) {  
  25.         $dir = $this->dir;  
  26.         if (file_exists ( $this->getLanguageDir () . $file )) {  
  27.             return $this->getLanguageDir () . $file;  
  28.         } else if (file_exists ( $dir . $this->language_area . "/" . $file )) {  
  29.             return $dir . $this->language_area . "/" . $file;  
  30.         } else if (file_exists ( $dir . $this->language_country . "/" . $file )) {  
  31.             return $dir . $this->language_country . "/" . $file;  
  32.         } else if (file_exists ( $dir . "en/" . $file )) {  
  33.             return $dir . "en/" . $file;  
  34.         } else {  
  35.             return false;  
  36.         }  
  37.     }  
  38.     /* 
  39.     取得当前使用语言的文件夹 
  40.     */  
  41.     public function getLanguageDir() {  
  42.         return $this->language_dir;  
  43.     }  
  44.       
  45.     /* 
  46.     初始化语言文件夹 
  47.     */  
  48.     private function initLanguageDir() {  
  49.         $dir = $this->dir;  
  50.         if (file_exists ( $dir . $this->language_area ) && ! empty ( $this->language_area )) {  
  51.             $this->language_dir = $dir . $this->language_area . "/";  
  52.         } else if (file_exists ( $dir . $this->language_country ) && ! empty ( $this->language_country )) {  
  53.             $this->language_dir = $dir . $this->language_country . "/";  
  54.         } else {  
  55.             $this->language_dir = $dir . "en/";  
  56.         }  
  57.     }  
  58.       
  59.     /* 
  60.     初始化默认语言 
  61.     */  
  62.     public function initDefaultLanguage() {  
  63.         if ($this->getCookieLanguage ()) {  
  64.             return;  
  65.         }  
  66.         $language = $_SERVER ['HTTP_ACCEPT_LANGUAGE'];  
  67.         preg_match_all ( "/[\w-]+/", $language, $language );  
  68.         $this->language_area = $language [0] [0];  
  69.         @$this->language_country = $language [0] [1];  
  70.         $this->setCookieLanguage ();  
  71.     }  
  72.       
  73.     /* 
  74.     从cookie中导入语言种类 
  75.     */  
  76.     public function getCookieLanguage() {  
  77.         if (! @empty ( $_COOKIE ['lang'] )) {  
  78.             $language = $_COOKIE ['lang'];  
  79.             if (strpos ( $language, "-" )) {  
  80.                 $this->language_area = $language;  
  81.             } else {  
  82.                 $this->language_country = $language;  
  83.             }  
  84.             return true;  
  85.         }  
  86.         return false;  
  87.     }  
  88.       
  89.     /* 
  90.        把当前的语言种类放到cookie中 
  91.     */  
  92.     public function setCookieLanguage($lang = "") {  
  93.         if (empty ( $lang )) {  
  94.             $lang = $this->language_area;  
  95.         }  
  96.         if (empty ( $lang )) {  
  97.             $lang = $this->language_country;  
  98.         }  
  99.         if (empty ( $lang )) {  
  100.             return false;  
  101.         }  
  102.         setcookie ( "lang", $lang, time () + 365 * 24 * 3600, "/", $this->getDomain () );  
  103.         return true;  
  104.     }  
  105.       
  106.     public function getDomain() {  
  107.         if (empty ( $this->domain )) {  
  108.             $domain = $_SERVER ['SERVER_NAME'];  
  109.             if (strcasecmp ( $domain, "localhost" ) === 0) {  
  110.                 $this->domain = $domain;  
  111.                 return $this->domain;  
  112.             }  
  113.             if (preg_match ( "/^(\d+\.){3}\d+$/", $domain, $domain_temp )) {  
  114.                 $this->domain = $domain_temp [0];  
  115.                 return $this->domain;  
  116.             }  
  117.             preg_match_all ( "/\w+\.\w+$/", $domain, $domain );  
  118.             $this->domain = $domain [0] [0];  
  119.             return $this->domain;  
  120.         } else {  
  121.             return $this->domain;  
  122.         }  
  123.     }  
  124. }  
  125. ?>  

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

Java代码  

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

 /include/language/en/language.php

Java代码  

  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.   
  23. // writeCookie("myCookie", "my name", 24);  
  24.   
  25. // Stores the string "my name" in the cookie "myCookie" which expires after 24 hours.  
  26.   
  27.   
  28. function setCookie( name, value, expires, path, domain, secure ) {  
  29.   
  30.     var today = new Date();  
  31.       
  32.     today.setTime( today.getTime() );  
  33.       
  34.     if ( expires ) {  
  35.       
  36.     expires = expires * 1000 * 60 * 60 * 24;  
  37.       
  38.     }  
  39.       
  40.     var expires_date = new Date( today.getTime() + (expires) );  
  41.       
  42.     document.cookie = name+'='+escape( value ) +  
  43.       
  44.     ( ( expires ) ? ';expires='+expires_date.toGMTString() : '' ) + //expires.toGMTString()  
  45.       
  46.     ( ( path ) ? ';path=' + path : '' ) +  
  47.       
  48.     ( ( domain ) ? ';domain=' + domain : '' ) +  
  49.       
  50.     ( ( secure ) ? ';secure' : '' );  
  51.   
  52. }  
  53.   
  54.   
  55. </script>  
  56. <ul>  
  57.  <?php  
  58. foreach($languages as $key=>$value)  
  59. {  
  60.   echo '<li><a href="javascript://" onclick="change_language(\'',$key,'\')"';  
  61.    echo '>',$language_message[$languages[$key]["name"]],' <img src="images/',$languages[$key]["image"],'" border="0"/></a></li>';  
  62. }  
  63. ?>  
  64. </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. }  
  18. ?>  

 

/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>  

 

测试地址为:http://127.0.0.1/multiple_language/chang_language.php

localhost不能使用 ,正式域名及IP地址可以使用。

时间: 2024-08-29 07:15:54

多语言国际化1的相关文章

qtcreator-QT多语言国际化的问题

问题描述 QT多语言国际化的问题 搜索资料,网上也有很多对qt国家化支持的例子代码,但是我使用的事qt5.2.0版本,通过实际操作,还是出不来效果,编译也通过了的,请问qt5的国际化和4不一样吗,这是为什么,求指导啊

gettext库 多语言国际化2

通常人们写程序时都是将文字写死在程序里的,比如:echo "Hello World!"; ,假如要改成它国语言,写国际化程序,就要逐个打开进行修改,程序较短时还行,若程序有上万甚至更多,改起来就不是那么容易了.近来随着i18n的逐渐标准化,我也来讲一讲在PHP中如何实现国际化支持.跟其他程序语言一样,在 PHP 也可以利用 gettext套件写作 i18n 程序,实现 NLS(Native Language Support) 国际化支持.   实现流程:程序设计者在程序码中写入所要显示

iOS 语言国际化

问题描述 我这个里面怎么没有简体中文的选项呢  只有英文  base? 解决方案 有的,看下demo

stackoverflow 上一篇关于 多语言国际化的 讨论

记录一下 网址 先.回头再仔细看看. 对了,还想抽时间了解一下关于 json-ld 的知识.

语言国际化 有的可以 有的转化不了 为神马呢?

问题描述 解决方案 如果转化不了,你直接就改成中文,在代码中修改

Hello Web API系列教程:Web API与国际化

软件国际化是在软件设计和文档开发过程中,使得功能和代码设计能处理多种语言和文化习俗,在创建不同语言版本时,不需要重新设计源程序代码的软件工程方法.这在很多成熟的软件开发平台中非常常见.对于.net开发者来说,我们一般可以通过以下两种方式来实现软件的国际化. 语言配置文件 资源文件 在.net平台中,软件的国际化主要依靠工作线程的国际化来完成.在.net框架的的处理线程中,我们通过设置Thread.CurrentCulture属性来实现对日期.时间.数字.货币值.文本的排序顺序,负载约定和字符串比

批处理文件国际化支持解决方案

随着软件应用的迅速推广与发展,应用软件无一例外的面临着支持多国家多语种的国际化问题,基于 Windows 的批处理文件应用广泛,然而作为一种通用脚本语言,批处理脚本没有提供一种体系化的多语言国际化支持.本文首先介绍编程语言和国际标准化对多语言问题作出的努力:其次,给出了通用多语言支持解决方案的灵活架构设计:再次,给出了批处理文件的轻量级.灵活架构的通用多语言支持解决方案,以及基于该解决方案构建支持多语言的批处理软件系统的一般步骤:最后作了一定的总结和展望. 背景 软件应用迅速发展扩张,逐步渗透到

IOS 解决推送本地国际化 loc-key 本地化失败的问题_IOS

正文 一.准备 推送本地国际化官方文档: {"aps":{"alert":{"title":"Shou","loc-key":"notification_push_live","loc-args": ["over140","broadcast test"]},"badge":0,"sound&quo

Android 系统语言切换监听和设置实例代码

最近项目上产品经理提了个需求,要求关闭语言国际化,不管手机系统设置那个国家的语言,都要显示汉语,好吧,既然有需求,那就做吧.但是项目中已经有英文的配置了,且是作为默认String提供的,这么多翻译好的文字,直接删除掉替换成中文为默认String又感觉弃之可惜.故网上Google下解决方案.就开始往下看吧. 一.代码中动态设置应用显示语言(手动控制使用values-zh-rCN下字符串) 这个方法是通过改变Resource中的配置来实现的,代码如下: public static void init