Le mardi 14 décembre 2010 21:03:26, Laurent Léonard a écrit : > 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. "eval_gettext" works with Bash and Dash if we add . /usr/bin/gettext.sh in the script. So "eval_gettext" seems to be the right way... -- Laurent Léonard -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list