Jak uzyskać przetłumaczoną nazwę terminu przez TID?


10

Czekam na metody pracy , aby uzyskać przetłumaczone nazwę terminu przez tid.

Poniższy kod zwraca oryginalną nazwę terminu, ale nie tłumaczenie.

global $language;

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

$term_id = 788;

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

Przykład przetłumaczonego terminu taksonomia (z niemieckiego na angielski)

Większość przykładów podanych w „ jak programowo uzyskać przetłumaczone pojęcie taksonomii? ” Wydaje się nie działać w Drupal 7.


myślę, że kod powinien działać, ale pierwszym parametrem powinien być obiekt terminu, a nie identyfikator terminu ...
lenni

@lenni Niestety to nie działa. Drupal zwraca ten sam obiekt z powrotem.
mate64

Odpowiedzi:


17

Udało mi się sprawić, że to działa! To jest mój kod

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

To by to zrobiło! Diadeuf!


12

Należy użyć funkcji i18n_taxonomy_localize_terms (). To jest dla mnie działający kod:

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

11

Miałem ten sam problem z tłumaczeniami zlokalizowanych terminów taksonomicznych. Jeśli tryb tłumaczenia „Opcje wielojęzyczne” ustawiony jest na „Lokalizuj”, jest to dość proste.

Powiedzmy, że twój identyfikator to 788 jak OP, a następnie zrób coś w tym stylu:

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

1
Działa dla mnie! Dziwne, że nie działała funkcja i18n_taxonomy_localize_terms. dzięki
GwenM,

Działa idealnie. Podobnie jak funkcja @Namari i18n_taxonomy_localize_terms nie wydawała się wykonywać swojej pracy.
sty


0

Jeśli chcesz użyć go jako funkcji ..

function _get_term_name_translate($tid) {
  $term = i18n_taxonomy_localize_terms(taxonomy_term_load($tid));
  return $term->name;
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.