<html><body>
<p><font size="2" face="sans-serif">Hi, Anne</font><br>
<br>
<font size="2" face="sans-serif">Thank you for your comments. I'm glad to know that you are working for a larger "goal". I don't know </font><br>
<font size="2" face="sans-serif">Launchpad is broken with code strings now. What do you mean when you said "Launchpad to be </font><br>
<font size="2" face="sans-serif">broken with code strings now</font><font size="2" face="sans-serif">"? I take a look at Horizon in Transifex. Gabriel Hurley is the coordinator. </font><br>
<font size="2" face="sans-serif">Can I know the reason why Dashboard turn to Transifex other than Launchpad?</font><br>
<br>
<font size="2" face="sans-serif">Pootle will be a good open source project to look into. It supports a very powerful "Terminology matching" feature,</font><br>
<font size="2" face="sans-serif">which can match and list the relevant terminologies at real time. The translation memory feature is not so powerful.</font><br>
<font size="2" face="sans-serif">Suggested translations from a translation memory must be generated before translation, while Transifex can list </font><br>
<font size="2" face="sans-serif">suggested translations at real time. I will add the third column in our wiki page.</font><br>
<br>
<font size="2" face="sans-serif">There is a major issue for Pootle that we need to consider. Although Pootle has its official server to host the translation</font><br>
<font size="2" face="sans-serif">of Pootle UI and related projects, the policy for selecting projects on our official server are not finalised yet. </font><br>
<font size="2" face="sans-serif">I cannot find a way to register our projects in that official server. So we might need to host our</font><br>
<font size="2" face="sans-serif">own Pootle server if we use it. Are we able to host our own translation server? I'm not clear whether Pootle </font><br>
<font size="2" face="sans-serif">supports OpenID. If we are going to host our own Pootle server, maybe we can enhance it and enable</font><br>
<font size="2" face="sans-serif">the OpenID authentication.</font><br>
<br>
<font size="2" face="sans-serif">Both Launchpad and Transifex, even Pootle, manage the translation review process by their own. I think, the translation quality</font><br>
<font size="2" face="sans-serif">review shall be done using the translation tool. Gerrit and Jenkins will play an important role in Generating step. </font><br>
<font size="2" face="sans-serif">I'm not familiar with Gerrit and Jenkins. If my description is wrong, feel free to correct me. After the fourth step "Converging", </font><br>
<font size="2" face="sans-serif">DocBooks in different languages will be generated and submitted to Gerrit for review. Jenkins will run Maven build and upload the </font><br>
<font size="2" face="sans-serif">generated sources to server. The reviewer ( translation coordinator ) will accept the changes.</font><br>
<br>
<font size="2" face="sans-serif">When I propose the five steps, I only think of manuals translation. Code strings may be a little different. Are there any globalization</font><br>
<font size="2" face="sans-serif">test in Jenkins? If there is no, we may need to add globalization test. </font><br>
<br>
<font size="2" face="sans-serif">Regards<br>
Daisy<br>
</font><br>
<tt><font size="2">annegentle@justwriteclick.com wrote on 04/28/2012 03:21:07 AM:<br>
<br>
> Anne Gentle <anne@openstack.org> </font></tt><br>
<tt><font size="2">> Sent by: annegentle@justwriteclick.com<br>
> </font></tt><br>
<tt><font size="2">> 04/28/2012 03:21 AM</font></tt><br>
<tt><font size="2">> <br>
> To</font></tt><br>
<tt><font size="2">> <br>
> Ying Chun Guo/China/IBM@IBMCN, </font></tt><br>
<tt><font size="2">> <br>
> cc</font></tt><br>
<tt><font size="2">> <br>
> openstack@lists.launchpad.net</font></tt><br>
<tt><font size="2">> <br>
> Subject</font></tt><br>
<tt><font size="2">> <br>
> Re: [Openstack] Proposal for manuals translation process</font></tt><br>
<tt><font size="2">> <br>
> Hi Daisy, <br>
> <br>
> Thanks so much for this detailed proposal. I'd like you to put it on<br>
> the OpenStack wiki, at <a href="http://wiki.openstack.org/Translations">http://wiki.openstack.org/Translations</a>. <br>
> <br>
> My first read-through and discussion with the CI team brings up a <br>
> few comments:<br>
> - Whatever we do for docs, we should also do for code strings. So <br>
> unfortunately the scope for the "Goal" probably cannot be so narrow.<br>
> We know Launchpad to be broken with code strings now, that data <br>
> point should be reflected in this point-in-time analysis.<br>
> <br>
> - Dashboard uses Transifex now (while the other projects <br>
> unsuccessfully use Launchpad). Tres Henry, can you comment on the <br>
> number of translators of Dashboard strings you have on the Transifex<br>
> side already? <br>
> <br>
> - Not that I want analysis paralysis, but, we may need to add a <br>
> third column of a crowd-sourced translation option like Pootle that <br>
> is familiar to open-source translators. Also, the lack of a <br>
> translation memory/dictionary (and having to hold such a valuable <br>
> asset in a wiki page) is troubling, can we also analyze an option <br>
> that offers a translation dictionary? So much re-use would be <br>
> available to all the projects.<br>
> <br>
> - There seems to be assumptions that Jenkins and Gerrit will "just <br>
> work" with out much description of the role those two crucial tools <br>
> play. Can you further describe the workflow for those in the <br>
> Slicing, Uploading, Downloading, Converging, and Generating steps? <br>
> <br>
> I appreciate all the hard work I _know_ went into this proposal. <br>
> Let's get it on the wiki, discuss more, and keep adding details. I'd<br>
> like to make this a blueprint, could be for openstack-manuals, could<br>
> be for horizon, I don't know yet. Thanks for stepping up and <br>
> embracing our international community's needs!<br>
> <br>
> Thanks,<br>
> Anne<br>
> <br>
> <br>
> <br>
> <br>
</font></tt><br>
<tt><font size="2">> On Fri, Apr 27, 2012 at 3:45 AM, Ying Chun Guo <guoyingc@cn.ibm.com> wrote:</font></tt><br>
<tt><font size="2">> Hi, all<br>
> <br>
> During the "I18N in OpenStack" discussion in design summit, it is <br>
> mentioned that documents need to I18N. I also noticed some requests <br>
> for a Chinese version manuals from China users. But unlike Gettext <br>
> strings in the codes,  there is no process for DocBook translation <br>
> yet. Translators, who want to help translation, have to take a <br>
> DocBook into a tool and perform a translation on a copy which will <br>
> be saved as a new file. This traditional translation model is not <br>
> good for collaboration. Usually, the open source translation depends<br>
> on volunteers. It's better to use the crowd translation model, which<br>
> enables a mass of translators to work on the same job, just like the<br>
> Launchpad Web UI for Gettext strings translation, any people can <br>
> jump in at any time and contribute to any part of the translatable contents.<br>
> <br>
> In order to facilitate the manuals translation, I investigated <br>
> several translation websites and several open source projects. I <br>
> composed this proposal. Now it's open for suggestions and comments.<br>
> <br>
> Goal<br>
> ------------<br>
> A process for manuals translation<br>
> <br>
> Background<br>
> --------------<br>
> OpenStack Manuals are in DocBook format. The source is on GitHub: <br>
> <a href="http://github.com/openstack/openstack-manuals">http://github.com/openstack/openstack-manuals</a><br>
> Launchpad and Transifex are free web based tools used for crowd <br>
> translation. Both of them provide a simple web interface in which <br>
> non-technical people can help translation. They don't support <br>
> DocBook format, but support the popular GNU Gettext file formats (PO<br>
> Template or PO).<br>
> <br>
> Translation Process<br>
> -------------------<br>
> In order to translate OpenStack Manuals to multiple languages, which<br>
> are in DocBook format, we can slice the documents into short <br>
> statements, then use a web based translation management tool to <br>
> manage the translation process, and finally converge the translated <br>
> content into a new copy of DocBook. <br>
> <br>
> Here are the five steps of the translation process:<br>
> Step #1 Slicing - extract translatable content from DocBooks and <br>
> generate Gettext compatible POT files (PO Template or PO);<br>
> Step #2 Uploading - upload the POT (or PO) files to a web based <br>
> translation management tool;<br>
> Step #3 Downloading - download PO (or MO) files from the web tool <br>
> after translation and review;<br>
> Step #4 Converging - converge the translated contents into new <br>
> copies of DocBook, create DocBooks in multiple languages<br>
> Step #5 Generating - generate HTML/PDF in multiple languages from <br>
> DocBooks in multiple languages<br>
> <br>
> The picture in the attachment describes these steps. <br>
> (See attached file: DocBook translation process.png)<br>
> <br>
> Compare of Launchpad and Transifex<br>
> -------------------<br>
> Launchpad (<a href="https://launchpad.net/">https://launchpad.net/</a>) and Transifex (<a href="https://www.transifex.net/">https://www.transifex.net/</a><br>
> ) are similar web based tools used for crowd translation. The goal <br>
> of the compare is to find the most appropriate tool for this <br>
> scenario. The compare are made between Launchpad and Transifex free <br>
> version for open sources. (Refer to <a href="https://www.transifex.net/plans/">https://www.transifex.net/plans/</a><br>
>  to get details of “Transifex free version for open sources”)<br>
> <br>
> After considering the requirements for manuals translation,  below <br>
> perspectives are taking into consideration:<br>
> *Supported format<br>
> *DocBook slicing support<br>
> *Converging support<br>
> *Source uploading method<br>
> *Output downloading method<br>
> *Translation Memory support<br>
> *Translation history support<br>
> *Change management<br>
> *Translation Dictionary<br>
> Refer to Table 1 for detail information of the compare.<br>
> <br>
> Another important measurement to compare is the workload. Having the<br>
> five steps in the process execute automatically as much as possible <br>
> will decrease the workload of translation coordinators. <br>
> Refer to Table 2 for the detail of workload compare when using <br>
> Launchpad or Transifex for DocBook translation.<br>
> <br>
> Here are the conclusions after the compare, <br>
> (1) the workload using Transifex is similar with using Launchpad. <br>
> (2) The advantages of Launchpad are:<br>
> * Leverage the same user id and user group of developers, users, <br>
> translators of Gettext strings.<br>
> * Leverage the same contribution calculating method "Karma", with <br>
> fixing bugs, answering questions and Gettext strings translation.<br>
> (3) The advantage of Transifex is better translation memory support. <br>
> The disadvantage of Transifex is having different user registration <br>
> and user interfaces. Both the translators and the coordinators need <br>
> to register in a new website and get familiar with a new user <br>
> interfaces before translation.<br>
> <br>
> Based on these analysis, I think, using Launchpad to do the manuals <br>
> translation is a good choice.<br>
> <br>
> Other considerations<br>
> -------------------<br>
> *Translation Dictionary<br>
> Translation Dictionary here means terminology translation. It is <br>
> very helpful to ensure the translation quality. Unfortunately, both <br>
> Launchpad and Transifex don't support Translation Dictionary. I <br>
> suggest to use wiki pages to document the terminology translation <br>
> for translators reference. <br>
> Here is a sample wiki page for Eclipse globalization: http://<br>
> wiki.eclipse.org/French_Glossary. <br>
> <br>
> *Change Management<br>
> Launchpad and Transifex support the synchronize of old PO files and <br>
> new PO files in their own ways. They will compare the new po and the<br>
> existing po and handle the changes automatically. But new PO files <br>
> won't be generated automatically after DocBooks are changed. <br>
> Translation coordinators need to generate new PO files by running a <br>
> Python program manually. <br>
> I will suggest to develop a program in future, to monitor the update<br>
> of manuals GitHub repository. When a DocBook is updated, a new PO <br>
> file will be generated and synchronized with the old one in the <br>
> Launchpad server.<br>
> <br>
> *Machine translation<br>
> Is it necessary to include machine translation?  Machine translation<br>
> can be executed before human beings review. Then translators won't <br>
> need to translate from scratch. Translators can review the result of<br>
> machine translation and correct them.<br>
> But after investigation, I found the quality of free machine <br>
> translations, which have API exported, are not so good. I doubt <br>
> whether a poor quality machine translation is helpful.<br>
> Anyway, if most of the community members want to include machine <br>
> translation, it is possible to improve the slicing program, to <br>
> generate a PO file with the results of machine translation.<br>
> <br>
> Reference <br>
> -------------------<br>
> Table 1 - Compare of Launchpad and Transifex </font></tt><br>
<tt><font size="2">> <br>
> [image removed] </font></tt><br>
<tt><font size="2">> <br>
> Launchpad</font></tt><br>
<tt><font size="2">> <br>
> Transifex</font></tt><br>
<tt><font size="2">> <br>
> Supported format</font></tt><br>
<tt><font size="2">> <br>
> pot file (.pot), <br>
> po file (.po)</font></tt><br>
<tt><font size="2">> <br>
> android string resources (.xml), <br>
> po file (.po), <br>
> html (.html), <br>
> WIKI file (.wiki), etc.<br>
> (Note, DocBook is not a supported file format; OpenStack Wiki format<br>
> is not a supported wiki format.)</font></tt><br>
<tt><font size="2">> <br>
> DocBook Slicing support</font></tt><br>
<tt><font size="2">> <br>
> No</font></tt><br>
<tt><font size="2">> <br>
> No </font></tt><br>
<tt><font size="2">> <br>
> Converging support</font></tt><br>
<tt><font size="2">> <br>
> No</font></tt><br>
<tt><font size="2">> <br>
> No</font></tt><br>
<tt><font size="2">> <br>
> Source uploading method</font></tt><br>
<tt><font size="2">> <br>
> Two methods:<br>
> a> Automatic template imports from Bazaar branch<br>
> b> Manually upload template (or an archive) through Launchpad's web interface.</font></tt><br>
<tt><font size="2">> <br>
> Two methods:<br>
> a> Use a command tool “Transifex Client” to synchronize the server <br>
> with local repository (local folder) by typing several commands.<br>
> b> Manually upload a source translation file from web interface;</font></tt><br>
<tt><font size="2">> <br>
> Output downloading method</font></tt><br>
<tt><font size="2">> <br>
> Two methods:<br>
> a> Automatic save output files to Bazaar branch;<br>
> b> Manually download output files through web interface.</font></tt><br>
<tt><font size="2">> <br>
> Two methods:<br>
> a> Use “Transifex Client” to download the latest translations from <br>
> the server by typing one command.<br>
> b> Manually download through web interface.</font></tt><br>
<tt><font size="2">> <br>
> Translation Memory support</font></tt><br>
<tt><font size="2">> <br>
> The exact same translation items in other projects can be listed as <br>
> a reference.</font></tt><br>
<tt><font size="2">> <br>
> The similar translation items will be listed as a reference. <br>
> Translation memory can be shared within two and more projects. </font></tt><br>
<tt><font size="2">> <br>
> Translation history support</font></tt><br>
<tt><font size="2">> <br>
> Yes</font></tt><br>
<tt><font size="2">> <br>
> Yes</font></tt><br>
<tt><font size="2">> <br>
> Change management</font></tt><br>
<tt><font size="2">> <br>
> Launchpad will automatically update its data every time you push a <br>
> new revision to the Bazaar branch.</font></tt><br>
<tt><font size="2">> <br>
> When you push some local updates to server, Transifex will overwrite<br>
> the existing source strings and translations with the updated version. <br>
> (Note: This may lead to loss of translations. So users need to make <br>
> sure the local repository contains the latest translation results in<br>
> the server.)</font></tt><br>
<tt><font size="2">> <br>
> Translation Dictionary</font></tt><br>
<tt><font size="2">> <br>
> No</font></tt><br>
<tt><font size="2">> <br>
> No</font></tt><br>
<tt><font size="2">> <br>
> <br>
> Table 2 - Workload compare when using Launchpad or Transifex for <br>
> DocBook translation </font></tt><br>
<tt><font size="2">> <br>
> [image removed] </font></tt><br>
<tt><font size="2">> <br>
> Using Launchpad</font></tt><br>
<tt><font size="2">> <br>
> Using Transifex</font></tt><br>
<tt><font size="2">> <br>
> Step 1: Slicing</font></tt><br>
<tt><font size="2">> <br>
> Python program [1] can be used to slice all the DocBook together in <br>
> one command</font></tt><br>
<tt><font size="2">> <br>
> Same with Launchpad</font></tt><br>
<tt><font size="2">> <br>
> Step 2: Uploading</font></tt><br>
<tt><font size="2">> <br>
> If the source code is synchronized with Bazaar, the uploading can be<br>
> automatically handled by Launchpad.</font></tt><br>
<tt><font size="2">> <br>
> Use “Transifex Client” to upload resources to Transifex server from <br>
> local repository (local folder) by typing several commands.</font></tt><br>
<tt><font size="2">> <br>
> Step 3: Downloading</font></tt><br>
<tt><font size="2">> <br>
> Launchpad can commit daily snapshots of the translations to a Bazaar<br>
> branch in a specific folder.</font></tt><br>
<tt><font size="2">> <br>
> Use “Transifex Client” to download the latest translations from the <br>
> server by typing one command.</font></tt><br>
<tt><font size="2">> <br>
> Step 4: Converging</font></tt><br>
<tt><font size="2">> <br>
> Python program [2] can be used to coverge all the po files back to DocBooks</font></tt><br>
<tt><font size="2">> <br>
> Same with Launchpad</font></tt><br>
<tt><font size="2">> <br>
> Step 5: Generating</font></tt><br>
<tt><font size="2">> <br>
> Maven command can be used to generate HTML/PDF from DocBooks</font></tt><br>
<tt><font size="2">> <br>
> Same with Launchpad</font></tt><br>
<tt><font size="2">> <br>
> [1] The Python program can be written based on “xml2po” to slice all<br>
> DocBooks of the manuals project to translatable strings in batch. <br>
> “xml2po” is an existing Python program in GNOME gnome-doc-utils <br>
> package which can extracts translatable content from free-form XML <br>
> documents and outputs gettext compatible POT files.<br>
> [2] The Python program can be written based on “xml2po”, to converge<br>
> the translated strings back to copies of DocBooks in batch.<br>
> <br>
> <br>
> Regards<br>
> Daisy Guo</font></tt><br>
<tt><font size="2">> <br>
> _______________________________________________<br>
> Mailing list: <a href="https://launchpad.net/~openstack">https://launchpad.net/~openstack</a><br>
> Post to     : openstack@lists.launchpad.net<br>
> Unsubscribe : <a href="https://launchpad.net/~openstack">https://launchpad.net/~openstack</a><br>
> More help   : <a href="https://help.launchpad.net/ListHelp">https://help.launchpad.net/ListHelp</a><br>
</font></tt></body></html>