<% Dim langMgr Set langMgr = New LanguageManager iInterfaceLang = langMgr.DefaultLangID(FLD_ADMIN_INTERFACE) iContentLang = langMgr.DefaultLangID(FLD_ADMIN_CONTENT) iDefLangID = langMgr.LangID CONST FLD_ADMIN_INTERFACE = "IsAdminInterfaceDef" CONST FLD_ADMIN_CONTENT = "IsAdminContentDef" CONST FLD_FRONT_END = "IsDefault" CONST LANG_COOKIE_PREFIX = "iSiteShell" CONST LANG_COOKIE_DURATION_IN_MONTHS = "3" Class LanguageManager Public Property Let LangID(iLangID) If iLangID > 0 Then Response.Cookies(LANG_COOKIE_PREFIX + "LanguageID") = iLangID Response.Cookies(LANG_COOKIE_PREFIX + "LanguageID").Expires = DateAdd("m", LANG_COOKIE_DURATION_IN_MONTHS, Now()) Else iLangID = DefaultLangID Me.LangID = iLangID End If End Property Public Default Property Get LangID() LangID = Trim(Request.Cookies(LANG_COOKIE_PREFIX + "LanguageID") & "") If Len(LangID) = 0 Then LangID = DefaultLangID(FLD_FRONT_END) Me.LangID = LangID End If End Property Public Property Get DefaultLangID(sFieldSource) Dim rsLang, sSQL, iLangID ' Search default language Set rsLang = CreateRS() sSQL = "SELECT LangID FROM Languages WHERE " & sFieldSource & " <> 0" rsLang.Open sSQL If Not IsRSEmpty(rsLang) Then iLangID = rsLang(0) rsLang.Close Else ' No default language is available. Let's mark a language as default and save that one. rsLang.Close rsLang.Open "Languages", , adOpenKeyset, adLockOptimistic, adCmdTable If Not IsRSEmpty(rsLang) Then iLangID = rsLang("LangID") rsLang(sFieldSource) = True rsLang.Update rsLang.Close Else rsLang.Close Die "There are no languages defined. The system needs at least one." End If End If DefaultLangID = iLangID End Property Public Function GetCharset(iLangID) Dim rsCharSet, sSQL Set rsCharSet = CreateRS() sSQL = "SELECT CharSet FROM Languages WHERE LangID=" & iLangID rsCharSet.Open sSQL If Not rsCharSet.EOF Then GetCharset = rsCharSet(0) Else getCharset = "iso-8859-1" rsCharSet.Close Set recordSet = Nothing End Function Public Function GetContent(sMsgID, sTableSource, iLangID) Dim rsContent, sSQL Set rsContent = CreateRS() sSQL = "SELECT Message FROM " & sTableSource & " WHERE MessageID='" & sMsgID & "' AND LangID=" & iLangID rsContent.Open sSQL If Not IsRSEmpty(rsContent) Then GetContent = rsContent(0).Value & "" If Len(GetContent) = 0 Then GetContent = "[CONTENT RECORD FOUND, BUT NO CONTENT AT ALL]" End If Else GetContent = "[CONTENT NOT FOUND: " & sSQL & "]" End If rsContent.Close End Function Public Function GetContentWithParams(sMsgID, asParams, asParamValues, sTableSource, iLangID) Dim sMsg, i, iLBound, iUBound, iUBoundValues sMsg = GetContent(sMsgID, sTableSource, iLangID) If IsArray(asParams) And IsArray(asParamValues) Then iLBound = LBound(asParams) iUBound = UBound(asParams) iUBoundValues = UBound(asParamValues) For i=iLBound To iUBound If i <= iUBoundValues Then sMsg = Replace(sMsg, "$" & asParams(i), asParamValues(i)) End If Next Else sMsg = Replace(sMsg, "$" & asParams, asParamValues) End If GetContentWithParams = sMsg End Function Public Function GetPCMContent(sPCMID, iLangID, sTitle, sKeywords, sDescription, sContent, sHeading) Dim rsContent, sSQL Set rsContent = CreateRS() sSQL = "SELECT Title, Keywords, Description, Content, Heading FROM PCMPages WHERE LangID=" & iLangID & " AND PageID='" & sPCMID & "'" rsContent.Open sSQL If Not IsRsEmpty(rsContent) Then sTitle = rsContent("Title") sKeywords = rsContent("Keywords") sDescription = rsContent("Description") sHeading = rsContent("Heading") sContent = rsContent("Content") End If End Function Private Sub Die(sReason) If Response.Buffer Then Response.Clear Response.Write "" _ & "" _ & "Language Manager Error

" _ & sReason _ & "
" Response.End End Sub End Class %>