อัพเดท: 2007.11.02 คุณ SuperToy_nc (ผู้ดูแลชุดภาษาไทยของ phpBB ในปัจจุบัน) แจ้งมาว่า ชุดภาษาไทยของ phpBB 2 นั้น มีให้ดาวน์โหลดเป็น UTF-8 อยู่แล้ว ที่เว็บไซต์ phpBB.com
ใครที่จะติดตั้งใหม่ และจะใช้ UTF-8 ก็ไปดาวน์โหลดได้จากเว็บไซต์ phpBB ได้โดยตรงเลย ไม่ต้องแปลงอย่างที่แสดงข้างล่างนะครับ
(ข้างล่างนี้ เป็นกรณีที่ มีชุดภาษาที่เป็น TIS-620 (หรือ encoding อื่น ๆ) ติดตั้งอยู่แล้ว และต้องการจะแปลงของเดิมนี้เป็น UTF-8 — กรณีนี้กรณีเดียวเท่านั้น)
และ phpBB ทั้งรุ่น 2 และ 3 ต่างก็ใช้ UTF-8 ได้ทั้งคู่
ส่วนใครอยากดูวิธีลง phpBB ตั้งแต่ตั้งต้น ก็ไปดูได้ที่หน้าเว็บ http://supertoy.host.sk/howto/phpbb.html (ภาษาไทย, มีภาพประกอบ)
ขอขอบคุณคุณ SuperToy_nc มา ณ ที่นี้ด้วยครับ ที่ช่วยชี้แจงอธิบายและส่งลิงก์มาให้
และขอโทษทุกท่านที่อาจทำให้เข้าใจผิด คิดว่าตัวชุดภาษาไทยของ phpBB มันไม่มีแบบ utf-8 ต้องมาแปลงเองด้วยครับ
ส่วนใครที่ใช้ธีมตระกูล *silver แล้วมีปัญหา ภาษาไทยที่หัวเรื่องหมวดหมู่มันแสดงโย้ ๆ (โดยเฉพาะถ้าดูใน Firefox บนลีนุกซ์)
ให้ไปดูที่โฟลเดอร์ templates/ชื่อธีม แล้วแก้ไฟล์ *.css และไฟล์ *_header.tpl ทั้งหลาย (ซึ่งมี css อยู่ที่หัว)
โดยเอา letter-spacing ออกไปซะ และถ้ามีพวก text-align ที่เป็น justify ก็เอาออกไปด้วย หรือแก้เป็น left
(ที่ตัวอักษรมันโย้ เพราะว่าตัวเบราว์เซอร์มันคำนวณระยะห่างตัวอักษรผิดครับ มันเอาพวกสระบนล่างและวรรณยุกต์ไปคำนวณ spacing ด้วย ก็เลยเป็นอย่างนั้น จริง ๆ ควรจะที่เว็บเบราว์เซอร์ให้มันจัดให้ถูก ๆ แต่ตอนนี้ก็เลี่ยงแบบนี้ไปก่อนได้)
ก่อนแก้ .cattitle letter-spacing = 1px:

หลังแก้ ลบ letter-spacing ทิ้งไปเลย:

