以ASP网站为例,以中文、英文、日文3种语言为例。本文只论思路及示例实现,具体代码自行编写补充。
数据库设计时,可以用一个比较笨的办法,即文字字段,有几个语种就加几个字段。例如新闻标题和内容,title0和content0是中文的标题和内容,title1和content1是英文的标题和内容,title2和content2是日文的标题和内容,如此类推。
后台管理中,先设置一个变量,如:
<%
const langStr = "中文|English|日本語"
langTitle = split(langStr ,"|")'语言项
lang = ubound(langTitle) '语言种类数,0为1种,1为2种
%>
这样就可以用循环的方法来修改同一记录,例如:
<%
content0 = rs("content0")
content0 = rs("content0")
content0 = rs("content0")
for temp = 0 to lang
%>
<input name="title<%=temp%>" type="text" value="<%=rs("title"&temp)%>">
<textarea id="content<%=temp%>" name="content<%=temp%>">
<%=rs("content"&temp)%>
</textarea>
<%
next
%>
前台处理,也有同样的一个变量lang来判别当前是哪个语种,可以据此来调用相应数据库的字段。
可以先做好中文版的程序,连同中文版单独使用的图片等媒体都放在/cn/文件夹下,调整好了后就复制到/en/和/jp/,共用文件夹放根目录下如/inc和/images,顺利的话访问各个语种目录都能自动读取对应语种的数据了。
如果使用url重写的话,程序文件只需要放在一个地方,不必复制多份,更方便维护了。重写规则只要有几个语种就复制几次,如:
RewriteRule /cn/index.html$ /code/index\.asp
RewriteRule /en/index.html$ /code/index\.asp
RewriteRule /jp/index.html$ /code/index\.asp
<%
realpath = LCase( Request.ServerVariables( "PATH_INFO" ) ) '实际路径
showpath = LCase( Request.ServerVariables( "HTTP_X_REWRITE_URL" ) ) '重写出来的路径
'有重写url的话使用showpath变量进行判别,没有则使用realpath。
if instr(showpath,"/en/")>0 then
lang=1
elseif instr(showpath,"/jp/")>0 then
lang=2
else
lang=0
end if
rs.open "select top 1 content" & lang & " as content, title" & lang & " as title where ....",conn,1,1
response.write rs("title")
%>
本文地址:http://www.roammemo.com/html5/58.html
版权声明:若无注明,本文皆为“漫游的备忘录”原创,转载请保留文章出处。