

พอเว็บเริ่มมีบทความที่อยากให้คนอ่านต่างภาษาเข้าถึง เราอาจนึกถึงปุ่มสลับภาษาก่อน แต่เบื้องหลังปุ่มนั้นยังมีคำถามว่าแต่ละภาษามี URL ใด และระบบจะรู้ได้อย่างไรว่าสองหน้ากำลังอธิบายเรื่องเดียวกันในคนละภาษา
ถ้าเริ่มจากความสัมพันธ์ของเนื้อหาให้ชัด งาน metadata กับลิงก์สลับภาษาจะตามต่อได้ง่ายขึ้นครับ ไม่ต้องสร้างหน้าว่างไว้ทุกภาษา หรือพาคนกดสลับไปหน้าแรกเพียงเพราะบทนั้นยังไม่มีฉบับแปล
สำหรับเว็บบทความที่ค่อยๆ เพิ่มคำแปล การจัดการสถานะจริงของแต่ละฉบับสำคัญพอๆ กับรูปแบบ URL ที่เลือกใช้
ตัวอย่างหนึ่งคือ /th/content/mqtt-basics กับ /en/content/mqtt-basics ซึ่งทำให้เปิดฉบับที่ต้องการจากลิงก์ได้โดยตรง จะใช้รูปแบบอื่นก็ได้ตามโครงเว็บ แต่ควรมีนโยบายคงที่และรู้ว่าหน้าใดเป็นฉบับใด
การให้ URL เดียวเปลี่ยนภาษาตาม cookie หรือการตั้งค่าเบราว์เซอร์อย่างเดียว อาจทำให้การเข้าถึงกับการพบฉบับต่างๆ ซับซ้อนขึ้น ทั้งคนที่ส่งลิงก์และระบบค้นหาต้องอาศัยสภาพแวดล้อมเพิ่มเติมเพื่อได้หน้าที่ต้องการ

หากเว็บเดิมมีบทไทยอยู่แล้ว ไม่จำเป็นต้องรีบย้าย URL ทั้งหมดเพียงเพื่อให้ดูสมมาตร สามารถเลือกโครงที่รักษาลิงก์เดิมและเพิ่มฉบับใหม่อย่างมีเหตุผลได้ แต่ต้องตรวจ redirect canonical และลิงก์ที่เกี่ยวข้องหากมีการย้ายจริง
สิ่งที่ควรตัดสินก่อนคือแต่ละ URL คืนภาษาหลักตามที่ระบุอย่างสม่ำเสมอ และคนอ่านสามารถเลือกเปลี่ยนเองได้ ไม่ถูกบังคับส่งกลับไปอีกภาษาซ้ำเพียงเพราะระบบคาดจากตำแหน่งหรือเครื่องที่ใช้
ชื่อเรื่องกับ slug ของคำแปลอาจไม่เหมือนกันตามธรรมชาติ จึงควรมีรหัสกลุ่มบทหรือความสัมพันธ์ที่ระบุว่าแต่ละฉบับเป็นคู่กันจริง ไม่สร้าง URL อังกฤษด้วยการต่อ prefix แล้วหวังว่าจะมีหน้าตรงนั้นเสมอ
ถ้าบทไทยเผยแพร่แล้วแต่ฉบับอังกฤษยังเป็นร่าง ปุ่มสลับกับ metadata ควรอ้างเฉพาะสิ่งที่พร้อมจริง การเปิดหน้าที่มีเพียงชื่ออังกฤษแต่เนื้อหายังไม่มาไม่ได้ทำให้เว็บมีคำแปลที่ใช้งานได้เพิ่มขึ้น
เมื่อคำแปลพร้อม ให้ตรวจว่าประเด็นกับข้อมูลหลักยังสัมพันธ์กัน หากฉบับหนึ่งเปลี่ยนสาระไปมากจนอีกฉบับยังเล่าเงื่อนไขเดิม ควรมีงานทบทวนหรือแจ้งสถานะอย่างเหมาะสม ไม่ถือว่าการจับคู่ครั้งแรกทำให้สองหน้าตรงกันไปตลอด
วิธีนี้ยังช่วยงานรับช่วง เมื่อแก้บทต้นทาง เราจะรู้ว่ามีภาษาใดต้องตรวจตาม โดยไม่ต้องค้นจากชื่อที่คล้ายกันแล้วเสี่ยงพลาดบทที่แปลชื่อไปอีกแบบ
หากสองหน้ามีเนื้อหาหลักแปลเป็นแต่ละภาษาจริง ไม่ควรเหมารวมว่าทั้งหมดเป็น duplicate ที่ต้องชี้ canonical กลับภาษาเดียว แต่ละฉบับควรมี canonical ที่สอดคล้องกับนโยบายของฉบับนั้น และใช้ hreflang อธิบายความสัมพันธ์เพิ่มเติม

