Copyright © 2003-2010
By Suthep Sangvirotjanaphat
  Mobile: 089-967-2200, 081-915-7816
Phone: 0-2992-4877   Fax: 0-2992-4878
Fast Contact Us

GreatFriends.Biz Community

Custom Search
Copy เพื่ออ้างอิงถึงข้อความนี้:
 MESSAGE #28407 (อ่าน 2,015 ครั้ง)

การทำเว็บไซด์ 2 ภาษา

คือผมอยากรู้ว่า การทำเว็บไซด์สองภาษา ทุกอย่างต้องเก็บใน Table หมดเลยหรือเปล่าครับ

อย่างเช่น ผมมีหน้าจอ Register
 
ชื่อ :................                Name :...................
นามสกุล:..............            Surname:................
 
 
คือข้อมูลเก็บลอง Database อย่างละ 2 Rows ไม่มีปัญหา
อย่างตัว Label ข้างหน้า  เช่น  ชื่อ,Name,นามสกุล,Surname    ต้องเก็บลง Database ด้วยหรือเปล่า จริงๆแล้วผมกลัวว่า ถ้าเก็บทุกอย่างลง Database กลัวเวลามันดึงขึ้นมาจะช้า  จะทำหน้าละ 2 page คงไม่ไหว
 
 
อยากทราบว่ามีวิธีการที่ดี อย่างไรในการทำเว็บไซด์สองภาษา


MK2000 วันที่ส่ง: 6 พ.ย. 49 11:07 GMT+7
วันที่ปรับล่าสุด: 6 พ.ย. 49 15:46 GMT+7
REPLY #1 (28412)
ถ้าหากเป็นบน Win App แนะนำให้ใช้พวก Resource File เข้ามาช่วยครับ ผมไม่เคยทำบน Web App เหมือนกัน แต่คิดว่าน่าจะใช้ concept เดียวกันเข้ามาช่วยได้ครับ


soccers_guy10 วันที่ส่ง: 6 พ.ย. 49 12:56 GMT+7
วันที่ปรับล่าสุด: 6 พ.ย. 49 12:56 GMT+7
REPLY #2 (28433)

การทำ เว็บสองภาษาสามารถทำได้ สองระดับ คือระดับ data กับ ระดับ control

ในระดับ data คือ ต้องออกแบบฐานข้อมูลเก็บ ข้อมูลสองภาษา ซึ่งอยู่ที่การออกแบบ
ID fname_th fname_En lname_th lname_en Tel
1 เอ A บี B 122222
กรณี มีหลายๆๆภาษา อาจทำให้จำนวนฟิวเยอะขึ้น
 
หรือ
 
ID lang_ID fname lname Tel
1 1 เอ บี 122222
1 2 A B 122222
lang_ID name
1 Thai
2 English
ปรับปรุงง่าย กรณี ต้องการเพิ่มเป็น หลายๆๆภาษา
อาจทำให้ข้อมูล ซ้ำซ้อน
 
หรือมีวิธีอื่นๆๆอีกลองคิดออกแบบดู ข้อดีข้อเสีย
 
แต่ถ้าทำในระดับ คอนโทรลพวก label button หรืออื่นๆๆ สามารถทำได้ง่าย กว่าทำในระดับข้อมูล เนื่องจากในระดับข้อมูล อาจควบคุมข้อมูล input ค่อนข้างยาก ส่วนมากจะนิยมทำในระดับ control มากกว่า
โดยใช้ resource file ซื่ง vs.net สามารถทำได้ง่ายๆๆครับ
ผมเคยทำใน vs.net 2003 ไม่เคยลอง ใน 2005 แต่คิดว่าน่าจะคล้ายๆๆกัน เคยตอบไว้ที่ thaishap แล้ว ขอตอบอีกทีแล้วกัน
 

1.      สร้าง control มา 3 อัน คือ

Label: Id=lblWelcome, Text=””

Button: Id=btnTH, Text=””

Button: Id=btnEN, Text=””

 
 

2.    สร้าง Resource files เพื่อเก็บข้อความที่ต้องการแสดงของแต่ละภาษา เช่น ภาษาไทย อังกฤษ ฝรั่งเศส

       -คลิกขวาที่ชื่อโปรเจ็ค ในส่วนของ Solution เลือก Add->Add new Item

