* util/grub-mkconfig_lib.in (gettext_quoted): Add clarifying

comment.  Add an extra layer of quotation, requiring the output of
this function to be used in a printf format string.
(gettext_printf): New function.
* util/grub.d/10_hurd.in: Use gettext_printf where appropriate.
Extract translatable strings from here-documents and use a temporary
variable instead, so that xgettext can find them.
* util/grub.d/10_kfreebsd.in: Likewise.
* util/grub.d/10_linux.in: Likewise.
* util/grub.d/20_linux_xen.in: Likewise.

* po/grub.d.sed: New file.
* po/Makefile.in.in ($(DOMAIN).pot-update): Extract gettext_printf
arguments.  Set c-format flags on all strings extracted from
util/grub.d/ (xgettext refuses to include these itself for strings
it extracted from a shell file, but these really are c-format).
This commit is contained in:
Colin Watson 2010-12-21 12:49:29 +00:00
parent 5318fe9804
commit 4e01b6c821
8 changed files with 58 additions and 12 deletions

View file

@ -1,3 +1,22 @@
2010-12-21 Colin Watson <cjwatson@ubuntu.com>
* util/grub-mkconfig_lib.in (gettext_quoted): Add clarifying
comment. Add an extra layer of quotation, requiring the output of
this function to be used in a printf format string.
(gettext_printf): New function.
* util/grub.d/10_hurd.in: Use gettext_printf where appropriate.
Extract translatable strings from here-documents and use a temporary
variable instead, so that xgettext can find them.
* util/grub.d/10_kfreebsd.in: Likewise.
* util/grub.d/10_linux.in: Likewise.
* util/grub.d/20_linux_xen.in: Likewise.
* po/grub.d.sed: New file.
* po/Makefile.in.in ($(DOMAIN).pot-update): Extract gettext_printf
arguments. Set c-format flags on all strings extracted from
util/grub.d/ (xgettext refuses to include these itself for strings
it extracted from a shell file, but these really are c-format).
2010-12-20 Vladimir Serbinenko <phcoder@gmail.com> 2010-12-20 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/loader/i386/multiboot_mbi.c (grub_multiboot_add_module): * grub-core/loader/i386/multiboot_mbi.c (grub_multiboot_add_module):

View file

