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,027

HOME > PHP > PHP Forum > อยากทราบวิธีเปลี่ยนภาษาเว็บโดยใช้ php ครับ คือต้องการทำเว็บเปลี่ยนภาษาจาก th เป็น en ด้วย (มีการนำข้อมูลใน db มาแสดงด้วย)



 

อยากทราบวิธีเปลี่ยนภาษาเว็บโดยใช้ php ครับ คือต้องการทำเว็บเปลี่ยนภาษาจาก th เป็น en ด้วย (มีการนำข้อมูลใน db มาแสดงด้วย)

 



Topic : 025344



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



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




คือต้องการทำเว็บเปลี่ยนภาษาจาก th เป็น en ด้วย (มีการนำข้อมูลใน db มาแสดงด้วย)

เลยอยากทราบว่า ผมจะต้องทำ db ในส่วนของเนื้อหาที่พักที่เป็นภาษาอังกฤษด้วยหรือไม่ครับ หรือว่า php มีตัวแปลงภาษาให้อยู่แล้ว

แล้วตอนจะกดเปลี่ยนภาษาเอาตัวแปร $lang จำเป็น session แล้วใช้เทียบค่าเอาเช่น

if($lang=="th") echo"สวัสดี";

else echo"Hello";

จะดีไหมครับเพราะจะได้กลายเป็น 2 ภาษาในหน้าเดียว ไม่ต้องไป include หน้าอื่นที่เตรียมไว้

รบกวนด้วยนะครับ



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2009-03-11 10:25:43 By : lovehinatava View : 12619 Reply : 13
 

 

No. 1



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

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

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


ถ้าคิดจะทำแค่
hellow กับ สวัสดี แค่นั้นก็เอาอยู่หละครับ

แต่ความเป็นจริง
มันต้องทำตั้งแต่ระบบหน้าแรก เลยครับ จนถึง ข้อมูลที่เก็บต้องแยก 2 ภาษากันเลย
แล้วทีนี้ค่อยมาเชคว่า ตอนนี้เลือกภาษาอะไรอยู่ เราก็ค่อย Include ภาษาโครงสร้างไว้หน้าเว็บ
แล้วก็ดึง DB ภาษานั้น ๆ ออกมาแสดง


มีอะไรก็ถามกันได้เน่อ ผมตอบแบบคลุมเครือเปล่าหว่า แต่ผมเข้าใจแบบนี้นะ

[email protected]






Date : 2009-03-11 11:53:46 By : deawx
 


 

No. 2



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



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


เข้าใจแล้วครับ ผมเองก็รู้สึกว่ามันไม่น่าจะมีอะไร translate ได้เป้ะๆขนาดนั้นหรอก ต้องทำแยกภาษาแหละครับ

แต่อยากรุ้วิธีการที่เขา กดเลือกภาษาน่ะครับ ว่าควรจะส่งไปแบบไหนดี

รับ $_GET['lang']; ตรงๆ ทุกหน้า แล้วเพิ่มส่งตัวแปร &lang=th,en แนบไปทุกอันด้วย

หรือใช้ SESSION เช็คเอา จะได้ไม่ต้องทำลิ้งทุกหน้า (แต่ผมกำลังปวดหัวกับมันอยู่ เปลี่ยนภาษาแต่พอไปอีกหน้ากัลบเป็นไทยเหมือนเดิม)

หรือใช้ setcookie เอาครับ เจอปัญหาเดียวกับ session เลยแต่นี้แปลกดี เปลี่ยนหน้ายังเป็น en แต่พอ back กลับดันเป็น th อีกและ

ผมคิดว่าแบบ 1 น่าจะชัวร์ที่สุด เพราะรับจาก GET เลย แต่ต้องมานั่งเสียเวลาใส่ตัวแปรแนบทุกลิ้งด้วยนี่ดิ -- --

รบกวนต่อด้วยนะครับ
Date : 2009-03-11 12:04:23 By : lovehinatava
 

 

No. 3



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



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


