php ทำเว็บ 2ภาษา

เริ่มโดย saynum, 23 กันยายน 2009, 01:58:47

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

saynum

 :)ต้องการทำเว็บสองภาษา รบกวนช่วยแนะนำ นะค่ะ

ไม่ค่อยถนัดเขียนโค้ดค่ะ แต่มาทำงานด้านนี้เลย ต้องศึกษาเพิ่ม

ขอบคุณค่ะ
มือใหม่

navico

มีไรคุยกันได้ครับ...
ไม่เก่งหรอก แต่ก็น่าจะพอบอกได้บ้างนิดหน่อย

EixQzUnG

 :P พูดละยาวเลย เก็บได้หลายแบบ เลยครับ  :P




aommiez

ต้องใช้ ตัวแปร หลัก แล้วก็
lang/
lang/eng.txt
lang/thai.txt

ในไฟล์ eng.txt มีตัวแปร
$home = home;

ในไฟล์ thai.txt มีตัวแปร
$home = หน้าแรก;

ไฟล์แสดงหน้าหลัก
<? include lang/eng.txt ?>  //เลือกภาษาที่จะแสดง
<? php echo $home; ?> // คำว่า $home มันก็จะแสดงตามที่เรา เซ็ตไว้

ประมาณนี้อะ แต่คำสั่งไม่ใช่แบบนี้นะครับ แค่ยกตัวอย่าง


zoomman

อ้างถึงจาก: aommiez ใน 23 กันยายน 2009, 06:19:01
ต้องใช้ ตัวแปร หลัก แล้วก็
lang/
lang/eng.txt
lang/thai.txt

ในไฟล์ eng.txt มีตัวแปร
$home = home;

ในไฟล์ thai.txt มีตัวแปร
$home = หน้าแรก;

ไฟล์แสดงหน้าหลัก
<? include lang/eng.txt ?>  //เลือกภาษาที่จะแสดง
<? php echo $home; ?> // คำว่า $home มันก็จะแสดงตามที่เรา เซ็ตไว้

ประมาณนี้อะ แต่คำสั่งไม่ใช่แบบนี้นะครับ แค่ยกตัวอย่าง


^
^
ตามนี้ครับง่ายสุด
ลายเซ็น

เก๋าลัดคุง

ทำอยู่ 2 ภาษาที่

อ้างถึงhttp://www.hotelsvendor.com/

