ระดมพลนักแปล: ตอนที่ 1

by mk
28 March 2008 - 16:48

บทความนี้เป็นตอนแรกของซีรีย์ "ระดมพลนักแปล" ความยาว 4 ตอน เป้าหมายหลักคือส่งเสริมให้ผู้ใช้ซอฟต์แวร์โอเพนซอร์สในประเทศไทยเข้ามามีส่วนร่วมกับการพัฒนามากขึ้น โดยเริ่มจากงานง่ายๆ อย่างการแปลส่วนติดต่อผู้ใช้หรือเอกสารก่อน

ในตอนแรกนี้ผมจะแนะนำข้อมูลคร่าวๆ ของวงการแปลก่อน ส่วนตอนต่อๆ ไปนั้นได้ผู้เชี่ยวชาญของการแปลซอฟต์แวร์โครงการใหญ่ๆ 3 ตัว (GNOME, KDE, Ubuntu) มาเจาะลึกลงรายละเอียดของแต่ละโครงการให้

ทำไมจึงต้องแปล

คำถามที่พบบ่อยที่สุดในหมู่ power user ในประเทศไทยคือ "ทำไมจึงต้องแปลเมนูเป็นภาษาไทย" ส่วนสาเหตุนั้นส่วนมากจะอธิบายว่าคุ้นกับเมนูภาษาอังกฤษมากกว่า หรือแปลแล้วอ่านไม่เข้าใจ

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

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

เข้าสู่โลกของการแปล

คำศัพท์สำคัญที่ควรรู้มีสองคำ คือ Internationalization (ตัวย่อ i18n -- เหตุผลที่ย่อแบบนี้ลองนับตัวอักษรดูครับ) ซึ่งแปลว่าการทำให้เป็นสากล กับ Localization (l10n) หรือการทำให้เป็นท้องถิ่น

สองแนวคิดนี้ไม่เหมือนกันแต่อยู่ร่วมกันได้ i18n คือการทำให้ซอฟต์แวร์ตัวใดตัวหนึ่งรองรับการใช้งานในทุกภาษาโดยไม่ต้องติดตั้งอะไรเพิ่มเติม แนวคิด i18n นั้นสำคัญมากในช่วงหลัง เพราะถ้าซอฟต์แวร์เวอร์ชันเดียวสามารถนำไปใช้ได้ทุกประเทศ ค่าใช้จ่ายในการสนับสนุนจะลดลงมหาศาล ตัวอย่างที่ชัดเจนคือ Windows ในสมัยก่อนถ้าจำกันได้จะมี Thai Edition แต่พอมาเป็นยุค XP นั้นไม่มีแล้ว ไม่ว่าเราจะเดินไปใช้คอมพิวเตอร์ที่ไหนในโลกที่เป็น XP มันจะ "อ่าน" ภาษาไทยได้เสมอ

ส่วน l10n หรือการทำให้เป็นท้องถิ่นนั้นเป็นระดับที่อยู่สูงกว่า i18n คือไม่จำเป็น แต่มีได้ก็ดี (ในบางประเทศที่ไม่นิยมใช้ภาษาอังกฤษก็เป็นเรื่องสำคัญ แต่ในไทยก็ไม่ขนาดนั้น) ส่วนใหญ่แล้ว l10n มักหมายถึงการแปลส่วนติดต่อผู้ใช้ แต่จริงๆ ยังรวมถึงวิธีการใช้งานด้านอื่นด้วย เช่น ระบบตัวเลข ระบบเงินตรา เขตเวลา ไปจนถึงยี่ห้อของ search engine ที่มากับ Firefox ในแต่ละภาษาจะเปลี่ยนไปตามความนิยมของประเทศนั้นๆ

ในบทความชุดนี้จะเน้นเรื่องการแปล (translation) ซึ่งเป็นซับเซ็ตใหญ่ใน l10n

การแปลซอฟต์แวร์โอเพนซอร์ส

