Копаясь в API, ища методы для перевода свойства термина категории, я мог только найти методы, которые принимают строку в качестве параметра, но что происходит, когда у меня есть идентификатор объекта, свойство которого я хочу перевести? Я хотел бы иметь возможность просто передать этот идентификатор и получить переведенную строку (если существует). Я добился этого с помощью относительно простого запроса:
function translate_term_description($tid) {
$result = db_query('SELECT term_data.tid, term_data.description, locales_target.translation
FROM {term_data}
left join ({i18n_strings}, {locales_target})
on (term_data.tid = i18n_strings.objectid and i18n_strings.lid = locales_target.lid)
where term_data.tid = %d', $tid);
$term_data = db_fetch_object($result);
// If a translated string is available return that, otherwise return back the untranslated description
return !is_null($term_data->translation) ? $term_data->translation : $term_data->description;
}
Мне просто нужно описание, и я просто использую эту функцию в контексте, где предполагается, что целевой язык не является языком по умолчанию. Тем не менее, его можно расширить, чтобы принять и целевой язык, и термин свойство в качестве параметров.
Так что ты думаешь? Должно ли что-то подобное существовать в Drupal или оно уже есть (если да, укажите, где)?