Index: branches/RC/core/kernel/db/dbitem.php =================================================================== diff -u -r10576 -r10794 --- branches/RC/core/kernel/db/dbitem.php (.../dbitem.php) (revision 10576) +++ branches/RC/core/kernel/db/dbitem.php (.../dbitem.php) (revision 10794) @@ -835,14 +835,22 @@ $lang_count = $ml_helper->getLanguageCount(); foreach ($this->Fields as $field => $options) { + // master field is set only for CURRENT language if (isset($options['formatter']) && $options['formatter'] == 'kMultiLanguage' && isset($options['master_field'])) { if (preg_match('/^l([0-9]+)_(.*)/', $field, $regs)) { $l = $regs[1]; $name = $regs[2]; - unset($options['required']); // all non-primary language field set to non-required - for ($i=1; $i<=$lang_count; $i++) { + // MuliLanguage formatter sets error_field to master_field, but in PopulateMlFields mode, we display ML fields directly + // so we set it back to itself, otherwise error will not be displayed + $this->Fields['l' . $l . '_' . $name]['error_field'] = 'l' . $l . '_' . $name; + for ($i = 1; $i <= $lang_count; $i++) { if ($i == $l || !$ml_helper->LanguageFound($i)) continue; - $this->Fields['l'.$i.'_'.$name] = $options; + $f_options = $options; + $f_options['error_field'] = 'l' . $i . '_' . $name; // set error field back to itself - see comment above + if ($i != $this->Application->GetDefaultLanguageId()) { + unset($f_options['required']); // all non-primary language field set to non-required + } + $this->Fields['l' . $i . '_' . $name] = $f_options; } } }