Если в Drupal нет чего-то подобного, то следует добавить: перевод свойств объекта - PullRequest
0 голосов
/ 24 июня 2010

Копаясь в 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 или оно уже есть (если да, укажите, где)?

Ответы [ 2 ]

1 голос
/ 24 июня 2010
1 голос
/ 24 июня 2010

Для терминов и других предметов вы можете использовать tt(), если у вас установлен i18n.Это не часть ядра Drupal, а модуль contrib.

Функция tt() стала оболочкой для i18nstrings(), что и используется сейчас.Формат ввода - строка, но вы можете искать по идентификатору, используя специальные обозначения, которые функция позволяет:

$term_name = tt('taxonomy:term:'. $term->tid .':name', $term->name);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...