REEID EDITORIAL

เกิดอะไรขึ้นกับฟิลด์กำหนดเองใน WordPress หลายภาษา?

ใน WordPress หลายภาษา ฟิลด์กำหนดเองและเมตาของโพสต์ไม่ใช่ข้อมูลเสริม—แต่เป็นส่วนหนึ่งของโมเดลเนื้อหา ค่าบางอย่างควรถูกแปลไปพร้อมกับโพสต์ บางอย่างควรถูกซิงโครไนซ์ให้เหมือนกันในทุกเวอร์ชันภาษา และบางอย่างอาจต้องแยกการจัดการออกจากกันอย่างตั้งใจ หากการจัดการเหล่านี้ไม่สอดคล้องกัน ผลลัพธ์มักไม่ใช่ปัญหาการแปลที่ละเอียดอ่อน แต่เป็นเนื้อหาที่หายไป ค่าเก่าที่ค้างอยู่ หรือเอาต์พุตฝั่งหน้าเว็บที่เสียหาย

12 Sep 20266 min read

ข้อสรุปสำคัญ

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

ฟิลด์กำหนดเองเป็นส่วนหนึ่งของโมเดลเนื้อหาหลายภาษา

ใน WordPress ฟิลด์กำหนดเองและเมตาของโพสต์ไม่ได้แยกออกจากประสบการณ์เนื้อหา เพียงเพราะมันอยู่นอกเนื้อหาหลักในตัวแก้ไข ฟิลด์เหล่านี้มักเป็นตัวกำหนดสิ่งที่แสดงในเทมเพลต บล็อก การ์ดคลังเนื้อหา ส่วนเนื้อหาแบบมีโครงสร้าง และตรรกะเงื่อนไขฝั่งหน้าเว็บ

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

ไม่ใช่ทุกฟิลด์ที่ควรทำงานเหมือนกัน

การตัดสินใจสำคัญคือฟิลด์นั้นมีเนื้อหาเฉพาะภาษาหรือเป็นเนื้อหาที่ใช้ร่วมกัน

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

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

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

ทำไมการแปลและการซิงโครไนซ์จึงเป็นการทำงานคนละแบบ

การแปลจะเปลี่ยนค่าเพื่อให้เวอร์ชันภาษานั้นยืนได้ด้วยตัวเอง ส่วนการซิงโครไนซ์จะคัดลอกหรือคงค่าเดิมไว้ในตัวแปรภาษา เพื่อให้ยังสอดคล้องกัน

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

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

การจัดการฟิลด์ที่ไม่สอดคล้องกันทำให้หน้าเว็บฝั่งหน้าเสียอย่างไร

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

ค่าที่ล้าสมัยเกิดขึ้นเมื่อเวอร์ชันภาษาใดภาษาหนึ่งถูกอัปเดต แต่ฟิลด์ที่เกี่ยวข้องในอีกภาษาหนึ่งไม่ได้อัปเดตตาม หน้าเว็บยังแสดงผลได้ แต่ข้อมูลที่แสดงไม่ตรงกับเนื้อหาต้นฉบับอีกต่อไป

เอาต์พุตฝั่งหน้าเว็บที่เสียหายเกิดขึ้นเมื่อฟิลด์ถูกใช้ในลักษณะที่เทมเพลตคาดว่าใช้ได้ แต่เวอร์ชันที่แปลแล้วมีค่าคนละชนิด ค่าเปล่า หรือข้อมูลอ้างอิงที่ไม่ตรงกัน ในทางปฏิบัติ สิ่งนี้อาจกระทบลิงก์ ส่วนเงื่อนไข เนื้อหาที่ทำซ้ำ และตรรกะเทมเพลตใด ๆ ที่คาดว่าฟิลด์จะมีอยู่และสอดคล้องกัน

ความสัมพันธ์พึ่งพาไม่ได้จบแค่ที่ฟิลด์เอง

ฟิลด์กำหนดเองแทบไม่เคยอยู่โดดเดี่ยว มันอาจถูกใช้โดยบล็อก ส่วนของเทมเพลต เงื่อนไขของธีม หรือฟิลด์อื่นที่อ้างอิงถึงมัน

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

