Tuesday, July 29, 2008

Culture and Localization with .NET

เรื่องวันเดือนปีเวลาของท้องถิ่นกับ .NET

# ปัญหาเรื่อง วันที่ เวลา และ พุธศักราช(พ.ศ.) หรือ คริสศักราช(ค.ศ.)

# บางทีเมื่อเรา insert ข้อมูลที่เป็นวันที่ลงใน sql server แล้วมันขึ้นประมาณว่ารูปแบบ หรือ ปี มันเยอะเกินรับได้

# เราต้องตั้งค่าเริ่มต้นให้ control ทุกตัวใน app เรารุ้ก่อนว่าโปรแกรมเราตั้งรูปแบบวันที่เป็นอาไร

# ไทย เราก็ใช้ th-TH ส่วนถ้าเป็น อังกฤษเราควรใช้เป็น en-US

# ด้านล่างจะเป็นโค้ด C# ภาษาอื่นๆ ใน .Net ก็ใช้คล้ายๆ กัน

using System.Threading;
using System.Globalization;

// Put the following code before InitializeComponent()
// Sets the culture to French (France)
//Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");
// Sets the UI culture to French (France)
//Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR");

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");

//Thread.CurrentThread.CurrentCulture = new CultureInfo("th-TH");
//Thread.CurrentThread.CurrentUICulture = new CultureInfo("th-TH");



# web app สามารถใช้ได้Thread.CurrentThread.CurrentCulture เหมือน app ได้นะ

# ตำแหน่งวางใน web app ควรวางที่ Page_Load ของไฟล์ aspx นั้นๆ


protected void Page_Load(object sender, EventArgs e)
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("th-TH");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("th-TH");

........... another code ............
}

# แต่จะปรับเฉพาะบาง page เท่านั้น

# ถ้าต้องการปรับเปลียนทุก page ต้องแก้ที่ web.config ให้แก้ tag

<globalization uiculture="en" culture="en-US">

# ให้เป็นประมาณนี้ นะคิดว่า

<globalization uiculture="th" culture="th-TH"/>

# หรือถ้ามันไม่ได้ให้ไปดูใน scriptmanager เพิ่ม property เข้าไปอีก

<asp:scriptmanager id="ScriptManager1" runat="server">

# ให้แก้ไขเป็น

<asp:ScriptManager ID="ScriptManager1" runat="server"
EnableScriptGlobalization="True" EnableScriptLocalization="True" >

# ประมาณนี้อ่ะ ตามไปดูที่นี้เลย

References:

No comments:

Post a Comment