Asp-经典Vbscript网页语言切换器转成变量
Asp-classic Vbscript webpage language switcher into variable
例如我在 index.asp
中有语言切换器
<ul class="drop-lang_menu">
<li id="LanguageSelected"><img src="img/icons/flags/ru.png" /><a href="#">Rus</a>
<ul>
<li><img src="img/icons/flags/ru.png" /><a href="#">Rus</a></li>
<li><img src="img/icons/flags/lt.png" /><a href="#">Lit</a></li>
<li><img src="img/icons/flags/us.png" /><a href="#">Eng</a></li>
</ul>
</li>
</ul>
而且在这个文件中我有 "Login" 按钮文本翻译功能
<%=transl("Login")%>
此函数在 index.asp
中包含的文件 function.inc 中进行了说明
<%
Dim Lang
Lang = Document.getElementById("LanguageSelected").innerText
Function transl(TxT as String)
Dim d
d = Application("TranslateList")
If d = "" Then
d = FetchTranslateList(TxT)
Application("TranslateList") = d
End If
transl = d
End Function
Function FetchTranslateList(TxT as String)
Dim rs, fldName, s
Set rs = CreateObject("ADODB.Recordset")
rs.Open "select "+Lang+" from Translations where txt='"+TxT+"'", _
"dsn=name;uid=sa;pwd=;"
s = "<select name=""Translations"">" & vbCrLf
Set fldName = rs.Fields("+Lang+")
Do Until rs.EOF
s = s & " <option>" & fldName _
& "</option>" & vbCrLf
rs.MoveNext
Loop
s = s & "</select>" & vbCrLf
rs.Close
Set rs = Nothing
Set fldName = Nothing
FetchTranslateList = s
End Function
%>
Questions is:
- Lang = Document.getElementById("LanguageSelected").innerText 似乎不起作用!那么如何获取selected语言值并为每个用户分别翻译网页呢?
- 这是根据网站上 select 用户使用的语言进行网页翻译的正确方法吗?
Document.getElementById("LanguageSelected").innerText
看起来像客户端 Javascript。 ASP 是服务器端代码,它在提供页面时执行,因此您需要使用查询字符串值或表单提交来填充变量 Lang
并使用类似 [=12 的内容检索它=]
使用asp更改语言(document.getElement...是javascript!):
<a href="index.asp?lang=rus">Rus</a></li>
然后,lang = request.querystring("lang")
- 另一种方法是创建带有变量 (txt_title="Titulo", txt_button_yes="Si",...) 并根据语言包含一个文件或另一个文件。包含文件比查询数据库快。
另一件事:用 .inc 创建包含不是一个好主意,因为代码可能是可见的。使用 .asp 代替。
例如我在 index.asp
中有语言切换器 <ul class="drop-lang_menu">
<li id="LanguageSelected"><img src="img/icons/flags/ru.png" /><a href="#">Rus</a>
<ul>
<li><img src="img/icons/flags/ru.png" /><a href="#">Rus</a></li>
<li><img src="img/icons/flags/lt.png" /><a href="#">Lit</a></li>
<li><img src="img/icons/flags/us.png" /><a href="#">Eng</a></li>
</ul>
</li>
</ul>
而且在这个文件中我有 "Login" 按钮文本翻译功能
<%=transl("Login")%>
此函数在 index.asp
中包含的文件 function.inc 中进行了说明<%
Dim Lang
Lang = Document.getElementById("LanguageSelected").innerText
Function transl(TxT as String)
Dim d
d = Application("TranslateList")
If d = "" Then
d = FetchTranslateList(TxT)
Application("TranslateList") = d
End If
transl = d
End Function
Function FetchTranslateList(TxT as String)
Dim rs, fldName, s
Set rs = CreateObject("ADODB.Recordset")
rs.Open "select "+Lang+" from Translations where txt='"+TxT+"'", _
"dsn=name;uid=sa;pwd=;"
s = "<select name=""Translations"">" & vbCrLf
Set fldName = rs.Fields("+Lang+")
Do Until rs.EOF
s = s & " <option>" & fldName _
& "</option>" & vbCrLf
rs.MoveNext
Loop
s = s & "</select>" & vbCrLf
rs.Close
Set rs = Nothing
Set fldName = Nothing
FetchTranslateList = s
End Function
%>
Questions is:
- Lang = Document.getElementById("LanguageSelected").innerText 似乎不起作用!那么如何获取selected语言值并为每个用户分别翻译网页呢?
- 这是根据网站上 select 用户使用的语言进行网页翻译的正确方法吗?
Document.getElementById("LanguageSelected").innerText
看起来像客户端 Javascript。 ASP 是服务器端代码,它在提供页面时执行,因此您需要使用查询字符串值或表单提交来填充变量 Lang
并使用类似 [=12 的内容检索它=]
使用asp更改语言(document.getElement...是javascript!):
<a href="index.asp?lang=rus">Rus</a></li>
然后,lang = request.querystring("lang")
- 另一种方法是创建带有变量 (txt_title="Titulo", txt_button_yes="Si",...) 并根据语言包含一个文件或另一个文件。包含文件比查询数据库快。
另一件事:用 .inc 创建包含不是一个好主意,因为代码可能是可见的。使用 .asp 代替。