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:

  1. Lang = Document.getElementById("LanguageSelected").innerText 似乎不起作用!那么如何获取selected语言值并为每个用户分别翻译网页呢?
  2. 这是根据网站上 select 用户使用的语言进行网页翻译的正确方法吗?

Document.getElementById("LanguageSelected").innerText 看起来像客户端 Javascript。 ASP 是服务器端代码,它在提供页面时执行,因此您需要使用查询字符串值或表单提交来填充变量 Lang 并使用类似 [=12 的内容检索它=]

  1. 使用asp更改语言(document.getElement...是javascript!):

    <a href="index.asp?lang=rus">Rus</a></li>
    

然后,lang = request.querystring("lang")

  1. 另一种方法是创建带有变量 (txt_title="Titulo", txt_button_yes="Si",...) 并根据语言包含一个文件或另一个文件。包含文件比查询数据库快。

另一件事:用 .inc 创建包含不是一个好主意,因为代码可能是可见的。使用 .asp 代替。