Как получить переведенное название термина по tid?


10

Я ищу для рабочего метода , чтобы получить переведенный термин имя по tid.

Следующий код возвращает исходное имя термина, но не перевод.

global $language;

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

$term_id = 788;

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

Пример переведенного термина таксономии (с немецкого на английский)

Большинство примеров, представленных в разделе « Как получить переведенный термин таксономии программно? », Похоже, не работают для Drupal 7.


я думаю, что код должен работать, но первый параметр должен быть объектом термина, а не термином id ...
Ленни

@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 не сработала. thx
GwenM

Работал отлично. Как и функция @Namari, i18n_taxonomy_localize_terms, похоже, не выполняет свою работу.
январь

1

Код Knibals показывает, как перевести полное словарное дерево. Этот фрагмент кода показывает, как перевести один конкретный термин.

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

На этот вопрос уже был дан ответ: как получить переведенный термин таксономии программно?


0

Если вы хотите использовать его в качестве функции ..

function _get_term_name_translate($tid) {
  $term = i18n_taxonomy_localize_terms(taxonomy_term_load($tid));
  return $term->name;
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.