On 06/04/2015 01:41 PM, KATO Tomoyuki wrote:
Hi team,
I'm translating User Guides (RST) recently. I found a below problem. Any thought?
Problem: Each message catalog "pot" file contains all strings of the RST document, including "common" files (glossary and so on). In particular, "user-guide" and "user-guide-admin" resource at Transifex have same strings in "common" files respectively. This causes unintended inconsistency of translation. In fact, Japanese "user-guide" and "user-guide-admin" have different translated strings, which need to sync manually.
Indeed this is not optimal yet.
Solution (just my idea): As is: 1. Sphinx(?) generates the "pot" file. 2. translate at Transifex. 3. Sphinx(?) merge the translated strings.
To be: 1. Sphinx(?) generates the "pot" file. 2. A new script split message stringss for "common". (maybe, based on "msgcat") So, generate 2 resources (main document resource and "common" resource). 3. translate at Transifex. 4. merge the 2 resources for Sphinx(?). 5. Sphinx(?) merge the translated strings.
Yes, translating the "common-rst" separate from user-guide and user-guide-admin (and other future RST guides) would be the better way forward but needs some scripting.
You need to enhance in openstack-doc-tools the file bin/doc-tools-check-languages and in openstack-manuals the file tools/generatepot-rst.sh.
If you like to tackle this, it would be appreciated and I'll give any help - just don't have time right now to work on this myself,
Feel free to ask any questions,
Hi Andreas, team, Here is a mockup about my idea. Make sense? ==== tools/generatepot-rst.sh in openstack-manuals ==== 33,62d32 < # Build common < # Delete Project-Id-Version to simplify output < sed -i -E 's/^"Project-Id-Version: [a-zA-Z0-9\. ]+\\n"$/"Project-Id-Version: \\n"/' \ < doc/$DOCNAME/source/locale/common.pot < # Create the common pot file < msgcat --sort-output doc/common-rst/locale/common.pot \ < doc/$DOCNAME/source/locale/common.pot | \ < sed -E 's/^"Project-Id-Version: [a-zA-Z0-9\. ]+\\n"$/"Project-Id-Version: \\n"/' | \ < awk '$0 !~ /^\# [a-z0-9]+$/' | awk '$0 !~ /^\# \#-\#-\#-\#-\# /' > doc/$DOCNAME/source/common.pot < mv -f doc/$DOCNAME/source/common.pot doc/common-rst/locale/common.pot < # Simplify metadata < rm -f doc/common-rst/locale/dummy.po < cat << EOF > doc/common-rst/locale/dummy.po < msgid "" < msgstr "" < "Project-Id-Version: \n" < "Report-Msgid-Bugs-To: \n" < "POT-Creation-Date: 2015-01-01 01:01+0900\n" < "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" < "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" < "Language-Team: LANGUAGE <LL@li.org>\n" < "MIME-Version: 1.0\n" < "Content-Type: text/plain; charset=UTF-8\n" < "Content-Transfer-Encoding: 8bit\n" < EOF < msgmerge -N doc/common-rst/locale/dummy.po \ < doc/common-rst/locale/common.pot > doc/common-rst/locale/tmp.pot < mv -f doc/common-rst/locale/tmp.pot doc/common-rst/locale/common.pot < rm -f doc/common-rst/locale/dummy.po ==== bin/doc-tools-check-languages in openstack-doc-tools ==== 52,57d51 < # merge the common po file < msgcat -o ${DOC_DIR}${book}/source/locale/${language}/${book}.po \ < ${DOC_DIR}common-rst/locale/${language}/LC_MESSAGES/common.po \ < ${DOC_DIR}${book}/source/locale/${language}/LC_MESSAGES/${book}.po < mv -f ${DOC_DIR}${book}/source/locale/${language}/${book}.po \ < ${DOC_DIR}${book}/source/locale/${language}/LC_MESSAGES/${book}.po ==== (other things) ==== push to and pull from Transifex: common-rst/locale/common.pot and each language po files Thanks, KATO Tomoyuki