`
hudeyong926
  • 浏览: 2032898 次
  • 来自: 武汉
社区版块
存档分类
最新评论

多语言国际化1

阅读更多

 

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

文件内容:

/include/language.php

<?php
$languages = array ();
$languages ['zh-cn'] ["name"] = "china";
$languages ["zh-cn"] ["image"] = "flag1.jpg";
$languages ["en"] ["name"] = "english";
$languages ["en"] ["image"] = "flag2.jpg";
class Language {
	public $language_area;
	public $language_country;
	public $language_dir;
	public $dir;
	public function __construct() {
		$this->dir = str_replace ( "\\", "/", dirname ( __FILE__ ) ) . "/language/";
		$this->initDefaultLanguage ();
		if (empty ( $this->language_country ) && ! empty ( $this->language_area )) {
			$this->language_country = substr ( $this->language_area, 0, strpos ( $this->language_area, "-" ) );
		}
		$this->initLanguageDir ();
	}
	
	/*
	取得语言文件的绝对路径
	*/
	public function getFileDir($file) {
		$dir = $this->dir;
		if (file_exists ( $this->getLanguageDir () . $file )) {
			return $this->getLanguageDir () . $file;
		} else if (file_exists ( $dir . $this->language_area . "/" . $file )) {
			return $dir . $this->language_area . "/" . $file;
		} else if (file_exists ( $dir . $this->language_country . "/" . $file )) {
			return $dir . $this->language_country . "/" . $file;
		} else if (file_exists ( $dir . "en/" . $file )) {
			return $dir . "en/" . $file;
		} else {
			return false;
		}
	}
	/*
	取得当前使用语言的文件夹
	*/
	public function getLanguageDir() {
		return $this->language_dir;
	}
	
	/*
	初始化语言文件夹
	*/
	private function initLanguageDir() {
		$dir = $this->dir;
		if (file_exists ( $dir . $this->language_area ) && ! empty ( $this->language_area )) {
			$this->language_dir = $dir . $this->language_area . "/";
		} else if (file_exists ( $dir . $this->language_country ) && ! empty ( $this->language_country )) {
			$this->language_dir = $dir . $this->language_country . "/";
		} else {
			$this->language_dir = $dir . "en/";
		}
	}
	
	/*
	初始化默认语言
	*/
	public function initDefaultLanguage() {
		if ($this->getCookieLanguage ()) {
			return;
		}
		$language = $_SERVER ['HTTP_ACCEPT_LANGUAGE'];
		preg_match_all ( "/[\w-]+/", $language, $language );
		$this->language_area = $language [0] [0];
		@$this->language_country = $language [0] [1];
		$this->setCookieLanguage ();
	}
	
	/*
	从cookie中导入语言种类
	*/
	public function getCookieLanguage() {
		if (! @empty ( $_COOKIE ['lang'] )) {
			$language = $_COOKIE ['lang'];
			if (strpos ( $language, "-" )) {
				$this->language_area = $language;
			} else {
				$this->language_country = $language;
			}
			return true;
		}
		return false;
	}
	
	/*
	   把当前的语言种类放到cookie中
	*/
	public function setCookieLanguage($lang = "") {
		if (empty ( $lang )) {
			$lang = $this->language_area;
		}
		if (empty ( $lang )) {
			$lang = $this->language_country;
		}
		if (empty ( $lang )) {
			return false;
		}
		setcookie ( "lang", $lang, time () + 365 * 24 * 3600, "/", $this->getDomain () );
		return true;
	}
	
	public function getDomain() {
		if (empty ( $this->domain )) {
			$domain = $_SERVER ['SERVER_NAME'];
			if (strcasecmp ( $domain, "localhost" ) === 0) {
				$this->domain = $domain;
				return $this->domain;
			}
			if (preg_match ( "/^(\d+\.){3}\d+$/", $domain, $domain_temp )) {
				$this->domain = $domain_temp [0];
				return $this->domain;
			}
			preg_match_all ( "/\w+\.\w+$/", $domain, $domain );
			$this->domain = $domain [0] [0];
			return $this->domain;
		} else {
			return $this->domain;
		}
	}
}
?>

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

<?php 
$language_message["china"]="中文";
$language_message["english"]="英文";
?>

 /include/language/en/language.php

<?php 
$language_message["china"]="china";
$language_message["english"]="english";
?>
<?php
include_once 'header.php';
include_once 'header.tpl';
$language_file=$lang->getFileDir("language.php");
include($language_file);
?>
<script language="javascript">
var domain="<?php echo $lang->getDomain();?>";
var cur_language="<?php echo $current_language;?>";
function change_language(lan)
{
	alert("lan");
    setCookie("lang",lan,1,"/",domain,false);
	 if(cur_language==lan)
	 {
		 return ;
	 }
	 <?php if(!$_POST){ ?>
	 document.location.reload();
	 <?php } ?>
}

// writeCookie("myCookie", "my name", 24);

// Stores the string "my name" in the cookie "myCookie" which expires after 24 hours.


function setCookie( name, value, expires, path, domain, secure ) {

	var today = new Date();
	
	today.setTime( today.getTime() );
	
	if ( expires ) {
	
	expires = expires * 1000 * 60 * 60 * 24;
	
	}
	
	var expires_date = new Date( today.getTime() + (expires) );
	
	document.cookie = name+'='+escape( value ) +
	
	( ( expires ) ? ';expires='+expires_date.toGMTString() : '' ) + //expires.toGMTString()
	
	( ( path ) ? ';path=' + path : '' ) +
	
	( ( domain ) ? ';domain=' + domain : '' ) +
	
	( ( secure ) ? ';secure' : '' );

}


</script>
<ul>
 <?php
foreach($languages as $key=>$value)
{
  echo '<li><a href="javascript://" onclick="change_language(\'',$key,'\')"';
   echo '>',$language_message[$languages[$key]["name"]],' <img src="images/',$languages[$key]["image"],'" border="0"/></a></li>';
}
?>
</ul>
 
<?php
include_once (dirname ( __FILE__ ) . "/include/language.php");
$lang = new Language ( );
//print_r($lang->language_area);
$current_language = getCurrentLanguage ();
//print_r($current_language);
function getCurrentLanguage() {
	global $lang, $languages;
	if (array_key_exists ( $lang->language_area, $languages )) {
		return $lang->language_area;
	} else if (array_key_exists ( $lang->language_country, $languages )) {
		return $lang->language_country;
	} else {
		return "en";
	}

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

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

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

分享到:
评论

相关推荐

    上位机Winform实现多语言国际化

    本话题聚焦于“上位机Winform实现多语言国际化”,这涉及到Windows Forms应用程序的开发,以及如何让其支持多种语言,以满足全球用户的使用需求。同时,描述中提到的“与西门子PLC通讯的代码”意味着我们还会讨论...

    asp.net多语言国际化与winform多语言国际化心得

    下面,我将详细阐述这两种技术如何实现多语言国际化。 首先,让我们探讨ASP.NET的多语言国际化。ASP.NET提供了强大的本地化支持,允许开发者创建能够适应不同地区和语言的应用。关键组件包括资源文件(.resx)和 ...

    C#(.net)多语言 国际化 本地化示例demo合集

    在.NET框架中,C#语言提供了强大的支持来进行多语言国际化和本地化开发。这使得开发者可以构建出能够适应全球不同地区和语言环境的应用程序。以下是对标题和描述中提到的知识点的详细说明: 1. **多语言(Multi-...

    MVC国际化,MVC多语言,.NET多语言

    下面将详细讨论MVC国际化、MVC多语言以及.NET多语言的实现策略。 1. **MVC国际化基础** - **Resource Files**:MVC国际化的核心是使用资源文件(.resx)来存储不同语言的文本和字符串。每个语言版本都有一个对应的...

    Android多语言切换(国际化)

    本教程将详细介绍如何在Android项目中实现多语言切换,让您的应用具备国际化能力。 首先,我们需要了解Android的资源管理机制。Android系统通过res目录下的values文件夹来存储不同类型的资源,如字符串、颜色、布局...

    ssm框架上实现国际化/多语言

    在SSM框架上实现国际化和多语言功能,可以使得应用程序能够适应不同国家和地区用户的语言需求,提升用户体验。以下将详细介绍如何在SSM框架中实现这一功能。 首先,我们需要理解“国际化”(Internationalization)...

    WEB多语言 国际化 本地化

    在开发Web应用时,"WEB多语言 国际化 本地化"是一个关键的领域,它使得网站能够适应全球不同地区的用户,提供多种语言的界面和内容。这涉及到.NET框架中的全球化(Globalization)和本地化(Localization)概念。 ...

    VS qt多语言国际化,动态切换菜单栏标题语言

    Visual Studio(VS)与Qt库结合,提供了一种高效的方法来实现多语言国际化。本项目专注于在VS中使用Qt实现动态切换菜单栏标题的语言,使得程序可以根据用户的语言偏好进行适配。 首先,我们需要了解Qt的国际化机制...

    Qt 多语言 国际化

    基于qt 国际化示例, 实现多语言 在工程中添加想要翻译的语言ts, 然后点击Qtcreator中的《工具》《更新翻译》生成对应的ts文件,然后打开ts文件,将对应的翻译语言填好,再点Qtcreator中的《工具》《发布翻译》生成....

    国际化多语言系统开发手册

    ### 国际化多语言系统开发手册 #### 概述 随着全球化进程的加快,越来越多的企业需要面对跨国界的业务挑战,特别是在物流行业中,能够支持多种语言的信息系统变得尤为重要。《国际化多语言系统开发手册》主要介绍...

    超简单web页面国际化多语言

    在前端实现国际化多语言,通常会用到以下关键概念和技术: 1. **资源分离**:将所有需要翻译的文本(如按钮标签、提示信息等)从HTML代码中分离出来,存储在单独的文件中,如JSON文件。这样便于管理和更新,同时也...

    wpf国际化本地化多语言

    本篇文章将深入探讨WPF如何实现国际化和本地化,以及如何创建支持多语言的应用。 **一、WPF中的国际化和本地化概念** 1. **国际化(Internationalization)**:国际化是指设计和开发应用程序时考虑到全球市场的...

    PHP 国际化 多语言

    PHP的国际化(i18n)和多语言支持是为网站或应用程序提供跨语言体验的关键功能。"PHP 国际化 多语言"这个主题涉及到如何使PHP项目能够适应不同地区的用户,包括中文和日文在内的多种语言切换。 一、PHP的国际化...

    android应用内和系统设置两种设置多语言国际化

    在Android开发中,实现应用支持多语言国际化是一个重要的功能,可以让应用吸引全球用户。本教程将详细介绍如何在Android应用内以及通过系统设置实现多语言国际化,涵盖了简体中文、繁体中文和英文的切换。 首先,...

    c# 多国语言国际化

    C# 多国语言国际化(Internationalization)是开发支持多种语言的应用程序的关键技术。在WinForms应用程序中,C#提供了一套完整的框架来实现这一功能,使得开发者可以轻松地为不同地区和语言的用户提供定制化的界面...

    SpringMVC 国际化/多语言

    它也提供了丰富的功能来实现国际化(i18n)和多语言切换。下面我们将深入探讨SpringMVC如何实现这一目标。 首先,国际化的核心在于资源文件。在SpringMVC中,通常我们会创建一个名为`messages.properties`的默认...

    html多语言 html谷歌翻译插件 html5国际化

    html多语言 html谷歌翻译插件 html5国际化

    spring boot+JPA+easyUI 实现基于浏览器语言的国际化配置

    1. **Spring Boot的国际化(i18n)支持** Spring Boot通过`MessageSource`接口提供国际化支持。开发者可以创建`messages.properties`文件,针对不同语言创建对应的子文件,如`messages_en.properties`(英语)和`...

    wpf 多语言 国际化 demo

    在本文中,我们将深入探讨如何在C# WPF(Windows Presentation Foundation)应用程序中实现多语言支持,即国际化。WPF提供了强大的框架,使得开发者能够轻松地构建能够适应不同语言和地区的应用。 首先,理解“国际...

Global site tag (gtag.js) - Google Analytics