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);
La plupart des exemples fournis dans " comment obtenir le terme de taxonomie traduit par programme? " ne semblent pas fonctionner pour Drupal 7.
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!
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;
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);
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?
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;
}