Zum Inhalt springen

Mehrsprachikeit mit dem realty_manager

Erstellt am 22. August 2011 · 1 Antwort · letzte Antwort am 12. Juni 2014

Tags: Frage

Drusilla ·

Hallo,
ich habe den realty_manager installiert und der funktioniert so weit auch.
Nun würde ich die Seite gerne zweisprachig machen, insbesondere auch die Immobiliensuche. Funktioniert so halbwegs.

Nur habe ich das Problem, dass im Suchformular bei dem Haustyp-Liste und der Städte-Liste leider die Werte in beiden Sprache angezeigt werden. Das macht natürlich keinen Sinn, denn das eine sind ja die Übersetzungen der deutschen Werte, sprich, es gibt jetzt alles doppelt ...
Wie man die Haustyp-Liste nur auf eine Sprache umstellen kann, hab ich irgendwie hinbekommen durch eine kleine Änderung im Quellcode.
Leider wird die Städteliste ganz anders erzeugt. Da hätte ich auch die passende Stelle für die Sprachabfrage gefunden, nur komme ich leider nicht an den Wert ran ...

In der Datei pi1/class.tx_realty_filterForm.php:

public function createDropDownItems($type, $selectedUid = 0) {
        if (!in_array($type, array('city', 'district'))) {
            throw new Exception('"' . $type . '" is not a valid type.');
        }

        $objectMapper =
            tx_oelib_MapperRegistry::get('tx_realty_Mapper_RealtyObject');
        $countFunction = 'countBy' . ucfirst($type);
        $models = tx_oelib_MapperRegistry::
            get('tx_realty_Mapper_' . ucfirst($type))->findAll('title ASC');

        $options = '';
        foreach ($models as $model) {
            $numberOfMatches = $objectMapper->$countFunction($model);
            if ($numberOfMatches == 0) {
                continue;
            }

            $selected = ($selectedUid == $model->getUid())
                    ? ' selected="selected"' : '';

            $options .= '<option value="' . $model->getUid() . '"' .
                $selected . '>' . htmlspecialchars($model->getTitle()) . ' (' .
                $numberOfMatches . ') </option>' . LF;
        }

        return $options;
}

Hier könnte man doch die Variable $model noch nach der sys_language_uid abfragen. Da es keine passende Methode gibt (zumindest hab ich keine gefunden), hab ich es so versucht:
$model->getAsInteger('sys_language_uid')
hat leider nicht geklappt, es ging gar nichts mehr ...

Dann habe ich in der Datei Model/class.tx_realty_Model_City.php, wo ja auch die Methode getTitle() definiert wird, versucht noch eine Funktion getSprache() zu definieren:

...
    public function getTitle() {
        return $this->getAsString('title');
    }

    public function getSprache() {
        return $this->getAsInteger('sys_language_uid');
    } 
...

Der Rückgabewert wäre hier der richtige, nur leider kann ich diese Funktion nicht aufrufen, und ich verstehe nicht warum ...
Wenn ich diese Methode aus der Datei oben aufrufen möchte, also mit $model->getSprache() (analog zu $model->getTitle()), funktioniert gar ncihts mehr. Ich schätze mal die Funktion wird nicht erkannt. Aber warum?

Vielleicht hat sich ja schon mal jemand damit beschäftigt?

Micha123 ·

Hallo Drusilla,

ich habe das selbe Problem wie du. Deswegen freut es mich um so mehr das du es schon teilweise lösen konntest.

Kannst du mir bitte die Änderungen am Code aufschreiben, damit die HouseType liste richtig angezeigt wird?
Das würde mir shcon sehr weiter helfen!

Danke und LG