Рейтинг:0

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

флаг ma

Я создал тип контента (pdf_form), к которому я добавил field_gender_languagetest с двумя вариантами, мужчина и женский. Я перевел оба варианта на немецкий язык, используя вкладку перевода.

Теперь я создаю отчет о данных, заполненных пользователями, использующими этот тип контента.

Есть ли способ программно получить этот перевод?

Я пробую этот код, но он не работает.

t('мужчина', array(), array('langcode' => 'de')); 

мое рабочее решение

  $ланг = "де";

  если ($lang != "ru") {
    $langs = список_языков();
    $ланг = $ланг[$ланг];
    foreach ($val['#base']['#node'] as $k => $v) {
      if (isset($v['#type']) && $v['#type'] == 'list_text') {
        foreach ($val['#base']['#node'][$k]['#value'] as $k_sub => $v_sub) {
          $trns_str = pdf_trans($v_sub, $lang, 'поле');
          $val['#base']['#node'][$k]['#value'][$k_sub] = $trns_str['trans'];
        }
      }
    }
  }

Функция

функция pdf_trans ($string, $lang = NULL, $group = 'по умолчанию') {
  $result = db_query("ВЫБЕРИТЕ s.lid, s.source, s.context, s.location, t.translation, t.plid, t.plural FROM {locales_source} s LEFT JOIN {locales_target} t ON s.lid = t.lid И t.language = :language ГДЕ s.textgroup = :textgroup и s.source = :string_value ORDER BY t.plid, t.plural", array(':language' => $lang->language, ' :textgroup' => $group, ':string_value'=>$string));
  $str=массив();

  если ($ результат) {
    foreach ($результат как $ребенок) {
      $str= массив(
        'trans' => isset($child->trans) ? $ребенок->транс : '',
        'trans_availabe' => '1',
      );
    }
  }
  если (количество ($ строка) == 0)
  {
    $str= массив(
      'транс' => $строка,
      'trans_availabe' => '0',
    );
  }
  вернуть $стр;
}

Это не должно быть правильным путем, потому что Drupal должен иметь эту функциональность в качестве ядра.

apaderno avatar
флаг us
Если отчет создан программно, в вопросе должно быть больше кода, чем на самом деле. Я сомневаюсь, что код на самом деле использует `t('male', array(), array('langcode' => 'de')); ` для перевода значения поля.Более вероятно, что код похож на `t($field_value, array(), array('langcode' => 'de')); `, где `$field_value` — это значение, содержащееся в поле объекта.
Rog Boy avatar
флаг ma
на самом деле у меня есть только языковой код, который настроен в моем пользовательском модуле, например de,jp... если это de, мне нужно использовать перевод из типа контента -> управление полем -> (поле) список -> перевод -> de - > (здесь мы присутствуем)
Rog Boy avatar
флаг ma
пожалуйста, проверьте обновленный вопрос

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.