diff options
-rw-r--r-- | gettext-tools/src/ChangeLog | 29 | ||||
-rw-r--r-- | gettext-tools/src/x-awk.c | 6 | ||||
-rw-r--r-- | gettext-tools/src/x-c.c | 2 | ||||
-rw-r--r-- | gettext-tools/src/x-csharp.c | 4 | ||||
-rw-r--r-- | gettext-tools/src/x-elisp.c | 4 | ||||
-rw-r--r-- | gettext-tools/src/x-glade.c | 29 | ||||
-rw-r--r-- | gettext-tools/src/x-java.c | 4 | ||||
-rw-r--r-- | gettext-tools/src/x-librep.c | 4 | ||||
-rw-r--r-- | gettext-tools/src/x-lisp.c | 5 | ||||
-rw-r--r-- | gettext-tools/src/x-perl.c | 8 | ||||
-rw-r--r-- | gettext-tools/src/x-php.c | 4 | ||||
-rw-r--r-- | gettext-tools/src/x-python.c | 4 | ||||
-rw-r--r-- | gettext-tools/src/x-rst.c | 4 | ||||
-rw-r--r-- | gettext-tools/src/x-scheme.c | 4 | ||||
-rw-r--r-- | gettext-tools/src/x-sh.c | 6 | ||||
-rw-r--r-- | gettext-tools/src/x-smalltalk.c | 6 | ||||
-rw-r--r-- | gettext-tools/src/x-tcl.c | 5 | ||||
-rw-r--r-- | gettext-tools/src/x-ycp.c | 4 | ||||
-rw-r--r-- | gettext-tools/src/xgettext.c | 6 | ||||
-rw-r--r-- | gettext-tools/src/xgettext.h | 4 | ||||
-rw-r--r-- | gettext-tools/tests/Makefile.am | 2 |
21 files changed, 98 insertions, 46 deletions
diff --git a/gettext-tools/src/ChangeLog b/gettext-tools/src/ChangeLog index 1c43f59..da763ea 100644 --- a/gettext-tools/src/ChangeLog +++ b/gettext-tools/src/ChangeLog @@ -1,3 +1,32 @@ +2009-05-16 Bruno Haible <bruno@clisp.org> + + Extract comments meant for translators from Glade input files. + * xgettext.h (remember_a_message): Add 'extracted_comment' argument. + * xgettext.c (remember_a_message): Likewise. + (arglist_parser_done): Update. + * x-glade.c (struct element_state): Add field 'extracted_comment'. + (start_element_handler): Fill it. + (end_element_handler): Pass it to 'remember_a_message', free it. + * x-awk.c (extract_parenthesized): Update. + * x-c.c (extract_parenthesized): Update. + * x-csharp.c (extract_parenthesized): Update. + * x-elisp.c (read_object): Update. + * x-java.c (extract_parenthesized): Update. + * x-librep.c (read_object): Update. + * x-lisp.c (read_object): Update. + * x-perl.c (extract_variable, interpolate_keywords, extract_balanced): + Update. + * x-php.c (extract_balanced): Update. + * x-python.c (extract_balanced): Update. + * x-rst.c (extract_rst): Update. + * x-scheme.c (read_object): Update. + * x-sh.c (read_word, read_command): Update. + * x-smalltalk.c (extract_smalltalk): Update. + * x-tcl.c (read_command): Update. + * x-ycp.c (extract_parenthesized): Update. + Reported by <sandro.bonazzola@gmail.com> + at <https://savannah.gnu.org/bugs/?26570>. + 2009-03-29 Bruno Haible <bruno@clisp.org> * message.h (format_type): New enum value 'format_gfc_internal'. diff --git a/gettext-tools/src/x-awk.c b/gettext-tools/src/x-awk.c index 0e74852..307952b 100644 --- a/gettext-tools/src/x-awk.c +++ b/gettext-tools/src/x-awk.c @@ -1,5 +1,5 @@ /* xgettext awk backend. - Copyright (C) 2002-2003, 2005-2008 Free Software Foundation, Inc. + Copyright (C) 2002-2003, 2005-2009 Free Software Foundation, Inc. This file was written by Bruno Haible <haible@clisp.cons.org>, 2002. @@ -791,7 +791,7 @@ extract_parenthesized (message_list_ty *mlp, if (extract_all) remember_a_message (mlp, NULL, token.string, inner_context, &pos, - savable_comment); + NULL, savable_comment); else arglist_parser_remember (argparser, arg, token.string, inner_context, @@ -810,7 +810,7 @@ extract_parenthesized (message_list_ty *mlp, pos.line_number = token.line_number; remember_a_message (mlp, NULL, token.string, inner_context, &pos, - savable_comment); + NULL, savable_comment); } next_is_argument = false; next_context_iter = null_context_list_iterator; diff --git a/gettext-tools/src/x-c.c b/gettext-tools/src/x-c.c index 3a5b368..14a5b36 100644 --- a/gettext-tools/src/x-c.c +++ b/gettext-tools/src/x-c.c @@ -1888,7 +1888,7 @@ extract_parenthesized (message_list_ty *mlp, case xgettext_token_type_string_literal: if (extract_all) remember_a_message (mlp, NULL, token.string, inner_context, - &token.pos, token.comment); + &token.pos, NULL, token.comment); else arglist_parser_remember (argparser, arg, token.string, inner_context, diff --git a/gettext-tools/src/x-csharp.c b/gettext-tools/src/x-csharp.c index 6a1a31e..a307a64 100644 --- a/gettext-tools/src/x-csharp.c +++ b/gettext-tools/src/x-csharp.c @@ -1,5 +1,5 @@ /* xgettext C# backend. - Copyright (C) 2003, 2005-2008 Free Software Foundation, Inc. + Copyright (C) 2003, 2005-2009 Free Software Foundation, Inc. Written by Bruno Haible <bruno@clisp.org>, 2003. This program is free software: you can redistribute it and/or modify @@ -2078,7 +2078,7 @@ extract_parenthesized (message_list_ty *mlp, token_type_ty terminator, xgettext_current_source_encoding = po_charset_utf8; if (extract_all) remember_a_message (mlp, NULL, token.string, inner_context, - &pos, token.comment); + &pos, NULL, token.comment); else arglist_parser_remember (argparser, arg, token.string, inner_context, diff --git a/gettext-tools/src/x-elisp.c b/gettext-tools/src/x-elisp.c index 076c8ee..1884ce5 100644 --- a/gettext-tools/src/x-elisp.c +++ b/gettext-tools/src/x-elisp.c @@ -1,5 +1,5 @@ /* xgettext Emacs Lisp backend. - Copyright (C) 2001-2003, 2005-2008 Free Software Foundation, Inc. + Copyright (C) 2001-2003, 2005-2009 Free Software Foundation, Inc. This file was written by Bruno Haible <haible@clisp.cons.org>, 2001-2002. @@ -898,7 +898,7 @@ read_object (struct object *op, bool first_in_list, bool new_backquote_flag, pos.file_name = logical_file_name; pos.line_number = op->line_number_at_start; remember_a_message (mlp, NULL, string_of_object (op), - null_context, &pos, savable_comment); + null_context, &pos, NULL, savable_comment); } last_non_comment_line = line_number; return; diff --git a/gettext-tools/src/x-glade.c b/gettext-tools/src/x-glade.c index 3d48e72..e5a7a77 100644 --- a/gettext-tools/src/x-glade.c +++ b/gettext-tools/src/x-glade.c @@ -1,5 +1,5 @@ /* xgettext glade backend. - Copyright (C) 2002-2003, 2005-2008 Free Software Foundation, Inc. + Copyright (C) 2002-2003, 2005-2009 Free Software Foundation, Inc. This file was written by Bruno Haible <haible@clisp.cons.org>, 2002. @@ -385,6 +385,7 @@ static XML_Parser parser; struct element_state { bool extract_string; + char *extracted_comment; int lineno; char *buffer; size_t bufmax; @@ -427,27 +428,36 @@ start_element_handler (void *userData, const char *name, p = &stack[stack_depth]; p->extract_string = extract_all; + p->extracted_comment = NULL; /* In Glade 1, a few specific elements are translatable. */ if (!p->extract_string) p->extract_string = (hash_find_entry (&keywords, name, strlen (name), &hash_result) == 0); /* In Glade 2, all <property> and <atkproperty> elements are translatable - that have the attribute translatable="yes". */ + that have the attribute translatable="yes". + See <http://library.gnome.org/devel/libglade/unstable/libglade-dtd.html>. + The translator comment is found in the attribute comments="...". + See <http://live.gnome.org/TranslationProject/DevGuidelines/Use comments>. + */ if (!p->extract_string && (strcmp (name, "property") == 0 || strcmp (name, "atkproperty") == 0)) { bool has_translatable = false; + const char *extracted_comment = NULL; const char **attp = attributes; while (*attp != NULL) { if (strcmp (attp[0], "translatable") == 0) - { - has_translatable = (strcmp (attp[1], "yes") == 0); - break; - } + has_translatable = (strcmp (attp[1], "yes") == 0); + else if (strcmp (attp[0], "comments") == 0) + extracted_comment = attp[1]; attp += 2; } p->extract_string = has_translatable; + p->extracted_comment = + (has_translatable && extracted_comment != NULL + ? xstrdup (extracted_comment) + : NULL); } if (!p->extract_string && strcmp (name, "atkaction") == 0) @@ -465,7 +475,8 @@ start_element_handler (void *userData, const char *name, pos.line_number = XML_GetCurrentLineNumber (parser); remember_a_message (mlp, NULL, xstrdup (attp[1]), - null_context, &pos, savable_comment); + null_context, &pos, + NULL, savable_comment); } break; } @@ -502,12 +513,14 @@ end_element_handler (void *userData, const char *name) pos.line_number = p->lineno; remember_a_message (mlp, NULL, p->buffer, null_context, &pos, - savable_comment); + p->extracted_comment, savable_comment); p->buffer = NULL; } } /* Free memory for this stack level. */ + if (p->extracted_comment != NULL) + free (p->extracted_comment); if (p->buffer != NULL) free (p->buffer); diff --git a/gettext-tools/src/x-java.c b/gettext-tools/src/x-java.c index c8064c5..bb52f81 100644 --- a/gettext-tools/src/x-java.c +++ b/gettext-tools/src/x-java.c @@ -1,5 +1,5 @@ /* xgettext Java backend. - Copyright (C) 2003, 2005-2008 Free Software Foundation, Inc. + Copyright (C) 2003, 2005-2009 Free Software Foundation, Inc. Written by Bruno Haible <bruno@clisp.org>, 2003. This program is free software: you can redistribute it and/or modify @@ -1427,7 +1427,7 @@ extract_parenthesized (message_list_ty *mlp, token_type_ty terminator, xgettext_current_source_encoding = po_charset_utf8; if (extract_all) remember_a_message (mlp, NULL, token.string, inner_context, - &pos, token.comment); + &pos, NULL, token.comment); else arglist_parser_remember (argparser, arg, token.string, inner_context, diff --git a/gettext-tools/src/x-librep.c b/gettext-tools/src/x-librep.c index e2279a4..87b17e4 100644 --- a/gettext-tools/src/x-librep.c +++ b/gettext-tools/src/x-librep.c @@ -1,5 +1,5 @@ /* xgettext librep backend. - Copyright (C) 2001-2003, 2005-2008 Free Software Foundation, Inc. + Copyright (C) 2001-2003, 2005-2009 Free Software Foundation, Inc. This file was written by Bruno Haible <haible@clisp.cons.org>, 2001. @@ -834,7 +834,7 @@ read_object (struct object *op, flag_context_ty outer_context) pos.file_name = logical_file_name; pos.line_number = op->line_number_at_start; remember_a_message (mlp, NULL, string_of_object (op), - null_context, &pos, savable_comment); + null_context, &pos, NULL, savable_comment); } last_non_comment_line = line_number; return; diff --git a/gettext-tools/src/x-lisp.c b/gettext-tools/src/x-lisp.c index 5495dff..d56722b 100644 --- a/gettext-tools/src/x-lisp.c +++ b/gettext-tools/src/x-lisp.c @@ -1,5 +1,5 @@ /* xgettext Lisp backend. - Copyright (C) 2001-2003, 2005-2008 Free Software Foundation, Inc. + Copyright (C) 2001-2003, 2005-2009 Free Software Foundation, Inc. This file was written by Bruno Haible <haible@clisp.cons.org>, 2001. @@ -1194,7 +1194,8 @@ read_object (struct object *op, flag_context_ty outer_context) pos.file_name = logical_file_name; pos.line_number = op->line_number_at_start; remember_a_message (mlp, NULL, string_of_object (op), - null_context, &pos, savable_comment); + null_context, &pos, + NULL, savable_comment); } last_non_comment_line = line_number; return; diff --git a/gettext-tools/src/x-perl.c b/gettext-tools/src/x-perl.c index 3064b2c..3f6e549 100644 --- a/gettext-tools/src/x-perl.c +++ b/gettext-tools/src/x-perl.c @@ -1,5 +1,5 @@ /* xgettext Perl backend. - Copyright (C) 2002-2008 Free Software Foundation, Inc. + Copyright (C) 2002-2009 Free Software Foundation, Inc. This file was written by Guido Flohr <guido@imperia.net>, 2002-2003. @@ -1554,7 +1554,7 @@ extract_variable (message_list_ty *mlp, token_ty *tp, int first) xgettext_current_source_encoding = po_charset_utf8; remember_a_message (mlp, NULL, xstrdup (t1->string), - context, &pos, savable_comment); + context, &pos, NULL, savable_comment); xgettext_current_source_encoding = xgettext_global_source_encoding; free_token (t2); free_token (t1); @@ -1984,7 +1984,7 @@ interpolate_keywords (message_list_ty *mlp, const char *string, int lineno) extract_quotelike_pass3 (&token, EXIT_FAILURE); xgettext_current_source_encoding = po_charset_utf8; remember_a_message (mlp, NULL, token.string, context, &pos, - savable_comment); + NULL, savable_comment); xgettext_current_source_encoding = xgettext_global_source_encoding; /* FALLTHROUGH */ default: @@ -3154,7 +3154,7 @@ extract_balanced (message_list_ty *mlp, pos.line_number = tp->line_number; xgettext_current_source_encoding = po_charset_utf8; remember_a_message (mlp, NULL, string, inner_context, &pos, - tp->comment); + NULL, tp->comment); xgettext_current_source_encoding = xgettext_global_source_encoding; } else if (!skip_until_comma) diff --git a/gettext-tools/src/x-php.c b/gettext-tools/src/x-php.c index 0f7ad78..344c1c5 100644 --- a/gettext-tools/src/x-php.c +++ b/gettext-tools/src/x-php.c @@ -1,5 +1,5 @@ /* xgettext PHP backend. - Copyright (C) 2001-2003, 2005-2008 Free Software Foundation, Inc. + Copyright (C) 2001-2003, 2005-2009 Free Software Foundation, Inc. This file was written by Bruno Haible <bruno@clisp.org>, 2002. @@ -1525,7 +1525,7 @@ extract_balanced (message_list_ty *mlp, if (extract_all) remember_a_message (mlp, NULL, token.string, inner_context, - &pos, token.comment); + &pos, NULL, token.comment); else arglist_parser_remember (argparser, arg, token.string, inner_context, diff --git a/gettext-tools/src/x-python.c b/gettext-tools/src/x-python.c index af6a139..0a7b2af 100644 --- a/gettext-tools/src/x-python.c +++ b/gettext-tools/src/x-python.c @@ -1,5 +1,5 @@ /* xgettext Python backend. - Copyright (C) 2002-2003, 2005-2008 Free Software Foundation, Inc. + Copyright (C) 2002-2003, 2005-2009 Free Software Foundation, Inc. This file was written by Bruno Haible <haible@clisp.cons.org>, 2002. @@ -1795,7 +1795,7 @@ extract_balanced (message_list_ty *mlp, xgettext_current_source_encoding = po_charset_utf8; if (extract_all) remember_a_message (mlp, NULL, token.string, inner_context, - &pos, token.comment); + &pos, NULL, token.comment); else arglist_parser_remember (argparser, arg, token.string, inner_context, diff --git a/gettext-tools/src/x-rst.c b/gettext-tools/src/x-rst.c index 160db65..c604941 100644 --- a/gettext-tools/src/x-rst.c +++ b/gettext-tools/src/x-rst.c @@ -1,5 +1,5 @@ /* xgettext RST backend. - Copyright (C) 2001-2003, 2005-2008 Free Software Foundation, Inc. + Copyright (C) 2001-2003, 2005-2009 Free Software Foundation, Inc. This file was written by Bruno Haible <haible@clisp.cons.org>, 2001. @@ -220,7 +220,7 @@ extract_rst (FILE *f, pos.file_name = location; pos.line_number = (size_t)(-1); - remember_a_message (mlp, NULL, msgid, null_context, &pos, NULL); + remember_a_message (mlp, NULL, msgid, null_context, &pos, NULL, NULL); /* Here c is the last read character: EOF or '\n'. */ if (c == EOF) diff --git a/gettext-tools/src/x-scheme.c b/gettext-tools/src/x-scheme.c index 5c8fdb0..1e10821 100644 --- a/gettext-tools/src/x-scheme.c +++ b/gettext-tools/src/x-scheme.c @@ -1,5 +1,5 @@ /* xgettext Scheme backend. - Copyright (C) 2004-2008 Free Software Foundation, Inc. + Copyright (C) 2004-2009 Free Software Foundation, Inc. This file was written by Bruno Haible <bruno@clisp.org>, 2004-2005. @@ -1133,7 +1133,7 @@ read_object (struct object *op, flag_context_ty outer_context) pos.file_name = logical_file_name; pos.line_number = op->line_number_at_start; remember_a_message (mlp, NULL, string_of_object (op), - null_context, &pos, savable_comment); + null_context, &pos, NULL, savable_comment); } last_non_comment_line = line_number; return; diff --git a/gettext-tools/src/x-sh.c b/gettext-tools/src/x-sh.c index 8ebf10f..7cff65d 100644 --- a/gettext-tools/src/x-sh.c +++ b/gettext-tools/src/x-sh.c @@ -1,5 +1,5 @@ /* xgettext sh backend. - Copyright (C) 2003, 2005-2008 Free Software Foundation, Inc. + Copyright (C) 2003, 2005-2009 Free Software Foundation, Inc. Written by Bruno Haible <bruno@clisp.org>, 2003. This program is free software: you can redistribute it and/or modify @@ -1067,7 +1067,7 @@ read_word (struct word *wp, int looking_for, flag_context_ty context) string.chars[string.charcount++] = (unsigned char) c; } remember_a_message (mlp, NULL, string_of_token (&string), - context, &pos, savable_comment); + context, &pos, NULL, savable_comment); free_token (&string); error_with_progname = false; @@ -1233,7 +1233,7 @@ read_command (int looking_for, flag_context_ty outer_context) pos.file_name = logical_file_name; pos.line_number = inner.line_number_at_start; remember_a_message (mlp, NULL, string_of_word (&inner), - inner_context, &pos, savable_comment); + inner_context, &pos, NULL, savable_comment); } } diff --git a/gettext-tools/src/x-smalltalk.c b/gettext-tools/src/x-smalltalk.c index 7da3a55..06acd5a 100644 --- a/gettext-tools/src/x-smalltalk.c +++ b/gettext-tools/src/x-smalltalk.c @@ -1,5 +1,5 @@ /* xgettext Smalltalk backend. - Copyright (C) 2002-2003, 2005-2008 Free Software Foundation, Inc. + Copyright (C) 2002-2003, 2005-2009 Free Software Foundation, Inc. This file was written by Bruno Haible <haible@clisp.cons.org>, 2002. @@ -542,7 +542,7 @@ extract_smalltalk (FILE *f, pos.file_name = logical_file_name; pos.line_number = token.line_number; remember_a_message (mlp, NULL, token.string, null_context, - &pos, savable_comment); + &pos, NULL, savable_comment); state = 0; break; } @@ -553,7 +553,7 @@ extract_smalltalk (FILE *f, pos.line_number = token.line_number; plural_mp = remember_a_message (mlp, NULL, token.string, null_context, &pos, - savable_comment); + NULL, savable_comment); state = 4; break; } diff --git a/gettext-tools/src/x-tcl.c b/gettext-tools/src/x-tcl.c index 5231477..e9c05e7 100644 --- a/gettext-tools/src/x-tcl.c +++ b/gettext-tools/src/x-tcl.c @@ -1,5 +1,5 @@ /* xgettext Tcl backend. - Copyright (C) 2002-2003, 2005-2008 Free Software Foundation, Inc. + Copyright (C) 2002-2003, 2005-2009 Free Software Foundation, Inc. This file was written by Bruno Haible <haible@clisp.cons.org>, 2002. @@ -887,7 +887,8 @@ read_command (int looking_for, flag_context_ty outer_context) pos.file_name = logical_file_name; pos.line_number = inner.line_number_at_start; remember_a_message (mlp, NULL, string_of_word (&inner), - inner_context, &pos, savable_comment); + inner_context, &pos, + NULL, savable_comment); } } diff --git a/gettext-tools/src/x-ycp.c b/gettext-tools/src/x-ycp.c index 59e8e14..a63d20d 100644 --- a/gettext-tools/src/x-ycp.c +++ b/gettext-tools/src/x-ycp.c @@ -1,5 +1,5 @@ /* xgettext YCP backend. - Copyright (C) 2001-2003, 2005-2008 Free Software Foundation, Inc. + Copyright (C) 2001-2003, 2005-2009 Free Software Foundation, Inc. This file was written by Bruno Haible <haible@clisp.cons.org>, 2001. @@ -683,7 +683,7 @@ extract_parenthesized (message_list_ty *mlp, /* Seen an msgid. */ plural_mp = remember_a_message (mlp, NULL, token.string, inner_context, &pos, - token.comment); + NULL, token.comment); state = 2; } else diff --git a/gettext-tools/src/xgettext.c b/gettext-tools/src/xgettext.c index 2b57c41..e96c44c 100644 --- a/gettext-tools/src/xgettext.c +++ b/gettext-tools/src/xgettext.c @@ -2086,6 +2086,7 @@ and a mapping instead of a tuple for the arguments.\n"), message_ty * remember_a_message (message_list_ty *mlp, char *msgctxt, char *msgid, flag_context_ty context, lex_pos_ty *pos, + const char *extracted_comment, refcounted_string_list_ty *comment) { enum is_format is_format[NFORMATS]; @@ -2180,6 +2181,9 @@ meta information, not the empty string.\n"))); nitems_before = (mp->comment_dot != NULL ? mp->comment_dot->nitems : 0); + if (extracted_comment != NULL) + message_comment_dot_append (mp, extracted_comment); + add_all_remaining_comments = add_all_comments; for (j = 0; ; ++j) { @@ -2868,7 +2872,7 @@ arglist_parser_done (struct arglist_parser *ap, int argnum) mp = remember_a_message (ap->mlp, best_cp->msgctxt, best_cp->msgid, msgid_context, &best_cp->msgid_pos, - best_cp->msgid_comment); + NULL, best_cp->msgid_comment); if (best_cp->msgid_plural != NULL) remember_a_message_plural (mp, best_cp->msgid_plural, msgid_plural_context, diff --git a/gettext-tools/src/xgettext.h b/gettext-tools/src/xgettext.h index a54b81c..53c9ce8 100644 --- a/gettext-tools/src/xgettext.h +++ b/gettext-tools/src/xgettext.h @@ -243,6 +243,8 @@ extern void savable_comment_reset (void); to the callee. MSGID must be a malloc()ed string; its ownership is passed to the callee. POS->file_name must be allocated with indefinite extent. + EXTRACTED_COMMENT is a comment that needs to be copied into the POT file, + or NULL. COMMENT may be savable_comment, or it may be a saved copy of savable_comment (then add_reference must be used when saving it, and drop_reference while dropping it). Clear savable_comment. */ @@ -251,7 +253,9 @@ extern message_ty *remember_a_message (message_list_ty *mlp, char *msgid, flag_context_ty context, lex_pos_ty *pos, + const char *extracted_comment, refcounted_string_list_ty *comment); + /* Add an msgid_plural to a message previously returned by remember_a_message. STRING must be a malloc()ed string; its ownership is passed to the callee. diff --git a/gettext-tools/tests/Makefile.am b/gettext-tools/tests/Makefile.am index b877688..9bc1593 100644 --- a/gettext-tools/tests/Makefile.am +++ b/gettext-tools/tests/Makefile.am @@ -79,7 +79,7 @@ TESTS = gettext-1 gettext-2 gettext-3 gettext-4 gettext-5 gettext-6 gettext-7 \ xgettext-csharp-4 xgettext-csharp-5 xgettext-csharp-6 \ xgettext-csharp-7 \ xgettext-elisp-1 xgettext-elisp-2 \ - xgettext-glade-1 xgettext-glade-2 xgettext-glade-3 \ + xgettext-glade-1 xgettext-glade-2 xgettext-glade-3 xgettext-glade-4 \ xgettext-java-1 xgettext-java-2 xgettext-java-3 xgettext-java-4 \ xgettext-java-5 xgettext-java-6 xgettext-java-7 \ xgettext-librep-1 xgettext-librep-2 \ |