[ 
https://jira.nuxeo.org/browse/NXP-3592?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Anahide Tchertchian reassigned NXP-3592:
----------------------------------------

    Assignee:     (was: Anahide Tchertchian)

> Provide a multilingual content mechanism
> ----------------------------------------
>
>                 Key: NXP-3592
>                 URL: https://jira.nuxeo.org/browse/NXP-3592
>             Project: Nuxeo Enterprise Platform
>          Issue Type: New Feature
>            Reporter: Anahide Tchertchian
>             Fix For: 5.4.x
>
>
> ====================
> Multilingual Content
> ====================
> Use cases
> ---------
> - Users can create documents that are translations of other documents, only
>   for documents that support this feature.
> - Available translation languages can be configured by document type or
>   configured for the whole application, for every document type supporting
>   this feature.
> - Distinct documents are used for every translation, as they should be be
>   able to follow disctinct review processes, be published independantly,
>   have different access rights, etc...
> - When a "translatable" document is created, the language field is
>   required, but it can be changed afterwards.
> - At creation time, translations in other languages may be created
>   automatically in the same folder and documents linked. This can be useful
>   if the application wants to provide the document in the original version,
>   in case nobody took time to translate it.
> - The initial document created is considered as the "master".
> - It is possible to create a new translation from the master, or from any
>   other translation of this initial document.
> - There is no restriction on the translation language: the master document
>   can have several translations in the same language (is this acceptable?).
> - When creating a new translation or editing an existing one, it is possible
>   to select the master or another existing translation to display the fields
>   to translate on the same form (in view mode only). It is also possible to
>   chose to prefill the new document fields with the original values.
> - (Improvement): display a field by field diff on display)
> - It is not possible to remove a master document if translations are still
>   present in the platform (even if current user does not have enough rights
>   on them) (Improvement: maybe switch master).
> - A flag is available on translation documents. Possible values are:
>   - not-started
>   - in-progress
>   - completed
>   - outdated
>   All values can be set manually, editing the document. When a translation
>   is created automatically from master, it is marked as
>   "not-started". "outdated" flag is set automatically when master document
>   is modified. "in progress" and "completed" flags are only set manually.
>   NB: "automatic" behaviour here is not part of the feature, it has to be
>   implemented by event listeners => provide events and implement specific
>   behaviour in listeners.
> - Custom code can make queries depending on the current language to select
>   only documents translated in this language. This is where automatic
>   creation of documents (at initial creation) can also be useful in this
>   case: all documents will be available in all the supported languages even
>   if translations have not be done yet.
> - TODO: need to decide what happens when creating a version of a translation
>   => what master document is it the translation of? Current live one in
>   workspaces? Same when publishing a translation: is the published doc
>   marked as a translation of the workspace live doc?
> - TODO: copy/paste: when copy/pasting a master or one of its translations,
>   the translation links are lost (is this acceptable?). The new translation
>   links will have to be specified manually.
> Technical architecture
> ----------------------
> - Documents that can be translated have to hold a specific schema named
>   "translation" with given fields:
>   - translation_flag (string)
>   - master (boolean)
>   The language can be stored in the dc:language property.
> - A runtime component has to accept configurations stating :
>   - default languages supported globally
>   - default languages supported per document type
> - translation links are held as relations in the relations graph.
> - A translation service needs to have the given API:
>   - boolean isTranslatable(DocumentModel) => can rely on translation schema
>     if it's enough (a Facet if it's not)
>   - DocumentModel getMasterDocumentModel(DocumentModel) => returns the
>     master document model for this doc.
>   - DocumentModelList getSiblingTranslations(DocumentModel)
>   - DocumentModel createTranslationDocumentModel(DocumentModel initialDoc,
>     String language, boolean prefill)
>     created a new document model with same type than the intial one.
>     prefills dc:language field with given value, and prefills all other
>     schemas from given document model values if prefill is true.
>   - DocumentModel createTranslationDocument(DocumentModel initialDoc,
>     DocumentModel translatedDoc)
>     creates translatedDoc in the repository, with current document as
>     parent, and marks translated document as a translation of the initial
>     one. If the intial document is not a master, its master is resolved and
>     used.
>     Fails with TranslationException if:
>     - given docs are of different types.
>     - no master document can be found from the initial document.
> - an adapter is defined on document model. It caches information about its
>   translations (master + other languages).
> - XXX need to define another use case for folders (complex prop here?) would
>   be disrupting to have different folders => maybe define a translation
>   type + configure how it applies to document types (use a facet 
> TranslatableFolder). Maybe dupplicate fields with a prefix _fr, _en to ease 
> querying.
> - deleting relations not necessary => can be used to retrieve original 
> translations even if doc in workspace do not exist anymore.
> - provide pluggable algorithms to retrieve translations (?) + maybe optimize 
> by dupplicating relation properties (or to add additional info like "this doc 
> in french version 1.4 is translated from spanish 1.3).

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://jira.nuxeo.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        
_______________________________________________
ECM-tickets mailing list
[email protected]
http://lists.nuxeo.com/mailman/listinfo/ecm-tickets

Reply via email to