]> git.ipfire.org Git - thirdparty/gettext.git/commitdiff
Add support for Boost format strings.
authorBruno Haible <bruno@clisp.org>
Mon, 13 Feb 2006 13:16:48 +0000 (13:16 +0000)
committerBruno Haible <bruno@clisp.org>
Tue, 23 Jun 2009 10:13:00 +0000 (12:13 +0200)
17 files changed:
NEWS
gettext-tools/doc/ChangeLog
gettext-tools/doc/gettext.texi
gettext-tools/doc/xgettext.texi
gettext-tools/src/ChangeLog
gettext-tools/src/FILES
gettext-tools/src/Makefile.am
gettext-tools/src/Makefile.msvc
gettext-tools/src/Makefile.vms
gettext-tools/src/format.c
gettext-tools/src/format.h
gettext-tools/src/message.c
gettext-tools/src/message.h
gettext-tools/src/x-c.c
gettext-tools/src/xgettext.c
gettext-tools/tests/ChangeLog
gettext-tools/tests/Makefile.am

diff --git a/NEWS b/NEWS
index aafd5281e2055a99000254868d9c3a5d59e3d874..e664f58794ec01ae5d56ffb4aadad7062d46ee11 100644 (file)
--- a/NEWS
+++ b/NEWS
 
 * Programming languages support:
 
+  - C++ with Boost:
+    xgettext has a new option --boost that triggers the recognition and marking
+    of boost::format strings.
+
   - Python:
     xgettext now recognizes the source encoding from a "coding:" comment
     among the first two lines.  The default encoding is now ASCII, no longer
index 579a827d21cc5fa712a9c22c2195c858ba62b5bb..0ead319aa58c816386d64a8f303c6e57686dd550 100644 (file)
@@ -1,3 +1,9 @@
+2006-02-12  Bruno Haible  <bruno@clisp.org>
+
+       * gettext.texi (PO Files): Mention boost-format.
+       (boost-format): New subsection.
+       * xgettext.texi: Document --boost option.
+
 2005-11-29  Colin Watson  <cjwatson@ubuntu.com>
 
        * msggrep.texi: Document --invert-match option.
index 62a60aa8bd97ef587afe9888193692c084de5a29..9f2a8b21b2ad47aca6b16f97e9267abc9fb5e811 100644 (file)
@@ -361,6 +361,7 @@ The Translator's View
 * php-format::                  PHP Format Strings
 * gcc-internal-format::         GCC internal Format Strings
 * qt-format::                   Qt Format Strings
+* boost-format::                Boost Format Strings
 
 Individual Programming Languages
 
@@ -1301,6 +1302,12 @@ Likewise for the GCC sources, see @ref{gcc-internal-format}.
 @kwindex no-qt-format@r{ flag}
 Likewise for Qt, see @ref{qt-format}.
 
+@item boost-format
+@kwindex boost-format@r{ flag}
+@itemx no-boost-format
+@kwindex no-boost-format@r{ flag}
+Likewise for Boost, see @ref{boost-format}.
+
 @end table
 
 @kwindex msgctxt
@@ -7603,6 +7610,7 @@ strings.
 * php-format::                  PHP Format Strings
 * gcc-internal-format::         GCC internal Format Strings
 * qt-format::                   Qt Format Strings
+* boost-format::                Boost Format Strings
 @end menu
 
 @node c-format, objc-format, Translators for other Languages, Translators for other Languages
@@ -7811,7 +7819,7 @@ denotes a programming language, @samp{O} denotes a binary operator,
 @samp{P} denotes a function parameter, @samp{Q} denotes an assignment
 operator, @samp{V} denotes a const/volatile qualifier.
 
-@node qt-format,  , gcc-internal-format, Translators for other Languages
+@node qt-format, boost-format, gcc-internal-format, Translators for other Languages
 @subsection Qt Format Strings
 
 Qt format strings are described in the documentation of the QString class
@@ -7819,6 +7827,17 @@ Qt format strings are described in the documentation of the QString class
 In summary, a directive consists of a @samp{%} followed by a digit. The same
 directive cannot occur more than once in a format string.
 
