Database 使用ASP和数据库的多语言网站

Database 使用ASP和数据库的多语言网站,database,asp-classic,multilingual,Database,Asp Classic,Multilingual,我想咨询一下我所做的事情 我的网站有3种语言。希伯来语(主要)、英语和俄语。我使用的是一个数据库,它有一个包含以下字段的表:ID,fieldName,1,2,3。其中1 2 3是语言 进入网站后,将自动选择语言1(希伯来语),直到您选择其他语言。并保存为会话(“currentLanguage”) 我编写了一个函数langstirng,它接收一个字段名,并根据会话(“currentLanguage”)中的语言打印值: 我是这样使用的:langstring(“header”) 我发现在任何页面上都一

我想咨询一下我所做的事情

我的网站有3种语言。希伯来语(主要)、英语和俄语。我使用的是一个数据库,它有一个包含以下字段的表:ID,fieldName,1,2,3。其中1 2 3是语言

进入网站后,将自动选择语言1(希伯来语),直到您选择其他语言。并保存为
会话(“currentLanguage”)

我编写了一个函数langstirng,它接收一个字段名,并根据
会话(“currentLanguage”)
中的语言打印值:

我是这样使用的:
langstring(“header”)

我发现在任何页面上都一直向服务器发送查询是愚蠢的。由于多语言表通常不会更改“THAT”,因此我希望以某种方式保存记录集以供当前浏览


我正在寻找此解决方案的帮助。

如果它们不经常更改,为什么不将字符串转储到.asp文件中

只要在数据库中进行了更改,就可以重写此文件


另一个选项是使用类似

的东西将字符串缓存在内存中。另一个选项是,如果您希望将语言存储在单独的表中,然后使用join语句根据语言设置为的cookie或会话将该信息提取出来

然后,您不必检查语言并创建组合框,就像您只需要在表中创建一个html组合框,其中包含语言的唯一ID值

Dim languageStrings
Set languageStrings = Server.CreateObject("ADODB.Recordset")
languageStrings.ActiveConnection = MM_KerenDB_STRING
languageStrings.Source = "SELECT fieldName,"&current_Language&"FROM Multilangual"
languageStrings.CursorType = 0
languageStrings.CursorLocation = 2
languageStrings.LockType = 1
languageStrings.Open()

sub langstring(fieldName)
    do while NOT(languageStrings.EOF)
        if (languageStrings.fields.item("fieldName").value = fieldName) then
            exit do
        else
            languageStrings.movenext
        end if
    loop

if (languageStrings.EOF) then
    response.Write("***"&fieldName&"***")
else
    response.Write(languageStrings.fields.item(currentLanguage+1).value)
end if
    languageStrings.movefirst
end sub