For Multilanguage Refer the below question thread how exactly we work for Multilanguage’s project for your understanding.
ASP.Net Multilingual website to display Multiple Languages within multiple pages in ASP.Net
As you already created the project with different pages for every language you can maintain it by using session value for language change also for each page by setting session as active page for the pages as per language.
You can set language Value in session after selection of Language on Dropdown Change.
Also if you have different pages as per languages then you can use Session where you can use index type logic for active page. at every page you need to first assign the index as per page and need to assign the index on every change of page redirection to session. also on language change you can check the current active page index and session language so it will work perfectly.
Here you need to implement as per your own logic where you are redirecting to other pages.
I added login page for login and Link button for redirection to other page after user get login so option for section to pages provided by link button on master page, there i set the onclick event where it sets the Page index and redirect to proper page as per the language. You can use you own concept and implement it in you code where you sets the redirection for pages. Just you have to sure you are setting session values correctly so it will work fine for entire project.
HTML
LanuageMasterPage.master
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="LanuageMasterPage.master.cs"
Inherits="LanuageMasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2">
<h1>
<span id="lblHeader" runat="server"></span>
</h1>
</td>
</tr>
<tr>
<td>
<span id="lbllanguage" runat="server"></span>
<asp:DropDownList ID="ddlLangauges" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ChangeLanguges">
<asp:ListItem Text="English" Value="E"></asp:ListItem>
<asp:ListItem Text="Chinese" Value="C"></asp:ListItem>
</asp:DropDownList>
</td>
<td>
<div id="dvLogout" runat="server">
<asp:LinkButton ID="lnkLogout" runat="server" OnClick="Logout"
Text="LogOut"></asp:LinkButton>
</div>
</td>
</tr>
</table>
</div>
<br />
<br />
<br />
<div id="dvPageLinks" runat="server">
<asp:LinkButton ID="lnkHome" runat="server" OnClick="Redirect" CommandArgument="1"
Text="Home"></asp:LinkButton>
<asp:LinkButton ID="lnkFirstPage" runat="server" OnClick="Redirect" CommandArgument="2"
Text="First Page"></asp:LinkButton>
<asp:LinkButton ID="lnkSecondPage" runat="server" OnClick="Redirect" CommandArgument="3"
Text="SecondPage"></asp:LinkButton>
</div>
<div>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
if (Session["ActivePage"] == null)
{
Session["ActivePage"] = "0";
if (Session["Language"] == null)
{
Session["Language"] = "E";
}
Redirect();
}
ddlLangauges.ClearSelection();
ddlLangauges.Items.FindByValue((string)Session["Language"]).Selected = true;
SetText();
}
}
protected void ChangeLanguges(object sender, EventArgs e)
{
Session["Language"] = ddlLangauges.SelectedItem.Value;
Redirect();
}
protected void Logout(object sender, EventArgs e)
{
string url = string.Empty;
string language = (string)Session["Language"];
Session.Abandon();
url = language == "E" ? "~/EnglishLoginPage.aspx" : "~/ChineseLoginPage.aspx";
Response.Redirect(url);
}
protected void Redirect(object sender, EventArgs e)
{
Session["ActivePage"] = (sender as LinkButton).CommandArgument;
Redirect();
}
private void Redirect()
{
string url = string.Empty;
string ActivePage = (string)Session["ActivePage"];
string language = (string)Session["Language"];
switch (ActivePage)
{
case "0":
url = language == "E" ? "~/EnglishLoginPage.aspx" : "~/ChineseLoginPage.aspx";
break;
case "1":
url = language == "E" ? "~/EnglishDefaultPage.aspx" : "~/ChineseDefaultPage.aspx";
break;
case "2":
url = language == "E" ? "~/English.aspx" : "~/Chinese.aspx";
break;
case "3":
url = language == "E" ? "~/SecondEnglishPage.aspx" : "~/SecondChinesePage.aspx";
break;
}
Response.Redirect(url);
}
private void SetText()
{
string language = (string)Session["Language"];
this.lblHeader.InnerHtml = language == "E" ? "Multi Language Pages" : "多语言页面";
this.lbllanguage.InnerHtml = language == "E" ? "Select Language" : "选择语言";
this.lnkHome.Text = language == "E" ? "Home" : "家";
this.lnkFirstPage.Text = language == "E" ? "First Page" : "第一页";
this.lnkSecondPage.Text = language == "E" ? "Second Page" : "第二页";
this.lnkLogout.Text = language == "E" ? "Logout" : "登出";
dvPageLinks.Visible = dvLogout.Visible = (string)Session["ActivePage"] == "0" ? false : true;
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Me.Handel
If Not Me.IsPostBack Then
If Session("ActivePage") Is Nothing Then
Session("ActivePage") = "0"
If Session("Language") Is Nothing Then
Session("Language") = "E"
End If
Redirect()
End If
ddlLangauges.ClearSelection()
ddlLangauges.Items.FindByValue(DirectCast(Session("Language"), String)).Selected = True
SetText()
End If
End Sub
Protected Sub ChangeLanguges(sender As Object, e As EventArgs)
Session("Language") = ddlLangauges.SelectedItem.Value
Redirect()
End Sub
Protected Sub Logout(sender As Object, e As EventArgs)
Dim url As String = String.Empty
Dim language As String = DirectCast(Session("Language"), String)
Session.Abandon()
url = If(language = "E", "~/EnglishLoginPage.aspx", "~/ChineseLoginPage.aspx")
Response.Redirect(url)
End Sub
Protected Sub Redirect(sender As Object, e As EventArgs)
Session("ActivePage") = TryCast(sender, LinkButton).CommandArgument
Redirect()
End Sub
Private Sub Redirect()
Dim url As String = String.Empty
Dim ActivePage As String = DirectCast(Session("ActivePage"), String)
Dim language As String = DirectCast(Session("Language"), String)
Select Case ActivePage
Case "0"
url = If(language = "E", "~/EnglishLoginPage.aspx", "~/ChineseLoginPage.aspx")
Exit Select
Case "1"
url = If(language = "E", "~/EnglishDefaultPage.aspx", "~/ChineseDefaultPage.aspx")
Exit Select
Case "2"
url = If(language = "E", "~/English.aspx", "~/Chinese.aspx")
Exit Select
Case "3"
url = If(language = "E", "~/SecondEnglishPage.aspx", "~/SecondChinesePage.aspx")
Exit Select
End Select
Response.Redirect(url)
End Sub
Private Sub SetText()
Dim language As String = DirectCast(Session("Language"), String)
Me.lblHeader.InnerHtml = If(language = "E", "Multi Language Pages", "多语言页面")
Me.lbllanguage.InnerHtml = If(language = "E", "Select Language", "选择语言")
Me.lnkHome.Text = If(language = "E", "Home", "家")
Me.lnkFirstPage.Text = If(language = "E", "First Page", "第一页")
Me.lnkSecondPage.Text = If(language = "E", "Second Page", "第二页")
Me.lnkLogout.Text = If(language = "E", "Logout", "登出")
dvPageLinks.Visible = InlineAssignHelper(dvLogout.Visible, If(DirectCast(Session("ActivePage"), String) = "0", False, True))
End Sub
HTML
EnglishLoginPage.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/LanuageMasterPage.master" AutoEventWireup="true"
CodeFile="EnglishLoginPage.aspx.cs" Inherits="EnglishLoginPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<br />
<br />
<h1>
Login Page</h1>
<br />
<br />
User name: <asp:TextBox ID="txtuserName" runat="server"></asp:TextBox>
<br />
<br />
Password: <asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox>
<br />
<br />
<asp:Button ID="btnLogin" runat="server" OnClick="Login" Text="Login" />
</asp:Content>
C#
protected void Page_Load(object sender, EventArgs e)
{
Session["Language"] = "E";
}
protected void Login(object sender, EventArgs e)
{
// Your Login Code Logic
if (true)// if login get success
{
Session["ActivePage"] = "1";
Response.Redirect("~/EnglishDefaultPage.aspx");
}
else
{
// Display Error message
}
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs)
Session("Language") = "E"
End Sub
Protected Sub Login(sender As Object, e As EventArgs)
' Your Login Code Logic
If True Then
' if login get success
Session("ActivePage") = "1"
Response.Redirect("~/EnglishDefaultPage.aspx")
' Display Error message
Else
End If
End Sub
HTML
ChineseLoginPage.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/LanuageMasterPage.master" AutoEventWireup="true"
CodeFile="ChineseLoginPage.aspx.cs" Inherits="ChineseLoginPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<br />
<br />
<h1>
登錄頁面</h1>
<br />
<br />
用戶名: <asp:TextBox ID="txtuserName" runat="server"></asp:TextBox>
<br />
<br />
密碼: <asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox>
<br />
<br />
<asp:Button ID="btnLogin" runat="server" OnClick="Login" Text="登錄" />
</asp:Content>
C#
protected void Page_Load(object sender, EventArgs e)
{
Session["Language"] = "C";
}
protected void Login(object sender, EventArgs e)
{
// Your Login Code Logic
if (true)// if login get sucess
{
Session["ActivePage"] = "1";
Response.Redirect("~/ChineseDefaultPage.aspx");
}
else
{
// Display Error message
}
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs)
Session("Language") = "C"
End Sub
Protected Sub Login(sender As Object, e As EventArgs)
' Your Login Code Logic
If True Then
' if login get sucess
Session("ActivePage") = "1"
Response.Redirect("~/ChineseDefaultPage.aspx")
' Display Error message
Else
End If
End Sub
HTML
EnglishDefaultPage.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/LanuageMasterPage.master" AutoEventWireup="true"
CodeFile="EnglishDefaultPage.aspx.cs" Inherits="EnglishDefaultPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<br />
<br />
<h1>
This is Default Page</h1>
</asp:Content>
ChineseDefaultPage.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/LanuageMasterPage.master" AutoEventWireup="true" CodeFile="ChineseDefaultPage.aspx.cs" Inherits="ChineseDefaultPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<br />
<br />
<h1>这是默认页面</h1>
</asp:Content>
English.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/LanuageMasterPage.master" AutoEventWireup="true" CodeFile="English.aspx.cs" Inherits="English" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<br />
<br />
<h1>This is English Page</h1>
</asp:Content>
Chinese.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/LanuageMasterPage.master" AutoEventWireup="true" CodeFile="Chinese.aspx.cs" Inherits="Chinese" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<br />
<br />
<h1>这是中文页面</h1>
</asp:Content>
SecondEnglishPage.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/LanuageMasterPage.master" AutoEventWireup="true" CodeFile="SecondEnglishPage.aspx.cs" Inherits="SecondEnglishPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<br />
<br />
<h1>This is English Second Page</h1>
</asp:Content>
SecondChinesePage.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/LanuageMasterPage.master" AutoEventWireup="true" CodeFile="SecondChinesePage.aspx.cs" Inherits="SecondChinesePage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<br />
<br />
<h1>这是中国第二页</h1>
</asp:Content>
Screenshot