Comment obtenir le nom du terme traduit par tid?

10

Je suis à la recherche d'une méthode de travail pour obtenir le nom du terme traduit par tid.

Le code suivant renvoie le nom du terme d'origine mais pas la traduction.

global $language;

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

$term_id = 788;

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

Exemple de terme de taxonomie traduit (allemand vers anglais)

La plupart des exemples fournis dans « Comment obtenir le terme de taxonomie traduit par programme? » Ne semblent pas fonctionner pour Drupal 7.

mate64
la source
je pense que le code devrait fonctionner mais le premier paramètre devrait être un objet de terme et non un identifiant de terme ...
lenni
@lenni Malheureusement, cela ne fonctionne pas. Drupal renvoie le même objet.
mate64

Réponses:

17

J'ai réussi à le faire fonctionner! C'est mon code

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

Cela pourrait le faire! Diadeuf!

Oumar
la source
12

Vous devez utiliser la fonction i18n_taxonomy_localize_terms (). Voici le code de travail pour moi:

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

J'ai eu le même problème avec les traductions localisées de termes de taxonomie. Si votre mode de traduction "Options multilingues" est réglé sur "Localiser", alors c'est assez simple.

Supposons que votre identifiant de terme soit 788 comme celui des PO, puis faites simplement quelque chose comme ceci:

  $i18n_object = i18n_get_object('taxonomy_term', 788);
  $target_langcode = 'de';
  $translated_term = $i18n_object->localize($target_langcode);
B2F
la source
1
Cela a fonctionné pour moi !, bizarre que la fonction i18n_taxonomy_localize_terms n'ait pas fonctionné. thx
GwenM
Fonctionne parfaitement. Comme la fonction @Namari, i18n_taxonomy_localize_terms ne semblait pas faire son travail.
janvier
1

Le code Knibals montre comment traduire un arbre de vocabulaire complet. Cet extrait de code montre comment traduire un terme spécifique.

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

Cette question a déjà été répondue ici: comment obtenir le terme de taxonomie traduit par programme?

batigolix
la source
0

Si vous souhaitez l'utiliser comme fonction ..

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