คุณสมบัติปลั๊กอินราคาแหล่งข้อมูล
เปลี่ยนภาษา
แหล่งข้อมูลวิธีแปลไฟล์ .po โดยไม่ทำให้ตัวแปรโค้ด (%s, HTML) เสียหาย

วิธีแปลไฟล์ .po โดยไม่ทำให้ตัวแปรโค้ด (%s, HTML) เสียหาย

SimplePoTranslate Team25 พฤศจิกายน 2568
วิธีแปลไฟล์ .po โดยไม่ทำให้ตัวแปรโค้ด (%s, HTML) เสียหาย

มันเริ่มต้นด้วยงานง่ายๆ: คุณแปลธีม WordPress ของคุณเป็นภาษาสเปน คุณอัปโหลดไฟล์ .mo รีเฟรชเว็บไซต์ของคุณ และ...

Fatal error: Uncaught ArgumentCountError: Too few arguments to function sprintf()...

หรือบางทีไซต์ของคุณโหลด แต่เลย์เอาต์ก็พังเพราะแท็กปิด </div> ถูกแปลเป็น </ div>

นี่คือความกลัวอันดับหนึ่งของนักพัฒนาทุกคนที่ทำงานเกี่ยวกับการแปล เมื่อคุณใช้เครื่องมือแปลทั่วไป (เช่น Google Translate หรือตัวห่อหุ้ม AI ขั้นพื้นฐาน) กับไฟล์ .po ทางเทคนิค พวกเขาจะไม่ปฏิบัติต่อโค้ดแตกต่างจากข้อความ พวกเขาพยายาม "แปล" ตัวแปรของคุณ และในการทำเช่นนั้น พวกเขาก็ทำลายเว็บไซต์ของคุณ

ในคู่มือนี้ เราจะอธิบายอย่างชัดเจนว่าเหตุใดสิ่งนี้จึงเกิดขึ้นและวิธีรับประกันความปลอดภัยของโค้ด 100% ในการแปลอัตโนมัติของคุณ

กายวิภาคของหายนะ: ทำไม %s ถึงทำให้ไซต์เสียหาย

WordPress ใช้ระบบ Gettext และฟังก์ชัน PHP เช่น sprintf() เพื่อจัดการข้อความไดนามิก

ตัวอย่างเช่น คุณอาจมีสตริงแบบนี้: msgid "Search results for %s"

%s คือตัวแปรตัวยึดตำแหน่งที่ PHP จะแทรกคำค้นหาของผู้ใช้

AI ทั่วไปทำผิดพลาดได้อย่างไร

เมื่อคุณป้อนสตริงนี้ลงใน Large Language Model (LLM) หรือ API การแปลมาตรฐาน มันจะมองว่า %s เป็นเพียงคำแปลกๆ คำหนึ่ง มันอาจพยายามแก้ไขไวยากรณ์หรือเครื่องหมายวรรคตอนรอบๆ

นี่คือข้อผิดพลาดทางไวยากรณ์ที่พบบ่อยที่สุดที่เราเห็น:

  1. เพิ่มช่องว่าง:

    • Original: Hello %s
    • Bad Translation: Hola % s
    • Result: PHP มองหา %s แต่มันเห็น % s ตัวแปรไม่สามารถโหลดได้ ซึ่งมักจะทำให้เกิดข้อผิดพลาดร้ายแรง
  2. ภาพหลอน HTML:

    • Original: Click <strong>here</strong> to login.
    • Bad Translation: Haga clic <strong>aquí</ strong> para iniciar sesión.
    • Result: AI เพิ่มช่องว่างภายในแท็กปิด </ strong> CSS ของคุณเสีย และส่วนที่เหลือของหน้าจะกลายเป็นตัวหนา
  3. สลับอาร์กิวเมนต์:

    • Original: Page %1$s of %2$s
    • Bad Translation: Página %2$s de %1$s
    • Result: AI ตัดสินใจว่าประโยคฟังดูดีกว่าถ้าสลับตัวเลข ตอนนี้การแบ่งหน้าของคุณบอกว่า "หน้า 10 จาก 1"

