web-dev-qa-db-fra.com

Comment obtenir le nom du terme traduit par tid?

Je cherche 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);

Example of a translated Taxonomy Term (German to English)

La plupart des exemples fournis dans " comment obtenir le terme de taxonomie traduit par programme? " ne semblent pas fonctionner pour Drupal 7.

10
mate64

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!

17
Oumar

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;
12
Florian Limmer

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);
11
B2F

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?

1
batigolix

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;
}
0
a.alshamiri