เรียกคำศัพท์อนุกรมวิธานที่แปลเป็นภาษาปัจจุบันโดยใช้โปรแกรม


คำตอบ:


15

ใช้รหัสต่อไปนี้:

$curr_langcode = \Drupal::languageManager()->getCurrentLanguage(\Drupal\Core\Language\LanguageInterface::TYPE_CONTENT)->getId();

// retrieve term
$taxonomy_term = \Drupal\taxonomy\Entity\Term::load($tid);

// retrieve the translated taxonomy term in specified language ($curr_langcode) with fallback to default language if translation not exists
$taxonomy_term_trans = \Drupal::service('entity.repository')->getTranslationFromContext($taxonomy_term, $curr_langcode);

// get the value of the field "myfield"
$myfield_translated = $taxonomy_term_trans->myfield->value;

6

คุณควร (ต้อง) ใช้บริการแทนที่บรรทัดแรกสำหรับ language_manager ฉันจะย่อรหัสด้วยการใช้แท็ก

ที่ใดที่หนึ่งในจุดเริ่มต้นของไฟล์:

use Drupal\taxonomy\Entity\Term;
use Drupal\Core\Language\LanguageInterface;

และต่อมาในรหัสในฟังก์ชั่นบางอย่าง

$curr_langcode = \Drupal::service('language_manager')->getCurrentLanguage(LanguageInterface::TYPE_CONTENT)->getId();
// Retrieve term.
$taxonomy_term = Term::load($tid);
// Retrieve the translated taxonomy term in specified language
// ($curr_langcode) with fallback to default language if translation not
// exists.
$taxonomy_term_trans = \Drupal::service('entity.repository')->getTranslationFromContext($taxonomy_term, $curr_langcode);
// Get the value of the field "myfield".
$myfield_translated = $taxonomy_term_trans->myfield->value;

2

ตัวอย่างด้านบนจะแสดงข้อกำหนดที่ไม่ได้แปลเช่นกัน คุณต้องตรวจสอบว่ามีการแปลคำศัพท์ด้วยฟังก์ชัน hasTranslation หรือไม่:

$vocabulary = 'MY_VOCABULARY_NAME';
$language =  \Drupal::languageManager()->getCurrentLanguage()->getId();
$query = \Drupal::entityQuery('taxonomy_term');
$query->condition('vid', $vocabulary);
$query->sort('weight');
$tids = $query->execute();
$terms = \Drupal\taxonomy\Entity\Term::loadMultiple($tids);
$termList = array();

foreach($terms as $term) {
    if($term->hasTranslation($language)){
        $translated_term = \Drupal::service('entity.repository')->getTranslationFromContext($term, $language);
        $tid = $term->id();
        $termList[$tid] = $translated_term->getName();
    }
}

// To print a list of translated terms. 
foreach($termList as $tid => $name) {
 print $name;
}

วิธีเชื่อมโยงแท็กไปยังหน้าคำศัพท์: ดู: รับข้อกำหนดเกี่ยวกับอนุกรมวิธาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.