TYPO3 DataHandler:PHP-以编程方式获取一些 ContentElement 的已翻译 ContentElement UID

TYPO3 DataHandler: PHP-programmatically get some ContentElement's translated ContentElement UID

我正在使用 TYPO3 9 LTSCommandController infrastructure for preparing a "batch script" which will update a bunch of pages and content elements in my TYPO3 installation. For these updates I'm levaraging TYPO3's DataHandler

我的 TYPO3 安装对页面和内容元素进行了德语(规范)和英语本地化,并且这些页面和内容元素处于连接模式,即英语内容元素连接到其 "original" 德语内容元素.

我知道要更新的德语和英语内容元素的 UID,但为了在我的脚本中保持简洁,我认为仅引用 "canonical" 德语内容元素 UID 就足够了,并以编程方式派生其英语本地化对应 UID。

是否有 TYPO3 PHP API 通过提供原始内容元素的 UID 来获取翻译内容元素的 UID?

例如,我正在寻找类似

的东西
$languageIdDe = 0; // in my installation/site, German language has languageId: '0'
$languageIdEn = 1; // in my installation/site, English language has languageId: '1'

$originalContentElementUidDe = 1234;

$translatedContentElementUidEn = ContentElementTranslationUtil::getTranslatedContentElementUid($originalContentElementUidDe, $languageIdEn);

是的,是:

\TYPO3\CMS\Backend\Utility\BackendUtility::getRecordLocalization($table, $uid, $language, $andWhereClause = '');

这个函数returns一个"mixed Multidimensional array with selected records; if none exist, FALSE is returned".

所以要根据问题获取翻译内容元素的 UID:

use TYPO3\CMS\Backend\Utility\BackendUtility;

$languageIdDe = 0; // German language has languageId: '0'
$languageIdEn = 1; // English language has languageId: '1'

$originalContentElementUidDe = 1234;

$translatedContentElementUidEn = BackendUtility::getRecordLocalization(
  'tt_content',
  $originalContentElementUidDe,
  $languageIdEn
)[0]['uid'];

您还可以在 TYPO3 Slack 中更快地获得此类问题的答案。