[PrestaShop][Language] เจาะลึกกับ Translations
ในส่วนของ Module และ ระบบ (ภาคจบ)
ใน
Folder Translations และ Lang นั้น
มีโครงสร้างที่แตกต่างกัน วันนี้จะขออธิบายโครงสร้างทั้งหมด
เพื่อให้ทุกท่านได้ลองใช้งานกันได้ถูกต้องและเป็นอัตโนมัติ หากใช้งานคู่กับ Prestashop
Automatic Translations with Google
โครงสร้าง translations จากระบบ ตัวอย่างเช่น \translations\en\admin.php
global $_LANGADM;
$_LANGADM = array();
$_LANGADM['AdminAddressesd3b206d196cd6be3a2764c1fb90b200f'] = 'Delete selected';
$_LANGADM['AdminAddressese25f0ecd41211b01c83e5fec41df4fe7'] = 'Delete selected items?';
$_LANGADM['AdminAddressesb718adec73e04ce3ec720dd11a06a308'] = 'ID';
หากเป็นตัวแปรของ admin
หรือทำหน้าที่แสดงข้อความจากส่วน Backend นั้นจะใช้
ตัวแปรชื่อว่า $_LANGADM โดยมีส่วนประกอบดังนี้
$_LANGADM['AdminAddressesd3b206d196cd6be3a2764c1fb90b200f'] = 'Delete selected';
$_LANGADM คือ ชื่อตัวแปร
AdminAddresses คือ
ชื่อโมดูลที่แสดงผลในแต่ละส่วน
d3b206d196cd6be3a2764c1fb90b200f คือ MD5 ของข้อความ
‘Delete selected’
'Delete selected' คือ
ข้อความที่ต้องการแสดงผล
ทั้งนี้ยังมีอีกหลาย ๆ
ตัวแปรสำหรับส่วนของ admin ไม่ว่าจะเป็น $_ERRORS,
$_FIELDS, $_LANGPDF ยกเว้นแต่ $_TABS จะระบุ Key
ที่ไม่ต้องการ Encrypt ด้วย MD5
โครงสร้าง translations จากโมดูล ตัวอย่างเช่น fbconnect_psb\translations
global $_MODULE;
$_MODULE = array();
$_MODULE['<{fbconnect_psb}prestashop>registration_fb_6335a00a08fde0fbb8f6d6630cdadd92'] = 'ข้อมูลส่วนบุคคล';
$_MODULE['<{fbconnect_psb}prestashop>registration_fb_b78a3223503896721cca1303f776159b'] = 'คำนำหน้า';
จะสังเกตุได้ว่า โครงสร้าง Translations
ของ โมดูลนั้น จะมีตัวแปรที่แตกต่างออกไป ซึ่งระบบใน
Prestashop เลือกใช้เป็นตัวแปรชื่อ $_MODULE โดยมีรายละเอียดดังนี้
$_MODULE['<{fbconnect_psb}prestashop>registration_fb_6335a00a08fde0fbb8f6d6630cdadd92'] = 'ข้อมูลส่วนบุคคล';
$_MODULE คือ ตัวแปรสำหรับเก็บภาษา
<{fbconnect_psb}prestashop>registration_fb_ คือ Key
ของการแสดงผลของภาษาในแต่ละส่วน โดยจะมีส่วนประกอบย่อยดังนี้
· {fbconnect_psb} ชื่อโมดูล
· <prestashop>
คือ Tag
· registration_fb คือ Action หรือ template File(*.tpl) ของแต่ละหน้าจอของโมดูลนั้น ๆ
เมื่อ 3 ส่วนนี้ประกอบเข้าด้วยกัน จะรองรับ Module ที่มี Template
หลาย ๆ หน้าจอได้ ด้วย translation ไฟล์เดียว
** ข้อสำคัญ ถึงแม้ว่าจะมีคำ ๆ
เดียวกัน แต่ต่างกันระหว่าง Template จำเป็นจะต้องเขียน
Key ที่แตกต่างกันด้วย
*** สำหรับ ไฟล์ Template
(*.tpl) จะเห็นวิธีการเขียนการแสดงผลของข้อความเป็นดังนี้
{l s='Your personal information'
mod='fbconnect_psb'}
หมายความว่า l(anguage)
ที่มีข้อความ s(tring) ชื่อ Your
personal information ในส่วนของ mod(ule) ชื่อว่า
fbconnect_psb ซึ่งจะสัมพันธ์กับ en.php หรือ th.php ในคำอธิบายด้านบน
6335a00a08fde0fbb8f6d6630cdadd92 คือ MD5 ของข้อความ
“ข้อมูลส่วนบุคคล”
'ข้อมูลส่วนบุคคล'คือ ข้อความที่ต้องการแสดงผล
โครงสร้าง lang จาก theme ตัวอย่างเช่น \themes\ap_office\lang
ซึ่งเป็นตัวอย่างสุดท้าย
global $_LANG;
$_LANG = array();
$_LANG['404_d0fbda9855d118740f1105334305c126'] = 'Page not found';
$_LANG['404_44b1d05764b093cb00c25b8228cb87d3'] = 'This page is not available';
$_LANG['addresses_d95cf4ab2cbf1dfb63f066b50558b07d'] = 'My account';
$_LANG['addresses_e45be0a0d4a0b62b15694c1a631e6e62'] = 'My addresses';
สำหรับ language ที่ได้เขียนผ่าน theme นั้น จะมีลักษณะ ตัวแปรใหม่
ซึ่งเราจะเห็นว่าใช้ตัวแปรชื่อ $_LANG โดยที่ตัวแปรนี้จะควบคุมการแสดงผลทั้งหมดของ
THEME โดยมีรายละเอียดดังนี้
$_LANG['addresses_e45be0a0d4a0b62b15694c1a631e6e62'] = 'My addresses';
$_LANG คือตัวแปร
addresses_ คือ Action หรือ Template File(*.tpl) ในการกำหนดความสัมพันธ์ของการแสดงผลในหน้าจอ
เช่นตัวอย่างนี้จะสัมพันธ์กับ addesses.tpl ซึ่งภายในไฟล์จะเขียนคำสั่งในการแสดงผลในตัวอย่างนี้
{l s='My
addresses'} จะเห็นได้ว่าเป็น Language ย่อส่วนโดยไม่ต้องระบุ
mod(ule) ต่อท้าย เพราะใช้ไฟล์ language โดยรวมของ theme ไปแล้ว
e45be0a0d4a0b62b15694c1a631e6e62 คือ MD5 ของ My addresses
'My addresses' คือ ค่าที่ต้องการแสดงข้อความผ่านหน้าจอต่าง ๆ
สรุปโดยรวม จะเห็นได้ว่า การออกแบบ Prestashop
นั้นได้ถูกออกแบบมาเพื่อรองรับ Multilingual
หรือการทำเว็บไซต์หลายภาษามาเป็นอย่างดี อย่างไรก็ตามจะมี Language อื่น ๆ ที่ไม่ได้กล่าวถึง แต่ก็มีส่วนสำคัญคือ Language ใน Database แต่ที่ไม่กล่าวถึงเนื่องจาก
ทุกท่านสามารถบันทึกผ่านหน้าจอของระบบได้เลย
โดยที่ระบบจะมีให้เลือกบันทึกข้อความผ่าน language แต่ละส่วนด้วยเช่นกัน
เพื่อให้ เนื้อหาที่แสดงในหน้าจอนั้นมีความครบถ้วนในทุก ๆ
ภาษาที่ผู้เขียนต้องการจะสื่อ
หวังเป็นอย่างยิ่งว่า
บทความนี้จะทำให้ทุกท่านเข้าใจใน กลไก การทำงานหลายภาษาของ Prastashop ได้เป็นอย่างดี หากมีข้อสงสัย ส่งข้อความสอบถามได้ครับ ยินดีต้อนรับทุกท่าน