กระโดดไปยังแผงนำทาง

อะไรคือ Internationalization และ localization 16 July 2008 9:33 am

บันทึกโดย Mr. PeeTai ใน : การสร้างซอฟต์แวร์, Open Source , ตรวจย้อนกลับ

เดี๋ยวนี้ Opensource ต่าง ๆ นอกจากจะสร้างขึ้นเป็นระบบเปิด ที่อนุญาตให้เหล่านักพัฒนาสามารถสร้าง plugins, extension หรือ add ons เข้ามาเพิ่มเติมได้แล้ว สิ่งที่สำคัญอีกอย่างหนึ่งก็คือเรื่องของ “ภาษา”

พัฒนาการของ Opensource นั้นเร็วมาก เผลอไม่ทันข้ามสัปดาห์ก็ออกรุ่นใหม่ ๆ ออกมาแล้ว ดังนั้นเราจึงมั่นใจในระดับหนึ่งว่ากลไกภายในที่สร้างขึ้นมาใหม่ ย่อมมีความเป็นเลิศในหลาย ๆ ด้าน

แต่สิ่งที่จะช่วยเติมเต็มให้กับ Opensource นั้นกลับเป็นเรื่องของการเปิดกว้างให้แสดงผลได้หลายภาษา ตามแต่ล่ะท้องถิ่นที่นำมันไปใช้ มันจึงกลายเป็นเรื่องน่าเศร้าใจ หาก Opensource ตัวใดก็ตามมีความสามารถเป็นเลิศ เปิดให้ทำอะไรได้หลาย ๆ อย่าง แต่กลับขาดเพียงอย่างเดียว นั่นคือ “ไม่เปิดเรื่องการแปลภาษา”

ผมเคยแปล extension ของ MediaWiki ตัวนึงนะ มันเป็น Google Map Extension โดยการแปลจากภาษาอังกฤษเป็นภาษาไทย พอดีผมอยากจะใช้แล้วไม่มีใครแปล ผมเลยแปลเอง แต่เมื่อแปลแล้วผมก็เก็บไว้กับตัวเอง เพราะผมงงกับการลงทะเบียนสิ่งที่แปลแล้วใน Betawiki มาก (สงสัยว่าผมจะไม่ได้ตั้งใจทำความเข้าใจซะมากกว่า T-T)

จะเห็นว่านอกจากจะมีระบบที่เอื้อต่อการแปลภาษาแล้ว ทาง MediaWiki เองก็ยังมีชุมชนที่คอยบริหารจัดการเรื่องการแปลภาษาอีกด้วย ดังนั้นเราจะเห็นว่า ถ้าเปรียบ Opensource เหมือนธุรกิจรถยนต์, MediaWiki ก็เปรียบได้กับโรงงานผลิตรถยนต์และตัวแทนจำหน่าย ในขณะที่ BetaWiki ก็เปรียบได้กับศูนย์บริการหลังการขายนั่นเอง

ดูเหมือนว่าการแปลภาษาจะเป็นเรื่องธรรมดา ไม่เห็นว่ามีอะไร แต่เท่าที่ผมตรวจสอบแล้ว มันทำให้ผมพบกับอุปสรรคดังต่อไปนี้

1.  ความทันสมัยต่อเนื่อง

ก็อย่างที่บอกครับว่า Opensource มันปรับรุ่นบ่อยมาก ดังนั้นพอมันปรับทีนึง เราก็ต้องตามไปแปลให้ทีนึง เนื่องจากรุ่นที่ใหม่ขึ้นก็หมายความว่าจะต้องมีข้อความใหม่ ๆ มาให้แปลมากขึ้น แค่มีข้อความเพิ่มน่ะไม่เท่าไหร่ แต่ถ้ามันเปลี่ยนรูปแบบของข้อความไปเลย ไม่เหมือนเดิมเ้ลย ยิ่งแล้วใหญ่

2.  ความเร้าใจ

บางครั้งการจะแปลภาษาให้กับ Opensource เราก็ต้องมาดูว่ามีคนใช้มันเยอะมั้ย คุ้มกับการแปลมันหรือเปล่า ถ้ามีคนใช้น้อย แปลไปก็งั้น ๆ สู้นั่งเล่น Pinball ยังจะดีกว่า

