Score:1

รับการแปลเว็บฟอร์มโดยทางโปรแกรมอย่างไร

ธง br

ฉันใช้ Drupal 9 ฉันต้องโหลดป้ายกำกับตัวเลือกของตัวเลือกของ Webform โดยทางโปรแกรม

จนถึงตอนนี้ ฉันโหลดป้ายกำกับได้แล้ว:

  $องค์ประกอบ = $webform_submission->getWebform()
      ->getElement($element_key, จริง);

  $option_text = WebformOptionsHelper::getOptionText($element_value, $element['#options']);

อย่างไรก็ตาม ฉันต้องได้รับป้ายกำกับเหล่านั้นสำหรับทั้งภาษาของไซต์ด้วย - th และ มัน.

วัตถุเว็บฟอร์มไม่มีไฟล์ รับการแปล () วิธีการ ดังนั้นฉันได้ลอง:

  • พึ่ง $webform_submission->getTranslation($langcode)แต่ไม่ได้ผล เนื่องจากมีเฉพาะภาษาที่เว็บฟอร์มส่งมาเท่านั้น

  • พยายามใช้:

$test = \Drupal::service('entity.repository')
      ->getTranslationFromContext($webform, $langcode);
// รับค่าตัวเลือก

แต่ก็ไม่ได้ผลเช่นกัน ป้ายกำกับจะอยู่ในนั้นเสมอ มัน หากส่งเว็บฟอร์มเข้ามาแล้ว มัน และในทำนองเดียวกันสำหรับ th.

จะรับตัวเลือกสำหรับทั้งสองภาษาได้อย่างไร

Score:3
ธง in

คุณต้องใช้ตัวจัดการการแปลที่ Webform จัดเตรียมให้ (หรือคุณอาจใช้วิธีนี้ในการจัดการการแปลเอนทิตีการกำหนดค่ามาตรฐาน)

รหัสต่อไปนี้สาธิตวิธีการแสดงป้ายชื่อที่แปลแล้วสำหรับองค์ประกอบ Select ที่เพิ่มลงใน Webform

<?php

ใช้ Drupal\webform\Entity\Webform;

// เราต้องการผู้จัดการการแปล
$wftm = \Drupal::service('webform.translation_manager');
// รับเว็บฟอร์มการติดต่อมาตรฐาน พร้อมองค์ประกอบตัวเลือกการแปลเพิ่มเติม
$wf = Webform::load('ติดต่อ');

// รับภาษาของระบบทั้งหมด
$langcodes = \Drupal::languageManager()->getLanguages();
$langcodesList = array_keys($langcodes);

foreach ($langcodesList เป็น $langcode) {
  $องค์ประกอบ = $wftm->getElements($wf, $langcode);
  ถ้า (isset($elements['custom_options']['#options'])) {
    var_dump($elements['custom_options']['#options']);
  }
}

ผลลัพธ์มีลักษณะดังนี้:

root@b91117fbf40f:/app# drush scr webform_test.php 
อาร์เรย์ (3) {
  ["ลาล่า"]=>
  สตริง (4) "ลาล่า"
  ["โกโก้"]=>
  สตริง (4) "โกโก้"
  ["มีมี่"]=>
  สตริง (4) "มีมี่"
}
อาร์เรย์ (3) {
  ["ลาล่า"]=>
  สตริง (9) "ลาล่า (มัน)"
  ["โกโก้"]=>
  สตริง (9) "โกโก้ (มัน)"
  ["มีมี่"]=>
  สตริง (9) "มีมี่ (มัน)"
}
Score:0
ธง sa

แตกต่างเพียงเล็กน้อยจากคำตอบของ Stefanos Petrakis (โดยใช้ getTranslationElements() แทน getElements():

$webform_translation_manager = \Drupal::service('webform.translation_manager');
$webform_translated_elements = $webform_translation_manager->getTranslationElements($booking_form, $langcode);
$options = $webform_translated_elements['element_machinename']['#options'];

โพสต์คำตอบ

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