Çevrilen terim adını tid ile nasıl edinebilirim?


10

Ben arıyorum çalışma yöntemine göre tercüme terim adını almak tarafından tid.

Aşağıdaki kod, orijinal terim adını döndürür, ancak çeviriyi döndürmez .

global $language;

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

$term_id = 788;

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

Çevrilmiş Taksonomi Terimi örneği (Almancadan İngilizceye)

" Çevrilmiş taksonomi programlı olarak nasıl alınır? " Bölümünde verilen örneklerin çoğu Drupal 7 için işe yaramıyor gibi görünüyor.


kod çalışması gerektiğini düşünüyorum ama ilk parametre bir terim nesne değil, bir terim kimliği olmalıdır ...
lenni

@lenni Maalesef çalışmıyor. Drupal aynı nesneyi geri döndürür.
mate64

Yanıtlar:


17

Çalışmasını başardım! Bu benim kodum

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

Bunu yapmalıyım! Diadeuf!


12

İ18n_taxonomy_localize_terms () işlevini kullanmalısınız. Bu benim için çalışma kodu:

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

11

Yerelleştirilmiş taksonomi terim çevirileriyle de aynı sorunu yaşadım. "Çok dilli seçenekler" çeviri modunuz "Yerelleştir" olarak ayarlanmışsa, oldukça basittir.

Diyelim ki kimlik kimliğiniz OP'ler gibi 788, o zaman bu satırlar boyunca bir şeyler yapın:

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

1
Benim için çalıştı !, i18n_taxonomy_localize_terms fonksiyonunun işe yaramadığı tuhaftı. thx
GwenM

Mükemmel çalıştı. @Namari işlevi gibi i18n_taxonomy_localize_terms işini yapıyor gibi görünmüyordu.
Ocak


0

İşlev olarak kullanmak isterseniz ..

function _get_term_name_translate($tid) {
  $term = i18n_taxonomy_localize_terms(taxonomy_term_load($tid));
  return $term->name;
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.