Wie bekomme ich den übersetzten Begriffsnamen von tid?


10

Ich suche nach einer Arbeitsmethode , um die übersetzten Begriff Namen zu bekommen durch tid.

Der folgende Code gibt den ursprünglichen Begriffsnamen zurück, jedoch nicht die Übersetzung.

global $language;

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

$term_id = 788;

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

Beispiel eines übersetzten Taxonomiebegriffs (Deutsch nach Englisch)

Die meisten Beispiele in " Wie wird der übersetzte Taxonomiebegriff programmgesteuert abgerufen? " Scheinen für Drupal 7 nicht zu funktionieren.


Ich denke, der Code sollte funktionieren, aber der erste Parameter sollte ein
Termobjekt

@lenni Leider funktioniert es nicht. Drupal gibt dasselbe Objekt zurück.
mate64

Antworten:


17

Ich habe es geschafft, dass es funktioniert! Das ist mein 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
}

Das sollte es tun! Diadeuf!


12

Sie sollten die Funktion i18n_taxonomy_localize_terms () verwenden. Dies ist der Arbeitscode für mich:

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

11

Ich hatte das gleiche Problem mit lokalisierten Taxonomie-Begriffsübersetzungen. Wenn Sie den Übersetzungsmodus "Mehrsprachige Optionen" auf "Lokalisieren" eingestellt haben, ist dies ziemlich einfach.

Nehmen wir an, Ihre Term-ID lautet 788 wie bei den OPs, und tun Sie dann einfach etwas in diese Richtung:

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

1
Es hat bei mir funktioniert!, Seltsam, dass die Funktion i18n_taxonomy_localize_terms nicht funktioniert hat. thx
GwenM

Hat perfekt funktioniert. Wie die @ Namari-Funktion schien i18n_taxonomy_localize_terms seine Aufgabe nicht zu erfüllen.
Januar


0

Wenn Sie es als Funktion verwenden möchten ..

function _get_term_name_translate($tid) {
  $term = i18n_taxonomy_localize_terms(taxonomy_term_load($tid));
  return $term->name;
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.