Вы здесь

Функция для перевода значение термина таксономии с русского на другой язык

0

На многоязычном сайте используется перевод таксономии через опцию "Локализуется.Общие термины для всех языков, но их имена и описания могут быть локализованы.".

Термины переведены таким вот образом.

Вопрос.

Если я знаю только название термина на русском языке, но не знаю, что это за термин, к какому он словарю относится, не знаю контекст перевода и т.д., то существует ли готовая функция для того, чтобы я получил название этого же термина на английском языке ?

Естественно, термин переведен и это название в базе существует.

Я это спрашиваю для реализации своего прошлого вопроса о многоязычных фасетах.

Версия Drupal: 
7.x
Категория: 
Multilingual
Связанные проекты: 
Internationalization
Вопрос задан 21.11.2015 - 22:01

Ответы

0

В общем, готового решения я не нашел, поэтому пришлось написать свою функцию.

function _translate_term_name($term_name, $language) {
    $query = db_select('locales_target', 'lt');
    $query->addExpression('convert(translation USING utf8)', 'trans');
    $query->join('locales_source', 'ls', 'lt.lid = ls.lid');
    $query->condition('lt.language', $language);
    $query->condition('ls.source', $term_name);

    $result = $query->execute()->fetchField();

    return $result;
}

Ей передается название термина на русском языке и код языка, на который нужно искать перевод, например, 'en'.

Возможно, она реализована не самым правильным образом, оптимизацией и доработкой займусь потом.

Ответ дан 22.11.2015 - 22:13
0

Не уверен, что есть какой способ с помощью API друпала или модуля i18n получить эту строку. Как раз из-за того, что есть контекст перевода и группы, получить строку не получится, только список строк.
Если вы уверены, что имена терминов уникальны, то самому такую функция написать не сложно - сначала получить список строк из базы, которые имеют такой перевод, затем отфильтровать по группе и контексту. Группа и контекст определены в i18n_taxonomy.

Ответ дан 22.11.2015 - 12:04