والا در net. یه تکنولوژی هست به نام API و به وسیله اون میشه همچین کاری رو کرد به این شکل که برای هر کنترولتون تکتک برگردانش رو به همون زبان بنویسید که این کار وقت گیر و طاقت فرساییه
که من پیشنهاد می کنم اگر یه وبسایت جمع و جوره از روش بالا برید و بگید تا چگونگی انجامشو توضیح بدهم
ولی اگر به وبسایت داینامیک و تپل دارید باید مراحل زیر رو شئ گرا ، ساخت یافته و مخصوصا تپل انجام دهید :
قبل از انجام این کار به این لینک رفته، دو تا فایل زیپ هست دانلود کنید (من آموزش رو از توی همین سایت دارم توضیح می دم اگر راحت ترید هم می تونید به همون لینک رفته و توضیحات رو با عکس دنبال کنید )
1. یه پروژه جدید ایجاد کنید
2.بعد روی Solution Explorer پروژه تون یه فلدر جدید به نام App_GlobalResources می سازید (یا هر نام دیگه ، فقط باید توی همون روت وبسایتت بسازی )
3. روی پوشه App_GlobalResources راست کلیک و add و سپس Resources File رو انتخاب کنید .
4. شما می تونید هر تعداد که زبان می خواهید به همین طیق اظافه کنید (فقط حواستون باشه به خواصیت نامش دست نزنید)
5. یه کلاس جدید به نام BasePage ایجاد کنید (این کلاسی که می سازیم میشه گفت یه فرهنگ لغت اولیه هست که بعدا صفحات دیگرمون به جای System.Web.UI.Page ازش ارث بری کنند )
مثل :
قدیمی: public partial class Default : System.Web.UI.Page
جدید: public partial class Default : BasePage
6.خوب یه صفحه جدید با نام Default.aspx بسازید و در کد پس زمینه اون ارث بری رو از System.Web.UI.Page به BasePage تغییر دهید.
7. در اخر هم از asp:Literal استفاده می کنیم تا از منبعمان اطلاعات دریافت کنید .
پروژه تمومه کد ها رو این کپی پیست می کنم همینجا ولی چون این جا رنگی نشون نمی ده توصیه می کنم به همون لینک بالا مراجعه کنید .
<asp:Literal ID="Literal3" runat="server" Text="<%$Resources:chienvh.language,mnuHome%>"/>
********************************************
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Threading;
using System.Globalization;
using System;
namespace ASPNetMultiLanguage
{
public class BasePage : System.Web.UI.Page
{
protected override void InitializeCulture()
{
if (!string.IsNullOrEmpty(Request["lang"]))
{
Session["lang"] = Request["lang"];
}
string lang = Convert.ToString(Session["lang"]);
string culture = string.Empty;
/* // In case, if you want to set vietnamese as default language, then removing this comment
if(lang.ToLower().CompareTo("vi") == 0 ||string.IsNullOrEmpty(culture))
{
culture = "vi-VN";
}
*/
if (lang.ToLower().CompareTo("en") == 0 || string.IsNullOrEmpty(culture))
{
culture = "en-US";
}
if (lang.ToLower().CompareTo("vi") == 0)
{
culture = "vi-VN";
}
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture);
base.InitializeCulture();
}
}
}
}
می تونم بگم این یکی از بهترین و کامل ترین جواب هایی بود که تا حالا دادم :)
متاسفانه چون به تعداد کاراکتر ها گیر داد نتونستم تمام کد ها رو بذارم
یادتون نره حتما به لینک بالا مراجعه کنید