¿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.


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!


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;

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

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


0

Si quieres usarlo como Function ..

function _get_term_name_translate($tid) {
  $term = i18n_taxonomy_localize_terms(taxonomy_term_load($tid));
  return $term->name;
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.