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

时间:2010-06-15 17:29:42

标签: database asp-classic multilingual

我想咨询我做的事情。

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

一旦输入网站语言1(希伯来语)将自动选择,直到您选择另一个。并保存为session("currentLanguage")

我写了一个函数 langstirng ,它接收一个字段名称并根据session("currentLanguage")中的语言输出值:

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

我这样使用它:<div>langstring("header")</div>

我发现在任何页面上不断向服务器发送查询都是愚蠢的。由于多语言表不会改变“那个”,我常常想以某种方式保存当前浏览的记录集。

我正在寻找这个解决方案的帮助,请。

2 个答案:

答案 0 :(得分:1)

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

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

另一种选择是使用类似Caprock.Dictionary

的内容将字符串缓存在内存中

答案 1 :(得分:0)

另一种选择是,如果您希望将语言存储在单独的表中,然后使用join语句根据语言设置的cookie或会话提取该信息。

然后你永远不必检查语言并创建组合框,就像你只有一个html组合框,其中包含表格中该语言唯一ID的值。