Я создал тип контента (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 должен иметь эту функциональность в качестве ядра.