
 
 | 
| 技术资料  > ASP技术 > 客户端相关 : ASP程序界面的多语言支持 |  
ASP程序界面的多语言支持 March 25,2004 |  
可能有的web应用程序,需要多语言支持,例如,讨论组,既有中文界面, 
以适合国人使用的方便,又需要英文界面,以满足国际化的需要。我想, 
似乎没有必要为每一个语言都写一个版本,这不仅比较繁琐,而且以后程 
序升级就必须修改所有版本的程序。熟悉vc++程序的朋友一定知道通常 
windows应用程序的国际化手段都是通过rc文件来解决的。只要重新加入 
不同语言版本的rc文件编译一下就行了。 
asp程序不能编译也不需编译。我于是开始考虑使用数据库,将ASP程序中 
使用到的提示信息/甚至图片的URL等都放进数据库,并有不同的字段。  
(1)数据库表设计 
表STRINGTABLE 
id int  
ch_str varchar 255 
jp_str varchar 255 
en_str varchar 255 
...................其他语言的字段 
 
(2)inc文件STRINGTABLE.INC 
 
const MAX_STR=100 '根据ID的最大值 
const LANG_CH=1 
const LANG_JP=2 
const LANG_EN=3 
dim strArr 
dim strRS 
dim strSql 
 
if not isArray(APPLICATION("constStr")) then 
strSql="select * from W_STRINGTABLE"  
set strRS=conn.execute(strSql)  
redim strArr(3,MAX_STR) 
do while not strRS.eof 
strArr(LANG_CH,clng(strRS("ID")))=strRS("CH_STR") 
strArr(LANG_JP,clng(strRS("ID")))=strRS("JP_STR") 
strArr(LANG_EN,clng(strRS("ID")))=strRS("EN_STR") 
strRS.movenext 
loop 
APPLICATION.lock 
APPLICATION("constStr")=strArr 
APPLICATION.unlock 
strRs.close 
else 
strArr=APPLICATION("constStr") 
end if  
 
(3)应用示例 
const LANG_CH,STR_CONFIRM_OVERWRITE=1234 
... 
response.write strArr(LANG_CH,STR_CONFIRM_OVERWRITE) 
response.write strArr(LANG_JP,STR_CONFIRM_OVERWRITE) 
 
假设有程序user.asp 
调用方式如下 
user.asp?language=en (中文) 
user.asp?language=ch (E文) 
 
'-----------user.asp 
dim lang 
if not(isnull(request("language")) or isempty(request("language")) or (request("language")="") ) then 
if request("language")="en" then  
lang=LANG_EN 
elseif request("language")="jp" then 
lang=LANG_JP 
else 
lang=LANG_CH 
end if 
else 
lang=LANG_CH 
end if 
'.................. 
response.write strArr(lang,STR_CONFIRM_OVERWRITE) 
 
注: 
通过meta tag可以设置html页面的语言代码。 
<meta HTTP-EQUIV="Content-Type" content="text/html; charset=gb_2312-80"> 中文gb3212-80 
<meta http-equiv</U>="Content-Type" content="text/html; charset=x-sjis"> 日文Shift-jis 
 
来自: http://www.cn-net.net/ |  
 
 | 
  
Copyright © 2001-2008 Shenzhen Hiblue Software Team All rights reserved