Thread (63 messages) read the whole thread 63 messages, 5 authors, 2016-06-15

Re: [PATCH 10/25] gettextize: git-merge basic messages

From: Jonathan Nieder <hidden>
Date: 2016-06-15 22:49:28

Ævar Arnfjörð Bjarmason wrote:
I can't see why translations in the tree (in po/) should be any
trouble at all for us. What sort of issues do you see that the sed.git
model might solve?
Only two: log noise and the problem of what to base patches on.

As you noticed while gettextizing (which is pretty much a one-time
thing), it is not much fun to do work on strings that aren't even
going to be used.  So translators might want to work against "next",
or at least "master".  How do the translations get back to "maint"?
Someone has to backport them.  What happens when we merge back to
"master"?

Now multiply that by the number of translations.  Making messages
merge up nicely with git tools as they drift from topic to topic if
translators want to keep both "maint" and "master" translated would
require at least a nice custom merge driver.  

As we noticed before, the .po files are partially automatically
generated anyway.  Merging them as text makes about as much sense
as merging Word-generated .rtf files as text.  To avoid wasting time,
one wants to be able to work with their _content_.

What is that content?

It is a set of key/value pairs: for each string that appears in
the codebase (maybe together with disambiguating translators' notes),
what the translation is for it.  Merging that between branches of the
code base is utterly trivial: take the union.  Actually "merging" as
an operation here does not make sense.  It is not tied to the
development history at all!

Imagine v6.0.0 of git has message "foo".  v6.0.1 changes it to "bar"
because "foo" is not actually true yet, v6.1.0 changes it back to
"foo".  Imagine a linear development history.  Do we want translation
diffs like this:

 commit v6.0.0

 +"foo" is "hello" in language X

 commit v6.0.1

 -"foo" is "hello" in language X
 +"bar" is "goodbye" in language X

 commit v6.1

 -"bar" is "goodbye" in language X
 +"foo" is "hello" in language X

?  But what really happened is this:

 - add foo:hello to translation database
 - add bar:goodbye to translation database

I have been thinking about how to write a merge driver for .po files
(and avoid the tedious merge problems that e.g. the dpkg project runs
into periodically) but the idea of avoiding that altogether is very
appealing to me.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help