ซอฟต์แวร์ส่วนมากในปัจจุบันแยกข้อความ (string หรือ message) ออกจากตัวโค้ดเพื่อความสะดวกในการแปล ฟอร์แมตของข้อความเหล่านี้ที่นิยมใช้คือ GNU Gettext ซึ่งมีไฟล์​3 ชนิด ดังนี้

  • .po เป็นไฟล์ plain text ธรรมดาที่เก็บข้อความแปลเรียงต่อกันไปเรื่อยๆ เราใช้ไฟล์นี้เป็นหลักในการแปล
  • .mo ไฟล์ไบนารีที่แปลงจาก .po เพื่อให้คอมพิวเตอร์อ่านได้ (คำสั่งที่ใช้แปลงคือ msgfmt แต่โปรแกรมแปลหลายตัวก็รวมความสามารถนี้ไว้ในตัวแล้ว)
  • .pot เทมเพลตสำหรับ .po คือไฟล์ .po ว่างๆ ที่ยังไม่ได้ทำการแปล ใช้เฉพาะเวลาเริ่มแปลโปรแกรมใหม่เท่านั้น และดาวน์โหลดไฟล์นี้ได้จากเว็บโครงการ

โครงสร้างของไฟล์ .po เก็บข้อมูลง่ายๆ ดังตัวอย่าง

#: ../data/gedit.desktop.in.in.h:1
msgid "Edit text files"
msgstr "แก้ไขแฟ้มข้อความ"

บรรทัดแรกคือคอมเมนต์​ส่วน msgid คือข้อความต้นตำรับ และ msgstr คือข้อความที่แปล

ปกติแล้ววิธีดูภาษาของการแปลจะดูตามชื่อไฟล์ มักอยู่ในรูป appnames.langcode.po เช่น gedit.th.po สำหรับภาษาไทยใช้ th เสมอ ในบางกรณีอาจเห็นเป็น th-TH ซึ่งตัวหลังหมายถึงรหัสประเทศ (เพราะบางภาษาแตกต่างกันเล็กน้อยในแต่ละประเทศ อย่าง en-US หรือ en-GB เป็นต้น)

ขั้นตอนและเครื่องมือในการแปล

โดยทั่วไป ขั้นตอนในการแปลมีดังนี้

  1. เลือกโปรแกรมที่สนใจ
  2. หาไฟล์ .po (ในกรณีที่มีคนเริ่มไว้ให้แล้ว) หรือ .pot (แล้วนำมาเปลี่ยนชื่อเป็น .po)
  3. ลงมือแปลด้วย text editor ตามชอบ
  4. แปลงไฟล์ .po เป็น .mo
  5. นำ .mo ไปทดสอบว่าที่แปลไปนั้นใช้ได้แค่ไหน
  6. ส่งไฟล์ .po ที่สมบูรณ์กลับไปยังโครงการ

ขั้นตอนในข้อ 3. นั้นใช้ text editor อะไรก็ได้ (ปกติผมใช้ Gedit นี่ล่ะ) แต่ก็มีโปรแกรมเฉพาะทางสำหรับการแปลที่มีเครื่องมืออำนวยความสะดวกเพิ่มเติมให้ (เช่น ตรวจคู่วงเล็บ, นับคำที่ยังไม่แปล ฯลฯ) ที่นิยมคือ Poedit (cross-platform), gtranslator (Linux), OmegaT+ (Java) และ LocFactory Editor (Mac)

ส่วนข้อ 4. โปรแกรมที่ใช้แปลงอยู่ในชุด gettext ซึ่งมีในลินุกซ์ทุกยี่ห้อ (สั่ง apt-get install gettext มาได้โดยตรงบน Ubuntu หรือ Debian) โปรแกรมช่วยแปลที่ยกตัวอย่างมาส่วนมากก็มีความสามารถนี้มาให้ในตัว (มักใช้ชื่อว่า compile ในเมนู) การแปลง .po เป็น .mo ทำได้ง่ายๆ โดยใช้คำสั่ง

msgfmt app.th.po