สำหรับผู้พัฒนา คำถามเชิงปฏิบัติไม่ใช่แค่ว่าฟิลด์นั้นถูกแปลหรือไม่ แต่คือมีอะไรอีกบ้างที่อ่านค่าฟิลด์นั้น ยิ่งฟิลด์มีผลต่อการกำหนดเส้นทาง สัญญาณแคนนอนิคัล ความสัมพันธ์ หรือเอาต์พุตของเทมเพลตมากเท่าไร พฤติกรรมหลายภาษาของมันก็ยิ่งต้องกำหนดอย่างรอบคอบมากขึ้นเท่านั้น

การตัดสินใจเชิงปฏิบัติสำหรับเจ้าของและผู้พัฒนา WordPress

เวิร์กโฟลว์ที่มีประโยชน์เริ่มจากการจัดประเภทฟิลด์ก่อนเริ่มงานแปล ตัดสินใจว่าฟิลด์ใดเป็นเนื้อหา ฟิลด์ใดเป็นการตั้งค่าที่ใช้ร่วมกัน และฟิลด์ใดเป็นเมตาดาต้าทางเทคนิค

จากนั้นตรวจสอบว่าเวิร์กโฟลว์การแปลรักษาการตัดสินใจเหล่านั้นไว้เมื่อมีการสร้างเวอร์ชันภาษาใหม่ เป้าหมายไม่ใช่แค่คัดลอกข้อมูล แต่ต้องทำให้ค่าที่ถูกต้องยังคงแก้ไขได้ ซิงโครไนซ์ได้ หรือถูกซ่อนตามบทบาทของมัน

สุดท้าย ทดสอบเอาต์พุตฝั่งหน้าเว็บในแต่ละเวอร์ชันภาษา ปัญหาที่พบบ่อยที่สุดมักไม่ปรากฏในตัวแก้ไขเพียงอย่างเดียว แต่จะเห็นเมื่อเทมเพลตอ่านฟิลด์นั้นและแสดงผลหน้าเว็บ

สำคัญ

คำถามที่พบบ่อย

ฟิลด์กำหนดเองทุกฟิลด์ควรถูกแปลใน WordPress หลายภาษาหรือไม่?

ไม่ใช่ ฟิลด์บางรายการมีข้อความเฉพาะภาษาและควรถูกแปล ขณะที่ฟิลด์อื่นมีค่าที่ใช้ร่วมกันและควรถูกซิงโครไนซ์ พฤติกรรมที่ถูกต้องขึ้นอยู่กับว่าฟิลด์นั้นถูกใช้ทำอะไรบนหน้าเว็บ และค่าของมันเปลี่ยนไปตามภาษาหรือไม่

ทำไมหน้าเว็บที่แปลแล้วจึงยังดูไม่สมบูรณ์ ทั้งที่เนื้อหาหลักมีอยู่?

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

ความเสี่ยงหลักของการซิงค์ฟิลด์ที่ควรถูกแปลคืออะไร?

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

ความเสี่ยงหลักของการแปลฟิลด์ที่ควรถูกซิงโครไนซ์คืออะไร?

เวอร์ชันภาษาต่าง ๆ อาจค่อย ๆ ไม่ตรงกัน ซึ่งอาจทำให้เกิดการอ้างอิงที่ล้าสมัย การตั้งค่าที่ไม่สอดคล้องกัน หรือเอาต์พุตที่เสียหาย เมื่อเทมเพลตคาดหวังค่าเดียวกันในทุกการแปล

แหล่งที่มา & หลักฐาน

นำสถาปัตยกรรมไปใช้งาน

ดูว่าการผสานรวมของ WordPress ทำงานอย่างไรในระบบหลายภาษา

สำรวจความเข้ากันได้เฉพาะปลั๊กอิน พื้นที่การแปล และหมายเหตุการติดตั้งใช้งานใน REEID Integration Directory

Shopping Cart
Scroll to Top