ความชอบและหลงไหลก็มีส่วน ยกตัวอย่างเช่น ถ้าผมชอบ Wordpress ผมก็จะใช้ Wordpress มากกว่าที่จะใช้ Drupal ซึ่งถ้าเป็นแบบนี้ ผมก็ย่อมที่จะกระหายใคร่อยากที่จะแปล Wordpress ให้เป็นภาษาไทยมากกว่า Drupal เป็นต้น

3.  ความสะดวก

ถ้าเราได้ลอง Opensource หลาย ๆ ตัว เราจะพบว่าบางตัวมีกลไกที่สะดวกมาก เพื่อเปิดทางให้เราแปลภาษา ในขณะที่บางตัวก็วุ่นวายทำความเข้าใจยากซะเหลือเกิน


สุดท้าย วิธีที่ผมเห็นว่าดีที่สุดเลยก็คือ ถ้าใครอยากจะใช้ Opensource ดังกล่าว แล้วให้มันแสดงผลเป็นภาษาไทย โดยข้อความในนั้นเป็นสำนวนของตัวเอง (จะสุภาพหรือกวนประสาทยังไงก็ได้) … งั้นทำเองใช้เองก็แล้วกันครับ … แป่ว T-T

ตนเป็นที่พึ่งแห่งตน

ถ้าไม่พึ่งตนแล้วจะพึ่งใคร

Technorati Tags: , , ,

ความคิดเห็น»

1. wiennat - 16 July 2008

แล้วสรุปว่า internationalization กับ localization คืออะไร? ไม่เห็นอธิบายเลย

2. Mr. PeeTai - 16 July 2008

ผมเองก็ตั้งหัวข้อเอาไว้ เพื่อมาถามชาวบ้านเขาเหมือนกันครับคุณ wiennat :-P

3. crucifier - 16 July 2008

- -”

4. songchai - 17 July 2008

ขอเป็น user ดีกว่าครับ ความสามารถไม่ถึง ขอบคุณทุกความเหนื่อยยากสำหรับนักพัฒนา

5. audy - 18 July 2008

ที่ผมเข้าใจเป็นแบบนี้นะครับพี่
Internationalization (i18n) คือการทำให้โปรแกรมให้คนชาติอื่น อ่านและบันทึกข้อมูลในภาษาของเขาได้ โดยไม่ต้องปรับแต่งอะไรเพิ่มเติม อย่างเช่นผมทำโปรแกรมอะไรซักอย่างนึง อ่าน/บันทึก ภาษาไทย, อังกฤษ ได้ คุณ au8ust เอาโปรแกรมไปใช้ในภาษาลาว ต้องสามาถทำได้ทันที โดยไม่ต้องแก้ส่วนใดๆ ของซอฟแวร์เลย (ถึงแม้ว่าเมนู ยังเป็นภาษาอังกฤษหรือ ภาษาอื่นก็ตาม)

ส่วน Localization (l10n) คือการทำให้ส่วนติดต่อผู้ใช้งาน ให้เป็นภาษาท้องถิ่น

ผมชอบเรื่องนี้มากนะครับ อย่างเรื่อง l10n ถ้าผมไม่ชอบใจประโยคไหน อ่านแล้วต้องแปลเป็นไทย ผมเปลี่ยนทันที

6. audy - 18 July 2008

นึกๆ มาแล้ว ก็ขำตัวเอง
เมื่อก่อน ตอนคิดทำเวบเมนูสองภาษาผมใช้วิธีจับยัดคำแปลใส่ Associative arrays
เล่นเอามึนอยู่เหมือนกัน เพราะให้คนอื่นแปลให้ แล้วลืมเครื่องหมาย ‘ ” , () ทำให้เวบไม่ทำงานเอาซะดื้อ ไล่หากันตั้งนาน

ตอนนี้ใช้ gettext ครับ ชีวิตสบายขึ้นเยอะ

7. Mr. PeeTai - 18 July 2008

ขอบคุณมากครับคุณ Audy สำหรับการอธิบาย เพราะเรื่องนี้ผมก็ไม่รู้จริงเหมือนกัน ก็เลยมาโยนหินถามทางเนี่ยแหล่ะ

8. dcopywriter - 20 July 2008

ขอบคุณครับ

9. crucifier - 21 July 2008

ขอบคุณคุณ audy ครับ :D


*
เพื่อพิสูจน์ว่าคุณเป็นมนุษย์ (ไม่ใช่หุ่นยนต์) ดังนั้น กรุณาใส่รหัสป้องกันซึ่งแสดงอยู่ด้านล่างด้วยครับ
Anti-Spam Image