ผมแนะนำให้ใช้ session ครับ

ทุกหน้าต้องทำการตรวจสอบก่อนว่ามีการเก็บค่าของภาษาที่เลือกไว้ใน session หรือยัง

ถ้ามีแล้วก็ให้ใช้ session ตัวเดิม แต่ถ้าไม่มีก็ให้ สร้าง session ขึ้นมาแล้ว เก็บค่าภาษาไว้

สมมุติให้เป็นภาษาไทย คราวนี้พอจะเปลี่ยนเป็นภาษาอังกฤษ อาจจะเกิดจากการคลิกที่ ธงชาติอังกฤษ

ก็ให้ส่งตัวแปรภาษาที่ต้องการมา อาจจะเป็น lang=en แล้วอีกหน้าก็ GET['lang'];

แล้วก็ให้ session ตัวเดิม เก็บค่าของ GET['lang']; ซะ

น่าจะประมาณนี้ ลองดูครับ
Date : 2009-03-11 13:13:42 By : ttong
 


 

No. 4



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



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


ตอนนี้ทำได้แล้วครับ แต่ยังไม่แน่ใจว่าจะทำให้เว็บช้าลงหรือเปล่าอ่ะครับ เพราะเว็บเน้นรูป ไม่ค่อยมีอักษรในเว็บเท่าไหร่
(ข้อมูลส่วนใหญ่ก็ดึงจาก DB ซะหมด)

ผมลองใช้ session อะครับ เพราะว่าถ้า start ได้แล้ว ประกาศบนหัวเว็บทุกอันก็จบ
ผมเลยสร้าง ไฟล์ lang.php เพื่อทำให้รับค่า lang ออกมาเป็น session แล้วกลับคืนไปหน้าเดิม

lang.php
<?php
@session_start();
if(session_is_registered("lang")) session_unregister("lang"); //ถ้ามี session มาก่อนแล้วให้ทำลายก่อน เดวมันไม่รับ langใหม่
			
			$lang = $_GET['lang'];
    		session_register("lang");
			$_SESSION["lang"]=$lang;
			echo"<script language='JavaScript'>window.history.back();</script>"; //ย้อนกลับไปหน้าที่แล้ว(หน้าที่กดเปลี่ยนภาษา)
?>

จากนั้นพอเวลาจะใช้งาน ก็ส่งลิ้งไปที่ lang.php?lang=en หรือ th แบบนี้ดีไหมครับ

แล้วในเว็บนี้ผมใช้เทียบดู lang แล้ว echo ออกมาตาม lang นั้นๆ จะดีไหมครับ
(ผมกลัวมันอืดลงอะครับ เพราะ 1 ประโยค ก็ต้องยัด if 1ตัวแต่หน้านึงมีประมานไม่เกิน 20 คำ(หัวข้อ)อะครับที่ใช้ภาษาไทย)
Date : 2009-03-11 14:06:25 By : lovehinatava
 


 

No. 5



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



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


จาก code ที่เอามาให้ดูแปลว่า

if(session_is_registered("lang")) session_unregister("lang"); บรรทัดนี้สั่งให้ทำลาย session lang

แปลว่าเราต้องส่งตัวแปร lang ทุกหน้า ใช่มั้ยครับ เช่น lang.php?lang=en

ถ้าเราไม่ทำลายมัน เราก็ไม่จำเป็นต้องส่งตัวแปร lang มาทุกหน้า

เราจะส่งค่า lang.php?lang=en ต่อเมื่อมีการกดที่ ธงชาติอังกฤษ lang.php?lang=th เมื่อมีการกดที่ ธงชาติไทย

ที่เหลือให้ใช้เป็น lang.php แล้วอ่านค่า lang จาก session เอา

ส่วนเรื่องที่บอกว่าต้อง if ทุกประโยค

เราน่าจะ แยกข้อความภาษาอังกฤษ มาเก็บไว้ที่ en.php แล้ว แยกข้อความภาษาไทย มาเก็บไว้ที่ th.php

