Finally we found the best way for us.
We have strings like
sprintf("Hi %s this %s you %s %s %s %s", $name, $action, $number, $color, $object);
Then we can change de vars position like this
sprintf("Hi %1$s this %2$s you %3$s %4$s %5$s %6$s", $name, $action, $number, $color, $object); The translate team can change the position only changing the number
Then... the most important thing... tell to the translate team what are these variables... with a comment for gettext like...
<!-- //Hi translator... The variables are $name, $action, $number, $color, $object -->
sprintf(_('Hi %1$s this %2$s you %3$s %4$s %5$s %6$s'), $name, $action, $number, $color, $object);
Adding the option -c in xgettext line, you can put this comment INSIDE .po file, and this is the way we choice for work :)
I hope this be a great solution for you