¿Cómo obtener el nombre del término traducido por tid?

10

Estoy en busca de un método de trabajo para obtener el nombre traducido plazo por tid.

El siguiente código devuelve el nombre del término original pero no la traducción.

global $language;

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

$term_id = 788;

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

Ejemplo de un término traducido de taxonomía (alemán a inglés)

La mayoría de los ejemplos proporcionados en " ¿cómo obtener el término de taxonomía traducida programáticamente? " No parecen funcionar para Drupal 7.

mate64
fuente
Creo que el código debería funcionar, pero el primer parámetro debería ser un término objeto y no un plazo ID ...
Lenni
@lenni Desafortunadamente no funciona. Drupal devuelve el mismo objeto.
mate64

Respuestas:

17

¡Logré hacerlo funcionar! Este es mi codigo

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

¡Eso debería hacerlo! Diadeuf!

Oumar
fuente
12

Debe usar la función i18n_taxonomy_localize_terms (). Este es el código de trabajo para mí:

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

Tuve el mismo problema con las traducciones de términos de taxonomía localizada. Si tiene el modo de traducción "Opciones multilingües" configurado en "Localizar", entonces es bastante sencillo.

Digamos que su ID de término es 788 como los OP, luego simplemente haga algo en este sentido:

  $i18n_object = i18n_get_object('taxonomy_term', 788);
  $target_langcode = 'de';
  $translated_term = $i18n_object->localize($target_langcode);
B2F
fuente
1
¡Funcionó para mí !, extraño que la función i18n_taxonomy_localize_terms no lo hiciera. thx
GwenM
Funcionó perfecto. Al igual que la función @Namari, i18n_taxonomy_localize_terms no parecía hacer su trabajo.
enero
1

El código Knibals muestra cómo traducir un árbol de vocabulario completo. Este fragmento de código muestra cómo traducir un término específico.

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

Esta pregunta ya fue respondida aquí: ¿cómo obtener el término taxonomía traducido mediante programación?

batigolix
fuente
0

Si quieres usarlo como Function ..

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