Hello Remy,

Remy Blank wrote:
> A few recent changesets updated a translation at the same time as they
> made a change to a functionality. For example:
>
>   http://trac.edgewall.org/changeset/8918
>
> This has the disadvantage that the functionality change is "hidden" in
> the noise due to the many line number changes in the translation.
>   

Right, that's not ideal.

I nevertheless think it's a good idea to have in one changeset the 
original text change, an extraction and an update of at least one 
translation, because this validates the i18n "completeness" of the 
application, the same way we commit in the same changeset a functional 
change and the corresponding test (well, when we have a test ;-) ).

The problem with that approach, as you've found out, is that the actual 
changes are lost in the numerous line number changes in the .pot and .po 
files.

> Would it be possible to keep the updates to translations in separate
> changesets, so as to increase the signal-to-noise ratio on "functional"
> changesets?
>   

When you work on the i18n side, you also try to validate your changes to 
see how well they work out in a translation.
You have then this work sequence:

 1. edit .py/.html
 2. setup.py extract_messages => new trac/locale/messages.pot
 3. setup.py update_catalog => updated 
trac/locale/*/LC_MESSAGES/messages.po
 4. edit messages.po
 5. setup.py compile_catalog => trac/locale/*/LC_MESSAGES/messages.mo
 6. run tracd, test the change in browser

If you'd commit once after 1. (functional change), a second time after 
3. ("noisy" changeset) and a last time after 6. (translation change), 
then the situation would indeed be a bit better. On the plus side, you 
have the functional and translation changes in clean changesets, on the 
minus side, you still have the noisy changeset that you have to ignore 
and mentally skip, and you don't have the logical grouping of the text 
change with its i18n validation, as discussed previously.

The problem is that it rarely work out that way and a real workflow 
actually implies *several* iterations of steps 1. to 6., until the 
result is found to be satisfying. So you can work with MQ for example to 
manage patches for 1., 3. and 6., and that works but due to the nature 
of the second patch (i.e. produced by update_catalog), you more often 
than not end up with conflicts when pushing the translation patch. And 
that's painful, compared to simply working iteratively on the same 
all-in-one patch, in which case update_catalog (step 3.) is smart enough 
to merge the line number updates with the translations added or edited 
during step 4. of the previous iteration.

Another possibility would be to keep the all-in-one approach but before 
committing, doing a selective commit of only the "interesting chunks" 
(using qrecord). I think I'll try out this approach next time.

But the ideal solution would be to have the uninteresting changes (the 
line number noise) simply /hidden/ from the display, which will also 
solves the problem of the noisy changeset. And that's probably doable by 
implementing pluggable diff renderers (#53) and a special .pot/.po 
renderer which simply remove the line noise chunks from the diff output...

-- Christian

--

You received this message because you are subscribed to the Google Groups "Trac 
Development" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/trac-dev?hl=en.


Reply via email to