ปรับแต่ง language helper/library ของ codeigniter ให้แสดงผลเสมอ

ใน 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 ตามลำดับ ซึ่งถือว่าสำเร็จ

แล้ว ทีนี้การพัฒนางานก็ขอให้ตรวจดูตัวอักษรอย่างละเอียดว่ามีคำใดแปลกๆอย่างที่ ไม่ควรจะเป็นบ้าง จากนั้นก็ตามแก้ไขที่ไฟล์ภาษาให้เรียบร้อย.