@ -173,7 +173,8 @@ $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in $(srcdir)/POTFILES-shell
--files-from=$(srcdir)/POTFILES-shell.in \ --files-from=$(srcdir)/POTFILES-shell.in \
--copyright-holder='$(COPYRIGHT_HOLDER)' \ --copyright-holder='$(COPYRIGHT_HOLDER)' \
--msgid-bugs-address="$$msgid_bugs_address" \ --msgid-bugs-address="$$msgid_bugs_address" \
--join-existing --language=Shell --keyword=gettext_quoted \ --join-existing --language=Shell \
--keyword=gettext_quoted --keyword=gettext_printf \
;; \ ;; \
*) \ *) \
$(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
@ -183,10 +184,13 @@ $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in $(srcdir)/POTFILES-shell
--package-name="$${package_gnu}@PACKAGE@" \ --package-name="$${package_gnu}@PACKAGE@" \
--package-version='@VERSION@' \ --package-version='@VERSION@' \
--msgid-bugs-address="$$msgid_bugs_address" \ --msgid-bugs-address="$$msgid_bugs_address" \
--join-existing --language=Shell --keyword=gettext_quoted \ --join-existing --language=Shell \
--keyword=gettext_quoted --keyword=gettext_printf \
;; \ ;; \
esac esac
test ! -f $(DOMAIN).po || { \ test ! -f $(DOMAIN).po || { \
sed -f grub.d.sed < $(DOMAIN).po > $(DOMAIN).1po && \
mv $(DOMAIN).1po $(DOMAIN).po; \
if test -f $(srcdir)/$(DOMAIN).pot; then \ if test -f $(srcdir)/$(DOMAIN).pot; then \
sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \

2
po/grub.d.sed Normal file
View file

@ -0,0 +1,2 @@
/^#: util\/grub\.d\//a\
#, c-format

View file

@ -187,8 +187,20 @@ version_find_latest ()
echo "$a" echo "$a"
} }
# One layer of quotation is eaten by "", the second by sed, and the third by
# printf; so this turns ' into \'. Note that you must use the output of
# this function in a printf format string.
gettext_quoted () { gettext_quoted () {
$gettext "$@" | sed "s/'/'\\\\''/g" $gettext "$@" | sed "s/'/'\\\\\\\\''/g"
}
# Run the first argument through gettext_quoted, and then pass that and all
# remaining arguments to printf. This is a useful abbreviation and tends to
# be easier to type.
gettext_printf () {
local format="$1"
shift
printf "$(gettext_quoted "$format")" "$@"
} }
uses_abstraction () { uses_abstraction () {

View file

@ -81,14 +81,16 @@ do
menuentry "${OS} ${KERNEL}" ${CLASS} { menuentry "${OS} ${KERNEL}" ${CLASS} {
EOF EOF
prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/" prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/"
message="$(gettext_printf "Loading GNU Mach ...")"
cat << EOF cat << EOF
echo '$(gettext_quoted "Loading GNU Mach ...")' echo '$message'
multiboot ${kernel} root=device:${GRUB_DEVICE#/dev/} multiboot ${kernel} root=device:${GRUB_DEVICE#/dev/}
EOF EOF
save_default_entry | sed -e "s/^/\t/" save_default_entry | sed -e "s/^/\t/"
prepare_grub_to_access_device ${GRUB_DEVICE} | sed -e "s/^/\t/" prepare_grub_to_access_device ${GRUB_DEVICE} | sed -e "s/^/\t/"
message="$(gettext_printf "Loading the Hurd ...")"
cat << EOF cat << EOF
echo '$(gettext_quoted "Loading the Hurd ...")' echo '$message'
module /hurd/${hurd_fs}.static ${hurd_fs} --readonly \\ module /hurd/${hurd_fs}.static ${hurd_fs} --readonly \\
--multiboot-command-line='\${kernel-command-line}' \\ --multiboot-command-line='\${kernel-command-line}' \\
--host-priv-port='\${host-port}' \\ --host-priv-port='\${host-port}' \\
@ -103,13 +105,15 @@ EOF
menuentry "${OS} ${KERNEL} (recovery mode)" ${CLASS} { menuentry "${OS} ${KERNEL} (recovery mode)" ${CLASS} {
EOF EOF
prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/" prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/"
message="$(gettext_printf "Loading GNU Mach ...")"
cat << EOF cat << EOF
echo '$(gettext_quoted "Loading GNU Mach ...")' echo '$message'
multiboot ${kernel} root=device:${GRUB_DEVICE#/dev/} -s multiboot ${kernel} root=device:${GRUB_DEVICE#/dev/} -s
EOF EOF
prepare_grub_to_access_device ${GRUB_DEVICE} | sed -e "s/^/\t/" prepare_grub_to_access_device ${GRUB_DEVICE} | sed -e "s/^/\t/"
message="$(gettext_printf "Loading the Hurd ...")"
cat << EOF cat << EOF
echo '$(gettext_quoted "Loading the Hurd ...")' echo '$message'
module /hurd/${hurd_fs}.static ${hurd_fs} \\ module /hurd/${hurd_fs}.static ${hurd_fs} \\
--multiboot-command-line='\${kernel-command-line}' \\ --multiboot-command-line='\${kernel-command-line}' \\
--host-priv-port='\${host-port}' \\ --host-priv-port='\${host-port}' \\

View file

@ -84,8 +84,9 @@ kfreebsd_entry ()
fi fi
printf '%s\n' "${prepare_boot_cache}" printf '%s\n' "${prepare_boot_cache}"
message="$(gettext_printf "Loading kernel of FreeBSD %s ..." ${version})"
cat << EOF cat << EOF
echo '$(printf "$(gettext_quoted "Loading kernel of FreeBSD %s ...")" ${version})' echo '$message'
kfreebsd ${rel_dirname}/${basename} ${args} kfreebsd ${rel_dirname}/${basename} ${args}
EOF EOF

View file

@ -94,13 +94,15 @@ EOF
prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/")" prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/")"
fi fi
printf '%s\n' "${prepare_boot_cache}" printf '%s\n' "${prepare_boot_cache}"
message="$(gettext_printf "Loading Linux %s ..." ${version})"
cat << EOF cat << EOF
echo '$(printf "$(gettext_quoted "Loading Linux %s ...")" ${version})' echo '$message'
linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
EOF EOF
if test -n "${initrd}" ; then if test -n "${initrd}" ; then
message="$(gettext_printf "Loading initial ramdisk ...")"
cat << EOF cat << EOF
echo '$(gettext_quoted "Loading initial ramdisk ...")' echo '$message'
initrd ${rel_dirname}/${initrd} initrd ${rel_dirname}/${initrd}
EOF EOF
fi fi

View file

@ -73,14 +73,16 @@ linux_entry ()
prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/")" prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/")"
fi fi
printf '%s\n' "${prepare_boot_cache}" printf '%s\n' "${prepare_boot_cache}"
message="$(gettext_printf "Loading Linux %s ..." ${version})"
cat << EOF cat << EOF
echo '$(printf "$(gettext_quoted "Loading Linux %s ...")" ${version})' echo '$message'
multiboot ${rel_xen_dirname}/${xen_basename} placeholder ${xen_args} multiboot ${rel_xen_dirname}/${xen_basename} placeholder ${xen_args}
module ${rel_dirname}/${basename} placeholder root=${linux_root_device_thisversion} ro ${args} module ${rel_dirname}/${basename} placeholder root=${linux_root_device_thisversion} ro ${args}
EOF EOF
if test -n "${initrd}" ; then if test -n "${initrd}" ; then
message="$(gettext_printf "Loading initial ramdisk ...")"
cat << EOF cat << EOF
echo '$(gettext_quoted "Loading initial ramdisk ...")' echo '$message'
module ${rel_dirname}/${initrd} module ${rel_dirname}/${initrd}
EOF EOF
fi fi