Як отримати назву перекладеного терміна 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

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

Це могло б зробити! Діадеуф!


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, як у ОП, тоді просто зробіть щось у цьому напрямку:

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