翻訳された用語名を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

回答:


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 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;
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.