การแปลแบบกำหนดเอง
From LimeSurvey Manual
บทนำ
ตั้งแต่ LimeSurvey 5.4.0 คุณสามารถกำหนดคำแปลของคุณเองสำหรับสตริงทั้งหมดในทุกภาษาที่รองรับ โดยเข้าถึงฐานข้อมูลของคุณโดยตรง
สามารถใช้ระบบนี้ได้หากคำแปลที่มีอยู่ไม่เหมาะสมกับความต้องการทางธุรกิจของคุณ
ควรใช้เฉพาะในกรณีที่จำเป็นเท่านั้น เนื่องจากการแก้ไขข้อความในส่วนหลักของ LimeSurvey จะต้องมีการแก้ไขฐานข้อมูลของคุณอีกครั้ง
นอกจากนี้ คุณยังสามารถใช้วิธีนี้เพื่อแปลสตริงที่เฉพาะเจาะจงกับธีมแบบสำรวจได้อีกด้วย
การแปลผ่านฐานข้อมูลทำงานอย่างไร
สำหรับการแปลผ่านฐานข้อมูล LimeSurvey ใช้วิธีการที่ได้รับแรงบันดาลใจจาก CDbMessageSource ของเฟรมเวิร์ก Yii
- ค้นหาสตริงในตาราง SourceMessage lime_source_message->message แล้วนำ id มาใช้ : lime_source_message->id
- หากพบ ให้ค้นหาคำแปลที่เกี่ยวข้องในตาราง Message lime_message->translation สำหรับภาษาปัจจุบัน lime_message->language ด้วย id ปัจจุบัน lime_message->id
LimeSurvey สร้างอาร์เรย์ของคำแปลจากไฟล์ po (ดู การแปล LimeSurvey สำหรับข้อมูลเกี่ยวกับวิธีอัปเดตไฟล์นี้) จากนั้นจึงรวมเข้ากับคำแปลทั้งหมดจากฐานข้อมูล
หลังจากนั้น หากมีคำแปลในฐานข้อมูล ระบบจะส่งคืนคำแปลจากฐานข้อมูลเสมอ
ตัวอย่างปุ่ม “ส่ง” ในภาษาอังกฤษและภาษาฝรั่งเศส
คุณต้องการให้ปุ่มส่งแสดงคำว่า _Validate_ แทน _Submit_ ในทุกแบบสำรวจของคุณ (ที่ใช้ธีมเฉพาะ) หากคุณเพียงแก้ไขธีมและแทนที่ gT('Submit') ด้วย gT('Validate') ระบบจะแสดงคำว่า _Validate_ ในทุกภาษาเสมอ
สำหรับการสำรวจทั้งหมดที่ใช้ธีมทั้งหมด
- สร้างข้อความต้นฉบับ
INSERT INTO lime_source_message (id, category, message) VALUES (NULL, '', 'Submit'); - ตรวจสอบ ID (หากเป็นรายการแรก ID จะเป็น 1) และนำไปใช้ในคำสั่งถัดไป
- สร้างคำแปลที่เกี่ยวข้อง :
INSERT INTO lime_message (id, language, translation) VALUES ('1', 'en', 'Validate'), ('1', 'fr', 'Valider');
อย่าแทนที่สตริงด้วยสตริงว่าง มิฉะนั้นคำแปลจะย้อนกลับไปใช้ประโยคภาษาอังกฤษต้นฉบับ คุณต้องใส่ช่องว่างอย่างน้อยหนึ่งช่อง
การใช้ธีมของคุณเอง (วิธีที่แนะนำ)
วิธีนี้ใช้เทมเพลตของคุณเอง และจะอัปเดตสตริงเริ่มต้นสำหรับภาษาอื่นทั้งหมดด้วย
- ใน ตัวแก้ไขธีม ให้เลือกส่วนการนำทาง
- ค้นหา
Template:GT("Submit")(ในไฟล์ navigator.twig) - แทนที่ด้วย
Template:GT("Validate") - สร้างข้อความต้นฉบับ
INSERT INTO lime_source_message (id, category, message) VALUES (NULL, '', 'Validate'); - ตรวจสอบ ID (หากเป็นรายการแรก ID จะเป็น 1) และนำไปใช้ในคำสั่งถัดไป
- สร้างคำแปลที่เกี่ยวข้อง :
INSERT INTO lime_message (id, language, translation) VALUES ('1', 'fr', 'Valider');
โปรดทราบ
ฟิลด์ category ใน lime_source_message ต้องเป็นสตริงว่าง ('') ไม่ใช่ NULL หากหมวดหมู่ไม่ตรงกันทุกประการ gT() จะไม่พบข้อความต้นฉบับ และคำแปลของคุณจะไม่ถูกนำไปใช้ ซึ่งสำคัญเป็นพิเศษเมื่อเพิ่มคำแปลสำหรับสตริงที่เฉพาะเจาะจงกับธีม