กับดัก "แก้ไขด้วยตนเอง"

นักพัฒนาส่วนใหญ่พยายามแก้ไขปัญหานี้โดยการตรวจสอบไฟล์ด้วยตนเอง หากคุณมีปลั๊กอินขนาดเล็กที่มี 50 สตริง ก็ไม่เป็นไร แต่ถ้าคุณกำลังแปลร้านค้า WooCommerce ที่มี 5,000 สตริงล่ะ

การสแกนโค้ด 5,000 บรรทัดเพื่อหาเครื่องหมายอัฒภาคที่หายไปเพียงตัวเดียวหรือช่องว่างพิเศษภายในตัวแปร %s เป็นไปไม่ได้ ต้องใช้เวลาหลายชั่วโมง และสายตาของมนุษย์จะต้องพลาดอะไรบางอย่างอย่างหลีกเลี่ยงไม่ได้

สคริปต์ Regex (Regular Expressions) สามารถช่วยตรวจสอบการมีอยู่ได้ แต่พวกมันแทบจะไม่จับปัญหาการเรียงลำดับเฉพาะบริบทหรือความเสียหายของแอตทริบิวต์ HTML ที่ละเอียดอ่อน

วิธีแก้ปัญหา: "การล็อกไวยากรณ์"

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

นี่คือเทคโนโลยีหลักเบื้องหลัง SimplePoTranslate

ต่างจากเครื่องมือทั่วไป เราไม่ได้แค่ทิ้งข้อความลงใน AI เราแยกวิเคราะห์โครงสร้าง Gettext ก่อน นี่คือวิธีการทำงานของ "เซฟโหมด" ของเรา:

  1. การวิเคราะห์: เราสแกนไฟล์ .po ของคุณและระบุทุกตัวแปร (%s, %d) อาร์กิวเมนต์ตามตำแหน่งทุกตัว (%1$s) และทุกแท็ก HTML (<br/>, <span>)
  2. การแยกและการล็อก: เราลบองค์ประกอบเหล่านี้ออกจากสตริงชั่วคราวและแทนที่ด้วยโทเค็นที่ไม่เปลี่ยนรูป
    • Input: Hello <strong>%s</strong>
    • What the AI sees: Hello [TOKEN_1][TOKEN_2]
  3. การแปล: AI แปลข้อความ "Hello" เป็น "Hola" แต่ไม่สามารถเปลี่ยน [TOKEN_1] หรือ [TOKEN_2] ได้เนื่องจากถูกล็อก
  4. การสร้างใหม่: เราแทรกโค้ดต้นฉบับกลับเข้าไปในสตริงที่แปลแล้วตรงตำแหน่งที่ถูกต้อง

ผลลัพธ์: ไม่มีไซต์ที่เสียหาย

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

เรายังจัดการกฎ Pluralization ที่ซับซ้อน (msgid_plural) สำหรับภาษาต่างๆ เช่น รัสเซียหรือโปแลนด์ เพื่อให้มั่นใจว่าใช้ตัวแปรที่ถูกต้องสำหรับจำนวนที่ถูกต้อง

หยุดเล่นการพนันกับโค้ดของคุณ

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

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

  • บนคลาวด์: ไม่ต้องติดตั้งปลั๊กอิน
  • รับรู้บริบท: ใช้ AI ระดับ Gemini/GPT-4 สำหรับการใช้คำที่ดูเป็นธรรมชาติ
  • ล็อกไวยากรณ์: รับประกันการปกป้องตัวแปรของคุณ

พร้อมที่จะแปลโดยไม่ต้องปวดหัวใช่ไหม เริ่มต้นฟรีได้ที่ SimplePoTranslate.com

หัวข้อที่เกี่ยวข้อง

แชร์บทความนี้