ทำไมการแปลภาษาของคุณถึงไม่แสดงผลใน WordPress (คู่มือแก้ไขปัญหา)

ไม่มีอะไรน่าหงุดหงิดใจในการพัฒนา WordPress มากไปกว่า "ความล้มเหลวแบบเงียบๆ"
คุณทำทุกอย่างถูกต้องแล้ว คุณแปลไฟล์ .po คุณคอมไพล์เป็นไฟล์ .mo คุณอัปโหลดไปยังเซิร์ฟเวอร์ของคุณผ่าน FTP คุณล้างแคชแล้ว
คุณรีเฟรชหน้าเว็บ โดยหวังว่าจะเห็นเป็นภาษาสเปน ฝรั่งเศส หรือเยอรมัน แต่สิ่งที่คุณเห็นคือ... ภาษาอังกฤษ
ไม่มีข้อความแสดงข้อผิดพลาด ไม่มีหน้าจอสีขาว—มีเพียงข้อความที่ไม่ได้รับการแปลที่ดื้อรั้น ก่อนที่คุณจะดึงผมตัวเองจนหมดหัว โปรดอ่านคู่มือนี้ นี่คือ 5 สาเหตุที่พบบ่อยที่สุดที่ทำให้การแปลภาษาไม่โหลดใน WordPress และวิธีแก้ไข
1. คุณตั้งชื่อไฟล์ผิด
WordPress เข้มงวดอย่างมากเกี่ยวกับการตั้งชื่อไฟล์ หากคุณพลาดอักขระไปเพียงตัวเดียว ไฟล์จะไม่ถูกโหลด
รูปแบบมาตรฐานคือ: {text-domain}-{locale}.mo
- Text Domain: นี่คือ ID เฉพาะของธีมหรือปลั๊กอิน (เช่น
woocommerce,twentytwentyfour,my-custom-plugin) - Locale: รหัสโลแคล WP (เช่น
es_ESสำหรับภาษาสเปนของสเปน,fr_FRสำหรับภาษาฝรั่งเศส)
ข้อผิดพลาดทั่วไป:
- ตั้งชื่อไฟล์เป็นเพียง
es_ES.mo(วิธีนี้ใช้ได้เฉพาะกับไฟล์หลักของ WordPress เท่านั้น ไม่ใช่ปลั๊กอิน) - ใช้เครื่องหมายขีดที่ไม่ถูกต้อง:
my_plugin_es_ES.mo(ขีดล่าง) แทนmy-plugin-es_ES.mo(ยัติภังค์) - เดา text domain คุณต้องตรวจสอบโค้ดของปลั๊กอิน (ส่วนหัว
style.cssหรือฟังก์ชันload_plugin_textdomain) เพื่อค้นหา slug ที่แน่นอน
2. คุณใส่ไฟล์ในโฟลเดอร์ผิด
ตำแหน่งที่คุณอัปโหลดไฟล์มีความสำคัญไม่แพ้กับชื่อไฟล์ WordPress จะมองหาในไดเร็กทอรีเฉพาะตามลำดับที่กำหนด
- โฟลเดอร์ระบบ "ปลอดภัย":
/wp-content/languages/plugins/หรือ/wp-content/languages/themes/- ข้อดี: ปลอดภัยจากการอัปเดตปลั๊กอิน
- ข้อเสีย: คุณต้องตั้งชื่อไฟล์เป็น
textdomain-locale.mo
- โฟลเดอร์ผู้สร้าง:
/wp-content/plugins/plugin-name/languages/- ข้อดี: หาได้ง่าย
- ข้อเสีย: อันตราย เมื่อคุณอัปเดตปลั๊กอิน โฟลเดอร์นี้จะถูกล้างทั้งหมด การแปลภาษาของคุณจะหายไป
แนวทางปฏิบัติที่ดีที่สุด: ควรใส่ไฟล์ .mo ที่กำหนดเองของคุณไว้ในไดเร็กทอรี /wp-content/languages/ เสมอ เพื่อป้องกันการสูญหายของข้อมูลระหว่างการอัปเดต
3. "ฆาตกรเงียบ": ไวยากรณ์ที่เสียหายในไฟล์ .po
นี่คือปัญหาที่แก้ไขได้ยากที่สุด และมักเกิดขึ้นกับเครื่องมือแปลภาษา AI ทั่วไป
WordPress อ่านไฟล์ .mo แบบไบนารี ซึ่งคอมไพล์มาจากไฟล์ข้อความ .po หากไฟล์ .po ของคุณมีข้อผิดพลาดทางไวยากรณ์ ไฟล์ .mo อาจถูกสร้างขึ้น แต่จะ "เสีย" ภายใน
สิ่งนี้เกิดขึ้นได้อย่างไร? หากนักแปล (ไม่ว่าจะเป็นคนหรือ AI) ทำรูปแบบ Gettext ผิดพลาด สตริงนั้นจะไม่ถูกต้อง
- ตัวอย่าง: ไม่มีเครื่องหมายอัญประกาศปิด
" - ตัวอย่าง: ทำให้ตัวแปรเสียหาย (เปลี่ยน
%sเป็น% s) - ตัวอย่าง: ทำให้การนับ
msgid_pluralผิดพลาด
เมื่อ WordPress พบรายการที่เสียในไฟล์ .mo มักจะข้ามไป หรือหยุดอ่านไฟล์ทั้งหมด และกลับไปเป็นภาษาอังกฤษดั้งเดิม
4. คุณลืมคอมไพล์ (.po เทียบกับ .mo)
WordPress ไม่สามารถ อ่านไฟล์ .po ได้โดยตรง นี่เป็นความเข้าใจผิดที่พบบ่อย
.po= อ่านได้โดยมนุษย์ (Portable Object).mo= อ่านได้โดยเครื่อง (Machine Object)
หากคุณอัปโหลดไฟล์ my-theme-es_ES.po แต่ลืมสร้างไฟล์ .mo ที่ตรงกัน จะไม่มีอะไรเกิดขึ้น คุณต้องคอมไพล์
5. การแคช (ผู้ต้องสงสัยตามปกติ)
หากคุณใช้ปลั๊กอินแคช (WP Rocket, LiteSpeed) หรือแคชฝั่งเซิร์ฟเวอร์ (Varnish, Redis) ไซต์ของคุณอาจให้บริการ HTML เวอร์ชันที่แคชไว้จาก ก่อนหน้า ที่คุณอัปโหลดการแปล
วิธีแก้ไข: ล้างแคชทั้งหมด รวมถึงแคชของเบราว์เซอร์และ object cache
วิธีแก้ไขขั้นสุดยอด: ไฟล์ที่ถูกต้องตั้งแต่เริ่มต้น
การแก้ไขปัญหาเส้นทางและชื่อไฟล์เป็นเรื่องง่าย การแก้ไขปัญหา ไวยากรณ์ที่เสียหาย (เหตุผล #3) คือฝันร้าย
หากคุณใช้เครื่องมือที่ทำให้ตัวแปรโค้ดของคุณเสียหาย หรือทำให้โครงสร้าง Gettext เสียหาย คุณจะต้องใช้เวลาหลายชั่วโมงในการสงสัยว่าทำไมไฟล์ถึงใช้งานไม่ได้ โดยไม่รู้ว่าตัวไฟล์เองนั้น "เป็นพิษ"
นี่คือเหตุผลที่เราสร้าง SimplePoTranslate
- การล็อกไวยากรณ์: เรารับประกันว่าทุกสตริงจะถูกต้องตามไวยากรณ์ก่อนที่คุณจะดาวน์โหลด เราล็อกตัวแปรต่างๆ เช่น
%sเพื่อไม่ให้เสียหายได้ - การจัดรูปแบบที่สมบูรณ์แบบ: เราสร้างไฟล์
.poที่สะอาดและได้มาตรฐาน ซึ่งคอมไพล์เป็นไฟล์.moที่ใช้งานได้ 100% ของเวลา - ไม่จำเป็นต้องใช้ปลั๊กอิน: คุณดาวน์โหลดไฟล์ และคุณรู้ว่ามันใช้งานได้ คุณเพียงแค่ต้องอัปโหลดไปยังโฟลเดอร์ที่ถูกต้อง
- ปลั๊กอิน WordPress: ต้องการข้ามการอัปโหลดด้วยตนเองทั้งหมดหรือไม่ ปลั๊กอิน SimplePoTranslate WordPress อย่างเป็นทางการของเราจะตรวจจับไฟล์
.potของธีมและปลั๊กอินของคุณโดยอัตโนมัติ แปลในคลาวด์ และปรับใช้ผลลัพธ์ไปยังไดเร็กทอรีที่ถูกต้องด้วยชื่อไฟล์ที่ถูกต้อง ไม่มีการตั้งชื่อไฟล์ผิดอีกต่อไป ไม่มีเส้นทางโฟลเดอร์ที่ไม่ถูกต้อง — สองสาเหตุที่พบบ่อยที่สุดที่ทำให้การแปลภาษาไม่ปรากฏ
หยุดคาดเดาว่าทำไมการแปลภาษาของคุณถึงมองไม่เห็น เริ่มต้นด้วยไฟล์ที่คุณวางใจได้
พร้อมที่จะแปลภาษาโดยไม่ต้องปวดหัวแล้วหรือยัง เริ่มต้นฟรีได้ที่ SimplePoTranslate.com