Index: branches/5.2.x/core/kernel/utility/validator.php =================================================================== diff -u -N -r15522 -r16080 --- branches/5.2.x/core/kernel/utility/validator.php (.../validator.php) (revision 15522) +++ branches/5.2.x/core/kernel/utility/validator.php (.../validator.php) (revision 16080) @@ -1,6 +1,6 @@ SetError($field, 'bad_type', null, Array ($params['type'])); + $this->SetError($field, 'bad_type', null, array('type' => $params['type'])); return false; } @@ -256,7 +256,10 @@ if ( !isset($min_val) ) $min_val = '-∞'; if ( !isset($max_val) ) $max_val = '∞'; - $this->SetError($field, 'value_out_of_range', null, Array ($min_val, $max_val)); + $this->SetError($field, 'value_out_of_range', null, array( + 'min_value' => $min_val, + 'max_value' => $max_val + )); return false; } @@ -271,7 +274,11 @@ } if ( !$res ) { - $error_params = Array ((int)getArrayValue($params, 'min_len'), (int)getArrayValue($params, 'max_len'), mb_strlen($val)); + $error_params = array( + 'min_length' => (int)getArrayValue($params, 'min_len'), + 'max_length' => (int)getArrayValue($params, 'max_len'), + 'value' => mb_strlen($val) + ); $this->SetError($field, 'length_out_of_range', null, $error_params); return false; @@ -425,9 +432,23 @@ $msg = $this->Application->ReplaceLanguageTags($msg, $force_escape); if ( isset($this->FieldErrors[$field]['params']) ) { - return vsprintf($msg, $this->FieldErrors[$field]['params']); + $params = $this->FieldErrors[$field]['params']; } + else { + $params = array(); + } + $field_phrase = $this->Application->isAdmin ? 'la_fld_' . $field : 'lu_fld_' . $field; + $params['field'] = $this->Application->Phrase($field_phrase); + + foreach ( $params as $param_name => $param_value ) { + $msg = str_replace('{' . $param_name . '}', $param_value, $msg, $replacement_count); + } + + if ( strpos($msg, '%s') !== false ) { + trigger_error('Unexpected "%s" in field "' . $field . '" validation error message (pseudo: "' . $error_pseudo . '") in "' . $this->dataSource->Prefix . '" unit', E_USER_WARNING); + } + return $msg; } @@ -501,4 +522,4 @@ { $this->FieldErrors = Array(); } -} \ No newline at end of file +} Index: branches/5.2.x/core/install/upgrades.sql =================================================================== diff -u -N -r16066 -r16080 --- branches/5.2.x/core/install/upgrades.sql (.../upgrades.sql) (revision 16066) +++ branches/5.2.x/core/install/upgrades.sql (.../upgrades.sql) (revision 16080) @@ -2909,3 +2909,16 @@ WHERE PhraseKey = 'LA_SECTION_FILE'; # ===== v 5.2.1 ===== + +# ===== v 5.2.2-B1 ===== +UPDATE LanguageLabels +SET l1_Translation = 'Incorrect data format, please use {type}' +WHERE PhraseKey = 'LA_ERR_BAD_TYPE'; + +UPDATE LanguageLabels +SET l1_Translation = 'Field value is out of range, possible values from {min_value} to {max_value}' +WHERE PhraseKey = 'LA_ERR_VALUE_OUT_OF_RANGE'; + +UPDATE LanguageLabels +SET l1_Translation = 'Field value length is out of range, possible value length from {min_length} to {max_length}' +WHERE PhraseKey = 'LA_ERR_LENGTH_OUT_OF_RANGE'; Index: branches/5.2.x/core/install/english.lang =================================================================== diff -u -N -r15876 -r16080 --- branches/5.2.x/core/install/english.lang (.../english.lang) (revision 15876) +++ branches/5.2.x/core/install/english.lang (.../english.lang) (revision 16080) @@ -294,13 +294,13 @@ dXNlciBub3QgZm91bmQ= WW91IG11c3Qgc2VsZWN0IG9ubHkgb25lIHVzZXI= SW5jb3JyZWN0IGRhdGUgZm9ybWF0LCBwbGVhc2UgdXNlICglcykgZXguICglcyk= - SW5jb3JyZWN0IGRhdGEgZm9ybWF0LCBwbGVhc2UgdXNlICVz + SW5jb3JyZWN0IGRhdGEgZm9ybWF0LCBwbGVhc2UgdXNlIHt0eXBlfQ== SW52YWxpZCBGb3JtYXQ= - RmllbGQgdmFsdWUgbGVuZ3RoIGlzIG91dCBvZiByYW5nZSwgcG9zc2libGUgdmFsdWUgbGVuZ3RoIGZyb20gJXMgdG8gJXM= + RmllbGQgdmFsdWUgbGVuZ3RoIGlzIG91dCBvZiByYW5nZSwgcG9zc2libGUgdmFsdWUgbGVuZ3RoIGZyb20ge21pbl9sZW5ndGh9IHRvIHttYXhfbGVuZ3RofQ== UHJpbWFyeSBMYW5nLiB2YWx1ZSBSZXF1aXJlZA== RmllbGQgaXMgcmVxdWlyZWQ= RmllbGQgdmFsdWUgbXVzdCBiZSB1bmlxdWU= - RmllbGQgdmFsdWUgaXMgb3V0IG9mIHJhbmdlLCBwb3NzaWJsZSB2YWx1ZXMgZnJvbSAlcyB0byAlcw== + RmllbGQgdmFsdWUgaXMgb3V0IG9mIHJhbmdlLCBwb3NzaWJsZSB2YWx1ZXMgZnJvbSB7bWluX3ZhbHVlfSB0byB7bWF4X3ZhbHVlfQ== RXhwb3J0IGZvbGRlciBpcyBub3Qgd3JpdGFibGU= RXJyb3IgY3JlYXRpbmcgZm9sZGVyLiBFcnJvciBudW1iZXI6 UGxlYXNlIG5hbWUgeW91ciBmaWxlcyB0byBiZSB3ZWItZnJpZW5kbHkuIFdlIHJlY29tbWVuZCB1c2luZyBvbmx5IHRoZXNlIGNoYXJhY3RlcnMgaW4gZmlsZSBuYW1lczogDQpMZXR0ZXJzIGEteiwgQS1aLCBOdW1iZXJzIDAtOSwgIl8iICh1bmRlcnNjb3JlKSwgIi0iIChkYXNoKSwgIiAiIChzcGFjZSksICIuIiAocGVyaW9kKQ0KUGxlYXNlIGF2b2lkIHVzaW5nIGFueSBvdGhlciBjaGFyYWN0ZXJzIGxpa2UgcXVvdGVzLCBicmFja2V0cywgcXVvdGF0aW9uIG1hcmtzLCAiPyIsICIhIiwgIj0iLCBmb3JlaWduIHN5bWJvbHMsIGV0Yy4=