เราจะได้ app.th.mo มา ซึ่งเมื่อนำไปวางไว้ยังไดเรคทอรีที่กำหนด (แตกต่างกันตามแต่ละซอฟต์แวร์และระบบปฏิบัติการ) โปรแกรมของเราจะขึ้นภาษาไทยให้เลือกทันที

เมื่อแปลเสร็จแล้ว เราก็จะส่งไฟล์ .po กลับไปยังโครงการต้นน้ำ (upstream) เพื่อทำการรวมเป็นแพกเกจสำหรับแจกจ่าย ถ้าเป็นโครงการที่เราเป็นคนไทยคนแรกที่เข้าไปช่วยแปล ให้ติดต่อไปยังทีมงานพัฒนาเพื่อส่งไฟล์ (บางโครงการจะให้เราขอสิทธิ์ CVS commit โดยตรง) แต่ถ้าเป็นโครงการที่มีคนไทยแปลอยู่แล้ว ให้ส่งไฟล์ไปยังหัวหน้าทีมแปลไทยหรือ project co-ordinator ได้โดยตรง

ในปัจจุบันเริ่มมีระบบแปลผ่านเว็บเพื่อความสะดวกในการแปล ตัวอย่างสำคัญคือ Launchpad ของ Ubuntu การแปลผ่านเว็บทำได้ง่ายกว่าการแปลปกติมาก อย่างไรก็ตาม ยังมีปัญหาเรื่องการควบคุมคุณภาพของการแปลผ่านเว็บอยู่เยอะเช่นกัน (เช่น มีใครจากไหนไม่รู้มาแก้คำแปลมั่วๆ หรือแปลไม่ไปในทิศทางเดียวกัน) ถ้าเป็นไปได้ ควรติดต่อทีมแปลก่อนเสมอ

คำแนะนำสำหรับผู้เริ่มแปล

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

  • การแปลไฟล์ .po นั้นเราไม่เห็นว่าข้อความจะถูกนำไปใช้ที่ไหนบ้าง ควรเปิดตัวโปรแกรมจริงประกอบ และมีความรู้ความเชี่ยวชาญในตัวโปรแกรมนั้นพอสมควร
  • ระมัดระวังเรื่องการสะกดผิด โดยเฉพาะพิมพ์วรรณยุกต์เกิน
  • ความสม่ำเสมอในการแปลเป็นเรื่องสำคัญมาก ควรแปลให้เหมือนกันในทุกที่ที่มีคำนั้น และคำศัพท์ที่พบบ่อยจำนวนมาก มีข้อตกลงกันในหมู่นักแปลแล้ว ว่าจะแปลเป็นภาษาไทยว่าอะไร (ดู OSS Glossary ของเนคเทค)
  • ระมัดระวังการแปลข้อความขนาดยาว ภาษาไทยจะมีปัญหาเรื่องตัดคำในบางโปรแกรม
  • การแปลสำนวนจากภาษาอังกฤษเป็นภาษาไทย ไม่ได้แปลตรงตัวเสมอไป
  • การแปลทำงานกันเป็นทีม ควรพูดคุยกับผู้แปลที่ลงทะเบียนกับทางโครงการโอเพนซอร์สไว้แล้วก่อน เพื่อทราบระเบียบและธรรมเนียมปฏิบัติ
  • มีปัญหาเรื่องการแปล ร่วมพูดคุยกันในเมลลิ่งลิสต์นักแปลภาษาไทย Thai Localization Group
  • รายละเอียดเพิ่มเติมสำหรับผู้เริ่มต้นแปล อ่านได้จาก Thai L10n

โปรแกรมอะไรบ้างที่ควรแปล

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

โครงการที่ยังไม่มีผู้ดูแลภาษาไทย

  • Fedora
  • OpenSUSE
  • Mozilla (ยังอยู่ช่วงเสนอให้ภาษาไทยเป็น supported language)
  • WordPress (ผมเคยแปลไว้แต่ไม่ได้ดูแลต่อแล้ว)
  • Adium

ตอนหน้ามาว่ากันเรื่องการแปลใน GNOME ครับ

Blognone Jobs Premium