Bisher verwende ich einfach __() zum Translaten im Model
über die folgende AppModel Function
- Code: Alles auswählen
- /**
* Overrides the Core invalidate function from the Model class
* with the addition to use internationalization (I18n and L10n)
* @param string $field Name of the table column
* @param string $value The message or value which should be returned
*/
function invalidate($field, $value = null, $noTranslate = false) {
if (!is_array($this->validationErrors)) {
$this->validationErrors = array();
}
if(empty($value)) {
$value = true;
}
$this->validationErrors[$field] = __($value, true);
}
Aber die stößt leider an ihre Grenzen, wenn es um dynamische Text-Rückgaben geht
zum Beispiel:
"Max 200 Zeichen, du hast 20 zu viel eingegeben..
habe mir dazu folgende Validierung überlegt:
- Code: Alles auswählen
- function dynMaxLength($field,$maxLength,$options) {
$chars = strlen($field['description']);
if ($chars > $maxLength) {
$tooMuch = $chars-$maxLength;
//pr ($this->validate['description']['maxLength']['message']);
$this->validate['description']['maxLength']['message'] = $tooMuch.' Buchstaben zu viel';
//pr ($this->validate['description']['maxLength']['message']);
return false;
}
return true;
}
Es werden auch tatsächlich die Messages ausgetauscht im $this->validate
Komischerweise kommt am Ende aber dennoch der alte Text übersetzt raus, als würde das schon alles vorab stattfinden,
vor der eigentlichen Validierung (und damit der möglichkeit, die textausgabe dyn. anzupassen..
hat da jemand noch ne idee?