Login
or
Register
Your Cart
|
InstantForum.NET 2012
InstantKB.NET 2011
Active Directory
Live Demos
Download
Purchase
InstantForum.NET Hosting
InstantKB.NET Hosting
New Ticket
Documentation
Knowledgebase
Support Services
Support Plans
Contact Us
Community Forums
Our Blog
On Twitter
About Us
Our Customers
Customer Comments
Contact Us
Paragraph Style
Font Name
Real font size
Apply CSS Class
Custom Links
Zoom
%3cdiv style%3d%22float%3a left%3b line-height%3a 14px%3bfont-family%3a Verdana%3b font-size%3a 10pt%3b%22%3eThis article shows how to use a single InstantForum.NET installation to provide multi-lingual versions of your forums.%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3eFor this example to work you need to ensure your forum names are structured and have a consistent naming convention based on the language they will target and the name of the culture querystring passed into the forum. This example will look for the string passed into the Culture querystring within your forum titles and only display those that contain matching text.%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3eFor example if you have an existing web site and which to provide a link to both an English and French Canadian version of your forums you could use two links as shown below...%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3ehttp%3a//forum.domain.com/%3fCulture%3den-US %3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3ehttp%3a//forum.domain.com/%3fCulture%3dfr-CA%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3eDepending on which link you clicked the forum would attempt to filter forums based on the culture and also default to the language pack for that culture if available within the Globalization folder.%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cstrong%3e%3cspan class%3d%22Header%22%3e%3cb%3e1. Persist the culture querystring into a client side cookie%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3c/b%3e%3c/span%3e%3c/strong%3eOpen InstantASP.InstantForum.UI%5cMasterPages%5cMasterPage.vb. Modify the AddParsedSubObjects method as shown below.%3cstrong%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan class%3d%22Code%22%3eProtected Overrides Sub AddParsedSubObject%28ByVal obj As Object%29%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cfont style%3d%22BACKGROUND-COLOR%3a %23ffff80%22 size%3d%22%2b0%22%3e %27 check for culture querystring%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e If System.Web.HttpContext.Current.Request.QueryString%28%22Culture%22%29 %26lt%3b%3e %22%22 Then%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3c/font%3e%3cfont style%3d%22BACKGROUND-COLOR%3a %23ffff80%22 size%3d%22%2b0%22%3e InstantASP.Common.HttpUtility.Cookies.SetCookie%28%22forumCulture%22%2c _%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e System.Web.HttpContext.Current.Request.QueryString%28%22Culture%22%29%29%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e End If%3c/font%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e If TypeOf obj Is InstantASP.InstantForum.UI.Controls.Content Then%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e Me.ArrListContents.Add%28obj%29%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e Else%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e Me.DefaultControl.Controls.Add%28DirectCast%28obj%2c System.Web.UI.Control%29%29%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e End If%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3eEnd Sub%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3c/strong%3eThis will save the value of the %22Culture%22 querystring to a client side cookie. We will be using this cookie to determine which language pack to default to and also which forums we should remove from the collection to display only forums for that culture.%3cstrong%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cb%3e%3cspan class%3d%22Header%22%3e%3cb%3e2. Set the default Language Pack%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3c/b%3e%3c/span%3e%3c/b%3e%3c/strong%3eIf a language pack exists that matches your Culture querystring parameter you can modify the forum to use this language pack by default.%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3eOpen InstantASP.InstantForum%5cHttpContext%5cForumContext.vb. Locate the %22GetCurrentCulture%22 property and modify as shown below...%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan class%3d%22Code%22%3e%3cstrong%3ePrivate ReadOnly Property GetCurrentCulture%28%29 As String%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e Get%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3c/strong%3e%3cfont style%3d%22BACKGROUND-COLOR%3a %23ffff80%22%3e%3cspan style%3d%22BACKGROUND-COLOR%3a rgb%28255%2c255%2c0%29%22%3e%3cspan style%3d%22font-weight%3a bold%3b%22%3e %3c/span%3e%3cfont style%3d%22BACKGROUND-COLOR%3a %23ffff80%22%3e%3cstrong%3e Dim CultureCookie As System.Web.HttpCookie %3d _%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e InstantASP.Common.HttpUtility.Cookies.GetCookie%28%22forumCulture%22%29%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3c/strong%3e%3c/font%3e%3cstrong%3e%3cfont style%3d%22BACKGROUND-COLOR%3a %23ffff80%22%3e If Not CultureCookie Is Nothing Then%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e If System.IO.Directory.Exists%28InstallPath %2b _%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e InstantASP.InstantForum.Globals.Paths.GlobalizationDirectory %2b _%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e %22%5c%22 %2b CultureCookie.Value%29 Then%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e Return CultureCookie.Value%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e End If%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e End If%3c/font%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3c/strong%3e%3c/span%3e%3c/font%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cstrong%3e If System.Web.HttpContext.Current.Request.IsAuthenticated Then%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e If GetCurrentUser.Culture %26lt%3b%3e %22%22 Then%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e Return GetCurrentUser.Culture%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e Else%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e Return CurrentSharedSettings.Culture%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e End If%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e Else%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e Return CurrentSharedSettings.Culture%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e End If%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e End Get%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3eEnd Property%3c/strong%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan class%3d%22Header%22%3e3. Filter forums based on the culture cookie%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3c/span%3eYou can use the value within the culture cookie to build a new forum collection containing only the forums for the current culture. This allows you to hide your French Canadian forums for your English visitors and visa-versa.%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3eYou will need to open %5cInstantASP.InstantForum.UI%5cControls%5cViewForumGroups.vb and modify the BindData method as shown below...%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan class%3d%22Code%22%3e%3cstrong%3ePrivate Sub BindData%28%29%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e %27 we don%27t have a forum%2c display index%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e If Forum Is Nothing Then%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e .. removed code here to make this sample more readable%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e End If%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3c/strong%3e%3cfont style%3d%22BACKGROUND-COLOR%3a %23ffff80%22%3e%3cspan style%3d%22font-weight%3a bold%3b%22%3e %3c/span%3e%3cfont style%3d%22BACKGROUND-COLOR%3a %23ffff80%22%3e%3cstrong%3e Dim CultureCookie As System.Web.HttpCookie %3d _%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e InstantASP.Common.HttpUtility.Cookies.GetCookie%28%22forumCulture%22%29%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3c/strong%3e%3c/font%3e%3cstrong%3e%3cfont style%3d%22BACKGROUND-COLOR%3a %23ffff80%22%3e Dim FilterdForumCollection As InstantASP.InstantForum.Collections.ForumCollection %3d Nothing%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e If Not CultureCookie Is Nothing Then%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e FilterdForumCollection %3d New InstantASP.InstantForum.Collections.ForumCollection%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e For i As Int32 %3d 0 To ForumCollection.Count - 1%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e Dim Forum As InstantASP.InstantForum.Components.Forum %3d ForumCollection.Item%28i%29%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e %27 add forum groups that contain our culture within the forum name %3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e %27 to the new filterdforumcollection%2c this only filters forum groups %3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e If Forum.Name.ToLower.IndexOf%28CultureCookie.Value.ToLower%28%29%29 %3e -1 Then%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e FilterdForumCollection.Add%28Forum%29%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e End If%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e Next%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e End If%3c/font%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3c/strong%3e%3c/font%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cstrong%3e %27 do we have a collection%3f%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e If ForumCollection.Count %3e 0 Then%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3c/strong%3e%3cstrong%3e%3cfont style%3d%22BACKGROUND-COLOR%3a %23ffff80%22%3e %27 bind group forum collection to repeater%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e If Not FilterdForumCollection Is Nothing Then%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e ctlForumGroups.DataSource %3d FilterdForumCollection%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e Else%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e ctlForumGroups.DataSource %3d ForumCollection%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e End If%3c/font%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e %27 bind data to repeater%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e ctlForumGroups.DataBind%28%29%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e Else %27 hide the control%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e %27 disable controls%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e Me.Visible %3d False%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e End If%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3eEnd Sub%3c/strong%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3eThis will fiilter forum groups and only display those groups which contain the string contained within the Culture querystring / cookie within the group name. For example if you link to your forums with the culture http%3a//forum.comain.com/%3fCulture%3dfr-CA only forum groups which contain %22fr-CA%22 will be displayed. Other forum groups will be hidden. %3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cstrong%3e%3cspan class%3d%22Header%22%3eThat%27s It%3c/span%3e%3c/strong%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3eDon%27t forget once you%27ve made the changes above you will need to rebuild the InstantForum.NET solution. Whilst there are improvements that can be made to this sample it shows the basic steps to control the default culture of your forums automatically using a querystring parameter. I hope this was helpful and would welcome any comments or suggestions below.%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3e%3cspan style%3d%22font-size%3a 4pt%3b%22%3e%3cp%3e%3c/p%3e%3c/span%3eInstantASP Support%3cbr /%3ehttp%3a//kb.instantasp.co.uk/Knowledgebase/Conditionally-displaying-localized-forums-using-a-custom-querystring-parameter-within-InstantForum.N%3c/div%3e
Design
HTML
Preview