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.

mate64
quelle
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!

Oumar
quelle
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;
Florian Limmer
quelle
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);
B2F
quelle
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
1

Der Knibals-Code zeigt, wie ein vollständiger Vokabularbaum übersetzt wird. Dieses Codefragment zeigt, wie ein bestimmter Begriff übersetzt wird.

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

Diese Frage wurde hier bereits beantwortet: Wie erhält man den übersetzten Taxonomiebegriff programmatisch?

Batigolix
quelle
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;
}
a.alshamiri
quelle