On Thu, 2005-05-12 at 16:49 +0200, Francois Gouget wrote:
This patch adds the framework for translating Wine's documentation and adds a translation of the FAQ to French as a demonstration.
No compressed patches, please.
Also, the patch is big, and some things are cleaner than others. Let's break it down a bit.
Here is what the framework does:
- first it moves most of en/Makefile.in to Make.rules.in so that this
code can be shared across the various translations.
Well, the reason I didn't do that is for cases like incomplete translations.
We can move to Make.rules.in: -- DB2* defines -- the targets (docs, pdf, etc) -- the tar rules
The rest we can keep local, see how things evolve. We can always refactor it up.
- the actual translation is stored in a po file, one per documentation
document. So for French we currently have fr/wine-faq.po and later we will also have wineusr-guide.po and winelib-guide.po.
I'm not too hot about it to be honest. SGML is hard on the eye, this .po stuff seems to be even worse. But maybe it's easier to work with due to the various tools. If it makes it easier for you to maintain the translation, I'm cool with it. However, I'm not sure this will be the preferred way for all translators out there, so we shouldn't force it on everybody.
- Using po files lets us track exactly which translation paragraphs
are up to date and which are not. It also lets us leverage the tools that have been developed around that format such as KBabel and maybe even make it possible for contributors to translate the documentation online using tools like Pootle (http://pootle.wordforge.org/), Kartouche (http://i18n.kde.org/tools/kartouche/) or Rosetta (https://launchpad.ubuntu.com/rosetta).
This is great, but I doubt such tools can tell you *what* changed when something did change (the *what* here is "how did paragraph change")
- The link between the SGML files and the PO files and back is handled
by PO4A (http://po4a.alioth.debian.org/).
I'm a bit worried about this one. It's new, debian specific, etc. There's no .rpm for it, and that makes me nervous. Tools like this must be easily available.
Even if we go for it, maybe we'll have to keep the generated .sgml in CVS (just like configure).
- So configure.ac checks for the po4a tools. If they are missing then
the translated documentation cannot be built. I also added a Makepo.rules.in that should be used by Makefiles building translated documentation. What it does is just include the main Make.rules.in file and add a couple of rules for generating SGML using PO files, and extending the 'clean' target. This last bit cannot be put in the top-level Make.rules.in because it does '$(RM) $(ALLBOOKS:%=%.sgml)' which would be unfortunate in the en directory.
The $(RM)... can remain local, and the rules can go in Make.rules.in. It would be confusing to have too many rule files.
sed -e 's/^<\(article .*\) lang="en">$/<\1 lang="fr">/' -e 's/^<\(book .*\) lang="en">$/<\1 lang="fr">/' wine-faq.posgml >wine-faq.sgml || (rm -f wine-faq.sgml && false)
Nasty. BTW, the 'lang="en"' part of the patch can go in separately too.