+@node boost-format,  , qt-format, Translators for other Languages
+@subsection Boost Format Strings
+
+Boost format strings are described in the documentation of the
+@code{boost::format} class, at
+@uref{http://www.boost.org/libs/format/doc/format.html}.
+In summary, a directive has either the same syntax as in a C format string,
+such as @samp{%1$+5d}, or may be surrounded by vertical bars, such as
+@samp{%|1$+5d|} or @samp{%|1$+5|}, or consists of just an argument number
+between percent signs, such as @samp{%1%}.
+
 @node Maintainers for other Languages, List of Programming Languages, Translators for other Languages, Programming Languages
 @section The Maintainer's View
 
index 958db3dbbf61e9bb590e4263039df9c75925e890..46106bded20b9284cdbbb862a44bc92f0c1aa6de 100644 (file)
@@ -241,6 +241,13 @@ Recognize Qt format strings.
 @*
 This option has an effect only with the language C++.
 
+@item --boost
+@opindex --boost@r{, @code{xgettext} option}
+@cindex Boost format strings
+Recognize Boost format strings.
+@*
+This option has an effect only with the language C++.
+
 @item --debug
 @opindex --debug@r{, @code{xgettext} option}
 @cindex debugging messages marked as format strings
index 4ea7fce6a39bfe02b69a19930942896ae77d120c..6808edc63af05ed5adce12512e8c6c09e0da3f94 100644 (file)
@@ -1,3 +1,31 @@
+2006-02-12  Bruno Haible  <bruno@clisp.org>
+
+       * message.h (format_type): New enum value 'format_boost'.
+       (NFORMATS): Increment.
+       * message.c (format_language): Add format_boost entry.
+       (format_language_pretty): Likewise.
+       * format.h (formatstring_boost): New declaration.
+       * format-boost.c: New file, based on format-c.c.
+       * format.c (formatstring_parsers): Add formatstring_boost.
+       * x-c.c (init_flag_table_c): Also register flags for boost-format.
+       * xgettext.c (flag_table_cxx_qt, flag_table_cxx_boost): New variables.
+       (recognize_format_boost): New variable.
+       (main): Handle --boost option.
+       (usage): Document --boost option.
+       (xgettext_record_flag): Also fill flag_table_cxx_qt,
+       flag_table_cxx_boost.
+       (remember_a_message, remember_a_message_plural): In the heuristics,
+       don't mark a string as c-format that is already known to be a qt-format
+       or boost-format.
+       (language_to_extractor): Use a flag_table_cxx_qt or
+       flag_table_cxx_boost that is different from flag_table_c.
+       * Makefile.am (FORMAT_SOURCE): Add format-boost.c.
+       * Makefile.msvc (OBJECTS): Add format-boost.obj.
+       (format-boost.obj): New rule.
+       * Makefile.vms (OBJECTS): Add format-boost.obj.
+       (format-boost.obj): New rule.
+       * FILES: Update.
+
 2006-02-12  Bruno Haible  <bruno@clisp.org>
 
        * xgettext.c (xgettext_record_flag): When asked to set "qt-format",
index 3781aef392c2f9c69be4c5da06925d2ca133e26f..f9068c00f1a69ce2467bb1d7c69a4b5442ceb306 100644 (file)
@@ -207,6 +207,7 @@ format-perl-brace.c    Format string handling for Perl, braced syntax.
 format-php.c           Format string handling for PHP.
 format-gcc-internal.c  Format string handling GCC internal.
 format-qt.c            Format string handling for Qt.
+format-boost.c         Format string handling for Boost.
 format.c        Table of the language dependent format string handlers.
 
 plural-exp.c
index 3c4a075058300291fc56d2789ee975535240ae6a..a7267122d5ecd1d53d17de304ac496f400a9ed8b 100644 (file)
@@ -1,5 +1,5 @@
 ## Makefile for the gettext-tools/src subdirectory of GNU gettext
-## Copyright (C) 1995-1998, 2000-2005 Free Software Foundation, Inc.
+## Copyright (C) 1995-1998, 2000-2006 Free Software Foundation, Inc.
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -107,7 +107,7 @@ FORMAT_SOURCE = format.c format-invalid.h \
 format-c.c format-sh.c format-python.c format-lisp.c format-elisp.c \
 format-librep.c format-scheme.c format-java.c format-csharp.c format-awk.c \
 format-pascal.c format-ycp.c format-tcl.c format-perl.c format-perl-brace.c \
-format-php.c format-gcc-internal.c format-qt.c
+format-php.c format-gcc-internal.c format-qt.c format-boost.c
 
 # libgettextsrc contains all code that is needed by at least two programs.
 libgettextsrc_la_SOURCES = \
index 59926065651edeb5ff0ff3701b2c4579e1f86c4b..181680922179a11fa3677f2052688311127e1a2c 100644 (file)
@@ -148,7 +148,8 @@ OBJECTS = \
   format-perl-brace.obj \
   format-php.obj \
   format-gcc-internal.obj \
-  format-qt.obj
+  format-qt.obj \
+  format-boost.obj
 
 msgcmp_OBJECTS = msgcmp.obj
 msgfmt_OBJECTS = msgfmt.obj write-mo.obj write-java.obj write-csharp.obj write-resources.obj write-tcl.obj write-qt.obj plural-eval.obj hash-string.obj
@@ -305,6 +306,9 @@ format-gcc-internal.obj : format-gcc-internal.c
 format-qt.obj : format-qt.c
        $(CC) $(INCLUDES) $(CFLAGS) $(PICFLAGS) -c format-qt.c
 
+format-boost.obj : format-boost.c
+       $(CC) $(INCLUDES) $(CFLAGS) $(PICFLAGS) -c format-boost.c
+
 !if !$(DLL)
 
 gettextsrc.lib : $(OBJECTS)
index 2d3766c56359ac62c0ca2f5b668816eefdd43da3..eaee6a43f195b2f625fb8f9b8aa24ffee041abeb 100644 (file)
@@ -93,8 +93,9 @@ OBJECTS = \
   format-perl.obj, \
   format-perl-brace.obj, \
   format-php.obj, \
-  format-gcc-internal.obj \
-  format-qt.obj
+  format-gcc-internal.obj, \
+  format-qt.obj, \
+  format-boost.obj
 
 msgcmp_OBJECTS = msgcmp.obj
 msgfmt_OBJECTS = msgfmt.obj, write-mo.obj, write-java.obj, write-csharp.obj, write-resources.obj, write-tcl.obj, write-qt.obj, plural-eval.obj, hash-string.obj
@@ -249,6 +250,9 @@ format-gcc-internal.obj : format-gcc-internal.c
 format-qt.obj : format-qt.c
        $(CC) $(INCLUDES) $(CFLAGS) /define=($(DEFS)) format-qt.c
 
+format-boost.obj : format-boost.c
+       $(CC) $(INCLUDES) $(CFLAGS) /define=($(DEFS)) format-boost.c
+
 gettextsrc.olb : $(OBJECTS)
        $(AR) $(AR_FLAGS) gettextsrc.olb $(OBJECTS)
 
index 90dfd6ec68e98477ac6ab6fe626b8bc29c1aef6d..198707a3f65db6b0ff96fce07ab4c44bb3305f82 100644 (file)
@@ -1,5 +1,5 @@
 /* Format strings.
-   Copyright (C) 2001-2005 Free Software Foundation, Inc.
+   Copyright (C) 2001-2006 Free Software Foundation, Inc.
    Written by Bruno Haible <haible@clisp.cons.org>, 2001.
 
    This program is free software; you can redistribute it and/or modify
@@ -54,7 +54,8 @@ struct formatstring_parser *formatstring_parsers[NFORMATS] =
   /* format_perl_brace */      &formatstring_perl_brace,
   /* format_php */             &formatstring_php,
   /* format_gcc_internal */    &formatstring_gcc_internal,
-  /* format_qt */              &formatstring_qt
+  /* format_qt */              &formatstring_qt,
+  /* format_boost */           &formatstring_boost
 };
 
 /* Check whether both formats strings contain compatible format
index 27bb4afb588e04d3f3c082f8f767af0531dd9c4f..112f1ae20924b9e4e69e61355a043e0c15ba97bb 100644 (file)
@@ -93,6 +93,7 @@ extern DLL_VARIABLE struct formatstring_parser formatstring_perl_brace;
 extern DLL_VARIABLE struct formatstring_parser formatstring_php;
 extern DLL_VARIABLE struct formatstring_parser formatstring_gcc_internal;
 extern DLL_VARIABLE struct formatstring_parser formatstring_qt;
+extern DLL_VARIABLE struct formatstring_parser formatstring_boost;
 
 /* Table of all format string parsers.  */
 extern DLL_VARIABLE struct formatstring_parser *formatstring_parsers[NFORMATS];
