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