diff options
author | Alan Modra <amodra@gmail.com> | 2017-11-06 15:20:00 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2017-11-07 15:52:52 +1030 |
commit | 6003e27e764ff62c1269a3ac6b5806b3fa3a1740 (patch) | |
tree | 125e03b0bdd66e466783db8e792950967b245232 | |
parent | 84d5321fdfdc5c086734f441fb31fa9ace2e86aa (diff) | |
download | gdb-6003e27e764ff62c1269a3ac6b5806b3fa3a1740.zip gdb-6003e27e764ff62c1269a3ac6b5806b3fa3a1740.tar.gz gdb-6003e27e764ff62c1269a3ac6b5806b3fa3a1740.tar.bz2 |
ngettext support
binutils has lacked proper pluralization of output messages for a long
time, for example, readelf will display information about a section
that "contains 1 entries" or "There are 1 section headers". Fixing
this properly requires us to use ngettext, because other languages
have different rules to English.
This patch defines macros for ngettext and friends to handle builds
with --disable-nls, and tidies the existing nls support. I've
redefined gettext rather than just defining "_" as dgettext in bfd and
opcodes in case someone wants to use gettext there (which might
conceivably happen with generated code).
bfd/
* sysdep.h: Formatting, comment fixes.
(gettext, ngettext): Redefine when ENABLE_NLS.
(ngettext, dngettext, dcngettext): Define when !ENABLE_NLS.
(_): Define using gettext.
(textdomain, bindtextdomain): Use safer "do nothing".
* hosts/alphavms.h (textdomain, bindtextdomain): Likewise.
(ngettext, dngettext, dcngettext): Define when !ENABLE_NLS.
opcodes/
* opintl.h: Formatting, comment fixes.
(gettext, ngettext): Redefine when ENABLE_NLS.
(ngettext, dngettext, dcngettext): Define when !ENABLE_NLS.
(_): Define using gettext.
(textdomain, bindtextdomain): Use safer "do nothing".
binutils/
* sysdep.h (textdomain, bindtextdomain): Use safer "do nothing".
(ngettext, dngettext, dcngettext): Define when !ENABLE_NLS.
gas/
* asintl.h (textdomain, bindtextdomain): Use safer "do nothing".
(ngettext, dngettext, dcngettext): Define when !ENABLE_NLS.
gold/
* system.h (textdomain, bindtextdomain): Use safer "do nothing".
(ngettext, dngettext, dcngettext): Define when !ENABLE_NLS.
ld/
* ld.h (textdomain, bindtextdomain): Use safer "do nothing".
(ngettext, dngettext, dcngettext): Define when !ENABLE_NLS.
-rw-r--r-- | bfd/ChangeLog | 10 | ||||
-rw-r--r-- | bfd/hosts/alphavms.h | 10 | ||||
-rw-r--r-- | bfd/sysdep.h | 54 | ||||
-rw-r--r-- | binutils/ChangeLog | 5 | ||||
-rw-r--r-- | binutils/sysdep.h | 10 | ||||
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/asintl.h | 10 | ||||
-rw-r--r-- | gold/ChangeLog | 5 | ||||
-rw-r--r-- | gold/system.h | 10 | ||||
-rw-r--r-- | ld/ChangeLog | 5 | ||||
-rw-r--r-- | ld/ld.h | 10 | ||||
-rw-r--r-- | opcodes/ChangeLog | 8 | ||||
-rw-r--r-- | opcodes/opintl.h | 43 |
13 files changed, 138 insertions, 47 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 2362ca0..705179a 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,13 @@ +2017-11-07 Alan Modra <amodra@gmail.com> + + * sysdep.h: Formatting, comment fixes. + (gettext, ngettext): Redefine when ENABLE_NLS. + (ngettext, dngettext, dcngettext): Define when !ENABLE_NLS. + (_): Define using gettext. + (textdomain, bindtextdomain): Use safer "do nothing". + * hosts/alphavms.h (textdomain, bindtextdomain): Likewise. + (ngettext, dngettext, dcngettext): Define when !ENABLE_NLS. + 2017-11-05 Alan Modra <amodra@gmail.com> PR 22397 diff --git a/bfd/hosts/alphavms.h b/bfd/hosts/alphavms.h index 3acdd51..9e61c45 100644 --- a/bfd/hosts/alphavms.h +++ b/bfd/hosts/alphavms.h @@ -56,7 +56,13 @@ extern char *stpcpy (char *, const char *); #define gettext(Msgid) (Msgid) #define dgettext(Domainname, Msgid) (Msgid) #define dcgettext(Domainname, Msgid, Category) (Msgid) -#define textdomain(Domainname) while (0) /* nothing */ -#define bindtextdomain(Domainname, Dirname) while (0) /* nothing */ +#define ngettext(Msgid1, Msgid2, n) \ + (n == 1 ? Msgid1 : Msgid2) +#define dngettext(Domainname, Msgid1, Msgid2, n) \ + (n == 1 ? Msgid1 : Msgid2) +#define dcngettext(Domainname, Msgid1, Msgid2, n, Category) \ + (n == 1 ? Msgid1 : Msgid2) +#define textdomain(Domainname) do {} while (0) +#define bindtextdomain(Domainname, Dirname) do {} while (0) #define _(String) (String) #define N_(String) (String) diff --git a/bfd/sysdep.h b/bfd/sysdep.h index 6906da9..596850a 100644 --- a/bfd/sysdep.h +++ b/bfd/sysdep.h @@ -181,31 +181,43 @@ size_t strnlen (const char *, size_t); #endif #ifdef ENABLE_NLS -#include <libintl.h> -/* Note the use of dgetext() and PACKAGE here, rather than gettext(). - - This is because the code in this directory is used to build a library which - will be linked with code in other directories to form programs. We want to - maintain a seperate translation file for this directory however, rather - than being forced to merge it with that of any program linked to libbfd. - This is a library, so it cannot depend on the catalog currently loaded. - - In order to do this, we have to make sure that when we extract messages we - use the OPCODES domain rather than the domain of the program that included - the bfd library, (eg OBJDUMP). Hence we use dgettext (PACKAGE, String) - and define PACKAGE to be 'bfd'. (See the code in configure). */ -#define _(String) dgettext (PACKAGE, String) -#ifdef gettext_noop -#define N_(String) gettext_noop (String) -#else -#define N_(String) (String) -#endif +# include <libintl.h> +/* Note the redefinition of gettext and ngettext here to use PACKAGE. + + This is because the code in this directory is used to build a + library which will be linked with code in other directories to form + programs. We want to maintain a seperate translation file for this + directory however, rather than being forced to merge it with that + of any program linked to libbfd. This is a library, so it cannot + depend on the catalog currently loaded. + + In order to do this, we have to make sure that when we extract + messages we use the BFD domain rather than the domain of the + program that included the bfd library, (eg OBJDUMP). Hence we use + dgettext (PACKAGE, String) and define PACKAGE to be 'bfd'. + (See the code in configure). */ +# undef gettext +# define gettext(Msgid) dgettext (PACKAGE, Msgid) +# undef ngettext +# define ngettext(Msgid1, Msgid2, n) dngettext (PACKAGE, Msgid1, Msgid2, n) +# define _(String) gettext (String) +# ifdef gettext_noop +# define N_(String) gettext_noop (String) +# else +# define N_(String) (String) +# endif #else # define gettext(Msgid) (Msgid) # define dgettext(Domainname, Msgid) (Msgid) # define dcgettext(Domainname, Msgid, Category) (Msgid) -# define textdomain(Domainname) while (0) /* nothing */ -# define bindtextdomain(Domainname, Dirname) while (0) /* nothing */ +# define ngettext(Msgid1, Msgid2, n) \ + (n == 1 ? Msgid1 : Msgid2) +# define dngettext(Domainname, Msgid1, Msgid2, n) \ + (n == 1 ? Msgid1 : Msgid2) +# define dcngettext(Domainname, Msgid1, Msgid2, n, Category) \ + (n == 1 ? Msgid1 : Msgid2) +# define textdomain(Domainname) do {} while (0) +# define bindtextdomain(Domainname, Dirname) do {} while (0) # define _(String) (String) # define N_(String) (String) #endif diff --git a/binutils/ChangeLog b/binutils/ChangeLog index ede6102..caf17a9 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2017-11-07 Alan Modra <amodra@gmail.com> + + * sysdep.h (textdomain, bindtextdomain): Use safer "do nothing". + (ngettext, dngettext, dcngettext): Define when !ENABLE_NLS. + 2017-11-03 Claudiu Zissulescu <claziss@synopsys.com> * doc/binutils.texi (ARC): Update disassembler options. diff --git a/binutils/sysdep.h b/binutils/sysdep.h index 3a89f92..72ad8b7 100644 --- a/binutils/sysdep.h +++ b/binutils/sysdep.h @@ -159,8 +159,14 @@ size_t strnlen (const char *, size_t); # define gettext(Msgid) (Msgid) # define dgettext(Domainname, Msgid) (Msgid) # define dcgettext(Domainname, Msgid, Category) (Msgid) -# define textdomain(Domainname) while (0) /* nothing */ -# define bindtextdomain(Domainname, Dirname) while (0) /* nothing */ +# define ngettext(Msgid1, Msgid2, n) \ + (n == 1 ? Msgid1 : Msgid2) +# define dngettext(Domainname, Msgid1, Msgid2, n) \ + (n == 1 ? Msgid1 : Msgid2) +# define dcngettext(Domainname, Msgid1, Msgid2, n, Category) \ + (n == 1 ? Msgid1 : Msgid2) +# define textdomain(Domainname) do {} while (0) +# define bindtextdomain(Domainname, Dirname) do {} while (0) # define _(String) (String) # define N_(String) (String) #endif diff --git a/gas/ChangeLog b/gas/ChangeLog index b48302d..7ad6938 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2017-11-07 Alan Modra <amodra@gmail.com> + + * asintl.h (textdomain, bindtextdomain): Use safer "do nothing". + (ngettext, dngettext, dcngettext): Define when !ENABLE_NLS. + 2017-11-03 Siddhesh Poyarekar <siddhesh.poyarekar@linaro.org> Jim Wilson <jim.wilson@linaro.org> diff --git a/gas/asintl.h b/gas/asintl.h index 151ac37..e80c5d2 100644 --- a/gas/asintl.h +++ b/gas/asintl.h @@ -45,8 +45,14 @@ # define gettext(Msgid) (Msgid) # define dgettext(Domainname, Msgid) (Msgid) # define dcgettext(Domainname, Msgid, Category) (Msgid) -# define textdomain(Domainname) while (0) /* nothing */ -# define bindtextdomain(Domainname, Dirname) while (0) /* nothing */ +# define ngettext(Msgid1, Msgid2, n) \ + (n == 1 ? Msgid1 : Msgid2) +# define dngettext(Domainname, Msgid1, Msgid2, n) \ + (n == 1 ? Msgid1 : Msgid2) +# define dcngettext(Domainname, Msgid1, Msgid2, n, Category) \ + (n == 1 ? Msgid1 : Msgid2) +# define textdomain(Domainname) do {} while (0) +# define bindtextdomain(Domainname, Dirname) do {} while (0) # define _(String) (String) # define N_(String) (String) #endif diff --git a/gold/ChangeLog b/gold/ChangeLog index 4ab533d..2d0ae45 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,8 @@ +2017-11-07 Alan Modra <amodra@gmail.com> + + * system.h (textdomain, bindtextdomain): Use safer "do nothing". + (ngettext, dngettext, dcngettext): Define when !ENABLE_NLS. + 2017-10-25 Alan Modra <amodra@gmail.com> * symtab.cc (Symbol_table::add_from_relobj): Match "__gnu_lto_slim" diff --git a/gold/system.h b/gold/system.h index 5a3e001..1c21ee1 100644 --- a/gold/system.h +++ b/gold/system.h @@ -49,8 +49,14 @@ # define gettext(Msgid) (Msgid) # define dgettext(Domainname, Msgid) (Msgid) # define dcgettext(Domainname, Msgid, Category) (Msgid) -# define textdomain(Domainname) do {} while (0) /* nothing */ -# define bindtextdomain(Domainname, Dirname) do {} while (0) /* nothing */ +# define ngettext(Msgid1, Msgid2, n) \ + (n == 1 ? Msgid1 : Msgid2) +# define dngettext(Domainname, Msgid1, Msgid2, n) \ + (n == 1 ? Msgid1 : Msgid2) +# define dcngettext(Domainname, Msgid1, Msgid2, n, Category) \ + (n == 1 ? Msgid1 : Msgid2) +# define textdomain(Domainname) do {} while (0) +# define bindtextdomain(Domainname, Dirname) do {} while (0) # define _(String) (String) # define N_(String) (String) #endif diff --git a/ld/ChangeLog b/ld/ChangeLog index bdc98d6..48d771f 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,8 @@ +2017-11-07 Alan Modra <amodra@gmail.com> + + * ld.h (textdomain, bindtextdomain): Use safer "do nothing". + (ngettext, dngettext, dcngettext): Define when !ENABLE_NLS. + 2017-11-01 Alan Modra <amodra@gmail.com> * testsuite/ld-powerpc/ambiguousv2.d: Remove FIXME. @@ -55,8 +55,14 @@ # define gettext(Msgid) (Msgid) # define dgettext(Domainname, Msgid) (Msgid) # define dcgettext(Domainname, Msgid, Category) (Msgid) -# define textdomain(Domainname) while (0) /* nothing */ -# define bindtextdomain(Domainname, Dirname) while (0) /* nothing */ +# define ngettext(Msgid1, Msgid2, n) \ + (n == 1 ? Msgid1 : Msgid2) +# define dngettext(Domainname, Msgid1, Msgid2, n) \ + (n == 1 ? Msgid1 : Msgid2) +# define dcngettext(Domainname, Msgid1, Msgid2, n, Category) \ + (n == 1 ? Msgid1 : Msgid2) +# define textdomain(Domainname) do {} while (0) +# define bindtextdomain(Domainname, Dirname) do {} while (0) # define _(String) (String) # define N_(String) (String) #endif diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index ecf548d..7107ee6 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,11 @@ +2017-11-07 Alan Modra <amodra@gmail.com> + + * opintl.h: Formatting, comment fixes. + (gettext, ngettext): Redefine when ENABLE_NLS. + (ngettext, dngettext, dcngettext): Define when !ENABLE_NLS. + (_): Define using gettext. + (textdomain, bindtextdomain): Use safer "do nothing". + 2017-11-03 Claudiu Zissulescu <claziss@synopsys.com> * arc-dis.c (print_hex): New variable. diff --git a/opcodes/opintl.h b/opcodes/opintl.h index 18d0548..0db8dd9 100644 --- a/opcodes/opintl.h +++ b/opcodes/opintl.h @@ -22,20 +22,25 @@ #ifdef ENABLE_NLS # include <libintl.h> -/* Note the use of dgetext() and PACKAGE here, rather than gettext(). - - This is because the code in this directory is used to build a library which - will be linked with code in other directories to form programs. We want to - maintain a seperate translation file for this directory however, rather - than being forced to merge it with that of any program linked to - libopcodes. This is a library, so it cannot depend on the catalog - currently loaded. - - In order to do this, we have to make sure that when we extract messages we - use the OPCODES domain rather than the domain of the program that included - the opcodes library, (eg OBJDUMP). Hence we use dgettext (PACKAGE, String) - and define PACKAGE to be 'opcodes'. (See the code in configure). */ -# define _(String) dgettext (PACKAGE, String) +/* Note the redefinition of gettext and ngettext here to use PACKAGE. + + This is because the code in this directory is used to build a + library which will be linked with code in other directories to form + programs. We want to maintain a seperate translation file for this + directory however, rather than being forced to merge it with that + of any program linked to libopcodes. This is a library, so it + cannot depend on the catalog currently loaded. + + In order to do this, we have to make sure that when we extract + messages we use the OPCODES domain rather than the domain of the + program that included the opcodes library, (eg OBJDUMP). Hence we + use dgettext (PACKAGE, String) and define PACKAGE to be 'opcodes'. + (See the code in configure). */ +# undef gettext +# define gettext(Msgid) dgettext (PACKAGE, Msgid) +# undef ngettext +# define ngettext(Msgid1, Msgid2, n) dngettext (PACKAGE, Msgid1, Msgid2, n) +# define _(String) gettext (String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else @@ -45,8 +50,14 @@ # define gettext(Msgid) (Msgid) # define dgettext(Domainname, Msgid) (Msgid) # define dcgettext(Domainname, Msgid, Category) (Msgid) -# define textdomain(Domainname) while (0) /* nothing */ -# define bindtextdomain(Domainname, Dirname) while (0) /* nothing */ +# define ngettext(Msgid1, Msgid2, n) \ + (n == 1 ? Msgid1 : Msgid2) +# define dngettext(Domainname, Msgid1, Msgid2, n) \ + (n == 1 ? Msgid1 : Msgid2) +# define dcngettext(Domainname, Msgid1, Msgid2, n, Category) \ + (n == 1 ? Msgid1 : Msgid2) +# define textdomain(Domainname) do {} while (0) +# define bindtextdomain(Domainname, Dirname) do {} while (0) # define _(String) (String) # define N_(String) (String) #endif |