Làm thế nào để có được tên thuật ngữ dịch bởi tid?


10

Tôi đang tìm kiếm một phương pháp làm việc để có được tên dịch hạn bởi tid.

Đoạn mã sau trả về tên thuật ngữ gốc nhưng không phải là bản dịch.

global $language;

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

$term_id = 788;

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

Ví dụ về thuật ngữ phân loại dịch (tiếng Đức sang tiếng Anh)

Hầu hết các ví dụ được cung cấp trong " làm thế nào để có được thuật ngữ phân loại dịch theo chương trình? " Dường như không hoạt động đối với Drupal 7.


Tôi nghĩ rằng mã nên hoạt động nhưng tham số đầu tiên phải là một đối tượng thuật ngữ và không phải là một thuật ngữ id ...
lenni

@lenni Thật không may, nó không hoạt động. Drupal trả lại cùng một đối tượng.
mate64

Câu trả lời:


17

Tôi quản lý để làm cho nó hoạt động! Đây là mã của tôi

$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
}

Điều đó nên làm điều đó! Diadeuf!


12

Bạn nên sử dụng hàm i18n_taxonomy_localize_terms (). Đây là mã làm việc cho tôi:

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

11

Tôi đã có cùng một vấn đề với các bản dịch thuật ngữ phân loại địa phương. Nếu bạn có chế độ dịch "Tùy chọn đa ngôn ngữ" được đặt thành "Bản địa hóa", thì điều đó khá đơn giản.

Giả sử id thuật ngữ của bạn là 788 như OP, sau đó chỉ cần làm một cái gì đó dọc theo những dòng này:

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

1
Nó hoạt động với tôi!, Lạ là chức năng i18n_taxonomy_localize_terms không hoạt động. thx
GwenM

Làm việc hoàn hảo. Giống như chức năng @Namari i18n_taxonomy_localize_terms dường như không thực hiện công việc của mình.
Tháng Một


0

Nếu bạn muốn sử dụng nó như Chức năng ..

function _get_term_name_translate($tid) {
  $term = i18n_taxonomy_localize_terms(taxonomy_term_load($tid));
  return $term->name;
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.