PDA

Vollständige Version anzeigen : Uebersetzung der Validate Meldungen


QDog
02.10.2007, 10:35
Hallo,

ich moechte gerne tmx als Uebersetzungsadapter nutzen. Ich versuche nun alle Standard Meldungen der Validate Klassen zu uebersetzen, aber mit den Platzhaltern kommt er anscheinend nicht klar:

Fatal error: Uncaught exception 'Zend_Translate_Exception' with message 'XML error: Invalid character at line 8'

Zeile 8: <tuv xml:lang="de"><seg>%value% muss länger als %min% Zeichen sein</seg></tuv>

Welche Moeglichkeiten habe ich jetzt?

QDog
02.10.2007, 14:54
Ok, das Problem waere geloest. Im Beispiel fehlte das encoding.
Nur braeuchte ich jetzt trotzdem noch eine Moeglichkeit, diese Standardmeldung von vornherein zu ersetzen, damit man das nicht immer wieder machen muss. Einer ne Idee?

QDog
02.10.2007, 16:22
<?php

class Viola_Validate_StringLength extends Zend_Validate_StringLength
{
protected $_translate = null;

public function __construct($min = 0, $max = null, $translate = null)
{
if (is_object($translate)) {
$this->_translate = $translate;
}

$this->_messageTemplates = array(
self::TOO_SHORT => $this->_translate->_(self::TOO_SHORT),
self::TOO_LONG => $this->_translate->_(self::TOO_LONG)
);

parent::__construct($min, $max);
}
}

So koennte man es machen ;)

SRIT
02.10.2007, 19:51
<?php

class Viola_Validate_StringLength extends Zend_Validate_StringLength
{
protected $_translate = null;

public function __construct($min = 0, $max = null, $translate = null)
{
if (is_object($translate)) {
$this->_translate = $translate;
}

$this->_messageTemplates = array(
self::TOO_SHORT => $this->_translate->_(self::TOO_SHORT),
self::TOO_LONG => $this->_translate->_(self::TOO_LONG)
);

parent::__construct($min, $max);
}
}
So koennte man es machen ;)

Ähm und was passiert bei dir, wenn $translate kein Object ist? :confused:

thomas
03.10.2007, 17:00
Ich finde es nicht gut wenn man bestehende ZF Klassen überschreibt.

Sobald irgendwas in Zend_Validate geändert wird funktioniert entweder das oder deine Klasse nicht mehr. :eek:

Davon abgesehen arbeite ich gerade an einem Proposal um Exceptions mehrsprachgi zu machen... was Du hier brauchst wäre dann der nächste Schritt dazu.

Entweder warten, oder selbst stricken und nachher wieder ummoddeln...

Grüße
Thomas

QDog
04.10.2007, 09:54
Brauch das leider sofort. Ich werde erstmal den Weg gehen, das war jetzt natuerlich nur schneller, schlechter Beispielcode ohne irgendwelche Pruefungen. Sollte nur den Weg erlaeutern.

Aber Erweitern von Klassen sollte doch eigentlich kein Problem sein. Ich "ueberschreibe" sie ja nicht.

DennisBecker
04.10.2007, 11:00
Wenn du die Klassen vererbst und dann die Logik änderst, ist das kein Problem und die Kompatibilität bleibt dann ja weiterhin gewährleistet.