สมมุติมีการส่ง lang.php?lang=en มา

ก็ให้ include($lang.".php");

แล้วก็ echo $text; เลย โดยไม่ต้องมา if อีก
Date : 2009-03-11 14:36:38 By : ttong
 


 

No. 6



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



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


ที่ต้องทำลายก่อนเพราะ เกิดถ้าจะเปลี่ยนภาษา มัน session_register ทับไม่ได้อะครับ(กลายเป็น lang เดิมไม่รุ้เพราะอะไรเหมือนกัน) เลยต้องทำลายก่อนที่จะขอเปลี่ยนภาษา
(แค่เปลี่ยนภาษาเท่านั้นครับ หน้าแสดงผลผมแค่แปะ $lang = $_SESSION['lang']; ไว้อะครับ)

ส่วนทำแยกภาษานี่ผมยังงงอยู่เลยครับ แต่น่าจะเป็นประโยชน์มาเลยครับ เพราะข้อความที่อยู่ในเว็บก็คำเดิมๆ เกือบจะทุกหน้า

พอจะยกตัวอย่างข้อความใน en.php แล้วก็ตอนเรียกใช้บางตัวได้ไหมครับ

ขอบคุณครับ
Date : 2009-03-11 14:57:01 By : lovehinatava
 


 

No. 7



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



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


อ้อ ๆ ไปค้นเจอมาแล้วครับ

ใช่แบบนี้รึเปล่าครับ

http://forums.thainetdev.com/index.php?showtopic=45
Date : 2009-03-11 15:08:45 By : lovehinatava
 


 

No. 8



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

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

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

Internationalization
Date : 2009-03-11 16:28:53 By : pjgunner
 


 

No. 9



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



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


Quote:
อ้อ ๆ ไปค้นเจอมาแล้วครับ

ใช่แบบนี้รึเปล่าครับ

http://forums.thainetdev.com/index.php?showtopic=45


ตาม link นี้แหละครับ

แต่มันยังขาดตรงที่ไม่ได้ใช้ session ด้วย ถ้าประยุกต์เอา session ไปใช้ด้วย

จะทำให้เราไม่ได้ส่งค่า lang ไปทุกหน้า เช่น

ตรวจสอบว่า $_GET['lang'] เป็นค่าว่างหรือไม่

ถ้าเป็นค่าว่าง
ก็ include($_SESSION['lang'].".php"); เลย

แต่ถ้าไม่เป็นค่าว่าง
ก็ให้ $_SESSION['lang']=$_GET['lang'] คือให้เก็บค่าของ $_GET['lang'] ไว้ใน $_SESSION['lang']
แล้วก็ include($_SESSION['lang'].".php");

คร่าวๆ ประมาณนี้ ลองประยุกต์ดูนะครับ
Date : 2009-03-11 16:44:57 By : ttong
 


 

No. 10

Guest


Code (PHP)
<?
session_start();
if($_SESSION["lang"] == "EN")
{
	include("en.php");
}
else
{
	include("th.php");
}
?>


Code (th.php)
<?
	$strTitle = "ยินดีต้อนรับเข้าสู่เว็บไซต์ของฉัน";
	$strHome = "หน้าแรก";
	$strService = "บริการของเรา";
	$strAbout = "เกี่ยวกับเรา";
	$strContact = "ติดต่อเรา";
	
	//** สมมุติค่ามาจาก Database ที่ได้จากการ Query ***//
	$result["DETAIL_TH"] = "นี้คือเนื้อหาภาษาไทย";

	$strDetail = $result["DETAIL_TH"];
?>


Code (en.php)
<?
	$strTitle = "Welcome to My Web Site";
	$strHome = "Home";
	$strService = "Service";
	$strAbout = "About Us";
	$strContact = "Contact Us";


	//** สมมุติค่ามาจาก Database ที่ได้จากการ Query ***//
	$result["DETAIL_EN"] = "This is content English";

	$strDetail = $result["DETAIL_EN"];