รูปธงชาติ 2 ภาษา เหนื่อยสุดๆ  :P
[direct=https://www.mescript.com/]Pc Game Download [/direct]
[direct=https://www.mescript.com/]Pc Game Download [/direct]
[direct=https://www.mescript.com/]Pc Game Download [/direct]
[direct=https://www.mescript.com/]Computer Programming and Knowledge make By MeScript.com.com [/direct]
[direct=https://www.mescript.com/]รับพัฒนาเว็บไซต์ + รับจดโดเมน + Hosting ราคาถูก [/direct]

saynum

 :)ถามต่อแบบโง่ๆเลยนะค่ะ

ว่าตอนนี้เว็บที่ทำอยู่เป็นภาษาไทยอย่างเดียวอ่ะค่ะ

ถ้าจะเริ่มต้นทำเป็นภาษาอังกฤษด้วย 

ต้องเริ่มต้นจากตรงไหนค่ะ  ต้องทำหน้าแรกเป้นภาษาอังกฤษด้วยหรือเปล่าค่ะ

ช่วยแนะนำด้วยค่ะ 
มือใหม่

mikeyx


hxxp://www.stecon.co.th/eng/index.php


ใช้สลับ folder แค่นั้นเองครับเหมือนทำ 2 web เลบ :P

เก๋าลัดคุง

อ้างถึงจาก: saynum ใน 24 กันยายน 2009, 16:50:14
:)ถามต่อแบบโง่ๆเลยนะค่ะ

ว่าตอนนี้เว็บที่ทำอยู่เป็นภาษาไทยอย่างเดียวอ่ะค่ะ

ถ้าจะเริ่มต้นทำเป็นภาษาอังกฤษด้วย 

ต้องเริ่มต้นจากตรงไหนค่ะ  ต้องทำหน้าแรกเป้นภาษาอังกฤษด้วยหรือเปล่าค่ะ

ช่วยแนะนำด้วยค่ะ 

อยู่ที่การเขียนโปรแกรมของเว็บ เขียนเพิ่มให้รับภาษาอังกฤษก็ได้

คุณทำ ภาษาไทย แล้วให้เป็นภาษาหลักเลยครับ ที่ติด index จะได้ไม่หาย
[direct=https://www.mescript.com/]Pc Game Download [/direct]
[direct=https://www.mescript.com/]Pc Game Download [/direct]
[direct=https://www.mescript.com/]Pc Game Download [/direct]
[direct=https://www.mescript.com/]Computer Programming and Knowledge make By MeScript.com.com [/direct]
[direct=https://www.mescript.com/]รับพัฒนาเว็บไซต์ + รับจดโดเมน + Hosting ราคาถูก [/direct]

@@@

อ้างถึงจาก: mikeyx ใน 24 กันยายน 2009, 16:54:56

hxxp://www.stecon.co.th/eng/index.php


ใช้สลับ folder แค่นั้นเองครับเหมือนทำ 2 web เลบ :P

ถ้าสองภาษาจริงๆไม่ต้องการเพิ่มก็ตามนี้ครับง่ายสุด

แต่ถ้าหลายภาษาก็ตามคุณ aommiez

อ้างถึงจาก: aommiez ใน 23 กันยายน 2009, 06:19:01
ต้องใช้ ตัวแปร หลัก แล้วก็
lang/
lang/eng.txt
lang/thai.txt

ในไฟล์ eng.txt มีตัวแปร
$home = home;

ในไฟล์ thai.txt มีตัวแปร
$home = หน้าแรก;

ไฟล์แสดงหน้าหลัก
<? include lang/eng.txt ?>  //เลือกภาษาที่จะแสดง
<? php echo $home; ?> // คำว่า $home มันก็จะแสดงตามที่เรา เซ็ตไว้

ประมาณนี้อะ แต่คำสั่งไม่ใช่แบบนี้นะครับ แค่ยกตัวอย่าง


รับซื้อเว็บ 100uip ต่อวันขึ้นไป [direct=http://www.rommit.com/forex]EA Forex[/direct]

EThaiZone

ธงสำหรับทำไอค่อน
http://www.famfamfam.com/lab/icons/flags/

คงแนะนำแบบคุณ aommiez เหมือนกันครับ (มองในฐานะคนเขียน php)
แล้วถ้าทำลึกไปอีก ก็อาจทำเก็บค่าที่คนดูเลือกลงคุ๊กกี๊
เผื่อคราวหลังต้องการแสดงภาษาไหนเฉพาะในภายหลัง

แต่ตามหลัก seo จริงๆ แนะนำทำแยก 2 โฟลเดอร์แบบคุณ mikeyx
เพราะ seo มันขึ้นกับภาษา เลยเป็นการทำอันดับแบบ locate (ตามพื้นที่)

ไม่งั้นถ้าทำแบบ php รวมไฟล์เดียว เราก็ต้องมานั่งกำหนด default ภาษาสักอัน
แล้วภาษาที่เหลือก็จะไม่ได้เลย

:P

chitjung

ทำเป็น 2 folder ก้อได้ครับ

!Man

อ้างถึงจาก: aommiez ใน 23 กันยายน 2009, 06:19:01
ต้องใช้ ตัวแปร หลัก แล้วก็
lang/
lang/eng.txt
lang/thai.txt

ในไฟล์ eng.txt มีตัวแปร
$home = home;

ในไฟล์ thai.txt มีตัวแปร
$home = หน้าแรก;

ไฟล์แสดงหน้าหลัก
<? include lang/eng.txt ?>  //เลือกภาษาที่จะแสดง
<? php echo $home; ?> // คำว่า $home มันก็จะแสดงตามที่เรา เซ็ตไว้

ประมาณนี้อะ แต่คำสั่งไม่ใช่แบบนี้นะครับ แค่ยกตัวอย่าง




อีกแนวทางนึงครับ
<?
define(Login, 'เข้าสู่ระบบ');
define(Logout, 'ออกจากระบบ');
?>

เวลาแสดงก็
<?
echo Login;
?>

saynum

ถ้าทำเป็นแยก floder คือเราก็ต้องทำข้อมูลเป็น 2 floder

แล้วให้ทำลิ้งไปแต่ละภาษา

เหรอค่ะ

เว็บใหญ่ทำกันหลับแน่เลย

ขอบคุณทุกคำแนะนำนะค่ะ

มือใหม่

wat

"เริ่มจากเรื่องที่รัก เลือกสิ่งที่ถนัด ก่อนที่จะทุ่มให้สุดหัวใจ ใส่พลังลงไปให้สุดแรง"

คนหยามเหยียดสักเท่าไหร่ แต่สำคัญที่ว่าคุณสู้จริงหรือเปล่า

ball6847

#15
เป็นผมถึงหวัง SEO ผมก็ไม่ทำแยกซับโฟลเดอร์อ่ะ แก้ไขลำบาก อับเดทก็ลำบาก

เป็นผมใช้วิธีเก็บลงตัวแปลแบบคุณ aommiez ดีกว่า แต่ว่าผมคงไม่ใช่้ชื่อตัวแปรแบบนั้นเพราะกลัวว่ามันจะมีการซ้อนกับที่มีในระบบอยู่แล้ว เป็นผมคงใช้

lang/en.php
$lang[0] = 'Hello my friend';
$lang[1] = 'We meet again';



lang/th.php
$lang[0] = 'หวัดดีเพื่ือน';
$lang[1] = 'เจอกันอีกแล้ว';


แบบ array index นี่แหละ แม่นยำที่สุด แต่อาจจะงงหน่อยเวลาทำ template แต่ถ้ากำกับเป็น comment ไว้ก็ไม่มีปัญหา

หลังจากนั้นถ้าหวังเรื่อง seo ค่อยทำ mod rewrite ทีนี้จะทำแยก subdomain ละภาษาเลยก็ได้ จะทำกี่ภาษาก็เอา lang ไปแปลแล้วแก้สคริปท์ตอน setcookie อีกนิดหน่อย
We use Ubuntu.

[direct=http://ng-seo.sourcelab.xyz/]AngularJS SEO Experimental[/direct]

Tee++;

#16
อย่าใช้วิธีแบบ Array เลยครับ มัน manage ยาก เรื่องของ Key Language ลองศึกษาการเก็บ ภาษาเป็น ไฟล์ mo ดู โดยใช้ความสามารถ gettext ของ PHP

ยกตัวอย่างเช่นพวกเว็บใหญ่ๆ ที่ต้องทยอยแปล จะทำงานแบบนี้ครับ

_e('Hello I am Tee++');

โดยถ้าไม่เจอ ตัวแปลใน ภาษานั้นๆ ก็จะ echo key ออกมาเลย ซึ่ง key มันจะไม่เหมือน array คือ key เป็นคำได้เลย ดังนั้นเวลาแปล ไม่มี เราก็จะรู้ทันที เพราะมันจะไม่เป็นค่า "ว่างๆ" แต่จะ echo key มาใช้งาน

นอกจากนี้ยังมีอีกหลายวิธี ซึ่งทำงานคล้ายๆ กัน อาทิเช่น

1. cvs
2. xml
3. ini
4. Qt

ซึ่งจริงๆ แล้วเราแทบจะไม่ต้องเขียนอะไรมากเพราะเรามี "Zend_Translate" นั่นเอง อิอิ
http://framework.zend.com/manual/en/zend.translate.adapter.html

สำหรับ ใครที่จะใช้ mo มันจะทำงาน แบบ compile ครับ เราต้องสร้าง .po มา compile เป็น mo และควรจะใช้ร่วมกับ Zend_Cache

ซึ่งตัว PO ปกติแล้วเค้าใช้ POEDIT กัน
http://www.poedit.net/

ตัวอย่าง PO ก่อน compile เป็น MO

en/language.po

msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: Tee <[email protected]>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"

msgid "ภาพแทนตัว"
msgstr "Avatar"

msgid "อีเมล์"
msgstr "Email"

msgid "รหัสผ่าน"
msgstr "Password"

msgid "รหัสผ่านปัจจุบัน"
msgstr "Current Password"

msgid "จำฉันไว้ในระบบ"
msgstr "Remember me"

msgid "เข้าสู่ระบบ"
msgstr "Log In"


th/language.po

msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: Tee <[email protected]>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"

msgid "ภาพแทนตัว"
msgstr "ภาพแทนตัว"

msgid "อีเมล์"
msgstr "อีเมล์"

msgid "รหัสผ่าน"
msgstr "รหัสผ่าน"

msgid "รหัสผ่านปัจจุบัน"
msgstr "รหัสผ่านปัจจุบัน"

msgid "จำฉันไว้ในระบบ"
msgstr "จำฉันไว้ในระบบ"

msgid "เข้าสู่ระบบ"
msgstr "เข้าสู่ระบบ"


** พอดีภาษาหลักผมคือ Thai ก็เลยมี msgid เป็นไทย ซึ่งจริงๆแล้ว ผมไม่ต้องทำชุดไทยก็ได้ แต่อยากทำไว้ เป็น prototype เท่านั้นเอง **

อีกอย่างคือ ยัดมันเข้าไปหมดเลยครับ ไม่ต้องแยกไฟล์ ไม่ต้องแยก module มี สัก 10000 line ก็ไม่เป็นไร แต่ที่สำคัญทำเสร็จ มันจะต้องอยู่ใน memcached แล้ว ต่อมาเรียกโหลดจาก memory จะทำงานได้เร็วมากครับ
[direct=http://laravel.in.th]Laravel in Thai[/direct]
[direct=http://jquerytips.com]jQueryTips by Tee++;[/direct]
[direct=https://www.facebook.com/jQueryTips]jQueryTips Page[/direct]
[direct=https://www.facebook.com/Laravel.in.th]Laravel in Thai Page[/direct]
[direct=https://twitter.com/Teepluss]Teepluss's Twitter[/direct]