Interface MultilingualContentService

  • All Known Implementing Classes:
    MultilingualContentServiceImpl

    public interface MultilingualContentService
    The API to manage multilingual content and related structures.
    Author:
    Derek Hulley, Philippe Dubois
    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      org.alfresco.service.cmr.repository.NodeRef addEmptyTranslation​(org.alfresco.service.cmr.repository.NodeRef translationOfNodeRef, java.lang.String name, java.util.Locale locale)
      Make a empty translation out of an existing pivot translation.
      void addTranslation​(org.alfresco.service.cmr.repository.NodeRef newTranslationNodeRef, org.alfresco.service.cmr.repository.NodeRef translationOfNodeRef, java.util.Locale locale)
      Make a translation out of an existing document.
      org.alfresco.service.cmr.repository.NodeRef copyTranslationContainer​(org.alfresco.service.cmr.repository.NodeRef mlContainerNodeRef, org.alfresco.service.cmr.repository.NodeRef newParentRef, java.lang.String prefixName)
      Copies the given cm:mlContainer.
      void deleteTranslationContainer​(org.alfresco.service.cmr.repository.NodeRef mlContainerNodeRef)
      Delete the given mlContainer and its translations.
      java.util.List<java.util.Locale> getMissingTranslations​(org.alfresco.service.cmr.repository.NodeRef localizedNodeRef, boolean addThisNodeLocale)
      Given a cm:mlDocument or cm:mlContainer this node returns each locale for which there isn't a translation.
      org.alfresco.service.cmr.repository.NodeRef getPivotTranslation​(org.alfresco.service.cmr.repository.NodeRef nodeRef)
      Given any node, this returns the pivot translation.
      org.alfresco.service.cmr.repository.NodeRef getTranslationContainer​(org.alfresco.service.cmr.repository.NodeRef translationNodeRef)
      Convenience method for super user.
      org.alfresco.service.cmr.repository.NodeRef getTranslationForLocale​(org.alfresco.service.cmr.repository.NodeRef translationNodeRef, java.util.Locale locale)
      Given a cm:mlDocument, this method attempts to find the best translation for the given locale.
      java.util.Map<java.util.Locale,​org.alfresco.service.cmr.repository.NodeRef> getTranslations​(org.alfresco.service.cmr.repository.NodeRef translationOfNodeRef)
      Gets the set of sibling translations associated with the given cm:mlDocument or cm:mlContainer.
      boolean isTranslation​(org.alfresco.service.cmr.repository.NodeRef contentNodeRef)
      Checks whether an existing document is part of a translation group.
      void makeTranslation​(org.alfresco.service.cmr.repository.NodeRef contentNodeRef, java.util.Locale locale)
      Make an existing document into a translation by adding the cm:mlDocument aspect and creating a cm:mlContainer parent.
      void moveTranslationContainer​(org.alfresco.service.cmr.repository.NodeRef mlContainerNodeRef, org.alfresco.service.cmr.repository.NodeRef newParentRef)
      Moves the location of the given cm:mlContainer.
      void unmakeTranslation​(org.alfresco.service.cmr.repository.NodeRef translationNodeRef)
      Removes the node from any associated translations.
    • Method Detail

      • isTranslation

        @Auditable(parameters="contentNodeRef")
        boolean isTranslation​(org.alfresco.service.cmr.repository.NodeRef contentNodeRef)
        Checks whether an existing document is part of a translation group.
        Parameters:
        contentNodeRef - An existing cm:content
        Returns:
        Returns true if the document has a cm:mlContainer parent
      • makeTranslation

        @Auditable(parameters={"contentNodeRef","locale"})
        void makeTranslation​(org.alfresco.service.cmr.repository.NodeRef contentNodeRef,
                             java.util.Locale locale)
        Make an existing document into a translation by adding the cm:mlDocument aspect and creating a cm:mlContainer parent. If it is already a translation, then nothing is done.
        Parameters:
        contentNodeRef - An existing cm:content
        See Also:
        ContentModel.ASPECT_MULTILINGUAL_DOCUMENT
      • unmakeTranslation

        @Auditable(parameters="translationNodeRef")
        void unmakeTranslation​(org.alfresco.service.cmr.repository.NodeRef translationNodeRef)
        Removes the node from any associated translations. If the translation is the pivot translation, then the entire set of translations will be unhooked.
        Parameters:
        translationNodeRef - an existing cm:mlDocument
      • addTranslation

        @Auditable(parameters={"newTranslationNodeRef","translationOfNodeRef","locale"})
        void addTranslation​(org.alfresco.service.cmr.repository.NodeRef newTranslationNodeRef,
                            org.alfresco.service.cmr.repository.NodeRef translationOfNodeRef,
                            java.util.Locale locale)
        Make a translation out of an existing document. The necessary translation structures will be created as necessary.
        Parameters:
        newTranslationNodeRef - An existing cm:content
        translationOfNodeRef - An existing cm:mlDocument
      • getTranslationContainer

        @Auditable(parameters="translationNodeRef")
        org.alfresco.service.cmr.repository.NodeRef getTranslationContainer​(org.alfresco.service.cmr.repository.NodeRef translationNodeRef)
        Convenience method for super user.
        Parameters:
        translationNodeRef - An existing cm:mlDocument
        Returns:
        Returns the cm:mlContainer translation parent
      • getTranslations

        @Auditable(parameters="translationOfNodeRef")
        java.util.Map<java.util.Locale,​org.alfresco.service.cmr.repository.NodeRef> getTranslations​(org.alfresco.service.cmr.repository.NodeRef translationOfNodeRef)
        Gets the set of sibling translations associated with the given cm:mlDocument or cm:mlContainer.
        Parameters:
        translationOfNodeRef - An existing cm:mlDocument or cm:mlContainer
        Returns:
        Returns a map of translation nodes keyed by locale
      • getTranslationForLocale

        @Auditable(parameters={"translationNodeRef","locale"})
        org.alfresco.service.cmr.repository.NodeRef getTranslationForLocale​(org.alfresco.service.cmr.repository.NodeRef translationNodeRef,
                                                                            java.util.Locale locale)
        Given a cm:mlDocument, this method attempts to find the best translation for the given locale. If there is not even a partial match, then the pivot translation is used. If that also gives no results then the translation itself is returned.
        Parameters:
        translationNodeRef - the cm:mlDocument
        locale - the target locale
        Returns:
        Returns the best match for the locale (never null)
        See Also:
        getTranslations(NodeRef), I18NUtil.getNearestLocale(Locale, Set)
      • getMissingTranslations

        @Auditable(parameters={"localizedNodeRef","addThisNodeLocale"})
        java.util.List<java.util.Locale> getMissingTranslations​(org.alfresco.service.cmr.repository.NodeRef localizedNodeRef,
                                                                boolean addThisNodeLocale)
        Given a cm:mlDocument or cm:mlContainer this node returns each locale for which there isn't a translation.
        Parameters:
        localizedNodeRef - the cm:mlDocument or cm:mlContainer
        addThisNodeLocale - if true, add the locale of the given cm:mlDocument in the list.
        Returns:
        Returns a list of missng locales
      • getPivotTranslation

        @Auditable(parameters="nodeRef")
        org.alfresco.service.cmr.repository.NodeRef getPivotTranslation​(org.alfresco.service.cmr.repository.NodeRef nodeRef)
        Given any node, this returns the pivot translation. All multilingual documents belong to a group linked by a hidden parent node of type cm:mlContainer. The pivot language for the translations is stored on the parent, and the child that has the same locale is the pivot translation.
        Parameters:
        nodeRef - a cm:mlDocument translation or cm:mlContainer translation container
        Returns:
        Returns a corresponding cm:mlDocument that matches the locale of of the cm:mlContainer. null is returned if there is no pivot translation.
      • addEmptyTranslation

        @Auditable(parameters={"translationOfNodeRef","name","locale"})
        org.alfresco.service.cmr.repository.NodeRef addEmptyTranslation​(org.alfresco.service.cmr.repository.NodeRef translationOfNodeRef,
                                                                        java.lang.String name,
                                                                        java.util.Locale locale)
        Make a empty translation out of an existing pivot translation. The given translation or container will be used to find the pivot translation. Failing this, the given translation will be used directly. If no name is provided or if the name is the same as the original's then the locale will be added to the main portion of the filename, i.e.
            Document.txt --> Document_fr.txt
         

        The necessary translation structures will be created as necessary.

        Parameters:
        translationOfNodeRef - An existing cm:mlDocument
        name - The name of the file to create, or null to use the default naming convention.
        Returns:
        Returns the new created cm:mlEmptyTranslation
      • copyTranslationContainer

        @Auditable(parameters={"mlContainerNodeRef","newParentRef"})
        org.alfresco.service.cmr.repository.NodeRef copyTranslationContainer​(org.alfresco.service.cmr.repository.NodeRef mlContainerNodeRef,
                                                                             org.alfresco.service.cmr.repository.NodeRef newParentRef,
                                                                             java.lang.String prefixName)
                                                                      throws FileExistsException,
                                                                             FileNotFoundException,
                                                                             java.lang.Exception
        Copies the given cm:mlContainer.

        This involves the copy of the cm:mlContainer node and the copy of its cm:mlDocument.

        Parameters:
        mlContainerNodeRef - The nodeRef to copy
        newParentRef - The new parent of the copied cm:mlDocument
        prefixName - The prefix of the name of the copied translations. Can be null.
        Returns:
        The copied cm:mlContainer
        Throws:
        FileNotFoundException
        FileExistsException
        java.lang.Exception
      • moveTranslationContainer

        @Auditable(parameters={"mlContainerNodeRef","newParentRef"})
        void moveTranslationContainer​(org.alfresco.service.cmr.repository.NodeRef mlContainerNodeRef,
                                      org.alfresco.service.cmr.repository.NodeRef newParentRef)
                               throws FileExistsException,
                                      FileNotFoundException
        Moves the location of the given cm:mlContainer.

        This not involves changing the cm:mlContainer node but moves its cm:mlDocument.

        Parameters:
        mlContainerNodeRef - The nodeRef> to move
        newParentRef - The new parent of the moved cm:mlDocument
        Throws:
        FileExistsException
        FileNotFoundException
      • deleteTranslationContainer

        @Auditable(parameters="mlContainerNodeRef")
        void deleteTranslationContainer​(org.alfresco.service.cmr.repository.NodeRef mlContainerNodeRef)
        Delete the given mlContainer and its translations. The translations will lost their cm:mlDocument aspect and will be archved. The empty translations will be permanently deleted.
        Parameters:
        mlContainerNodeRef - The cm:mlContainer to remove