[PrestaShop] หลังจากที่ทราบโครงสร้างขอ PrestaShop สำหรับการทำเว็บไซต์หลายภาษาแล้ว ทั้งนี้จะอธิบายเพิ่มเติม ในเนื้อหาภายในโครงสร้างว่ามีลักษณะอย่างไร เพื่อความเข้าใจก่อนการปรับแต่งให้เหมาะสมกับเว็บไซต์ของตัวเอง
ไฟล์ admin.php จาก Folder Translations มีโครงสร้างดังนี้
$_LANGADM['AdminCartRulesd3b206d196cd6be3a2764c1fb90b200f'] = 'Delete selected';
แบ่งโครงสร้าง
$_LANGADM เป็น ตัวแปร เรียกว่า Array
'AdminCartRulesd3b206d196cd6be3a2764c1fb90b200f' คือ Key ของ Array นั้น ๆ โดยประกอบไปด้วย โมดูล + MD5
d3b206d196cd6be3a2764c1fb90b200f คือ MD5 ของข้อความของ Delete selected = d3b206d196cd6be3a2764c1fb90b200f
'Delete selected'; คือ ค่าที่บรรจุลงใน Array ข้างต้น เช่นถ้าเปลี่ยนเป็น ‘selected to delete’; ข้อความที่แสดงผ่านหน้าจอจะเปลี่ยนไป และหากอยากเปลี่ยนเป็นภาษาไทยเลยยังได้ เช่น
$_LANGADM['AdminCartRulesd3b206d196cd6be3a2764c1fb90b200f'] = 'ลบรายการที่เลือก';
*** ที่สำคัญ md5 ที่ได้จะต้องไม่เปลี่ยนแปลง ซึ่งจะยังคงเป็น md5 ของ Delete selected นั่นเอง
ต่อไปจะขยายความอีกครั้งว่าทำไมไม่เปลี่ยนแปลงในส่วน Key (เพิ่มเติม ***)
2 ไฟล์ template จาก modules โดยเลือก \modules\blockuserinfo เป็นตัวอย่าง จะเห็นไฟล์ .tpl ซึ่งเป็น PHP Smarty Template อาจจะอยู่ภายใต้ Folder views หรืออยู่ข้างนอกก็ได้
ตัวอย่าง PHP Smarty Template
<p id="header_user_info">
{l s='Welcome' mod='blockuserinfo'}
{if $logged}
<a href="{$link->getPageLink('my-account', true)|escape:'html'}" title="{l s='View my customer account' mod='blockuserinfo'}" class="account" rel="nofollow"><span>{$cookie->customer_firstname} {$cookie->customer_lastname}</span></a>
<a href="{$link->getPageLink('index', true, NULL, "mylogout")|escape:'html'}" title="{l s='Log me out' mod='blockuserinfo'}" class="logout" rel="nofollow">{l s='Sign out' mod='blockuserinfo'}</a>
{else}
<a href="{$link->getPageLink('my-account', true)|escape:'html'}" title="{l s='Log in to your customer account' mod='blockuserinfo'}" class="login" rel="nofollow">{l s='Sign in' mod='blockuserinfo'}</a>
{/if}
</p>
|
ในโครงสร้าง *.tpl นั้นจะบรรจุ Tag สำหรับ การแสดงผลในรูปแบบหลายภาษาด้วยตัวอย่างดังนี้
{l s='Welcome' mod='blockuserinfo'}
{l s='View my customer account' mod='blockuserinfo'}
{l s='Log me out' mod='blockuserinfo'}
{l s='Log in to your customer account' mod='blockuserinfo'}
{l s='Sign in' mod='blockuserinfo'}
คำอธิบาย
{} คือ โครงสร้างการแสดงผล Smarty
l คือ การแสดงผลภาษา
s คือ ข้อความที่ต้องการแสดงผล
mod คือ Module สำหรับการแสดงผลภาษานั้น ๆ
โดยปกติการเขียน Tag ในส่วน Template ของ Smarty นั้นเรามักจะเขียนเป็นภาษาอังกฤษเป็นมาตรฐาน ดังนั้นจะหมายความว่า เราไม่จำเป็นต้องเขียนไฟล์ภาษา en.php เลย หากแต่ว่า มีบางโมดูลไม่ได้เขียนเป็นภาษาอังกฤษก็จำเป็นจะต้องเขียนโครงสร้างไฟล์ภาษา en.php ด้วยเช่นเดียวกัน (***ข้อควรระวัง: การเขียน l s=’String Key’ ด้วยภาษาอะไร ก็ต้องจัดทำ MD5 ด้วยภาษานั้น ๆ)
ครั้งต่อไปจะพูดถึง Translations สำหรับ Modules โดยดูความสัมพันธ์ของ .tpl และ .php
Tags:
Multilanguage,Translation,PrestaShop,Module,Admin,Smarty,PHP
Writer:
WindowsDNA
No comments:
Post a Comment