asp的多国语言构思

多语言的版本,是个蛮头疼的问题~这个问题已经说过蛮多次了,原理简单,编码麻烦^_^

简->繁的转换是比较容易的事情,但多国化的问题一般的方法如下
语言包肯定要有,数据库的内容肯定也要有几份,
语言包可以用xml,编码用utf-8,当然也可以动态的包含inc文件,但是逻辑上没有xml清淅

本地化时间,货币等,可以用vbs里提供的一个函数SetLocale(lcid)

获取http的头部得到browser的语言,从而调用不同的语言包。

这里示例的是用xml做为语言包
其实还是蛮简单的,但是实际编码里会有很多节点,这里只是提供一个思路,示例代码如下

<?xml version="1.0" encoding="utf-8" ?>
<lang>
<ch>
   <username>用户名</username>
   <password>密码</password>
   <btnSubmit>提交</btnSubmit>
   <btnReset>重置</btnReset>
</ch>
<en>
   <username>username</username>
   <password>password</password>
   <btnSubmit>submit</btnSubmit>
   <btnReset>reset</btnReset>
</en>
</lang>

-----------------------------
test.asp
-----------------------------
<%
function lang(langType,nodeName)
set xmlDoc=Server.CreateObject("microsoft.xmldom")
xmlDoc.load(server.mappath("lang.xml"))
lang=xmlDoc.documentElement.selectSingleNode("//" & langType & "/" & nodeName).text
end function
if request("lang")="ch" then langType="ch" else langType="en"
%>
<a href='javascript:location.href="?lang=<%if _fcksavedurl=""?lang=<%if" langType="ch" then response.Write "en" else response.Write "ch"%>"'>切换语言</a>
<table width="50%" border="0" cellspacing="0" cellpadding="0" align='center'>
<tr>
    <td><%=lang(langType,"username")%></td>
    <td><input type="text" name="textfield" /></td>
</tr>
<tr>
    <td><%=lang(langType,"password")%></td>
    <td><input type="text" name="textfield" /></td>
</tr>
<tr align="center" valign="middle">
    <td><input type="submit" name="Submit" value="<%=lang(langType,"btnSubmit")%>" /></td>
    <td><input type="reset" name="Submit" value="<%=lang(langType,"btnReset")%>" /></td>
</tr>
</table>

实际编码中,会多出比较多的编码,第一是为了程序的分健壮,第二是更好的重用代码,程序代码就会多出比较多了,上面只是给出一个示例。

posted @ 2008-04-18 01:59  已經停更  阅读(103)  评论(0编辑  收藏  举报