Le mardi 14 décembre 2010 19:34:01, Eric Blake a écrit : > On 12/14/2010 10:58 AM, Laurent Léonard wrote: > >>> New patch 0010-Debianize-libvirt-guests.patch > >>> > >>> + if ! $configured; then > >>> +- echo $"Ignoring guests on $uri URI" > >>> ++ echo "Ignoring guests on $uri URI" > >> > >> It might make sense to introduce a function: > >> > >> libvirt_echo() { > >> > >> echo $"$@" > >> > >> } > >> > >> So that the lines above become: > >> if ! $configured; then > >> > >> libvirt_echo "Ignoring guests on $uri URI" > >> > >> If we get this integrated upstream we'd only have to patch a single > >> line which might future merging easier. We might even be able to either > >> pick $" or just " by looking at the shell used. > > > > What about that proposition ? > > Certainly it is better to go through a wrapper function, to minimize the > number of places where translation is attempted. And run-time detection > of which method to use seems easy enough; something like this (minimally > tested): > > if (LC_ALL=C; test $"x" = x); then > libvirt_echo() { > echo $"$1" > } > else > libvirt_echo() { > gettext "$1" > } > fi > > But there is still the issue of marking translated strings in such a way > that xgettext can find them. How do other debian-ized init scripts > handle this problem? Is there something in > $sysconfdir/rc.d/init.d/functions that is already common between distros > to aid in this effort? > > Oh, and this is interesting reading[1], since it claims the use of $"" > in bash is a security hole. Instead, the current gettext > recommendations for adding i18n to a shell script are to source the file > gettext.sh, set TEXTDOMAIN and TEXTDOMAINDIR, and use gettext(1) and > friends everywhere in the first place. But I didn't find out how > xgettext works on shell scripts (if it even can); xgettext -L doesn't > seem to support a shell-like language. I guess I'll ask for more advice > on the gettext mailing list. > > [1] http://www.gnu.org/software/gettext/manual/gettext.html#bash > > But if we go with the gettext advice of avoiding $"" altogether, then > there's no need to go through an intermediate function, and we should > instead mark every translated string by using gettext instead of echo. "xgettext -L Shell" prints the following warning message when using with a script that use the $"..." syntax: the syntax $"..." is deprecated due to security reasons; use eval_gettext instead "eval_gettext" seems to work like $"..." with Bash, but doesn't work with Dash... Indeed if we find a solution that works with Bash and Dash there is no need to go through an intermediate function. -- Laurent Léonard -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list