?>


Go to : PHP Multiple Language การใช้ PHP ทำเว็บ 2 ภาษาแบบง่าย ๆ
Date : 2011-08-22 13:07:06 By : thaicreate
 


 

No. 11

Guest


น่าจะได้

Code (PHP)
//SET LANGUAGE
if(isset($_GET["cc"])){
  //CHECK FILE IS EXIST
  $lang_file = "public/render/lang/lang.".$_GET["cc"].".php";

  if(file_exists($lang_file)){
    $_SESSION["language"]=filter_input(INPUT_GET,"cc");
  } else{
    $get_location = json_decode(file_get_contents('http://ipinfo.io/json'));
    $_SESSION["language"]=strtolower($get_location->country);
  }

  //IF EXIST THEN SET FILE TO DEFAULT LANGUAGE (EN)
} else{

  if(isset($_SESSION["language"])){
    $lang_file = "public/render/lang/lang.".$_SESSION["language"].".php";
    //CHECK FILE IS EXIST

    if(file_exists($lang_file)){
      //$_SESSION["language"];
      $lang_file = "public/render/lang/lang.".$_SESSION["language"].".php";
    } else{
      $get_location = json_decode(file_get_contents('http://ipinfo.io/json'));
      $_SESSION["language"]=strtolower($get_location->country);
      $lang_file = "public/render/lang/lang.".$_SESSION["language"].".php";
    }
    //IF EXIST THEN SET FILE TO DEFAULT LANGUAGE (EN)
  } else{
    $_SESSION["language"]="en";
    $lang_file = "public/render/lang/lang.".$_SESSION["language"].".php";
    //SET TO DEFAULT LOCATION LANGUAGE
  }
}
require($lang_file);

Date : 2015-03-21 14:19:43 By : Aom Siriwat
 


 

No. 12

Guest


แก้ๆ จากด้านบน :)

Code (PHP)
//SET LANGUAGE
if(isset($_GET["cc"])){
  //CHECK FILE IS EXIST
  $lang_file = "public/render/lang/lang.".filter_input(INPUT_GET,"cc").".php";
  if(file_exists($lang_file)){
    $_SESSION["language"]=filter_input(INPUT_GET,"cc");
  } else{
    $get_location = json_decode(file_get_contents('http://ipinfo.io/json'));
    $_SESSION["language"]=strtolower($get_location->country);
  }

  //IF EXIST THEN SET FILE TO DEFAULT LANGUAGE (EN)
} else{

  if(isset($_SESSION["language"])){
    $lang_file = "public/render/lang/lang.".$_SESSION["language"].".php";
    //CHECK FILE IS EXIST

    if(file_exists($lang_file)){
      //$_SESSION["language"];
      echo $_SESSION["language"];
    } else{
      $get_location = json_decode(file_get_contents('http://ipinfo.io/json'));
      $_SESSION["language"]=strtolower($get_location->country);
    }
    //IF EXIST THEN SET FILE TO DEFAULT LANGUAGE (EN)
  } else{
    $_SESSION["language"]="en";
    //SET TO DEFAULT LOCATION LANGUAGE
  }
}
require("public/render/lang/lang.".$_SESSION["language"].".php");

Date : 2015-03-21 14:42:35 By : Aom Siriwat
 


 

No. 13



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



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


ทำใมไม่แยก sub domain หรือ sub directory ไปเลยอะครับ ง่ายกว่ากันเย๊อะได้ผลเหมือนกัน... ดีกว่าเก็บแบบซับซ้อนเผลอๆบอทไม่เข้าใจอีก..

En.myweb.com
Myweb.com/en/
Date : 2015-03-22 01:21:56 By : meannerss
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : อยากทราบวิธีเปลี่ยนภาษาเว็บโดยใช้ php ครับ คือต้องการทำเว็บเปลี่ยนภาษาจาก th เป็น en ด้วย (มีการนำข้อมูลใน db มาแสดงด้วย)
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่