Come ottenere il nome del termine tradotto per tid?


10

Sto cercando un metodo di lavoro per ottenere il nome tradotto da tid.

Il codice seguente restituisce il nome del termine originale ma non la traduzione.

global $language;

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

$term_id = 788;

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

Esempio di termine di tassonomia tradotto (da tedesco a inglese)

La maggior parte degli esempi forniti in " come ottenere il termine della tassonomia tradotta in modo programmatico? " Non sembrano funzionare per Drupal 7.


penso che il codice dovrebbe funzionare ma il primo parametro dovrebbe essere un termine oggetto e non un termine id ...
lenni

@lenni Purtroppo non funziona. Drupal restituisce lo stesso oggetto.
Mate64,

Risposte:


17

Sono riuscito a farlo funzionare! Questo è il mio codice

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

Questo dovrebbe farlo! Diadeuf!


12

È necessario utilizzare la funzione i18n_taxonomy_localize_terms (). Questo è il codice di lavoro per me:

$tid = 10;
$term = taxonomy_term_load($tid);
$translated_term = i18n_taxonomy_localize_terms($term);
print $translated_term->name;

11

Ho avuto lo stesso problema con le traduzioni di termini tassonomici localizzati. Se la modalità di traduzione "Opzioni multilingue" è impostata su "Localizza", è piuttosto semplice.

Supponiamo che il tuo id di termine sia 788 come gli OP, quindi fai semplicemente qualcosa del genere:

  $i18n_object = i18n_get_object('taxonomy_term', 788);
  $target_langcode = 'de';
  $translated_term = $i18n_object->localize($target_langcode);

1
Ha funzionato per me! Strano che la funzione i18n_taxonomy_localize_terms non ha funzionato. grazie
GwenM il

Ha funzionato perfettamente. Come la funzione @Namari i18n_taxonomy_localize_terms non sembra aver fatto il suo lavoro.
gennaio


0

Se vuoi usarlo come Funzione ..

function _get_term_name_translate($tid) {
  $term = i18n_taxonomy_localize_terms(taxonomy_term_load($tid));
  return $term->name;
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.