ใน Codeigniter ไม่ว่าจะ version 1 หรือ 2 จะพบปัญหาอย่างหนึ่งเกี่ยวกับ Helper/Library ภาษา นั่นคือเมื่อระบุชุดแปลภาษาลงไปแล้ว เราไม่ได้ทำคำแปลนั้นไว้ มันจะส่งค่าว่างเปล่ากลับมา
ตัวอย่างเช่น
echo $this->lang->line("product_new");
แล้วในไฟล์ product_lang เราไม่ได้กำหนด $lang['product_new']
เอาไว้ มันก็จะส่งค่าว่างเปล่ากลับมา
ซึ่งมันก็อาจจะดีสำหรับเว็บไซต์ที่ออนไลน์ใช้งานจริง แต่ไม่ดีเลยสำหรับขั้นตอน development เพราะเราจะพลาดมันไป เนื่องจากมองไม่เห็นมัน
มาวันนี้เราจะให้มันส่งค่ากลับมาทุกครั้ง แม้ไม่พบก็ต้องส่งค่าเหมือนเดิมกลับมา
จากตัวอย่างข้างบน คือส่งคำว่า product_new กลับมา แทนที่จะส่งค่าว่างๆกลับมา
ให้ดาวน์โหลดไฟล์ต่อไปนี้ แตกออกไว้ใน application ของ codeigniter
ดาวน์โหลดข้าง ในจะประกอบไปด้วย 2 ไฟล์ คือไฟล์ MY_Language_helper.php และ MY_Lang.php ซึ่งจะทำงานซ้อนไฟล์หลักของ codeigniter แต่ไม่ได้ทับไฟล์หลัก ดังนั้นสบายใจได้ 😉
เมื่อแตกไฟล์ลงในตำแหน่งที่บอกทั้งสองไฟล์แล้ว ให้ทดลองโดยการสร้างไฟล์ language ขึ้นมา เช่น test_lang.php ไว้ใน application/language/english
ใส่ชุดแปลภาษาลงไปแค่ 1 คือ
$lang['test_line'] = 'Line';
จากนั้นสร้าง controller ขึ้นมา 1 ไฟล์ อาจตั้งชื่อว่า test.php
class test extend CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->helper("language");
$this->lang->load("test");
}
public function index()
{
echo $this->lang->line("test_line") . "<br />";
echo $this->lang->line("test_new") . "<br />";
echo lang("test_circle");
}
}
แล้วลองเรียกดู http://localhost/test
จะได้ผลลัพธ์ Line test_new test_circle ตามลำดับ ซึ่งถือว่าสำเร็จ
แล้ว ทีนี้การพัฒนางานก็ขอให้ตรวจดูตัวอักษรอย่างละเอียดว่ามีคำใดแปลกๆอย่างที่ ไม่ควรจะเป็นบ้าง จากนั้นก็ตามแก้ไขที่ไฟล์ภาษาให้เรียบร้อย.