Ergebnis 1 bis 12 von 12

Thema: Mehrsprachigkeit für Taxonomie und Catalog Felder, wie am besten?

  1. #1
    Contao-Fan
    Registriert seit
    27.06.2010.
    Beiträge
    348

    Standard Mehrsprachigkeit für Taxonomie und Catalog Felder, wie am besten?

    Hallo Leute,

    ich habe mir so ziemlich alle Beiträge und Anleitungen dazu durchgelesen, aber ich komme mit dem grundlegenden Aufbau grad nicht weiter.

    Ziel: Immoseite, 3 Sprachen (de, en, es) und der Kunde soll möglichst später für das Einstellen einer neuen Immobilie alles nur einmal in Deutsch auswählen müssen.

    Frage 1: wo müßte ich diesen Code jeweils einfügen, direkt in allen Taxonomie und Katalogfeldern?

    {{iflng::de}}Deutschland{{iflng}}{{iflng::en}}Germ any{{iflng}}

    Geht das noch bei 3 Sprachen? Datenbankfeld, name habe ich auf 255 geändert, aber reicht das aus?

    Frage 2: Läßt sich das auch über die langconfig.php lösen, indem ich alle Werte dort eintrage und einen Bezug herstelle wie z.B. beim Kontaktformular die es-Bezeichnungen übergeben, was wunderbar klappt? Nur wie spreche ich da die Katolog und Taxonomie-Felder an?

    Inserttags habe ich auch schon installiert, aber mir fehlt der Ansatz, wohin mit den Inserts?

    Bin für jeden Tip dankbar, mir ist einfach nicht klar, wie ich ansetzen muß, damit Werte später in 3 Sprachen ausgegeben werden, der Nutzer aber nur 1 x Deutsch einpflegen müßte.

    Hoffe, ihr habt ein paar Tips oder Schnipsel, dank vorab...
    Grüße Jenna

  2. #2
    Contao-Nutzer
    Registriert seit
    04.04.2010.
    Beiträge
    37

    Standard

    Hallo,

    also mehrsprachige Taxonomy-Felder kannst du vergessen, das wird recht unübersichtlich.
    Leg dir lieber ein separaten Katalog an z.B. cat_felder. Danach kannst du für jede Sprache ein Textfeld anlegen.

    hier findest du eine recht umfangreiche Beschreibung zum Catalog Modul:
    http://de.contaowiki.org/Kategorie:Catalog

    Und hier ein Beschreibung für die Mehrsprachigkeit:
    http://code.google.com/p/typolight-c...nguageTutorial

  3. #3
    Contao-Fan
    Registriert seit
    27.06.2010.
    Beiträge
    348

    Standard

    Hallo apache,

    danke erstmal, ich habe das momentan mit dieser Anleitung angefangen:

    http://dev.contao.org/projects/typol...gMultiLanguage

    funktioniert auch in 3 Sprachen, aber unübersichtlich ist es schon.

    Ich versuche mich gerade hier einzuarbeiten wie ich per PHP die Werte übergeben kann:

    http://www.contao-anleitungen.de/pos...itstellen.html

    Angenommen ich lege den weiteren Katalog cat_felder an, und für jeden Wert ein Feld pro Sprache, dann lege ich doch aber im ersten Katalog eine neue Immobilie an und müßte doch auch wieder 3 Auswahlfelder (3 Sprachen) für einen Wert auswählen, oder bin ich da auf dem Holzweg?

    Woher kommt der Bezug von Catalog 1 zu Catalog2 ?

    3 Seitenbäume sind angelegt, bis auf den catalog funktioniert die Seite schon mal 3 sprachig.

    Ziel soll sein, das ich zum Beipiel den Eintrag "Dorfhaus" auswähle, aber eben nur einmal, und dieser dann übersetzt in en und es erscheint.

    momentan muß ich alles 3 x auswählen, zwar immerhin besser als gestern abend, aber nicht wirklich die Endlösung,.
    Grüße Jenna

  4. #4
    Contao-Nutzer
    Registriert seit
    04.04.2010.
    Beiträge
    37

    Standard

    Hallo,

    spätestens wenn du mehrsprachige Aliase und Metatags verwenden möchtest musst du pro Sprache einen eigenen Produktkatalog anlegen. Die Mehrsprachigkeit ist nur bedingt umsetzbar.

    Also wenn du mehrsprachige Aliase brauchst musst du eine andere Lösung umsetzen ansonsten reicht auch folgendes Beispiel:

    Du legst in der Taxonomy eine Struktur an damit du den Feldern ein Feldtype zuweisen kannst.


    Code:
    Taxonomy:
    - Type
      - Farben
      - Formate
    Dann legst du ein Katalog an z.B. cat_felder
    Dort erstellst du ein Select-Feld und wählst als Quelle deine Taxonomy-Tabelle mit dem Feld "Type" aus. Zusätzlich brauchst du pro Sprache ein Textfeld z.B.
    bezeichnung_de und bezeichnung_en.

    Jetzt legst du dort deine Items an z.B.
    Code:
    Item 1:
    Type: Farbe (auswählen)
    Bezeichnung DE: rot
    Bezeichnung EN: red
    ......
    Nun musst du im eigentlichen Katalog ein neues Tags-Feld anlegen z.b. mit der Bezeichnung colors ... als Quelle wählst du deine Tabelle cat_felder aus Spaltenwert= bezeichnung_de.

    Bei Filtereinträge gibst du eine Filterregel ein damit nur die Farben zur Auswahl stehen
    type=12 ( die Zahl 12 musst du durch die ID aus der Taxonomytabelle ersetzen)

    Wenn du jetzt im Catalog ein neuen Eintrag erstellst steht dir die Auswahl der Farben zur Verfügung ... du siehst die deutschen Bezeichnungen.

    Du schaltest unter Module Catalog-Liste und Catalog-reader das neue Feld frei und danach musst du nur noch dein Template anpassen.


    Code:
    <?php if ($entry['data']['colors']['value'] == 1): ?>
    <?php if ($GLOBALS['TL_LANGUAGE'] == "de"): ?>
    <?php echo $entry['data']['bezeichnung_de']['value']; ?>
    <?php else: ?>
    <?php echo $entry['data']['bezeichnung_en']['value']; ?>
    <?php endif; ?>
    <?php endif; ?>
    Ich bin kein PHP Experte aber so ähnlich müsste der Code aussehen. Je nach Sprache wird die richtige Bezeichnung ausgegeben.

    Hoffe dir hilft das weiter.
    Geändert von apache (02.12.2010 um 19:11 Uhr)

  5. #5
    Contao-Fan
    Registriert seit
    27.06.2010.
    Beiträge
    348

    Standard

    Hallo apache,

    das ist eine super Beschreibung, ganz herzlichen Dank für Deine Zeit.

    Jetzt ist mir das klar, wie das mit dem 2. Katalog gedacht ist,

    mehrsprachige Aliase brauche ich nicht, daher ist das eine wunderbare Lösung.

    Damit komme ich erstmal sehr viel weiter... berichte, sowie ich was erreicht habe.

    1000 Dank
    Grüße Jenna

  6. #6
    Contao-Fan
    Registriert seit
    27.06.2010.
    Beiträge
    348

    Standard

    Übergabe der Sprache per PHP-Anweisung kriege ich nicht hin......

    ich habe wie von apache beschrieben (nochmals dankeschön), die 2 Kataloge angelegt, der Einfachheit halber erstmal mit seinen Werten, beschreibung_de, beschreibung_en.

    jetzt hakt es bei der Übergabe der PHP-Anweisung, stehe leider mit PHP recht am Anfang, ich habe jetzt in der catalog_simple.tpl den Code wie von apache beschrieben eingefügt:

    PHP-Code:
    <?php if ($entry['data']['colors']['value'] == 1): ?><?php if ($GLOBALS['TL_LANGUAGE'] == "de"): ?><?php echo $entry['data']['bezeichnung_de']['value']; ?><?php else: ?><?php echo $entry['data']['bezeichnung_en']['value']; ?><?php endif; ?><?php endif; ?>
    jetzt wird mir unter de und es nur eine leere weisse Seite angezeigt.

    Statt ['colors'] habe ich alle möglichen Varianten probiert, bisher leider erfolglos.

    Meine Abfrage per <?php print_r($this->entries); ?> ergibt folgendes:

    Code:
    0] => Array
            (
                [id] => 43
                [catalog_name] => Immobilien Verwaltung
                [parentJumpTo] => 114
                [tablename] => cat_immobilien
                [showLink] => 1
                [class] =>  first last even
                [link] => <a href="immobilien-miete/items/43.html" title="Die Details des Eintrags ansehen">Die Details des Eintrags ansehen</a>
                [url] => immobilien-miete/items/43.html
                [data] => Array
                    (
                        [cat_immo_farbe] => Array
                            (
                                [label] => Farbe auswählen
                                [type] => tags
                                [raw] => 6
                                [value] => Rot
                                [ref] => Array
                                    (
                                        [1] => Array
                                            (
                                                [id] => 6
                                                [pid] => 13
                                                [sorting] => 128
                                                [tstamp] => 1291520308
                                                [cat_select] => 338
                                                [bezeichnung_de] => Rot
                                                [bezeichnung_en] => Red
                                                [parentJumpTo] => 117
                                                [parentLink] => <a href="immobilien-miete/items/6.html" title="Die Details des Eintrags ansehen">Die Details des Eintrags ansehen</a>
                                                [parentUrl] => immobilien-miete/items/6.html
                                            )
    Ausser PHP weiterhin lernen, was muß ich tun, damit auf der de-Seite "Rot" und auf der en-Seite "Red" ausgegeben wird?
    Grüße Jenna

  7. #7
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo Jenna,
    schau dir doch noch mal das Wiki genauer an: http://de.contaowiki.org/Catalog_Templates_anpassen

    Zu deinem Code:

    Wo kommt bei dir auf einmal das colors her? Das seh ich da nirgendwo. Da musst du noch mal nachbessern.

    Wenn bei dir nur eine Weiße Seite kommt, dann schalte doch mal 'Fehler anzeigen' in den Einstellungen von Contao ein. Dann wird dir gesagt was deine Syntax Fehler sind ;-)

    So, also noch mal ran ans Reißbrett, vllt kommst du selber schon weiter damit.
    Wenn nicht einfach noch mal hier melden.

    Viele Grüße
    Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
    [Arbeitet bei -> Paus Design & Medien]
    "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

  8. #8
    Contao-Fan
    Registriert seit
    27.06.2010.
    Beiträge
    348

    Standard

    Hallo MacKP,

    das colors stammt aus dem Beispiel von apache, das hatte ich durch meinen Wert ersetzt.

    Deinen Beispiellink "villa in tunesien" hab ich in allen Variationen versucht umzusetzen, Problem ist, das ich mehr rate, als das etwas sinnvolles heraus kommt.

    So sieht der Quelltext aus:

    HTML-Code:
    [id] => 82
                [catalog_name] => Immobilien Verwaltung
                [parentJumpTo] => 114
                [tablename] => cat_immobilien
                [showLink] => 1
                [class] =>  first last even
                [link] => <a href="immobilien-miete-en/items/60000.html" title="View the item details">View the item details</a>
                [url] => immobilien-miete-en/items/60000.html
                [data] => Array
                    (
                        [cat_immo_farbe] => Array
                            (
                                [label] => Farben
                                [type] => tags
                                [raw] => 51
                                [value] => Blau
                                [ref] => Array
                                    (
                                        [1] => Array
                                            (
                                                [id] => 51
                                                [pid] => 13
                                                [sorting] => 32
                                                [tstamp] => 1291644832
                                                [cat_select] => 370
                                                [bezeichnung_de] => Blau
                                                [bezeichnung_en] => Blue
                                                [parentJumpTo] => 117
                                                [parentLink] => <a href="immobilien-miete-en/items/51.html" title="View the item details">View the item details</a>
                                                [parentUrl] => immobilien-miete-en/items/51.html

    Woher kommt dieses [1] => Array ?

    Nach meiner Logik, befindet sich bezeichnung_de in [1] => Array

    [1] => Array befindet sich in [ref] => Array

    [ref] => Array befindet sich in [cat_immo_farbe] => Array

    [cat_immo_farbe] => Array befindet sich in [data] => Array

    Ich habe ungefähr 200 Variationen probiert, mit Arrays, Spaltennamen, usw.

    in der catalog_simple.tpl habe ich momentan die Anweisung so stehen:

    PHP-Code:
    <?php if ($entry['data']['cat_immo_farbe']['value'] == 1): ?><?php if ($GLOBALS['TL_LANGUAGE'] == "de"): ?>
    <?php 
    echo $entry['ref']['1']['bezeichnung_de']['value']; ?><?php else: ?><?php echo $entry['ref']['1']['bezeichnung_en']['value']; ?>
    <?php 
    endif; ?><?php endif; ?>
    Wobei mir nicht klar ist, ob das ['1'] da überhaupt rein muß?

    Mein Problem ist, wenn in der Anweisung an sich Fehler sind, meinetwegen statt ['TL_LANGUAGE'] müßte da nur ['TL_LANG'] stehen, oder irgend sowas, dann finde ich das nie raus, weil ich nicht weiß, ob die Fehler an meinen falschen Eingaben liegen oder an dem Aufbau der Anweisung an sich.

    Dann ist mir noch eines unklar:

    Muß ich diese Anweisung
    PHP-Code:
    <?php echo $GLOBALS['TL_LANGUAGE']; ?>
    noch zusätzlich einfügen, oder brauche ich die gar nicht?

    stammt aus: http://www.contao-anleitungen.de/pos...itstellen.html

    momentan würde die PHP ja nur in der catalog_simple.tpl stehen, wenn aber für Details die catalog_full.tpl verwendet wird, schreib ich das doch sicher nicht alles nochmal da rein?

    Der andere Weg, der schon super funktioniert ist per:

    {{iflng::de}}Gelb{{iflng}}{{iflng::en}}Yellow{{ifl ng}}{{iflng::es}}amarillo{{iflng}}

    (Datenbankfeld auf 255 geändert)

    Hiermit wird auf de, en und es jeweils der richtige Wert ausgegeben.

    Nachteil ist nur, das im BE beim Anlegen einer Immobilie dann dort leider nicht steht:

    Beispiel: Farbe: Gelb

    sondern:

    Beispiel: Farbe: {iflng::de}}Gelb{{iflng}}{{iflng::en}}Yellow{{ifln g}}{{iflng::es}}amarillo{{iflng}}

    Das wird bei zig Feldern eben sehr unübersichtlich, daher würde ich das gern per PHP lösen.
    Geändert von Jenna (06.12.2010 um 16:30 Uhr)
    Grüße Jenna

  9. #9
    Contao-Nutzer Avatar von medamind
    Registriert seit
    04.03.2010.
    Ort
    Regensburg
    Beiträge
    19

    Standard

    Hallo,

    wenn man nicht nur die Auflistung sondern auch das Filter Modul (also nicht nur die Auswahl sondern auch die Feldbezeichner) übersetzen muss, ist eine Anpassung des Templates meines Erachtens nur marginal sinnvoll (catalog_filter.tpl ist nicht granular genug aufgebaut oder müsste komplett umgeschrieben werden - im Prinzip würde man da das ganze Modul umstricken - oder sehe ich das falsch?).

    Mit der Erweiterung inserttags funktioniert es soweit ganz gut, weil damit automatisch auch das Filter Modul übersetzt wird.
    Man kann dort alle Übersetzungen als auch - um das Backend Anzeige Problem anzusprechen- die Bezeichner fürs Backend verwalten:
    Es gibt also pro Übersetzung zwei identisch benannte Platzhalter. Einen fürs Frontend mit allen Sprachen
    color:
    {iflng::de}}Farbe{{iflng}}{{iflng::en}}Color{{ifln g}}
    und einen fürs Backend mit nur der Hauptsprache (bspw. DE oder EN), beispielsweise:
    color: Color (d.h. ohne Language Switch, weil man davon ausgehen kann, dass Redakteure das schon können).
    Der Catalog kann offenbar das custom insertTag iflng sprachlich nicht auflösen, wenn es über die Erweiterung inserttags so definiert ist (obwohl man ja auch eine Backendsprache definiert hat).

    In den Bezeichnern der Kataloge kann man dann {{custom:: platzhalter_fuer_bezeichner}} einsetzen, also beispielsweise {{custom::color}}
    Das reduziert die Ausgabe im Backend wengistens auf "Bezeichner{{custom:: platzhalter_fuer_bezeichner}}", in dem Fall also "Color{{custom::color}}", im Frontend wird alles korrekt übersetzt.

    Aber ob das glücklich macht?...

    Viele Grüße
    Anne-Kathrin

    überarbeitet: ergänzt zum besseren Verständnis
    Geändert von medamind (08.12.2010 um 10:40 Uhr)

  10. #10
    Contao-Fan
    Registriert seit
    27.06.2010.
    Beiträge
    348

    Standard

    Hallo medamind,

    ich habe das jetzt mit der Erweiterung Inserttags sehr schön hinbekommen, das Feldnamen und Taxonomie in 3 Sprachen angezeigt werden.

    Zumindest hat sich dadurch, wie Du schon schreibst, die Anzeige in der Backenend Auswahl auf ein {{custom:name}} reduziert. Die lange Anweisung habe ich im Platzhalter direkt in den Text gesetzt, das klappt sehr gut.

    Trotzdem hätte ich gern als Endlösung, das dort wirklich nur z.B. Mietwohnung steht und nicht {{custom:name}}.

    Die Beschreibung weiter oben von apache mit bezeichnung_de und Abfrage per PHP finde ich allerdings weiterhin sehr spannend, komme nur mit der PHP Anweisung nicht weiter.

    Wenn sich also jemand erbarmt, der sich mit der Abfrage auskennt und mich da auf den richtigen Weg schubst, wäre das super.

    wenn man nicht nur die Auflistung sondern auch das Filter Modul (also nicht nur die Auswahl sondern auch die Feldbezeichner) übersetzen muss, ist eine Anpassung des Templates meines Erachtens nur marginal sinnvoll (catalog_filter.tpl ist nicht granular genug aufgebaut oder müsste komplett umgeschrieben werden - im Prinzip würde man da das ganze Modul umstricken - oder sehe ich das falsch?).
    Soweit war ich noch gar nicht, aber gut möglich, das ich den Aufwand völlig unterschätze, mir ging es erstmal darum, die Taxonomy Werte und die Feldnamen zu übersetzen. Beispiel Immobilienart (Feldbezeichnung), Mietwohnung (Taxonomy).
    Grüße Jenna

  11. #11
    Contao-Nutzer Avatar von medamind
    Registriert seit
    04.03.2010.
    Ort
    Regensburg
    Beiträge
    19

    Standard

    Hallo Jenna,

    die Mehrsprachigkeit gleich über sprachenabhängige Katalogfelder zu lösen, kann aus meiner Sicht einige Nachteile haben (vielleicht treffen davon auch welche auf dein Projekt zu?):

    - soll der Katalog auch exportiert werden, zieht man einen "Rattenschwanz" an Informationen mit, die evtl. gar nicht relevant, vor allem aber redundant sind
    - sollen die Datensätze auch im Frontend editiert werden, muss man einen zusätzlichen Filter einbauen, der sicherstellt, dass die Mitglieder nur die für sie relevanten Datenfelder sehen (und außerdem berücksichtigen, dass sie ja nicht unbedingt jeder Sprache mächtig sind).

    Beispiel:
    Es gibt ein Feld Farbe, zusätzlich englisch color mit rot/grün/blau bzw. red/green/blue.
    Beim Export ziehe ich für jeden Datensatz eine zusätzliche Spalte mit, die redundante Information enthält.
    Lasse ich Mitglieder Datensätze im Frontend editieren, müssen Infos doppelt eingegeben werden, damit die volle Info erhalten bleibt.

    Ich empfinde diese Variante weder für Redakteure noch für die Variante "Mitglieder editieren Katalogeinträge" sonderlich benutzerfreundlich. Da ist es doch besser, eine Hauptsprache zu haben, um Inhalte zu editieren. Bei der Variante InsertTag brauchen sich Redakteure später um nichts mehr kümmern.

    Das {{custom::xxx}} ist durchaus einen Blick hinter die Kulissen wert.
    Vor allem: es ist wichtig, dass man erst das Frontend InsertTag anlegt, dann das InsertTag als "Titel" im Katalog/Taxonomy vergibt und dann das InsertTag fürs Backend.
    Ändert man an dieser Reihenfolge etwas, passieren spannende Sachen... (kannst du das bestätigen?)

    Viele Grüße
    Anne-Kathrin

  12. #12
    Contao-Fan
    Registriert seit
    27.06.2010.
    Beiträge
    348

    Standard

    Hallo medamind,

    bei der Beschreibung von apache wären die zusätzlichen Sprachfelder ja in einem 2. Katalog, das habe ich auch so angelegt und es funktioniert bestens.

    Heißt, ich lege im BE im 2. Katalog 3 Felder, de, en, es an, der Bearbeiter sieht aber im BE und auch beim Frontedit nur die deutsche Bezeichnung, also er muß auch nur ein Feld wählen, nicht etwa 3 x für 3 Sprachen (Ausnahme: eigene Textbeschreibung für eine Immobilie)

    Legt er im BE einen neuen Taxonomy Wert an, z.B. Stadthaus, dann muß er den ja ohnehin in 3 Sprachen übersetzen, ob nun in diesen 3 Feldern oder im Platzhalter/Inserttag ist ja dann egal, einmal muß man es ja ohnehin machen.

    Daher, wie gesagt, ich finde die Beschreibung von apache sehr interessant, kriege nur die PHP-Anweisung nicht hin, bleibe aber dran...

    Beim Export bin ich eigentlich der Meinung, das nur die Felder aus Katalog 1 (also der eigentlichen Immoverwaltung) exportiert werden, also nur die deutschen Bezeichnungen?
    Da ja der Rest in Katalog 2 steht. (Sicher bin ich mir jetzt aber nicht)

    Nun zu Platzhalter/Inserttags:
    Mittlerweile gefällt mir die Methode sehr gut, im BE steht halt {{custom:name}}, bei der Frontendeingabe steht aber nur der deutsche Begriff, das klappt schon mal super.

    Deine beschriebene Reihenfolge hatte ich zufällig genau so vorgenommen, daher hatte ich bis jetzt keine Probleme, aber gut zu wissen.
    Grüße Jenna

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •