วิธีรับชื่อที่แปลโดย tid


10

ฉันกำลังมองหาวิธีการทำงานที่จะได้รับชื่อคำแปลtidโดย

รหัสต่อไปนี้จะส่งคืนชื่อคำดั้งเดิมแต่ไม่ใช่การแปล

global $language;

$lang_name = $language->language; // en

$term_id = 788;

$term = i18n_taxonomy_term_get_translation($term_id, $lang_name);

ตัวอย่างคำศัพท์ Taxonomy ที่แปล (ภาษาเยอรมันเป็นภาษาอังกฤษ)

ตัวอย่างส่วนใหญ่ที่ให้ไว้ใน " วิธีรับคำศัพท์ทางภาษีที่แปลแล้วโดยทางโปรแกรม " ดูเหมือนจะไม่ทำงานสำหรับ Drupal 7


ฉันคิดว่ารหัสควรจะทำงาน แต่พารามิเตอร์แรกควรจะเป็นวัตถุระยะและไม่ ID ระยะ ...
Lenni

@lenni น่าเสียดายที่มันไม่ทำงาน Drupal ส่งคืนวัตถุเดียวกันกลับมา
mate64

คำตอบ:


17

ฉันพยายามทำให้มันใช้งานได้! นี่คือรหัสของฉัน

$tree = taxonomy_get_tree(9); // Your taxonomy id

foreach ($tree as $term) {
  if (module_exists('i18n_taxonomy')) { //To not break your site if module is not installed
    $term = i18n_taxonomy_localize_terms($term); // The important part!
  }
  print l($term->name, 'taxonomy/term/' . $term->tid); //print the terms
}

นั่นทำมันได้! Diadeuf!


12

คุณควรใช้ฟังก์ชัน i18n_taxonomy_localize_terms () นี่คือรหัสการทำงานสำหรับฉัน:

$tid = 10;
$term = taxonomy_term_load($tid);
$translated_term = i18n_taxonomy_localize_terms($term);
print $translated_term->name;

11

ฉันมีปัญหาเดียวกันกับการแปลคำศัพท์ทางอนุกรมวิธาน หากคุณตั้งค่าโหมดการแปล "ตัวเลือกหลายภาษา" เป็น "จำกัด " แสดงว่าเป็นโหมดที่ไม่ซับซ้อน

สมมติว่า id ของคุณคือ 788 เหมือนกับ OP ของแล้วก็ทำอะไรตามบรรทัดเหล่านี้:

  $i18n_object = i18n_get_object('taxonomy_term', 788);
  $target_langcode = 'de';
  $translated_term = $i18n_object->localize($target_langcode);

1
มันใช้งานได้สำหรับฉัน!, แปลกที่ฟังก์ชั่น i18n_taxonomy_localize_terms ไม่ได้ ขอบคุณ
GwenM

ทำงานได้สมบูรณ์แบบ ชอบฟังก์ชั่น @Namari i18n_taxonomy_localize_terms ดูเหมือนจะไม่ทำงาน
มกราคม

1

รหัส Knibals แสดงวิธีการแปลต้นไม้คำศัพท์แบบเต็ม ตัวอย่างรหัสนี้แสดงวิธีการแปลคำศัพท์หนึ่งคำ

$term = taxonomy_term_load($tid);
$translated_term = i18n_taxonomy_term_get_translation($term, $langcode);

คำถามนี้ได้ตอบไปแล้วที่นี่: จะได้คำศัพท์อนุกรมวิธานที่แปลแล้วโดยทางโปรแกรมได้อย่างไร


0

หากคุณต้องการใช้เป็น Function ..

function _get_term_name_translate($tid) {
  $term = i18n_taxonomy_localize_terms(taxonomy_term_load($tid));
  return $term->name;
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.