Drupal has a very good book system, where you can have a structured document consisting of many pages and subpages. We are using them to organize the manuals of our software and keep translated versions for each language. It is very confusing and error prone to manually track changes in the main document and update the pages. When a new page is created, you also have to create the translation for each language manually and afterwards update the outline of each translation for the corresponding book. The module to be created shall overcome these problems.
The module must work with Drupal 6 and 7, running (at least) under Linux with Apache. It must follow the Drupal best practises regarding code quality, database abstraction and security. The code needs to be well-commented. The core of Drupal must not be modified.
The front-end must be working and looking well on all common browsers (IE, Firefox, Chrome, Safari). It must be easy to customize to the style of the actual site it will be placed in.
The translated versions of the documents use the Drupal translation mechanisms. A page can be flagged as language independent (and will be used in all translations) or with a specific language. If it is set to a specific language (it will start with the main language) it will need to be translated later on. This is the entry point for the use of the module.
The module adds a subpage to the project module, where all linked books for the given project are displayed with a short description (it can be enabled or disabled per project).
The translator will have a page for his translation, which shows the document tree with the pages that are missing or need to be updated. From there he can get information what has been done (link, mouse over or such to see revision change information and access the original language version, diff via diff module). He can create missing pages or access the edit functionality. When he is done with editing, he will be returned to the document tree.
A page in the original language will be marked as modified when the latest revision is newer than revision of the translated page.
The module can also check the structure of the main book and compare it with the current translation. It may be that the original page (say A) is the child page of a given page (say B). The translation of A has to be a child of B as well. Failures in this structure are shown to the translator.
He also sees stats on how many pages need to be created, updated or moved.
The admin can setup up books to be covered by the translation process. He can select the main book and assign translated book to it. He can also assign one or more translators for every translation of the book.
He also sees stats on how many pages of each translation need to be created, updated and moved.
The user’s perspective does not require any modifications.
The books can be exported to XML files. This can be done through a GET request that then received the XML-Data of the given book. The export collects all pages into one file. Links to other nodes within the book are converted to internal links. Links to other pages or nodes are made absolute (with domain name). Images are included as well. If two pages link to the same image, it will be included only once. The whole collection is bundled as zip file, with the xml data and a subfolder “images” which contains all images.
If there are any questions, please feel free to contact us. Please also have a look at the other projects we have, as they could be addressed in one job.