tid로 번역 된 용어 이름을 얻는 방법?


10

에 의해 번역 된 용어 이름얻는 효과적인 방법 을 찾고 있습니다.tid

다음 코드는 원래 용어 이름을 반환 하지만 번역 은 반환 하지 않습니다.

global $language;

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

$term_id = 788;

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

번역 된 분류 용어의 예 (독일어에서 영어로)

" 프로그래밍 된 분류법 용어를 프로그래밍 방식으로 얻는 방법 "에 제공된 대부분의 예 는 Drupal 7에서 작동하지 않는 것 같습니다.


코드는 작동해야한다고 생각하지만 첫 번째 매개 변수는 용어 ID가 아닌 용어 객체 여야합니다.
lenni

@lenni 불행히도 작동하지 않습니다. 드루팔은 같은 객체를 돌려줍니다.
mate64

답변:


17

나는 그것을 작동시킬 수 있었다! 이것은 내 코드입니다

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

그 영혼은 그렇게! 디아 데프!


12

i18n_taxonomy_localize_terms () 함수를 사용해야합니다. 이것은 나를 위해 작동하는 코드입니다.

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

11

현지화 된 분류법 용어 번역과 동일한 문제가있었습니다. "다국어 옵션"번역 모드가 "로컬 라이즈"로 설정되어 있으면 매우 간단합니다.

용어 ID가 OP와 788이라고 가정하고 다음 행을 따라 무언가를 수행하십시오.

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

1
i18n_taxonomy_localize_terms 기능이 작동하지 않는 것이 이상했습니다. thx
GwenM

완벽하게 작동했습니다. @Namari 함수처럼 i18n_taxonomy_localize_terms는 그 일을하지 않는 것 같습니다.
jan


0

기능으로 사용하려면

function _get_term_name_translate($tid) {
  $term = i18n_taxonomy_localize_terms(taxonomy_term_load($tid));
  return $term->name;
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.