#7966·decap-cms

preSave 处理程序无法再为多个文件夹 i18n 集合写入 i18n[locale].data 项 -- 回归 #7667

作者: myriota-marc创建于 2026年9月1日更新于 2026年9月1日
标签area: i18n

我想,我遇到了一个真正的回归 并想标出它之前 别人烧了几个小时 追它像我刚才做的。

我在 " [email protected] " (bundles[email protected]')、GitHub后端、 " 编辑-工作流程:真实 " ,以及使用 " 多重 " 结构的 " i18n:真实 " 收藏(每个地方都住在自己的顶层文件夹中,例如 " 内容/kb-articles/en/slug.md " 、 " 内容/kb-articles/pt-br/slug.md " )。 我有一个预救 ' 处理器,将AI翻译的内容写入另一个地方,精确地使用第4729号的固定图案:

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? CMS.registerEvent listener ({ ) (中文(简体) ). 名称:"预拯救", 处理器: async ({条目}) {{ 返回条目. set in (['i18n','pt-br','data','title'],已翻译为"Title"; /. . 多一些设置 。 {\fn华文楷体\fs16\1cHE0E0E0}

  • ;

这是7227 PR描述中的具体模式. 在我的版本中,这个完全没有写到 pt-br 文件 。 相反:

- pt-br文件完全没有被触及(无论在我处理器运行之前已经存在过什么)
- EN(默认地址)文件的前题被整个内部输入对象所打乱 -- -- `数据'、`i18n'、`路径'、`meta'、`raw'、`slug'、`mediaFiles'、`收集 ' 、全部直接作为YAML丢入文件。

我花了一段时间才找到 但我很有信心找到了 `InvokeEvent' in`registry.js':

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么?
让  data = {.data } ;
用于 (Const { handler, options } of handers) { 操作器 {
cont result=等待处理器( data, 选项);
如果(结果 !=====
const 条目= data.entry.set('data',结果);
 data = {.data, 条目;}
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
返回 data.enter;

无论处理器的返回被设定为enter.data'(不是作为新条目互换),然后将* 完整* 输入 -- -- 现在,我完全返回的输入在自己的.data'内嵌入了一层 -- -- 返回。 perist Entry' inbackend.ts'中的natentity.get ('data')'被定义,并将整个内容交换为新的条目草稿,以及tentry ToRaw' dumps `entry.get ('data')'直接输入文件。 由于我的处理器的's setIn (['i18n','pt-br',.])'只触及了顶层的'i18n'分支,从没有在之后真正被读取的分支(现在由于外出筑巢而更深了一层),pt-br的写作从没有真正到达任何地方.

我把它分成了7667号(2026-04-22合并). 在此之前,InvokeEvent' return QQdata.intry.get('data')',与上面的.set('data',结果)'一行结合,使它回溯到准确的结果' -- -- 即处理者本身的返回值,再次解开 -- -- 因此,第7227号模式如所记载的那样发挥作用。 #7667将最后一行改为 " return data.internment " ,它打破了使用i18nsetIn'模式的人的往返,尽管它正在为文件收藏修复一个真正和完全独立的错误。 我刚刚检查了 'main' (2026-09-01),它仍然在那里。

我确认`[email protected]'(公布于2026-04-17,恰好在#7667登陆之前)仍然有老的,在工作的'返回 . . . . . . .

内容来源: decaporg/decap-cms