สวัสดีครับทุกๆท่าน เว็บไซต์สมัยนี้นิยมที่จะมีหลายภาษากัน คือ สามารถแสดงผลเว็บไซต์ได้หลากหลายภาษา เพื่อรองรับผู้เยี่ยมชมจากต่างประเทศได้ ถ้าใครรู้จัก mambo คุณจะรู้ว่ามันมี component ที่ชื่อว่า MembelFish ที่สามารถทำให้เว็บของเรามีหลายภาษาได้ โดยเพียงการติดตั้งไม่กี่คลิ๊ก และตั้งค่านิดๆหน่อยๆก็ใช้ได้ล่ะครับ
แต่นั่น...ก็สำหรับเว็บที่ใช้ Mambo เป็นตัวขับเคลื่อนการทำงานของเว็บไซต์ ถ้าถามผม.ว่าง่ายมั้ยสะดวกมั้ย... ผมตอบว่าง่ายครับ สะดวกมากๆ แต่ถ้าเว็บไซต์เราไม่ใช่ Mambo จะสามารถนำเอา Component นี้มาดัดแปลงใช้กับเว็บเราที่ไม่ได้เป็น Mambo ได้มั้ย ?? .... ตอบว่าได้เช่นกันครับ แต่ว่า... มันเสียเวลาทิ้งไปกับการนั่งแกะโค้ดซะเปล่าๆครับ เผลอๆ ถ้าแกะได้มา โค้ดที่เอามาใช้จะเยอะมากมาย ไม่สะดวกในเวลาที่เรานำมาใช้งานด้วยครับ ผมจึงไม่แนะนำ
ซึ่งวันนี้ผมมีสิ่งที่ง่ายกว่า และสะดวกในการนำไปใช้งานสำหรับเว็บที่ไม่ได้ใช้ Mambo แต่อยากมีหลายภาษา มาฝากกัน โค้ดง่ายๆครับ ลองศึกษากันดู เริ่มต้นรู้จักฟังก์ชั่นที่ใช้กับบทความนี้กันเสียก่อน
ฟังก์ชั่น empty() เป็นฟังก์ชั่นที่ใช้ตรวจสอบตัวแปรว่าเป็นค่าว่างหรือไม่ ถ้าหากตัวแปรเป็นค่าว่าง ฟังก์ชั่นก็จะส่งคืนค่าที่เป็นจริงและถ้าหากตัวแปรมีค่า ฟังก์ชั่นก็จะส่งคืนค่าที่เป็นเท็จ
getenv("HTTP_ACCEPT_LANGUAGE"); เป็นการกำหนดตัวแปรที่ได้รับค่ามา ในที่นี่คือ ภาษา
คำสั่งในการควบคุมโปรแกรม
คำสั่ง switch เอาไว้ช่วยในการเปรียบเทียบตัวแปรตัวนึง กับค่าหลายๆค่า ซึ่งเราจะสะดวกมาก เมื่อลองเปรียบเทียบกับการเอา if มาใช้หลายๆชุด อาจจะทำให้สับสนในการเขียนโปรแกรมได้ (ซึ่งเคยได้กล่าวเอาไว้แล้วในบทความที่ผ่านๆมา)
รูปแบบการใช้งาน
<?php
switch (ตัวแปร)
{
case ค่าของตัวแปร :
คำสั่งที่ทำงานภายใน Case นี้
break;
case ค่าของตัวแปร :
คำสั่งที่ทำงานภายใน Case นี้
break;
default ://ถ้ายังไม่มีการกระทำของเงื่อนไขใดๆ ก็จะทำงานภายใต้คำสั่งนี้
คำสั่งที่ทำงานภายใน Case นี้
break;
} // switch
?>
ฟังก์ชั่น define เป็นฟังก์ชั่นที่กำหนดค่าให้กับตัวแปร ที่เป็นค่าคงที่ เช่น
<?php
define("_HELLO","สวัสดี");
echo _HELLO; // ผลลัพธ์ที่ได้ก็คือ สวัสดี
?>
_HELLO คือตัวแปรที่เก็บค่า สวัสดี เวลานำไปใช้ก็คือ echo _HELLO; ได้เลยครับ
สิ่งแรกที่เราต้องกำหนดก็คือ เว็บไซต์นี้ต้องการที่จะมีกี่ภาษา ซึ่งในตัวอย่างบทความนี้ผมจะกำหนดให้มี 2 ภาษา คือ ภาษาไทย และ ภาษาอังกฤษ โดยเราจะต้องสร้างไฟล์สำหรับแยกเก็บภาษาของแต่ล่ะภาษากันซะก่อน
ไฟล์ของผมคือ thai.php และ eng.php เป็นไฟล์สำหรับเก็บภาษาแต่ล่ะภาษาของเว็บไซต์ผม
ไฟล์ thai.php คือ ภาษาไทย โค้ดมีดังนี้
<?php
define("_SELECT_LANG","เลือกภาษา :");
define("_lang_en","อังกฤษ");
define("_lang_th","ไทย");
define("_Hello","สวัสดี");
define("_Welcome","ยินดีต้อนรับเข้าสู่เว็บไซต์ ซีเอ็มเอสโซไซตี้ดอทคอม");
?>
ไฟล์ eng.php คือ ภาษาอังกฤษ โค้ดมีดังนี้
<?php
define("_SELECT_LANG","Select Language :");
define("_lang_en","English");
define("_lang_th","Thai");
define("_Hello","Hello");
define("_Welcome","Welcome to CMSsociety.Com");
?>
จะเห็นได้ว่า 2 ไฟล์ด้านบนนี้จะเอาไว้แยกเก็บภาษาหลักของแต่ล่ะภาษาโดยการใช้ฟังก์ชั่น define ที่กล่าวไว้ข้างต้นมาใช้งาน
ไฟล์ต่อมาก็คือไฟล์ lang.php จะเป็นไฟล์ที่สำหรับตรวจสอบการทำงานของเงื่อนไขว่าเมื่อผู้ใช้งานเลือกใช้ภาษาไหน ก็ให้ดึงไฟล์ภาษานั้นๆมาใช้งานและแสดงผล
โค้ดดังตัวอย่างด้านล่างนี้ ซึ่งคำอธิบายแต่ล่ะฟังก์ชั่นได้กล่าวไปแล้วในข้างต้นของบทความ
<?php
if (empty($lang)) { // ตรวจสอบตัวแปร $lang ว่าเป็นค่าว่างหรือไม่ ถ้าหากตัวแปร $lang เป็นค่าว่าง ฟังก์ชั่นก็จะส่งคืนค่าที่เป็นจริง
และถ้าหากตัวแปร $lang มีค่า ฟังก์ชั่นก็จะส่งคืนค่าที่เป็นเท็จ
$lang = getenv("HTTP_ACCEPT_LANGUAGE");//เป็นการกำหนดตัวแปรภาษาที่ได้รับค่ามา เช่น lang=thai เป็นต้น
}
switch ($lang)
{
case "thai" ://เข้าเงื่อนไข thai ก็จะดึงไฟล์ภาษา thai.php มาใช้งาน
include("thai.php");
break;
case "eng" ://เข้าเงื่อนไข eng ก็จะดึงไฟล์ภาษา eng.php มาใช้งาน
include("eng.php");
break;
default :
include("thai.php");//ให้แสดงภาษาไทยเป็นภาษาหลักเมื่อเว็บไซต์แสดงผลในครั้งแรก โดยการไปดึงไฟล์ภาษา thai.php
break;
}
?>
แค่นี้ก็เสร็จล่ะครับ ที่นี้มาถึงการนำไปใช้งาน ซึ่งการนำไปใช้งานก็ง่ายๆครับ ให้ include ไฟล์ lang.php ไปวางไว้บนสุดของโค้ด html ซึ่งไฟล์ที่นำไปใช้จะต้องเป็น *.php ด้วยนะครับ โดยเวลาเราจะเชื่อมโยงลิงค์กับภาษาที่จะให้ผู้ใช้เลือกใช้วิธีนี้ครับ
<a herf="<?php $PHP_SELF; ?>?lang=thai">รูปหรือข้อความ</a> lang มีค่าเท่ากับ thai
<a herf="<?php $PHP_SELF; ?>?lang=eng">รูปหรือข้อความ</a> lang มีค่าเท่ากับ eng
$PHP_SELF คือทำงานภายในตัวมันเองหรือเป็นการส่งค่าภายในไฟล์เดียวกัน โดยไม่ได้ลิงค์ข้ามไปอีกไฟล์นึง
echo _ชื่อตัวแปรที่ได้ define ค่าเอาไว้ในไฟล์ภาษาในตำแหน่งที่ต้องการ;
จากนั้นก็กำหนดค่าและตำแหน่งในการแสดงผล ดังตัวอย่างด้านล่างนี้
<?php include("lang.php"); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Switch Language</TITLE>
</HEAD>
<BODY>
<table width="50%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td>
<?php echo _SELECT_LANG; ?>
<a href="<?php $PHP_SELF; ?>?lang=thai">
<?php echo _lang_th;?></a>
<a href="<?php $PHP_SELF; ?>?lang=eng">
<?php echo _lang_en; ?></a>
</td>
</tr>
<tr>
<td>
<?php echo _Hello."
"; echo _Welcome; ?>
</td>
</tr>
</table>
</BODY>
</HTML>
credit : http://www.cmssociety.com/main/index2.php?...op=1&page=9


Reply With Quote
