Hallo
Den letzten Post hier im Forum zu diesem thema ist glaub ich aus 2005, versuch also mein Glück einfach mal.
Bei einer eigenen Extension für ein mehrsprachige Seite steh ich gerade etwas mit der Lokalisierung an. Die Extension grundsätzlich steht und die Checkboxes "Enabled localization features" sind pro Tabelle aktiviert. Im SysFolder werden die Einträge beherbergt und dort wurde auch eine "alternative page language" angelegt.
Ich kann nun also pro Tabelle meine Einträge definieren und diese mit dem Lokalisierungstool in andere Sprachen übersetzen. Nach meiner Vorstellung sollte ich nun für eine deutsche Referenz die deutschen Teile einer Tabelle als Relation wählen können, bei der Übersetzung zum Englischen würden automatisch das englische Gegenstück gewählt für die Anzeige. Sonst macht die Lokalisierung m.E ja wenig Sinn.
Funktioniert aber nicht so ganz. Wenn ich einen Eintrag definiere hab ich bei der Auswahl alle Sprachen derselben Option zur Verfügung. Kann doch jetzt nicht sein dass ich für beispielsweise 10 Sprachen beim jeweiligen Eintrag die Zusammenhänge von Hand hereinfummeln muss.. ?? Dann wäre es ja überhaupt nicht wartbar!
Am Beispielbild: "Entwicklung" und "Development" sind ja jetzt doppelt da das Eine die Lokalisierung des Anderen ist. Es darf also nur eines angezeigt werden im BE bei der Auswahl wenn ich einen neuen Datensatz erfasse.
Wie krieg ich das auf die Reihe?
Bild: typo3forum.net/…/1402d1228473490-lokalisierung-eintr-ge-doppelt-ba…
Bild: typo3forum.net/…/1403d1228473490-lokalisierung-eintr-ge-doppelt-ba…
Crossposting dazu hier auf typo3forum.net
Hi Päse,
damit habe ich mich heute den ganzen Tag beschäftigt.
Lösungsansatz:
In Deiner tca.php wird es für das gewünschte Feld einen Eintrag geben der ungefähr so aussehen dürfte:
...
"benutzer" => Array (
"exclude" => 1,
"label" => "LLL:EXT:deineext/pi1/locallang_db.xml:tx_deineext.lastname",
"config" => Array (
"type" => "select",
"foreign_table" => "tx_deineext_benutzer",
"foreign_table_where" => "AND (sys_language_uid=CAST('###REC_FIELD_sys_language_uid###' AS UNSIGNED) OR sys_language_uid= -1) ORDER BY tx_deineext_benutzer.name DESC",
"size" => 6,
"minitems" => 0,
"maxitems" => 10,
"default" => "",
)
),
Der wichtige Teilbereich:
AND (sys_language_uid=CAST('###REC_FIELD_sys_language_uid###' AS UNSIGNED) OR sys_language_uid= -1)
Dieser Teil sorgt dafür, dass nur Datensätze gleicher Sprache oder Datensätze für ALLE Sprachen ausgegeben werden.
Dieser Teil:
CAST('###REC_FIELD_sys_language_uid###' AS UNSIGNED)
sorgt dafür das bei einem NEUEN Datensatz (bei dem die Sprache ja noch nicht feststeht) keine MYSQL Fehlermeldung zurück kommt. Im entsprechenden Feld sys_language_uid steht ja noch nichts drin, da der Datensatz ja noch nicht gespeichert wurde.
Damit solltest Du in Zukunft nur noch die richtige Sprache angezeigt bekommen.
Gruß
febo
Wow, meine Rettung! Danke 😃
Jetzt muss ich nur noch die FE ausgabe anpassen und dann hab ichs.
Hat sich doch noch nicht so ganz gelöst. Anscheinend ist ja bekannt, dass wen man Datensätze lokalisiert diese je nach Ansicht vorhanden sind oder nicht.
Wenn ich nun meinen Datensatz von Deutsch auf Englisch lokalisiere kann ich im Englischen "Translate from Original: " nicht wählen, da diese gar nicht aufgeführt werden. Wenn ich allerdings anstatt einen Deutsch Datensatz einen mit der Sprache "All" erstelle kann ich die Datensätze für das Original wählen, dumemrweise kann ich auch den gerade erstellen, Englischen als Original für sich selber nehmen (macht ja keinen Sinn).
Und zum Threadproblem: Wenn ichs so mach wie beschrieben mit "All" -> übersetzung in English dann hab ich im Englischen alle Auswahloptionen (auch mit AND (sys_language_uid=CAST( ... ) was ja auch nicht das Ziel ist.
Warum muss das denn so kompliziert sein? Weiss da wer einen Tipp für mich?
Grüsse
Schade, stimmt, "Hat sich doch noch nicht so ganz gelöst".
Wie ging es denn weiter? Ist es inzwischen vielleicht ... gelöst?