Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,038

HOME > PHP > PHP Forum > ทำระบบหลายภาษายังไงดีครับ? จากไฟล์ index.php ผมจะทำไงให้เรียก echo language::trans("ok");



 

ทำระบบหลายภาษายังไงดีครับ? จากไฟล์ index.php ผมจะทำไงให้เรียก echo language::trans("ok");

 



Topic : 029274



โพสกระทู้ ( 4,759 )
บทความ ( 8 )



สถานะออฟไลน์




ผมมีไฟล์ดังนี้

Code (HTML)
{l s='ok'}

index.tpl ไฟล์นี้เป็นเทมเพลทของ smarty


Code (PHP)
<?php
function smartyTranslate($params, &$smarty) {
	language::trans($params);
	return $params;
}
$smarty->register_function('l', 'smartyTranslate');
?>

index.php เป็นไฟล์ php ธรรมดา เรียก class language แล้วก็เรียกฟังก์ชั่น trans อีกที


Code (PHP)
<?php
class language {
	static public function trans($intext){
		require_once("languages/"._SITE_LN_.".php");
		// เรียกไฟล์ภาษามาทำงานอีกที เช่น languages/th.php;
	}
}
?>

language.php ไฟล์ class

จากไฟล์ index.php ผมจะทำไงให้เรียก echo language::trans("ok"); ออกมาเป็น โอเค ครับ?
ตัวจากไฟล์ template ควรจะเรียกออกมาเหมือนใช้ php เรียกโดยตรง

ถ้าใช้ mysql ใส่ข้อมูลแล้วแปลเอามันก็พอได้อยู่ แต่มันช้าและโหลดหนักกว่า
ผมเลยขอเลือกแปลผ่านไฟล์ ช่วยแนะนำผมหน่อยครับ language::trans("please");



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2009-07-16 21:07:14 By : mr.v View : 1695 Reply : 10
 

 

No. 1



โพสกระทู้ ( 4,759 )
บทความ ( 8 )



สถานะออฟไลน์


อย่างกระทู้นี้.. https://www.thaicreate.com/php/forum/006630.html
ลองทำแล้ว โดยเรียกไฟล์ languages/th.php มาแล้ใช้ array
$lntext['ok'] = 'โอเค';

เขียนใน php echo language::trans("ok"); มันก็ได้อยู่ แต่เรียกผ่าน smarty template แล้วกลายเป็นผลออกมา array เฉยๆซะงั้น






Date : 2009-07-16 21:33:14 By : mr.v
 


 

No. 2