index 0918e9f06f70677ca44275493390de89598219b8..7c80acf427083e66957f6e49239f9a915b4d0400 100644 (file)
@@ -1,5 +1,5 @@
 /* GNU gettext - internationalization aids
-   Copyright (C) 1995-1998, 2000-2005 Free Software Foundation, Inc.
+   Copyright (C) 1995-1998, 2000-2006 Free Software Foundation, Inc.
 
    This file was written by Peter Miller <millerp@canb.auug.org.au>
 
@@ -54,7 +54,8 @@ const char *const format_language[NFORMATS] =
   /* format_perl_brace */      "perl-brace",
   /* format_php */             "php",
   /* format_gcc_internal */    "gcc-internal",
-  /* format_qt */              "qt"
+  /* format_qt */              "qt",
+  /* format_boost */           "boost"
 };
 
 const char *const format_language_pretty[NFORMATS] =
@@ -78,7 +79,8 @@ const char *const format_language_pretty[NFORMATS] =
   /* format_perl_brace */      "Perl brace",
   /* format_php */             "PHP",
   /* format_gcc_internal */    "GCC internal",
-  /* format_qt */              "Qt"
+  /* format_qt */              "Qt",
+  /* format_boost */           "Boost"
 };
 
 
index 6ae559d0a564c69811ac69025712f7d127c937a9..c6d01ad7cd831c63ee443ce6c7601d361752cc52 100644 (file)
@@ -1,5 +1,5 @@
 /* GNU gettext - internationalization aids
-   Copyright (C) 1995-1998, 2000-2005 Free Software Foundation, Inc.
+   Copyright (C) 1995-1998, 2000-2006 Free Software Foundation, Inc.
 
    This file was written by Peter Miller <millerp@canb.auug.org.au>
 
@@ -63,9 +63,10 @@ enum format_type
   format_perl_brace,
   format_php,
   format_gcc_internal,
-  format_qt
+  format_qt,
+  format_boost
 };
-#define NFORMATS 20    /* Number of format_type enum values.  */
+#define NFORMATS 21    /* Number of format_type enum values.  */
 extern DLL_VARIABLE const char *const format_language[NFORMATS];
 extern DLL_VARIABLE const char *const format_language_pretty[NFORMATS];
 
