Score:0

การนำเข้าการแปลของโมดูลสนับสนุนทำงานอย่างไร

ธง cn

รุ่น Drupal: 9.3.13

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

ฉันมีไซต์ที่มีสองภาษา อังกฤษและเยอรมัน (ค่าเริ่มต้น) ฉันเรียกใช้ "drush locale-check" และ "drush locale-update" และนำเข้าไฟล์ภาษาหลักของเยอรมัน (ซึ่งตอนนี้ถูกบันทึกไว้ที่ "web/sites/default/files/translations/drupal-9.3.13.de. ปอ"). หากภาษาอินเทอร์เฟซปัจจุบันเป็นภาษาเยอรมัน ฉันเห็นคุณลักษณะหลักทุกประเภทที่แปลเป็นภาษาเยอรมัน

โมดูลที่ใช้งานอยู่:

  • การแปลการกำหนดค่า
  • การแปลอินเตอร์เฟส
  • ภาษา

จากนั้นฉันติดตั้งโมดูล โดยโหลดผ่านคอมโพสเซอร์ก่อน แล้วจึงติดตั้งผ่านหน้า "admin/modules" ฉันตรวจสอบให้แน่ใจว่ามีการใช้สตริงของโมดูลในหน้าเว็บ สตริงนี้ได้รับการแปลบน localize.drupal.org สำหรับเวอร์ชันปัจจุบันของโมดูล และแสดงภายใต้ "admin/config/regional/translate" เป็นไม่ได้แปล หลังจากนั้น จากนั้นฉันก็เรียกใช้คำสั่งแปลทั้งสองอีกครั้ง ผลลัพธ์บอกว่ามีการตรวจสอบการแปลสำหรับโครงการหนึ่งและไม่มีอะไรเปลี่ยนแปลง ไม่มีคำแปลปรากฏขึ้นสำหรับสตริงทดสอบของฉัน

ฉันเพิ่งทดสอบสิ่งนี้กับการติดตั้ง Drupal ใหม่ด้วยโมดูล "drupal/cookies" (เวอร์ชัน 1.0.18, https://www.drupal.org/project/cookies).หน้าของโมดูลบน localize.drupal.org แสดงสตริงที่แปลแล้วจำนวนมาก: https://localize.drupal.org/translate/languages/de/translate?project=cookies&status=2&release=531668&search=&author&context=all&limit=10&sid=0

สิ่งที่ฉันรู้:

  • โมดูลที่กำหนดเองของฉันใช้ไฟล์ .po และโหลดได้ดี
  • ดูเหมือนว่าจะมีข้อบกพร่องที่ทำให้โมดูลเวอร์ชันใหม่ไม่ได้รับ (https://www.drupal.org/project/drupal/issues/2575945). นั่นก็ไม่ดีเช่นกัน แต่ที่นี่ไม่มีการโหลดการแปลสำหรับโมดูลตั้งแต่แรก

ฉันพยายามดีบักสิ่งนี้และได้ตรวจสอบ "locale.project" และ "locale.translation_status" จากตาราง "key_value" แล้ว ทั้งสองมีเฉพาะแกน Drupal บนไซต์ทดสอบของฉัน ในไซต์การผลิต โมดูลแบบกำหนดเองทั้งหมดยังมีอยู่ แต่ไม่มีโมดูลที่สนับสนุน

ดังนั้นคำถามคือ ฉันพลาดอะไรไปที่นี่? สิ่งนี้ควรทำงานอย่างไร

cn flag
คำตอบง่ายๆ ว่าใช่หรือไม่ใช่ หากการโหลดการแปลสำหรับโมดูลร่วมควรทำงานในลักษณะนี้จะเป็นประโยชน์ :-)
Score:1
ธง cn

หลังจากการดีบั๊กหลายครั้ง ฉันได้แก้ไขปัญหานี้โดยการเปรียบเทียบพฤติกรรมของ Drupal กับการติดตั้งใหม่ทั้งหมด แน่นอน "drush locale-update" ควรจะได้รับการแปลสำหรับโมดูล contrib!

สิ่งที่เกิดขึ้นที่นี่คือบรรทัดนี้ใน Composer.json:

"กำหนดค่า": {
     "ทิ้งการเปลี่ยนแปลง": จริง
     "การติดตั้งที่ต้องการ": "แหล่งที่มา",
     "จัดเรียงแพ็คเกจ": จริง
},

แนวรุกคือ "การติดตั้งที่ต้องการ": "แหล่งที่มา". สิ่งนี้เกิดขึ้นเมื่อไม่นานมานี้ ไม่มีใครรู้ว่าทำไมและนักแต่งเพลงต้องชำระเงินโค้ดจาก git แทนที่จะดาวน์โหลดไฟล์ zip จาก Drupal

สิ่งนี้ไม่ได้สร้างความแตกต่างมากนัก ยกเว้นว่าโดยปกติแล้ว Drupal จะเพิ่มข้อมูลลงในไฟล์ info.yml ของโมดูล:

# ข้อมูลที่เพิ่มโดยสคริปต์บรรจุภัณฑ์ Drupal.org เมื่อ 2021-04-02
รุ่น: '8.x-1.2'
โครงการ: 'foobar'
วันที่ประทับ: 1617351415

ด้วย git checkout สิ่งนี้จะหายไป! และเมื่อ Drupal ตรวจหาคำแปลในภายหลัง ก็จะผ่านโมดูลทั้งหมดและพยายามรับชื่อโครงการ เห็นได้ชัดว่าในโครงการ Drupal ได้รับการแปล ไม่ใช่แต่ละโมดูล บางโมดูลประกอบด้วยโมดูลย่อยจำนวนมาก ซึ่งทั้งหมดใช้ชื่อโครงการเดียวกัน ดังนั้นจึงใช้ฐานการแปลเดียวกัน เนื่องจากโมดูล contrib ทั้งหมดของฉันมาจาก git แทนที่จะมาจากไฟล์ zip ที่ปรับปรุงแล้ว นี่หมายความว่า Drupal ข้ามมันไปทั้งหมดใน "drush locale-update"! ไม่มีข้อมูลเกี่ยวกับเรื่องนี้ออกมา พวกเขาเพียงแค่ข้ามไปอย่างเงียบๆ

วิธีแก้ไขสำหรับฉันคือเปลี่ยนบรรทัดที่ไม่เหมาะสมเป็น:

"การติดตั้งที่ต้องการ": {
    "drupal/*": "ส่วน",
    "*": "แหล่งที่มา"
},

นอกจากนี้ โปรดทราบว่าคุณต้องลบโมดูลออกจากเว็บ/โมดูล/ส่วนรวม และติดตั้งใหม่ผ่านทางผู้แต่ง เพียงแค่เปลี่ยนด้านบนและเรียกใช้ "composer install" ไม่เพียงพอ!

โพสต์คำตอบ

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