私はworking method totid
による翻訳された用語名を取得します。
次のコードは、元の用語名butを翻訳ではなく返します。
global $language;
$lang_name = $language->language; // en
$term_id = 788;
$term = i18n_taxonomy_term_get_translation($term_id, $lang_name);
「 翻訳された分類法用語をプログラムで取得する方法 」で提供されるほとんどの例は、Drupal 7。
なんとか動かせました!これは私のコードです
$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
}
それはそれをするでしょう!ディアドゥフ!
I18n_taxonomy_localize_terms()関数を使用する必要があります。これは私のための作業コードです:
$tid = 10;
$term = taxonomy_term_load($tid);
$translated_term = i18n_taxonomy_localize_terms($term);
print $translated_term->name;
ローカライズされた分類用語の翻訳についても同じ問題がありました。 「多言語オプション」翻訳モードを「ローカライズ」に設定している場合、それは非常に簡単です。
あなたの用語IDがOPのように788であるとしましょう、そしてこれらの線に沿って何かをしてください:
$i18n_object = i18n_get_object('taxonomy_term', 788);
$target_langcode = 'de';
$translated_term = $i18n_object->localize($target_langcode);
Knibalsコードは、完全な語彙ツリーを翻訳する方法を示しています。このコードスニペットは、1つの特定の用語を翻訳する方法を示しています。
$term = taxonomy_term_load($tid);
$translated_term = i18n_taxonomy_term_get_translation($term, $langcode);
この質問はすでにここで回答されています: 翻訳された分類用語をプログラムで取得する方法?
関数として使用したい場合.
function _get_term_name_translate($tid) {
$term = i18n_taxonomy_localize_terms(taxonomy_term_load($tid));
return $term->name;
}