PDA

View Full Version : انتخاب زبان سایت Multilingual به وسیله کد



mehrdad_t
چهارشنبه 27 تیر 1386, 11:46 صبح
سلام دوستان

برای پیاده سازی یک سایت چند زبانه ، به وسیله ASP.net 2 و با قابلیتهای System.Globalization این امکان رو میخواهم که کاربران با کلیک روی کلیک هایی (مثلآ پرچم کشور) زبان سایت رو تغییر دهند .


یکی از بهترین Sample هایی که پیدا کردم این مقاله (http://www.c-sharpcorner.com/UploadFile/mosessaur/aspnetlocalization02042006165851PM/aspnetlocalization.aspx?ArticleID=96602e53-0fb1-44ec-a67b-1c68b05eb2e1&PagePath=/UploadFile/mosessaur/aspnetlocalization02042006165851PM/aspnetlocalization.aspx) بود که به وسیله یک DropDownList زبان انتخاب میشه .

برای تبدیل DropDownList به ImageButton دچار مشکل شدم .

به این دلیل که در زمان PostBack ، اولین متد که اجرا میشه متد InitializeCulture() است .


کد C#.net


protected override void InitializeCulture()
{

string culture = Request.Form["cmbCulture"];
if (string.IsNullOrEmpty(culture)) culture = "Auto";
//Use this
this.UICulture = culture;
this.Culture = culture;
//OR This
if (culture != "Auto")
{
System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo(culture);
System.Threading.Thread.CurrentThread.CurrentCultu re = ci;
System.Threading.Thread.CurrentThread.CurrentUICul ture = ci;
}
base.InitializeCulture();

}

کد VB.net

Protected Overrides Sub InitializeCulture()

Dim _culture As String = Request.Form("cmbCulture")
'Use this
If (String.IsNullOrEmpty(Culture)) Then
culture = "Auto"
Me.UICulture = _culture
Me.Culture = _culture
End If
'OR This
If (_culture <> "Auto") Then
Dim ci As New System.Globalization.CultureInfo(Culture)
System.Threading.Thread.CurrentThread.CurrentCultu re = ci
System.Threading.Thread.CurrentThread.CurrentUICul ture = ci
End If
MyBase.InitializeCulture()

End Sub


جایی خوندم که این متد حتی قبل از PageLoad اجرا میشه .

و به همین دلیل مهلت استفاده از Session یا property یا هر چیز دیگه را نمیده و فقط میشه از کنترل هایی مانند DropDownList که دارای Value هستند استفاده کرد.

راهی برای استفاده کردن از بیش از 1 کنترل (مثل 2 کنترل ImageButton ) هست ؟

mehrdad_t
پنج شنبه 28 تیر 1386, 10:49 صبح
من فورآ به پاسخ این سوال نیاز دارم :ناراحت:

لطفآ زودتر کمک کنین :افسرده:

mehrdad_t
شنبه 30 تیر 1386, 21:07 عصر
جوابی نیست ؟

حداقل بگین نمیشه ، که بفهمم که کسی تایپیکم رو خونده !!

khz-web1
یک شنبه 31 تیر 1386, 09:02 صبح
یعنی این کد همون صفحات را به زبان فارسی میسازه

shahramasp
یک شنبه 31 تیر 1386, 09:05 صبح
از Session استفاده کن !
ضمنامن خودم اینجوری نوشتم

protected override void InitializeCulture()
{
try
{
if (Request.QueryString["mLang"] != null)
{
string lang = Convert.ToString(Request.QueryString["mLang"]);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang);
HttpCookie cookie = new HttpCookie("elang");
cookie.Value = lang;
Response.Cookies.Add(cookie);
Page.Culture = lang;
Page.UICulture = lang;

}
else
{
HttpCookie cookie_get = Request.Cookies["elang"];
string Lang_SEt = cookie_get.Value.ToString();
Thread.CurrentThread.CurrentUICulture = new CultureInfo(Lang_SEt);
Page.Culture = Lang_SEt;
Page.UICulture = Lang_SEt;
// Langu.SelectedValue = Lang_SEt;
}
}
catch (Exception)
{
Page.Culture = "fa-IR";
Page.UICulture = "fa-IR";
}
}


ضمنا Session رو هم میشناسه ولی آبجکت های پیجت رو نمی شناسه

khz-web1
یک شنبه 31 تیر 1386, 09:11 صبح
آقا اگه می خوا کد بدی وی بی بده بعد توضیح هم بده

shahramasp
سه شنبه 02 مرداد 1386, 09:24 صبح
عجیبه مگه vb و c# فرقی داره !!!!!!!!!!!11
عزیزه من ساختار تقریبا یکیه !!؟؟!!

mehrdad_t
پنج شنبه 04 مرداد 1386, 20:45 عصر
خیلی خیلی ممنونم

نمیدونم چرا سایت به من میل نزد که پاسخ داده شده !!؟ :متفکر:

مثلآ تنظیمش کرده بودم !