如何通过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 不幸的是它不起作用。Drupal返回相同的对象。
mate64 2013年

Answers:


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与操作条款相同,为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 2014年

做得完美。就像@Namari函数一样,i18n_taxonomy_localize_terms似乎没有完成任务。
2015年


0

如果要将其用作功能..

function _get_term_name_translate($tid) {
  $term = i18n_taxonomy_localize_terms(taxonomy_term_load($tid));
  return $term->name;
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.