Asp经典Vbscript网页语言转换成变量

Asp经典Vbscript网页语言转换成变量,vbscript,asp-classic,Vbscript,Asp Classic,例如,我在index.asp中有语言切换器 <ul class="drop-lang_menu"> <li id="LanguageSelected"><img src="img/icons/flags/ru.png" /><a href="#">Rus</a> <ul> <

例如,我在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>
<%
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
%>
在这个文件中,我还提供了“登录”按钮文本翻译功能

<%=transl("Login")%>

此函数在index.asp中包含的文件function.inc中进行了说明

            <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>
<%
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
%>

问题是:

  • Lang=Document.getElementById(“LanguageSelected”)。innerText似乎不起作用!那么,如何获得选定的语言值并分别为每个用户翻译网页呢
  • 这是根据用户在网站上选择的语言进行网页翻译的正确方法吗

  • Document.getElementById(“LanguageSelected”).innerText看起来像客户端Javascript。ASP是服务器端代码,在提供页面时执行,因此您需要使用querystring值或表单提交填充变量
    Lang
    ,并使用类似
    Lang=request(“Lang”)

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

  • 然后,lang=request.querystring(“lang”)

  • 另一种方法是使用变量(txt_title=“Titulo”,txt_button_yes=“Si”,…)创建文本文件(rus.asp,esp.asp,…),并根据语言包括一个或另一个文件。包含文件比查询数据库快
  • 另一件事:使用.inc创建includes不是一个好主意,因为代码可能是可见的。请改用.asp