博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实现web多语言的一种解决办法
阅读量:5074 次
发布时间:2019-06-12

本文共 2945 字,大约阅读时间需要 9 分钟。

实现web多语言可能有多种解决办法,现在分享一种比较简单的思路,这篇文章主要用于记录学习过程,肯定存在不少谬误,欢迎批评指正。

web多语言实现最简单的一种方法可能是每一种语言一套代码,但这样存在一个问题就是维护起来十分不方便。

所以最好是把数据(语言文字)从代码中分离出来,然后共用一套代码,这样维护起来方便。

下面介绍的一种办法是用XML存储数据,用javascript 来解析XML,将数据动态的生成到HTML中。

1 登录页面:主要用来切换语言,当选择英文登录后,整个界面就显示为英文,在此的一个主要问题是,要用一个变量做为全局变量

用于标识当前选择了哪种语言,但是地这个变量可能只局限于当前页面,那如何将这个变量传给其它页面呢?这里用的是cookie,当然也可以用其它方法。

当在登录页面选择英文时,此时将变量设置到cookie中,在其它页面加载时,首先去cookie中取这个变量,检查这个变量的值,如果是英文,则显示英文。

var lantagfunction getCookie(c_name){if (document.cookie.length>0)  {  c_start=document.cookie.indexOf(c_name + "=")  if (c_start!=-1)    {     c_start=c_start + c_name.length+1     c_end=document.cookie.indexOf(";",c_start)    if (c_end==-1) c_end=document.cookie.length    return unescape(document.cookie.substring(c_start,c_end))    }   }return ""}function setCookie(c_name,value,expiredays){var exdate=new Date()exdate.setDate(exdate.getDate()+expiredays)document.cookie=c_name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString())}function checkCookie(){lantag =getCookie('lantag')if (lantag ==null ||lantag =="")	{    setCookie('lantag','zh',365)		}}

 

2可以将页面中的文字用<span id="ti"></span>标签代替,然后用JS 将HTML中相应的内容,用XML中相应的内容替换.

普通文字:

document.getElementById("ti").innerHTML=xmlDoc.getElementsByTagName("ti")[0].childNodes[0].nodeValue

button:

document.getElementById("login").value=xmlDoc.getElementsByTagName("login")[0].childNodes[0].nodeValue;

var lantag var tagfunction changetag(tag){ setCookie('lantag',tag,365) login_language();  }function login_language(){	var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");	xmlDoc.async="false";	lantag=getCookie('lantag');		if(lantag =='zh')	{	xmlDoc.load("zh.xml");	document.getElementById("ti").innerHTML=xmlDoc.getElementsByTagName("ti")[0].childNodes[0].nodeValue;	document.getElementById("to").innerHTML=xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;	document.getElementById("pwd").innerHTML=xmlDoc.getElementsByTagName("pwd")[0].childNodes[0].nodeValue;	document.getElementById("login").value=xmlDoc.getElementsByTagName("login")[0].childNodes[0].nodeValue;	}	else if(lantag=='en')	{	 xmlDoc.load("en.xml");	 document.getElementById("ti").innerHTML=xmlDoc.getElementsByTagName("ti")[0].childNodes[0].nodeValue;	document.getElementById("to").innerHTML=xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;	document.getElementById("pwd").innerHTML=xmlDoc.getElementsByTagName("pwd")[0].childNodes[0].nodeValue;	document.getElementById("login").value=xmlDoc.getElementsByTagName("login")[0].childNodes[0].nodeValue;	}}}

3 Index 页面

login

 

4 XML可以这样设置

Decoder
UserName:
Password:
Login
</en>

 

 

 

 

转载于:https://www.cnblogs.com/snake-hand/p/3148121.html

你可能感兴趣的文章
编译器内置宏实现调试信息输出
查看>>
mongo 初级使用
查看>>
poj2226Muddy Fields【最小点覆盖(建图的思路比较好)】
查看>>
JAVA设计模式:单例(Singleton)
查看>>
【暖*墟】#网络流# 最大权闭合子图
查看>>
RMAN Overview
查看>>
关于微信小程序 textarea组件在fixed定位的模块中随页面移动问题
查看>>
vue的开发环境搭建命令加图解
查看>>
搜狗双拼如何打单韵母字
查看>>
SuperSocket 1.5 发布,.NET Socket服务器框架
查看>>
面向对象编程的一次尝试
查看>>
ssh 升级-rpm
查看>>
python3生成测试数据,并写入ssdb
查看>>
Singleton(单例模式)的一种实现 -- 基于【惰性】适用于【大对象】的一种生产实践...
查看>>
POJ 1182 食物链 (带权并查集 && 向量偏移)
查看>>
Truffle测试框架
查看>>
Docker
查看>>
javascript原生style属性分析
查看>>
Android使用两个Activity页面切换… 分类: Androi...
查看>>
安装APP损坏,出现[INSTALL_FAILED_DEXOPT]的解决办法 分类: ...
查看>>