Hier findest Du Info's zu den ExtBase Repos.
https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/Extbase/Reference/Domain/Repository.html
Die Repos machen nur Sinn, wenn Du Daten für eins Deiner Modelle abrufst. Ich weiss gerade nicht, ob es im Core ein Model und Repo für ContentElemente gibt. Ich glaube nicht. Könntest Dir aber selbst eins anlegen.
Natürlich kannst Du auch den QueryBuilder verwenden, aber dann musst Du selbst dafür Sorgen, dass Du die richtigen Daten bekommst.
In der Tabelle sys_category_record_mm
sind wie Du schon oben angemerkt hast keine Übersetzungen gespeichert. Wenn Du jetzt also nach der uid_foreign
des CE's suchst:
$connection->createQueryBuilder()->expr()->eq("uid_foreign", $contentElementUid)
Und dabei die Uid des überstzten Datensatzes angibst, dann kann ja nichts gefunden werden. Du müsstest jetzt erstmal die Uid des CE's in der Default Sprache ermitteln.
Also anstelle von:
// The UID of the content element
$contentElementUid = $processedData["data"]["uid"];
müsstest Du mal das versuchen:
// The UID of the content element
$contentElementUid = $processedData["data"]["l18n_parent"];
Jetzt müsstest Du als Antwort die Uid's der Kategorien in der Default-Sprache bekommen.
Mit den Id's kannst Du Dir dann im 2. Schriit die Id's der FAQ's in der Default-Sprache aus der sys_category_record_mm
raussuchen.
Und jetzt bin ich mir nicht ganz sicher, ob der QueryBuilder Dir von alleine die übersetzten Datensätze liefert, wenn Du nach den Uid's der Default-Sprache suchst. Das müsstest Du mal testen. Ansonsten musst Du im letzten Schritt dann statt dann statt:
->from("tx_gedankenfolger_faqs")
->where(
$queryBuilder->expr()->in("uid", $faqIds),
$queryBuilder->expr()->eq("deleted", 0),
Auch nach dem l10n oder l18n parent suchen und nach der richtigen sys_language_uid:
->from("tx_gedankenfolger_faqs")
->where(
$queryBuilder->expr()->in("l10n_parent", $faqIds), // Könnte auch l18n_parent sein. Musst Du mal in die DB schauen.
$queryBuilder->expr()->eq("sys_language_uid", $sys_language_uid), // Sonst werden Dir alle Sprachen zurückgegeben
$queryBuilder->expr()->eq("deleted", 0),
Um die Sprache zu ermitteln:
$languageAspect = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Context\Context::class)->getAspect('language');
$sys_language_uid = $languageAspect->getId();
Hab ich jetzt natürlich nicht getestet. Sollte aber so klappen.