Для этих целей в таблице cms_users_fields добавил два поля 'title_en' и 'fieldset_en'. Где хранится английская версия наименования поля и группы полей.
В файле темы controllers/users/profile_view.tpl.php нашёл вызов метода cmsForm::mapFieldsToFieldsets($fields, function($field, $user), класса cmsForm. Нашёл его описание в файле system/core/form.php и переписал метод
public static function mapFieldsToFieldsets($fields, $callback=null, $values=null){
//Загружаем текущий язык
$config = cmsConfig::getInstance();
$language = $config->language;
$fieldsets = array();
$current = null;
$index = 0;
$fieldsets[ $index ] = array(
'title' => $current,
'fields' => array()
);
$user = cmsUser::getInstance();
foreach($fields as $field){
if ($language == 'en') {
$field['title'] = $field['title_en'];
}
if (is_callable($callback)){
if (!$callback( $field, $user )) { continue; }
}
if (is_array($values)){
if (empty($values[ $field['name'] ])){ continue; }
}
//Англиская версия сайта
if ($language == 'en'){
if ($current != $field['fieldset_en']){
$current = $field['fieldset_en'];
$index += 1;
$fieldsets[ $index ] = array(
'title' => $current,
'fields' => array()
);
}
}
//Русская версия сайта
if ($language != 'en'){
if ($current != $field['fieldset']){
$current = $field['fieldset'];
$index += 1;
$fieldsets[ $index ] = array(
'title' => $current,
'fields' => array()
);
}
}
$fieldsets[ $index ]['fields'][] = $field;
}
return $fieldsets;
}
При нажатии на кнопку мой профиль всё выводится как надо, то есть при просмотре английской версии наименования полей выводятся на английском. Но при нажатии редактировать профиль, переводятся только наименования групп полей, а наименования полей не переводятся. Хотя используется тот же самый метод.
Подскажите в чём причина?