โพสกระทู้ ( 300 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ทำเว็บสองภาษาอะค่ะ แต่ทำไมไม่เห็นต้องใช้ function อะไรวุ่นวายเลยอะค่ะ แค่ทำฟร์อมรับข้อมูลไว้สองภาษาแล้วเรียกขึ้นมาแสดงเท่านั้นเอง อะ หรือว่า ที่หนูทำนี่ไม่ถูกอะค่ะ เพราะเห็นคนอื่นทำเว็บหลายภาษาแล้วเหมือนยาก ๆ ยังไงก็ไม่รู้ แต่ว่ามันก็รันได้หมดนะค่ะ แสดงออกมาสองภาษาแต่มันใช้ได้จริงรึเปล่าอะค่ะ ถ้าอัพขึ้น server อะ
Date : 2009-07-27 00:16:33 By : jiro_aaron
 

 

No. 3



โพสกระทู้ ( 94 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ู^
^
เหมือนกันครับ ไม่รู้เหมือนกันทำไมท่านอื่นทำกันแบบยากๆ แบบว่าผมไม่เก่งมากหรอกแต่เท่าที่ผมคิดก็คือ
2 ภาษาก็ ตั้งไว้เลย englishlang.php และ thailang.php แล้วก็ใส่ค่าเข้าไปเลยในแต่ละไฟล์
thank="Thank You"; // englishlang.php
thank="ขอบคุณ"; // thailang.php

แล้วก็ echo เอาเลยอ่ะครับตามต้องการ

คือผมคิดจะทำแบบนี้ในเว็บอนาคตของผมอ่ะครับ แต่ไม่รู้เหมือนกันว่ามันเป็นวิธีที่ผิดหรือเปล่าอ่ะครับ (เพราะดูวิธีอื่นที่เขาใช้กันมันงงๆอ่ะครับ) ถ้าอย่างไรก็ตามช่วยชี้แนะด้วยครับ ^^
Date : 2009-07-27 00:25:46 By : cjmling
 


 

No. 4



โพสกระทู้ ( 4,759 )
บทความ ( 8 )



สถานะออฟไลน์


ง่ะ.... จะบอกอ้อมๆว่าผมเรื่องมากใช่ม้า.. >_<
ถ้าทำตามตย.คุณ jiro ก็จะพบว่าต้องทำฟอร์ม 2 ภาษา(ตามที่อ่านเข้าใจคือ 2 ไฟล์) เวลาแก้มันจะต้องแก้หลายที่หลายครั้ง แต่วิธีนี้ก็ทำงานได้เหมือนกัน
กรณีของคุณ ling เข้าใจว่าเป็น array หรืออาจจะเป็นตัวแปล อย่าง $thank วิธีนี้ก็ทำงานได้อีกไม่มีปัญหาหรอก

แต่ต้นกระทู้ผมบอกว่าผมใช้เทมเพลทของ smarty ดังนั้นหมายความว่ามันมีหลายภาษาทั้งในเทมเพลท และในไฟล์ php
ซึ่งถ้าทำแบบทั่วไป ผมคงตามแก้กันวุ่นเลยล่ะ

ลองดูแผนผังการทำงานแบบง่ายๆ
smarty เรียกฟังก์ชั่น l มีตัวกำหนด s='ภาษา' เช่น {l s='hello'} (ฟังก์ชั่น l จะเป็นตัวอะไรก็ได้)
ในฟังก์ชั่น l ที่ผม register ไว้ มันไปเรียกคลาส language -> ฟังก์ชั่น trans ตามรูปแบบ language::trans($inputtext)
อย่างเช่นในเทมเพลทเขียนว่า {l s='hello'} ตัวฟังก์ชั่นก็จะประมวลคำสั่งไปเรียก language::trans("hello") แล้วส่งกลับไปแสดงผล
ทีนี้ดูไฟล์ php ธรรมดา แทนที่ผมจะเขียนว่า echo "hello"; หรือ $language["hello"] ผมก็ใช้ class language ฟังก์ชั่น trans ให้เป็นประโยชน์ กลายเป็น echo language::trans("hello")
ซึ่งในฟังก์ชั่น trans อาจใส่ตัวกำหนดไว้ก็ได้ว่าถ้า $language["hello"] ไม่มีกำหนดไว้ ให้ส่งคืนค่าเดิมกลับไป
อะไรแบบนี้ พอจะเข้าใจมั้ยครับ
แล้วเวลาแปลภาษา ก็เข้าไปในไฟล์ภาษาไฟล์เดียวเลย ไฟล์ภาษาก็จะเป็นแบบนี้
$language = array();
$language['hello'] = "สวัสดี";

จริงๆมันไม่ยากมากหรอก ผมอยากแนะนำให้ลองทำเล่นๆดู แล้วจะติดใจ เดี๋ยวให้โค้ดตัวอย่าง
Code (PHP)
<?php
/* Autoload */
function __autoload($className)
{
	if (!class_exists($className, false))
		require_once(dirname(__FILE__).'/../classes/'.$className.'.php');
}

define('_SITE_LN_',		'th');
?>

ไฟล์ /include/config.php

Code (PHP)
<?php
class language {
	/**
	*
	* เปิดไฟล์แปลแล้วส่งกลับไป
	*
	**/
	static public function trans($textin) {
		require("languages/"._SITE_LN_.".php");
		$text = $_lntxt[$textin];
		if ($text == null) {
			$text = $textin;
		}
		return $text;
	}
}
?>

ไฟล์ /classes/language.php

Code (PHP)
<?php
$language = array();
$language['hello'] = "สวัสดี";
?>

ไฟล์ /languages/th.php

Code (PHP)
<?php
echo language::trans("hello");
?>

เรียกใช้งาน
Date : 2009-07-27 03:36:58 By : mr.v
 


 

No. 5



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

สรุปว่าได้ยังคับ
Date : 2009-07-27 08:09:32 By : pjgunner
 


 

No. 6



โพสกระทู้ ( 94 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

Quote:
ง่ะ.... จะบอกอ้อมๆว่าผมเรื่องมากใช่ม้า.. >_<


ไม่ใช่หรอกครับ ผมคิดว่าท่านโปรด้วยซ้ำ ก็คนเขาเก่งถึงได้ใช้ script ยากๆ

เราสิเรียกว่าอ่อนหัด ^^
Date : 2009-07-27 08:55:18 By : cjmling
 


 

No. 7



โพสกระทู้ ( 4,759 )
บทความ ( 8 )



สถานะออฟไลน์


Quote:
สรุปว่าได้ยังคับ

สรุปว่าได้แว้ว ในเทมเพลทมันเป็น array s กับค่าใน s='...'

คุณ ling ผมไม่โปรหรอกครับ จะบอกว่าที่ทำระบบหลายภาษาที่เห็นเนี่ย (ลอก prestashop เค้ามา)
Date : 2009-07-27 13:59:44 By : mr.v
 


 

No. 8



โพสกระทู้ ( 300 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


คือ แบบว่าเราก็ไม่เก่งอะ แต่เราทำเป็นเทมเพตไว้สองภาษาอะ แล้วก็ สร้างฟร์อมรับข้อมูลไว้สองภาษา เก็บไว้ในดาต้าเบสอะ แล้วออกแบบดาต้าเบสไว้แบบนี้อะ id (int) (auto)(pk), m_thai(text) , m_eng(text) , date_reg(date) แบบนี้อะ คืออันนี้ลองทำดูก่อนอะค่ะ กำลังหาวิธีทำอยู่ แบบว่าคิดว่ามันน่าจะใช้ได้อะ เลยทำแบบง่าย ๆ ไว้ก่อนอะคือเราไม่ค่อยเก่งเท่าไหร่อะนะ แล้วตอนนี้ก็ทำด้วยความจนตรอกแล้วเพราะ Project อันนี้ติด i ไม่ได้ด้วย อาจารย์บอกว่าไม่ผ่านก็ลงใหม่อะ สองอย่าง เพราะเป็น Project ฝึกงานอะ หัวหน้าก็เร่งด้วย
ปล.ตอนนี้ที่ทำมีปัญหาเรื่องคอลัมภ์ด้วยอะ เซ็งมากเลย ถึงทุกท่านจะให้คำแนะนำหรือติชมก็ได้นะค่ะน้อมรับค่ะ อยากเก่ง ๆ อะ เหมือนพวกคุณอะ
Date : 2009-07-27 21:54:28 By : jiro_aaron
 


 

No. 9



โพสกระทู้ ( 4,759 )
บทความ ( 8 )



สถานะออฟไลน์


จริงๆทำแบบไหนก็ได้แหละครับ ให้มันทำงานได้ดีก็ ok แล้ว แต่ถ้ามีประสบการณ์มากขึ้นก็ลองค่อยๆออกแบบให้มันมารวมกันง่ายขึ้น แก้ที่เดียว อะไรแบบนี้
ผมก็ไม่เก่ง ถึงได้บอกว่าไปลอกเค้ามา
Date : 2009-07-27 22:27:18 By : mr.v
 


 

No. 10



โพสกระทู้ ( 146 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ค่ะ ประสบการณืจิงๆๆช่วยสอนเราเราก็พยายามแสวงหาอยู่ค่ะ
Date : 2009-07-28 07:37:39 By : kai9
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ทำระบบหลายภาษายังไงดีครับ? จากไฟล์ index.php ผมจะทำไงให้เรียก echo language::trans("ok");
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 04
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่