WPML

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

วิธีลงทะเบียนข้อความที่ผู้ใช้ป้อน

เมื่อผู้ใช้สร้างสตริงใหม่ หรืออัปเดตสตริงที่มีอยู่ สตริงเหล่านั้นจะต้องได้รับการลงทะเบียนในตารางสตริงของ WPML

คุณสามารถเรียกใช้สิ่งนี้ได้ด้วยฮุกการดำเนินการ wpml_register_single_string:

do_action( 'wpml_register_single_string', string $context, string $name, string $value )
  • $context – ชื่อของปลั๊กอินหรือธีมในรูปแบบที่มนุษย์อ่านได้
  • $name – ชื่อของสตริง ซึ่งช่วยให้นักแปลเข้าใจว่ากำลังแปลอะไร
  • $value – สตริงที่ต้องการแปล

พิจารณาตัวอย่างวิดเจ็ตที่กำหนดเองนี้ ซึ่งประกอบด้วย title ฟิลด์ input แบบบรรทัดเดียว และ textarea หากต้องการลงทะเบียนฟิลด์เหล่านี้สำหรับการแปลเมื่อมีการบันทึกหรืออัปเดตตัวเลือกวิดเจ็ต เราจะใช้ฟังก์ชันอัปเดต:

การใช้ฮุกการดำเนินการ wpml_register_single_string
function update($new_instance, $old_instance){
    $instance = $old_instance;
    $instance['title']      = strip_tags($new_instance['title']);
    $instance['custom_input']   = strip_tags($new_instance['custom_input']);
    $instance['custom_textarea']    = $new_instance['custom_textarea'];
 
    //WPML
    /**
     * register strings for translation
     */
    do_action( 'wpml_register_single_string', 'Widgets', 'Custom Widget - input field', $instance['custom_input'] );
    do_action( 'wpml_register_single_string', 'Widgets', 'Custom Widget - textarea field', $instance['custom_textarea'] );
    //WPML
 
    return $instance;
}

ในตัวอย่างนี้ เราบอกให้ WPML ทราบว่าจำเป็นต้องแปลข้อความที่ผู้ใช้ป้อนสำหรับฟิลด์ input และ textarea ข้อความเหล่านี้จะถูกลงทะเบียนภายใต้บริบทสตริง Widgets ด้วยชื่อ Custom Widgetinput field และ Custom Widget – textarea field ตามลำดับ

เมื่อคุณลงทะเบียนข้อความแล้ว คุณสามารถใช้ฮุกการดำเนินการ wpml_translate_single_string เพื่อแสดงคำแปลที่ส่วนหน้าเว็บไซต์ได้

วิธีผสานการทำงานการแปลสตริงเข้ากับปลั๊กอินและธีม

เมื่อผสานการทำงาน การแปลสตริง เข้ากับปลั๊กอินหรือธีม สิ่งสำคัญคือต้องตรวจสอบให้แน่ใจว่ามีการเรียกใช้งานอยู่

การใช้การเรียกแบบมีเงื่อนไข

ครอบการเรียกใช้งานของคุณด้วยคำสั่ง if_function_exists() เพื่อให้มีการเรียกใช้งานหาก WPML เปิดใช้งานอยู่ และหากไม่เป็นเช่นนั้น การทำงานปกติจะยังคงอยู่

การจัดการกรณีที่เปิดใช้งาน WPML ในภายหลัง

ในฐานะนักพัฒนาธีมหรือปลั๊กอิน คุณควรพิจารณาถึงกรณีที่ WPML ถูกเปิดใช้งานหลังจากที่ผู้ใช้เริ่มใช้งานธีมหรือปลั๊กอินของคุณไปแล้วเป็นเวลานานด้วย

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

แม้ว่าวิธีนี้จะเพิ่มเวลาในการประมวลผลเพียงเล็กน้อย แต่ก็รับประกันได้ว่าสตริงจะถูกส่งไปแปลและเป็นปัจจุบันอยู่เสมอ

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

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

ตารางการแปลทั้งหมดจะถูกแคชไว้ในหน่วยความจำ ดังนั้นการเรียกใช้ซ้ำ ๆ จึงใช้พลังงานในการประมวลผลน้อยมาก

แหล่งข้อมูลเพิ่มเติม

หากต้องการลงทะเบียนข้อความที่ฮาร์ดโค้ดจากธีมและปลั๊กอินสำหรับการแปล โปรดดูบทความของเราเกี่ยวกับการค้นหาสตริงที่ไม่ปรากฏในหน้า การแปลสตริง

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

หากต้องการแปลองค์ประกอบของธีมหรือปลั๊กอินเป็นกลุ่ม โปรดดูการแปลแพ็คเกจสตริงของเรา

เขียนโดย Amir · อัปเดตล่าสุด 7 มิถุนายน 2024