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.


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!


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;

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

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


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;
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.