I manage my company’s JIRA intranet, but at the same time I also develop our public facing “Global” (ie. non-Japanese) website.
At the moment the global website runs in 5 languages: English, French, German, Chinese and Korean, with all the content coming originally from our seperate Japanese site. So we have a multilingual site and we have need to manage translation of all the contents. It cannot be managed manually for various reasons:
- Volume is too high – 300 pages in 5 languages is 1500 translation sets.
- Version management – Sometimes we have to restart translation because we find an error in the master. We must then correct the master and resubmit it to all translators.
- Time lag – Sometimes a translation gets stuck for months because of a sticky point in the text such as legal or cultural problem.
So I decided to set up a project on JIRA to manage the translations.
Statuses and Workflows
It basically works like this:
- Myself or a regional office requests a page to be translated from Japanese to their language
- Japan HQ approves/disapproves the request
- If approved, the Reporter assigns the issue to a suitable translator
- The translator submits it back to the reporter
- The reporter proof reads the translation then submits it to Japan HQ to create the webpage.
- I create the draft webpage (and Flash/images etc)
- Reporter proofs the draft and usually requests changes
- Repeat above two steps until satisified
- The page is then published live.
- We then enter ‘localization’ stage where subtasks are created automatically for the other languages. They are auto-assigned to each regions default translator, then cancelled, re-prioritized or completed depending on each regions needs.
This translates into the following workflow diagram:
It is important to note that this workflow only manages the translation of a Japanese page to one other language. It does not track the status of the other languages – that is done by Sub-tasks of this parent issue.
Dashboards and Search Filters
To track the progress we require two search filters:
- Parent Issue statuses (Japanese -> Lang1)
- Subtask issue statuses (Lang1 -> Chinese/German/French/etc)
This is the Parent Issue filter:
It is a standard filter but it has some nice extra columns that really help us:
- Published field is a multi-checkbox field. As we publish a page live on the website, we check the box for that language. So we can see quickly that the first issue in the filter above is published live in English and French.
- Global URL is a ‘URL’ type custom field that contains a direct link to the published English page on the website. I dont bother to add the links for other langs on JIRA because the URL is almost identical for each lang.
- Sub-tasks column lets me jump directly to the status of a specific language translation, e.g. German, for that webpage. I think I had to add a plugin to show this column.
Here is the second filter showing the status of all subtasks:
To get the summary of the parent issue to display above, I used a the parent issue summary plugin from the JIRA plugin library.
Inside an Issue
I only need to attach the master translation file (we use excel files) to the parent issue. The assignees of the subtasks know to go back up to the parent to get the master. This makes it easy to update the master later if needed.
I mentioned that when the status of the parent issue moves to ‘Localization’, it automatically creates subtasks for each language. To do this, I used the create sub-task on transition plugin. This is the result:
The subtask get assigned automatically (this is set up using the plugin), so there is not much more to do. I just click ‘pass to translator’ and then the assignees get informed by email notification and later provide me the translation. Sometimes I hold off on passing them the work, if I know they already have a big workload or that region has put all translation work on hold for a few months etc – in that case I just leave it as Open and it will not appear on their dashboards.
By the way these subtasks have their own workflow, though it is pretty similar to the workflow of the parent.
Well thats all I can think of right now. I probably missed out a lot of other stuff here, please leave a comment if you have any questions about this and I will try to expand.