我不得不从一个TYPO3站点导入一些帖子到另一个站点,这导致了对DB结构的一些探索。出现了一个具体问题:
在本地化的内容元素(具有sys_language_uid = 1的tt_content条目)中,字段t3_origuid
和l18n_parent
被冗余填充。后端本地化视图需要l18n_parent
才能正常工作。
他们总是有相同的价值吗?或者是否存在字段值可能不同的用例?
答案 0 :(得分:3)
在TCA中配置为transOrigPointerField
(通常为l10n_parent
或l18n_parent
)的字段用于本地化。
它始终包含默认语言中记录的id(即使记录是使用非默认语言从记录中翻译的),请参阅https://docs.typo3.org/typo3cms/TCAReference/singlehtml/#transorigpointerfield
在复制或翻译记录时填写在TCA中配置为origUid
(通常为t3_origuid
)的字段,并包含源记录的ID,请参阅https://docs.typo3.org/typo3cms/TCAReference/singlehtml/#origuid
在某些情况下,字段将具有相同的值(例如,从默认语言翻译记录),但在其他情况下具有不同的值。例如。复制同一页面上的记录时t3_origuid
将与l10n_parent
不同。
要允许本地化,需要transOrigPointerField
(l10n_parent
)。拥有origUid
(t3_origuid
)字段并不是一项艰难的要求,但这是一种很好的做法,因为一些额外的功能可能需要它才能工作。特别是在较新版本的TYPO3中。例如,翻译向导当前正在使用t3_origuid
字段。
由于TYPO3 8.6已经引入了l10n_source
表的新数据库字段tt_content
以及新的TCA ctrl配置translationSource
。 translationSource
字段包含用作翻译源的记录的uid,无论记录是以自由模式还是连接模式翻译的。
答案 1 :(得分:2)
仅作为 Jost 帖子的补充:
要确定应使用哪个字段,请检查以下值:
$TCA['tx_yourtable']['ctrl']['transOrigPointerField']
即。对于tt_content
它来说:
$TCA['tt_content']['ctrl']['transOrigPointerField'] = 'l18n_parent';
答案 2 :(得分:1)