majid_afra222
چهارشنبه 24 آبان 1385, 22:37 عصر
وب سایت چند زبانه با .NET 2
سلام
شاید برای شما هم پیش اومده باشه که بخواید یه سایت رو با چند زبان مختلف تولید کنید و ساختارهای اونرو (نوشته ها، تصاویر، چیدمان، عنوان صفحات و ... ) رو تغییر بدید.
می بخشید که زیاد توضیح نمی دم، چون وقت کمه و کارها زیاد. فقط تیکه های اصلی کار رو میگم.
به دو صورت می تونید یه سایت چند زبانه ایجاد کنید،
1- برای هر فایلتون یک یا بیشتر زبان داشته باشید
2- برای کل سایت یک یا بیشتر زبان داشته باشید.
تو اولی به ازای هر صفحه aspx زبانهای مربوط به اون صفحه رو دارید.
برای حالت دوم به ازای هر زبان یه فایل برای کل صفحات سایت خواهید داشت.
حالت اول :
یه صفحه نمونه با اجزای زیر می سازیم :
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" />
برای اینکه زبانهای مربوط به این صفحه رو تعیین کنیم،
1- در حالت Design صفحه می ریم.
2- از منوی Tools گزینه Generate Local Resource رو انتخاب می کنید.
3- خود VS 2005 بصورت خودکار پوشه App_LocalResources رو میسازه و یه فایل resource همنام فایل انتخاب شده براتون میسازه که پسوندش resx خواهد بود. (نام صفحه ما Default.aspx هستش که فایل resource تولید شده برای اون Default.aspx.resx خواهد بود.)
این فایل شامل تمام اطلاعات آیتمهای موجود در صفحتون خواهد بود.
4- بعد از ایجاد فایل صفحه و آیتمهای اون بصورت اتوماتیک تغییر می کنن :
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" Culture="auto" meta:resourcekey="PageResource2" UICulture="auto" %>
<!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>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" meta:resourcekey="Label1Resource2" Text="Label"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server" meta:resourcekey="TextBox1Resource2"></asp:TextBox>
<asp:Button ID="Button1" runat="server" meta:resourcekey="Button1Resource2" Text="Button" /></div>
</form>
</body>
</html>
5- برای اینکه زبانهای دیگه رو به ایم صفحه اضافه کنید کافیه که فایل رو کپی کنید و نام اختصاری زبانهایی رو که میخواید، به پسوندش اضافه کنید (برای فارسی میشه Default.aspx.fa.resx یا Default.aspx.fa-IR.resx برای فرانسه میشه Default.aspx.fr.resx). برای کسب اطلاعات بیشتر در مورد اختصارهای نامگذاری به MSDN مراجعه کنید. (CultureInfo class, about CultureInfo class)
مثلا برای زبان فارسی :
تغییر زبان :
برای تغییر زبان صفحه دو راه حل وجود داره که یکیش تغییر نحوه نمایش اطلاعات تو خود IE هستش که باهاش کاری نداریم، و انرو از طریق کد نویسی می گم.
یه DropDownList1 به این صورت به صفحه اضافه می کنیم :
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true">
<asp:ListItem Value="en-US">English</asp:ListItem>
<asp:ListItem Value="fa-IR">فارسی</asp:ListItem>
</asp:DropDownList>
خوب حالا باید با انتخاب زبان بتونیم اطلاعات صفحه رو عوض کنیم.
برای اینکاه باید متد InitializeCulture رو تو صفحه پیاده سازی کنیم :
using System.Threading;
using System.Globalization;
…
protected override void InitializeCulture()
{
string strLang = Request["DropDownList1"];
if ((strLang != null) && (strLang != ""))
{
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(strLang);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(strLang);
}
}
خوب فقط کافیه صفحه رو اجرا کنید.
مثال رو هم پیوست کردم.
ادامه بحث و نحوه استفاده و کنترل زبان تو master page رو هم انشاا... فردا می گم.
امیدوارم برای دوستان مفید باشه.
سلام
شاید برای شما هم پیش اومده باشه که بخواید یه سایت رو با چند زبان مختلف تولید کنید و ساختارهای اونرو (نوشته ها، تصاویر، چیدمان، عنوان صفحات و ... ) رو تغییر بدید.
می بخشید که زیاد توضیح نمی دم، چون وقت کمه و کارها زیاد. فقط تیکه های اصلی کار رو میگم.
به دو صورت می تونید یه سایت چند زبانه ایجاد کنید،
1- برای هر فایلتون یک یا بیشتر زبان داشته باشید
2- برای کل سایت یک یا بیشتر زبان داشته باشید.
تو اولی به ازای هر صفحه aspx زبانهای مربوط به اون صفحه رو دارید.
برای حالت دوم به ازای هر زبان یه فایل برای کل صفحات سایت خواهید داشت.
حالت اول :
یه صفحه نمونه با اجزای زیر می سازیم :
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" />
برای اینکه زبانهای مربوط به این صفحه رو تعیین کنیم،
1- در حالت Design صفحه می ریم.
2- از منوی Tools گزینه Generate Local Resource رو انتخاب می کنید.
3- خود VS 2005 بصورت خودکار پوشه App_LocalResources رو میسازه و یه فایل resource همنام فایل انتخاب شده براتون میسازه که پسوندش resx خواهد بود. (نام صفحه ما Default.aspx هستش که فایل resource تولید شده برای اون Default.aspx.resx خواهد بود.)
این فایل شامل تمام اطلاعات آیتمهای موجود در صفحتون خواهد بود.
4- بعد از ایجاد فایل صفحه و آیتمهای اون بصورت اتوماتیک تغییر می کنن :
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" Culture="auto" meta:resourcekey="PageResource2" UICulture="auto" %>
<!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>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" meta:resourcekey="Label1Resource2" Text="Label"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server" meta:resourcekey="TextBox1Resource2"></asp:TextBox>
<asp:Button ID="Button1" runat="server" meta:resourcekey="Button1Resource2" Text="Button" /></div>
</form>
</body>
</html>
5- برای اینکه زبانهای دیگه رو به ایم صفحه اضافه کنید کافیه که فایل رو کپی کنید و نام اختصاری زبانهایی رو که میخواید، به پسوندش اضافه کنید (برای فارسی میشه Default.aspx.fa.resx یا Default.aspx.fa-IR.resx برای فرانسه میشه Default.aspx.fr.resx). برای کسب اطلاعات بیشتر در مورد اختصارهای نامگذاری به MSDN مراجعه کنید. (CultureInfo class, about CultureInfo class)
مثلا برای زبان فارسی :
تغییر زبان :
برای تغییر زبان صفحه دو راه حل وجود داره که یکیش تغییر نحوه نمایش اطلاعات تو خود IE هستش که باهاش کاری نداریم، و انرو از طریق کد نویسی می گم.
یه DropDownList1 به این صورت به صفحه اضافه می کنیم :
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true">
<asp:ListItem Value="en-US">English</asp:ListItem>
<asp:ListItem Value="fa-IR">فارسی</asp:ListItem>
</asp:DropDownList>
خوب حالا باید با انتخاب زبان بتونیم اطلاعات صفحه رو عوض کنیم.
برای اینکاه باید متد InitializeCulture رو تو صفحه پیاده سازی کنیم :
using System.Threading;
using System.Globalization;
…
protected override void InitializeCulture()
{
string strLang = Request["DropDownList1"];
if ((strLang != null) && (strLang != ""))
{
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(strLang);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(strLang);
}
}
خوب فقط کافیه صفحه رو اجرا کنید.
مثال رو هم پیوست کردم.
ادامه بحث و نحوه استفاده و کنترل زبان تو master page رو هم انشاا... فردا می گم.
امیدوارم برای دوستان مفید باشه.