Como obter o nome do termo traduzido por tid?

10

Estou procurando um método de trabalho para obter o nome do termo traduzido por tid.

O código a seguir retorna o nome do termo original, mas não a tradução.

global $language;

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

$term_id = 788;

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

Exemplo de um termo de taxonomia traduzido (alemão para inglês)

A maioria dos exemplos fornecidos em " como obter o termo de taxonomia traduzido programaticamente? " Parece não funcionar para o Drupal 7.

mate64
fonte
eu acho que o código deve funcionar, mas o primeiro parâmetro deve ser um objeto prazo e não um ID de prazo ...
lenni
@lenni Infelizmente, isso não funciona. Drupal retorna o mesmo objeto de volta.
mate64

Respostas:

17

Eu consegui fazer funcionar! Este é o meu código

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

Isso deve ser feito! Diadeuf!

Oumar
fonte
12

Você deve usar a função i18n_taxonomy_localize_terms (). Este é o código de trabalho para mim:

$tid = 10;
$term = taxonomy_term_load($tid);
$translated_term = i18n_taxonomy_localize_terms($term);
print $translated_term->name;
Florian Limmer
fonte
11

Eu tive o mesmo problema com as traduções de termos de taxonomia localizadas. Se você tiver o modo de tradução "Opções multilíngues" definido como "Localizar", é bastante simples.

Digamos que seu ID de termo seja 788 como o do OP, então faça algo nesse sentido:

  $i18n_object = i18n_get_object('taxonomy_term', 788);
  $target_langcode = 'de';
  $translated_term = $i18n_object->localize($target_langcode);
B2F
fonte
1
Funcionou para mim !, estranho que a função i18n_taxonomy_localize_terms não funcionasse. thx
GwenM
Funcionou perfeito. Como a função @Namari, i18n_taxonomy_localize_terms não pareceu fazer seu trabalho.
jan
1

O código Knibals mostra como traduzir uma árvore de vocabulário completo. Este trecho de código mostra como traduzir um termo específico.

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

Esta pergunta já foi respondida aqui: como obter o termo de taxonomia traduzido programaticamente?

batigolix
fonte
0

Se você quiser usá-lo como função ..

function _get_term_name_translate($tid) {
  $term = i18n_taxonomy_localize_terms(taxonomy_term_load($tid));
  return $term->name;
}
a.alshamiri
fonte