index 60d2bcc96985a224b394ad1405b157382efe65ed..31d48c6a724d8fa2002560e4fb1f888dbc805d47 100644 (file)
@@ -1,5 +1,5 @@
 /* xgettext C/C++/ObjectiveC backend.
-   Copyright (C) 1995-1998, 2000-2005 Free Software Foundation, Inc.
+   Copyright (C) 1995-1998, 2000-2006 Free Software Foundation, Inc.
 
    This file was written by Peter Miller <millerp@canb.auug.org.au>
 
@@ -230,6 +230,29 @@ init_flag_table_c ()
   xgettext_record_flag ("argp_error:2:c-format");
   xgettext_record_flag ("argp_failure:2:c-format");
 #endif
+
+  xgettext_record_flag ("gettext:1:pass-boost-format");
+  xgettext_record_flag ("dgettext:2:pass-boost-format");
+  xgettext_record_flag ("dcgettext:2:pass-boost-format");
+  xgettext_record_flag ("ngettext:1:pass-boost-format");
+  xgettext_record_flag ("ngettext:2:pass-boost-format");
+  xgettext_record_flag ("dngettext:2:pass-boost-format");
+  xgettext_record_flag ("dngettext:3:pass-boost-format");
+  xgettext_record_flag ("dcngettext:2:pass-boost-format");
+  xgettext_record_flag ("dcngettext:3:pass-boost-format");
+  xgettext_record_flag ("gettext_noop:1:pass-boost-format");
+  xgettext_record_flag ("pgettext:2:pass-boost-format");
+  xgettext_record_flag ("dpgettext:3:pass-boost-format");
+  xgettext_record_flag ("dcpgettext:3:pass-boost-format");
+  xgettext_record_flag ("npgettext:2:pass-boost-format");
+  xgettext_record_flag ("npgettext:3:pass-boost-format");
+  xgettext_record_flag ("dnpgettext:3:pass-boost-format");
+  xgettext_record_flag ("dnpgettext:4:pass-boost-format");
+  xgettext_record_flag ("dcnpgettext:3:pass-boost-format");
+  xgettext_record_flag ("dcnpgettext:4:pass-boost-format");
+
+  /* <boost/format.hpp> */
+  xgettext_record_flag ("format:1:boost-format");
 }
 
 void