(ตัวข้อความที่เปลี่ยนไปไม่เกี่ยวกะ css นะ อันนั้นอยู่ในส่วนที่แปลเพิ่มเติม)
[โพสต์ดั้งเดิมเริ่มที่นี่]
ที่ภาควิชารับผิดชอบเป็นศูนย์ประสานงานภาคกลางของงานประกวดซอฟต์แวร์ National Software Contest (NSC)
พี่ที่แล็บจะทำเว็บบอร์ด ด้วย phpBB แต่ติดว่าตัว ชุดภาษาไทย (Thai language pack) [ที่ติดตั้งอยู่เดิม] มันมีปัญหากับรหัสอักขระ utf-8
ผมไม่อยากเปลี่ยนฐานข้อมูลเป็น tis-620 อยากจะใช้ให้ทั้งหมดเป็น utf-8 เลยคิดว่าน่าจะมาแก้ที่ตัว phpBB ที่ตัวชุดภาษา
ชุดภาษาใน phpBB จะติดตั้งอยู่ที่ไดเรกทอรีชื่อ “language” ข้างในก็จะมีไดเรกทอรีย่อยของแต่ละภาษาอยู่ ของภาษาไทยอยู่ใน “lang_thai” ผมก็ทำสำเนาอีกชุดซะ มาเป็น “lang_thai-utf8” กันเหนียว
ที่ต้องทำตอนแรก ก็คือแปลงพวกไฟล์ข้อความ จากรหัส tis-620 ให้เป็น utf-8 ซะก่อน ในชุดภาษามีไฟล์หลัก ๆ อยู่ 4 อัน คือ lang_main.php, lang_admin.php, lang_bbcode.php, lang_faq.php
ส่วนไฟล์สำหรับช่วยการค้นหา search_stopwords.txt และ search_synonyms.txt นั้น เป็นภาษาอังกฤษล้วน ก็ไม่ต้องทำอะไร
(สำหรับไฟล์ในไดเรกทอรี email นั้น จะแปลงหรือไม่แปลงก็ได้ ไม่เกี่ยวกับเว็บ)
iconv -f tis-620 -t utf-8 lang_xxx.php > lang_xxx.php
จากนั้นแก้ $lang['ENCODING'] ในไฟล์ lang_main.php ให้เป็น utf-8 ด้วย:
$lang['ENCODING'] = 'utf-8';
ถึงขั้นนี้ ตัว phpBB ก็จะแสดงภาษาไทยได้แล้ว โดยใช้ utf-8
แต่ยังไม่เสร็จ เพราะตอนโพสต์ข้อมูลมันจะยังเพี้ยนอยู่ ตัวอักษรไทยในหัวข้อมันจะถูกแปลงไปเป็น &#nnnn;
อัพเดท: ลองทดสอบอีกที เอ แค่แก้ตัวชุดภาษาอย่างเดียวมันก็เวิร์กแล้วนี่นา สงสัยก่อนหน้าที่ไม่เวิร์ก (ตัว charset ยังเป็น iso-8859-1) คงเป็นเพราะแคชยังค้างอยู่ ยังไงถ้าใครจะลองทำตาม ก็ลองทำแบบไม่แก้แม่แบบ (ขั้นตอนด้านล่าง) ดูก่อนนะครับ แล้วถ้าไม่ได้จริง ๆ ค่อยแก้แม่แบบอีกที
ตาม หน้า Support ของ phpBB (I am seeing &#nnnn; sequences output instead of what I typed!) เขาว่า นี่เป็นเพราะ phpBB ยังไม่รองรับ utf-8 ... อ้าว เวร อุตส่าห์แก้+แปลเพิ่มมาตั้งเยอะ ไม่รู้ล่ะ ยังไงฉันก็จะใช้ให้ได้
(อัพเดท 2007.11.02: ปัญหาที่เกิดตามหน้า support นั้น ไม่ใช่ว่า phpBB ไม่รองรับ utf-8 แต่น่าจะเป็นตัว template (theme) นั้น ๆ มันไม่ยอมเปลี่ยน charset declaration ของ HTML page ให้เป็นไปตามที่ตั้งไว้ใน $lang['ENCODING'] วิธีแก้ในกรณีนี้ ก็คือไม่ต้องใช้ตัวแปรที่ว่า แต่ฮาร์ดโค้ดไปเลย ตามที่แสดงด้านล่าง)
มันก็มีวิธี hack ๆ ก็คือ แทนที่จะใช้ตัวแปร S_CONTENT_ENCODING สำหรับ charset ใน header/meta ของ HTML เราก็ hard code มันไปซะเลย ใช้กำลังเข้าบังคับ
โดยเข้าไปแก้ที่ไฟล์ *_header.tpl ของแม่แบบที่เราจะใช้ ซึ่งพวกแม่แบบนี่ ก็จะอยู่ในไดเรกทอรี “templates”
ในที่นี้ เว็บบอร์ด NSC ภาคกลาง ใช้แม่แบบชื่อ subSilver ซึ่งมีไฟล์เฮดเดอร์อยู่สองไฟล์ คือ overall_header.tpl และ simple_header.tpl ก็แก้มันทั้งคู่
ดูบรรทัดบน ๆ แก้จาก:
<meta http-equiv="Content-Type" content="text/html; charset={S_CONTENT_ENCO
DING}">
เป็น:
<!-- <meta http-equiv="Content-Type" content="text/html; charset={S_CONTENT_ENCO
DING}"> -->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
คือบังคับเลย ว่า “แกต้องเป็น utf-8 นะ เข้าใจไหม ?”
อัพเดท: บางทีอาจจะไม่ต้องแก้ขั้นตอนนี้ก็ได้ แก้แต่ตัวชุดภาษาก็พอ
แก้เสร็จแล้วลอง ๆ โพสต์ดูนะครับ ว่าได้รึเปล่า ลองกดดูซอร์สด้วย ว่าที่แสดงผล กับ HTML code มันเหมือนกันรึเปล่า
ส่วนนี่คือหน้าตาของที่ nsc.siit.net/webboard

สำหรับไฟล์ชุดภาษาที่แปลงเป็น utf-8 แล้ว ดาวน์โหลดได้ที่ http://arthit.googlepages.com/lang_thai-utf8.tar.gz โดยผมได้แปลเพิ่มเติมเอาไว้บางส่วนด้วย (ส่วนใหญ่จะเป็นพวกคำพื้น ๆ ที่ยังใช้ภาษาอังกฤษอยู่ เช่น admin, moderator, email, username, password ทำนองนี้) — เดี๋ยวจะส่งให้กับทางผู้ดูแลแพคเกจต่อไป
นอนดีกว่า - -"
technorati tags:
phpBB,
utf-8,
localization,
Thai