本地化记录并使用DataHandler更新

问题描述

可以使用DataHandler的“ localize”命令对记录进行本地化

$cmd[self::TABLE_NAME] = [
  uid_of_the_original_record => [
    'localize' => language_uid,]
];
$this->dataHandler->start([],$cmd);
$this->dataHandler->process_cmdmap();

这可以将已翻译的记录正确地添加到DB,但是带有原始记录的复制字符串。如何编辑本地化记录的属性?之后使用update命令吗?如果是这样,我如何获得添加的本地化的uid?

解决方法

您实际上可以使用数据图来创建本地化:

$data[self::TABLE_NAME] = [
    'NEW123' => [
        'sys_language_uid' => <language-uid>,'l10n_parent' => <original-record-uid>,// Optionally also l10n_source
        // Other fields
    ],];
$this->dataHandler->start($data,[]);
$this->dataHandler->process_datamap();

这样,您可以在创建本地化时直接设置其他字段。

,

当前无法运行localize并将翻译后的内容同时放入其中。

我可以看到两种选择:

  1. 获取所有已翻译的元素(通过您拥有的原始UID),然后在每个元素中设置已翻译的内容
  2. 插入processCmdmap_postProcessprocessCmdmap_afterFinish并将翻译后的内容放入其中

我与进口商存在相同的问题,并使用了选项1。