index c3c28d8d2318be0fbece30ab20647bc27e738e0f..1606aa7e86494df935dc2970209b9e72b33180d9 100644 (file)
@@ -138,6 +138,8 @@ int xgettext_omit_header;
 
 /* Table of flag_context_list_ty tables.  */
 static flag_context_list_table_ty flag_table_c;
+static flag_context_list_table_ty flag_table_cxx_qt;
+static flag_context_list_table_ty flag_table_cxx_boost;
 static flag_context_list_table_ty flag_table_objc;
 static flag_context_list_table_ty flag_table_gcc_internal;
 static flag_context_list_table_ty flag_table_sh;
@@ -157,6 +159,9 @@ static flag_context_list_table_ty flag_table_php;
 /* If true, recognize Qt format strings.  */
 static bool recognize_format_qt;
 
+/* If true, recognize Boost format strings.  */
+static bool recognize_format_boost;
+
 /* Canonicalized encoding name for all input files.  */
 const char *xgettext_global_source_encoding;
 
@@ -180,6 +185,7 @@ static const struct option long_options[] =
 {
   { "add-comments", optional_argument, NULL, 'c' },
   { "add-location", no_argument, &line_comment, 1 },
+  { "boost", no_argument, NULL, CHAR_MAX + 10 },
   { "c++", no_argument, NULL, 'C' },
   { "copyright-holder", required_argument, NULL, CHAR_MAX + 1 },
   { "debug", no_argument, &do_debug, 1 },
@@ -491,6 +497,9 @@ main (int argc, char *argv[])
       case CHAR_MAX + 9:       /* --qt */
        recognize_format_qt = true;
        break;
+      case CHAR_MAX + 10:      /* --boost */
+       recognize_format_boost = true;
+       break;
       default:
        usage (EXIT_FAILURE);
        /* NOTREACHED */
@@ -523,6 +532,13 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
     error (EXIT_FAILURE, 0, _("%s and %s are mutually exclusive"),
           "--sort-output", "--sort-by-file");
 
+  if (recognize_format_qt && recognize_format_boost)
+    /* We cannot support both Qt and Boost format strings, because there are
+       only two formatstring parsers per language, and formatstring_c is the
+       first one for C++.  */
+    error (EXIT_FAILURE, 0, _("%s and %s are mutually exclusive"),
+          "--qt", "--boost");
+
   if (join_existing && strcmp (default_domain, "-") == 0)
     error (EXIT_FAILURE, 0, _("\
 --join-existing cannot be used when output is written to stdout"));
@@ -817,6 +833,10 @@ Language specific options:\n"));
       printf (_("\
                                 (only language C++)\n"));
       printf (_("\
+      --boost                 recognize Boost format strings\n"));
+      printf (_("\
+                                (only language C++)\n"));
+      printf (_("\
       --debug                 more detailed formatstring recognition result\n"));
       printf ("\n");
       printf (_("\
@@ -1439,6 +1459,12 @@ xgettext_record_flag (const char *optionstring)
                    flag_context_list_table_insert (&flag_table_c, 0,
                                                    name_start, name_end,
                                                    argnum, value, pass);
+                   flag_context_list_table_insert (&flag_table_cxx_qt, 0,
+                                                   name_start, name_end,
+                                                   argnum, value, pass);
+                   flag_context_list_table_insert (&flag_table_cxx_boost, 0,
+                                                   name_start, name_end,
+                                                   argnum, value, pass);
                    flag_context_list_table_insert (&flag_table_objc, 0,
                                                    name_start, name_end,
                                                    argnum, value, pass);
@@ -1528,7 +1554,12 @@ xgettext_record_flag (const char *optionstring)
                                                    argnum, value, pass);
                    break;
                  case format_qt:
-                   flag_context_list_table_insert (&flag_table_c, 1,
+                   flag_context_list_table_insert (&flag_table_cxx_qt, 1,
+                                                   name_start, name_end,
+                                                   argnum, value, pass);
+                   break;
+                 case format_boost:
+                   flag_context_list_table_insert (&flag_table_cxx_boost, 1,
                                                    name_start, name_end,
                                                    argnum, value, pass);
                    break;
@@ -2063,7 +2094,12 @@ meta information, not the empty string.\n")));
              || formatstring_parsers[i] == current_formatstring_parser2)
          /* But avoid redundancy: objc-format is stronger than c-format.  */
          && !(i == format_c && possible_format_p (is_format[format_objc]))
-         && !(i == format_objc && possible_format_p (is_format[format_c])))
+         && !(i == format_objc && possible_format_p (is_format[format_c]))
+         /* Avoid flagging a string as c-format when it's known to be a
+            qt-format or boost-format string.  */
+         && !(i == format_c
+              && (possible_format_p (is_format[format_qt])
+                  || possible_format_p (is_format[format_boost]))))
        {
          struct formatstring_parser *parser = formatstring_parsers[i];
          char *invalid_reason = NULL;
@@ -2173,7 +2209,12 @@ remember_a_message_plural (message_ty *mp, char *string,
            && !(i == format_c
                 && possible_format_p (mp->is_format[format_objc]))
            && !(i == format_objc
-                && possible_format_p (mp->is_format[format_c])))
+                && possible_format_p (mp->is_format[format_c]))
+           /* Avoid flagging a string as c-format when it's known to be a
+              qt-format or boost-format string.  */
+           && !(i == format_c
+                && (possible_format_p (mp->is_format[format_qt])
+                    || possible_format_p (mp->is_format[format_boost]))))
          {
            struct formatstring_parser *parser = formatstring_parsers[i];
            char *invalid_reason = NULL;
@@ -2754,7 +2795,16 @@ language_to_extractor (const char *name)
           than through an option --language=C++/Qt because the latter would
           conflict with the language "C++" regarding the file extensions.  */
        if (recognize_format_qt && strcmp (tp->name, "C++") == 0)
-         result.formatstring_parser2 = &formatstring_qt;
+         {
+           result.flag_table = &flag_table_cxx_qt;
+           result.formatstring_parser2 = &formatstring_qt;
+         }
+       /* Likewise for --boost.  */
+       if (recognize_format_boost && strcmp (tp->name, "C++") == 0)
+         {
+           result.flag_table = &flag_table_cxx_boost;
+           result.formatstring_parser2 = &formatstring_boost;
+         }
 
        return result;
       }
