บทความนี้เป็นตอนแรกของซีรีย์ "ระดมพลนักแปล" ความยาว 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 เก็บข้อมูลง่ายๆ ดังตัวอย่าง
#: ../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 เป็นต้น)
โดยทั่วไป ขั้นตอนในการแปลมีดังนี้
ขั้นตอนในข้อ 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 การแปลผ่านเว็บทำได้ง่ายกว่าการแปลปกติมาก อย่างไรก็ตาม ยังมีปัญหาเรื่องการควบคุมคุณภาพของการแปลผ่านเว็บอยู่เยอะเช่นกัน (เช่น มีใครจากไหนไม่รู้มาแก้คำแปลมั่วๆ หรือแปลไม่ไปในทิศทางเดียวกัน) ถ้าเป็นไปได้ ควรติดต่อทีมแปลก่อนเสมอ
การแปลนั้นทำได้ง่ายมากๆ แต่ถ้าจะแปลให้ได้งานคุณภาพดี มีเทคนิคที่ควรสนใจหลายประการ
ถ้าตอบแบบง่ายๆ คือโปรแกรมอะไรก็ได้ที่คุณสนใจ และทางโครงการเปิดโอกาสให้คนช่วยกันแปล แต่ปัจจุบันโครงการที่มีการแปลภาษาไทยบ้างแล้ว มีดังนี้
โครงการที่ยังไม่มีผู้ดูแลภาษาไทย
ตอนหน้ามาว่ากันเรื่องการแปลใน GNOME ครับ