->Assembly Resource Files ตั้งชื่อ Resource.en-US.resx

 

   ใน Resource.en-US.resx พิมพ์ข้อความภาษาอังกฤษที่ต้องการแสดง

Name ชื่ออ้างอิง Value ค่าที่จะให้แสดง

    ทำซ้ำขั้นตอนที่ 2 เพื่อสร้าง Resource File ภาษาไทย หรือภาษาที่ต้องการแสดง จะได้

 

ซึ่งจะต้องกำหนด Name ให้ตรงกันในแต่ละภาษาที่ต้องการแสดง และกำหนด Value ที่สอดคล้องกันด้วย

เช่น Lbl1 แสดงข้อความภาษาอังกฤษ Welcome to my Website ต้องตั้งชื่อตรงกับ lbl1 แสดงข้อความภาษาไทย ยินดีต้อนรับเข้าสู่เว็บของฉัน
 

3. เมื่อคลิก start เพื่อcompile และเลือก Shows All files จะเห็น ไฟล์ Multilingual.Resources.dll และ โฟลเดอร์ th-TH,en-US เพิ่มเข้ามา

 

 

Imports System.Resources

Imports System.Globalization

Imports System.Threading

 

 

 

Public Class _default

 

    Inherits System.Web.UI.Page

Dim Culturename As String

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        'Put user code to initialize the page

        Dim lang As String = Request.QueryString("l")

        If lang = "th" Then

            Culturename = "th-TH" 'set Culture เป็น ภาษาไทย

            Dim c As CultureInfo = New CultureInfo(Culturename)

            Thread.CurrentThread.CurrentCulture = c

            Thread.CurrentThread.CurrentUICulture = c

        ElseIf lang = "en" Then

            Culturename = "en-US" 'set Culture เป็น ภาษาอังกฤษ

            Dim c As CultureInfo = New CultureInfo(Culturename)

            Thread.CurrentThread.CurrentCulture = c

            Thread.CurrentThread.CurrentUICulture = c

        ElseIf lang = "" Then

            Culturename = "en-US" 'กำหนดเป็น Default

            Dim c As CultureInfo = New CultureInfo(Culturename)

            Thread.CurrentThread.CurrentCulture = c

            Thread.CurrentThread.CurrentUICulture = c

        End If

        'ใช้ Resource manager เป็นตัวจัดการ Resource file

        Dim rm As ResourceManager = New ResourceManager("Multilingual.Resource", System.Reflection.Assembly.GetExecutingAssembly())

        'Multilingual.Resource คือ =ชื่อโปรเจ็ค.ชื่อ Resource file (ชื่อ Resource file ซึ่งในที่นี้คือ Resource.en-US.resx กับ Resource.th-TH.resx)

        lblWelcome.Text = rm.GetString("lbl1") 'lbl1 เป็นชื่อที่สอดคล้องกับ Resource file

        btnTH.Text = rm.GetString("btn1")

        btnEN.Text = rm.GetString("btn2")

    End Sub

    Private Sub btnTH_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTH.Click

        Response.Redirect("default.aspx?l=th")

    End Sub

 

    Private Sub btnEN_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEN.Click

        Response.Redirect("default.aspx?l=en")

    End Sub

End Class

 

 

ตัวอย่าง culture name



จอมขมังเวทย์ วันที่ส่ง: 6 พ.ย. 49 15:23 GMT+7
วันที่ปรับล่าสุด: 6 พ.ย. 49 15:23 GMT+7
REPLY #3 (28435)
ขอบพระคุณมากนะครับ


MK2000 วันที่ส่ง: 6 พ.ย. 49 15:46 GMT+7
วันที่ปรับล่าสุด: 6 พ.ย. 49 15:46 GMT+7
กระทู้นี้มีอายุเกิน 365 วันแล้ว ท่านจะไม่สามารถตอบกระทู้นี้ได้อีก
ถ้าต้องการสนทนาต่อ กรุณาตั้งเป็นกระทู้ใหม่ได้ในหน้าโฮม
และอาจจะอ้างถึงกระทู้นี้ โดยก๊อปปี้ข้อความในกล่องสีขาวด้านล่างไปแปะในกระทู้ใหม่

copy เพื่ออ้างอิงถึงข้อความนี้:
การทำเว็บไซด์ 2 ภาษา
http://greatfriends.biz?28407


20 ต.ค. 11:11
Online: 38