Empfehlungen: Erweiterte Suche

Translation von Models

Datenbankobjekte strukturieren und validieren

Translation von Models

Beitragvon euromark » Do 27. Nov 2008, 13:55

Hi there
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?
euromark
 
Beiträge: 618
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.1
OS: Windows

Zurück zu Models

Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 1 Gast