index f35649cfe110d2407a56ee7282a4ac5319cc487a..118cc6b633fbcbca3c581a741a7e5f49e51e7794 100644 (file)
@@ -1,3 +1,10 @@
+2006-02-12  Bruno Haible  <bruno@clisp.org>
+
+       * xgettext-c-14: New file.
+       * format-boost-1: New file.
+       * format-boost-2: New file.
+       * Makefile.am (TESTS): Add them.
+
 2006-02-12  Bruno Haible  <bruno@clisp.org>
 
        * xgettext-c-13: New file.
index b30be36a4d78bfd85888f4117ad947625dd8e1f2..0b0e103688d82670b597161b0c212e361834add8 100644 (file)
@@ -64,7 +64,7 @@ TESTS = gettext-1 gettext-2 gettext-3 gettext-4 gettext-5 gettext-6 gettext-7 \
        xgettext-awk-1 \
        xgettext-c-1 xgettext-c-2 xgettext-c-3 xgettext-c-4 xgettext-c-5 \
        xgettext-c-6 xgettext-c-7 xgettext-c-8 xgettext-c-9 xgettext-c-10 \
-       xgettext-c-11 xgettext-c-12 xgettext-c-13 \
+       xgettext-c-11 xgettext-c-12 xgettext-c-13 xgettext-c-14 \
        xgettext-csharp-1 xgettext-csharp-2 xgettext-csharp-3 \
        xgettext-csharp-4 xgettext-csharp-5 \
        xgettext-elisp-1 \
@@ -87,6 +87,7 @@ TESTS = gettext-1 gettext-2 gettext-3 gettext-4 gettext-5 gettext-6 gettext-7 \
        xgettext-tcl-1 xgettext-tcl-2 \
        xgettext-ycp-1 xgettext-ycp-2 \
        format-awk-1 format-awk-2 \
+       format-boost-1 format-boost-2 \
        format-c-1 format-c-2 format-c-3 format-c-4 format-c-5 \
        format-csharp-1 format-csharp-2 \
        format-elisp-1 format-elisp-2 \