Vollständige Version anzeigen : Uebersetzung der Validate Meldungen
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?
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?
<?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 ;)
<?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:
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
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.
vBulletin® v3.6.12, Copyright ©2000-2010, Jelsoft Enterprises Ltd.