从参考目录中删除项目(如果是';s UID已消失或清除Plone中已损坏的引用目录

从参考目录中删除项目(如果是';s UID已消失或清除Plone中已损坏的引用目录,plone,linguaplone,Plone,Linguaplone,我对LinguaPlone有以下情况 我有a1-en、a1-fi和a1-sv页 a1 fi和a1 sv认为a1 en是规范翻译 a1 enisCanonical()返回False 这是因为isCanonical()检查当前项是否有“翻译”引用 a1 en是一个不吉利的页面,因为实际上有“translation of”引用,但它是一个断开的引用,其中UID引用所指的项目不见了。(它只按UID检查引用,而不检查实际内容项是否存在) 现在,我需要以某种方式修复这种情况,使a1 en相信它再次成为规

我对LinguaPlone有以下情况

  • 我有a1-en、a1-fi和a1-sv页

  • a1 fi和a1 sv认为a1 en是规范翻译

  • a1 en
    isCanonical()
    返回False

  • 这是因为
    isCanonical()
    检查当前项是否有“翻译”引用

  • a1 en是一个不吉利的页面,因为实际上有“translation of”引用,但它是一个断开的引用,其中UID引用所指的项目不见了。(它只按UID检查引用,而不检查实际内容项是否存在)

现在,我需要以某种方式修复这种情况,使a1 en相信它再次成为规范页面。我需要从正在检查的“sourceUID”索引的引用目录中删除这一个已损坏的引用

问题

  • 是否有自动维护参考目录和清除断开条目的方法

  • 如果不是,手动修复参考目录中的这一个损坏条目的方法是什么

    • 像这样:

      badCanonical = app.Plone.en.offering.restaurants
      badCanonical.isCanonical()  # False - contains a corrupted translationOf link
      badCanonical.getTranslations()   # Get list of what translations should exist
      cat = app.Plone.reference_catalog
      cat.getReferences(badCanonical, relationship="translationOf")  # Displays UID referring object not existing
      # Delete forward relationships
      for b in cat.getReferences(badCanonical, "translationOf"): cat._deleteReference(b)  
      badCanonical.isCanonical()  # True - fixed
      badCanonical.getTranslations() 
      
      # Check that one of the translated versions still work
      translated = app.Plone.sv["kalajoki-erbjuder"].restauranger
      translated.isCanonical()
      translated.getTranslations()
      

      通常,“管理翻译”表单应允许删除和重新分配翻译参考。这不会清理目录,但也可能使您的翻译按照您期望的方式进行。这不起作用,因为规范副本错误地认为它不是规范副本,并且没有给您提供选项。