ตัวอย่างสมมติสำหรับหน้าภาษาไทย:
<link rel="canonical" href="https://example.com/th/content/mqtt-basics">
<link rel="alternate" hreflang="th" href="https://example.com/th/content/mqtt-basics">
<link rel="alternate" hreflang="en" href="https://example.com/en/content/mqtt-basics">
ฉบับอังกฤษก็ระบุรายการคู่ภาษาเดียวกันโดยมีทั้งตัวเองและฉบับไทย ส่วน canonical ของมันชี้ฉบับหลักอังกฤษที่เหมาะสม การมีความสัมพันธ์กลับไปกลับมาช่วยให้ระบบอ่านได้ว่าหน้าทั้งสองยืนยันชุดเดียวกัน
ใช้ URL แบบเต็มและรหัสภาษาที่รองรับ หากยังไม่มีการแยกเนื้อหาตามประเทศก็ไม่ต้องเพิ่มรหัสภูมิภาคเพื่อให้ดูละเอียดกว่าความจริง ภาษาอังกฤษหนึ่งฉบับไม่ได้กลายเป็นเนื้อหาสำหรับทุกประเทศแบบเฉพาะเจาะจงเพียงจากการเติม tag
Google รองรับการระบุฉบับภาษาผ่าน HTML, HTTP header หรือ sitemap ตามแนวทางที่กำหนด จึงควรเลือกวิธีที่เข้ากับระบบและตรวจได้ ไม่ต้องทำทุกช่องทางพร้อมกันหากสุดท้ายต้องซิงก์ด้วยมือหลายแห่ง
สำหรับเว็บที่มี metadata ของบทอยู่แล้ว การสร้างจากความสัมพันธ์ที่เก็บในฐานข้อมูลช่วยให้ทั้งลิงก์สลับกับ alternate ใช้รายการเดียวกันได้ เมื่อถอนฉบับหนึ่งหรือเปลี่ยน URL ก็แก้เส้นทางเดียวแทนการไล่ค้น tag ที่ฝังไว้กระจาย
x-default ใช้กับหน้าทางเลือกหรือ fallback ตามบทบาทที่วางไว้ได้ แต่ไม่จำเป็นต้องสร้างหน้าใหม่เพียงเพื่อเติมค่า ถ้าจะใช้ควรรู้ว่าคนที่ไม่ตรงภาษาในรายการจะถูกพาไปหน้าที่ทำอะไร ไม่ชี้ไป URL ที่ไม่มีประโยชน์รองรับ
ในขณะเดียวกัน lang ของ HTML ยังมีหน้าที่กับเครื่องมืออ่านและการตีความภาษาในเว็บ ควรตั้งให้ตรงกับเนื้อหาตามการใช้งาน ส่วน hreflang ไม่ใช่คำสั่งแปลหน้าและไม่ได้เปลี่ยนข้อความให้เป็นภาษาใหม่เอง
เริ่มจากเปิดแต่ละ URL โดยตรงแล้วอ่านภาษาหลัก ตรวจชื่อ คำโปรย วันที่ และรูปแบบข้อความ ไม่ดูเพียงเมนูที่แปลแล้วแต่เนื้อหายังเป็นภาษาเดิมทั้งหมด เพราะสิ่งที่ประกาศควรสอดคล้องกับหน้าที่คนได้รับ
จากนั้นกดสลับไปมาระหว่างคู่บท ดูว่าเข้าบทเดียวกัน ไม่หลุดไปหมวดหรือหน้าแรก และการย้อนกลับยังอยู่ในบริบทที่เข้าใจได้ หากไม่มีคำแปลควรแสดงตามสถานะจริง แทนการสร้างลิงก์ที่จบด้วยหน้าหาย
ตรวจ HTML หรือ sitemap ที่ส่งสาธารณะว่า alternate ชี้ URL ที่เปิดสำเร็จและมีความสัมพันธ์กลับตามแนวทาง ส่วน cache ของ metadata ต้องตามการเปลี่ยนสถานะด้วย ไม่คงรายการฉบับที่เพิ่งถอนไว้หลังหน้าเลิกให้บริการแล้ว
สุดท้ายดู canonical ร่วมกันอีกครั้ง โดยเฉพาะระบบที่มีตัวสร้าง URL หลักส่วนกลาง เพราะการคัด template ไทยไปทำอังกฤษอาจทำให้ชื่อเปลี่ยนแล้วแต่ canonical ยังกลับหน้าไทยอยู่ ซึ่งเป็นสัญญาณที่ไม่ตรงกับการแยกฉบับที่ตั้งใจ
เว็บสองภาษาควรมี URL ที่เปิดฉบับที่ต้องการได้และมีข้อมูลจับคู่บทตามสถานะจริง จากนั้นจัด canonical กับ hreflang ให้ทำคนละหน้าที่อย่างสอดคล้อง พร้อมลิงก์ให้คนเลือกภาษาเอง เมื่อการสร้าง metadata ใช้ความสัมพันธ์เดียวกับเนื้อหาและตรวจทางกดจริง เราจะค่อยๆ เพิ่มคำแปลได้โดยไม่สร้างหน้าว่างหรือสัญญาคู่ภาษาที่เว็บยังไม่มีครับ