]> git.ipfire.org Git - thirdparty/gettext.git/commit
xgettext: Support message syntax checks
authorDaiki Ueno <ueno@gnu.org>
Thu, 29 Jan 2015 08:22:14 +0000 (17:22 +0900)
committerDaiki Ueno <ueno@gnu.org>
Tue, 3 Mar 2015 09:55:59 +0000 (18:55 +0900)
commitd9fc3d2a3f43d4295db24883223dbe71ff8dd5d4
tree57cd8eec96b44d272f35147676f08fe4a24de860
parent9e117619d848515c4ddbae18d05c0a66cf86a451
xgettext: Support message syntax checks

With this change, xgettext could report common syntactic problems
in extracted strings.  The current built-in checks are
ellipsis-unicode, space-ellipsis, and quote-unicode.  Those checks
can be enabled with --check option of xgettext and disabled with
special "xgettext:" comment in source files.
Feature suggested by Philip Withnall in:
https://savannah.gnu.org/bugs/?44098
* gettext-tools/src/message.h (enum syntax_check_type): New enum.
(NSYNTAXCHECKS): New constant.
(enum is_syntax_check): New enum.
(struct message_ty): New field 'do_syntax_check'.
(syntax_check_name): New variable declaration.
* gettext-tools/src/message.c (syntax_check_name): New variable.
* gettext-tools/src/msgl-cat.c (catenate_msgdomain_list): Propagate
mp->do_syntax_check.
* gettext-tools/src/msgmerge.c (message_merge): Propagate
ref->do_syntax_check.
* gettext-tools/src/msgl-check.h (syntax_check_message_list): New
declaration.
* gettext-tools/src/msgl-check.c (sentence_end): New function.
(syntax_check_ellipsis_unicode): New function.
(syntax_check_space_ellipsis): New function.
(syntax_check_quote_unicode): New function.
(syntax_check_message): New function.
(syntax_check_message_list): New function.
* gettext-tools/src/read-catalog-abstract.h (po_parse_comment_special):
Adjust function declaration.
* gettext-tools/src/read-catalog-abstract.c (po_parse_comment_special):
Add new argument SCP for syntax checking; all callers changed.
* gettext-tools/src/read-catalog.h (DEFAULT_CATALOG_READER_TY): New
field 'do_syntax_check'.
* gettext-tools/src/read-catalog.c (default_constructor): Initialize
this->do_syntax_check.
(default_copy_comment_state): Propagate this->do_syntax_check.
* gettext-tools/src/xgettext.c (long_options): Add --check option.
(main): Handle --check option.
(usage): Document --check option.
(remember_a_message): Propagate do_syntax_check value.

* gettext-tools/tests/xgettext-14: New file.
* gettext-tools/tests/sentence.c: New file.
* gettext-tools/tests/Makefile.am (TESTS): Add new test.
(noinst_PROGRAMS): Add 'sentence'.
(sentence_SOURCES): New variable.
(sentence_CPPFLAGS): New variable.
(sentence_LDADD): New variable.

* gettext-tools/doc/xgettext.texi: Document --check option.
25 files changed:
autogen.sh
gettext-tools/doc/ChangeLog
gettext-tools/doc/xgettext.texi
gettext-tools/gnulib-lib/.gitignore
gettext-tools/libgettextpo/.gitignore
gettext-tools/libgettextpo/Makefile.am
gettext-tools/src/ChangeLog
gettext-tools/src/Makefile.am
gettext-tools/src/message.c
gettext-tools/src/message.h
gettext-tools/src/msgl-cat.c
gettext-tools/src/msgl-check.c
gettext-tools/src/msgl-check.h
gettext-tools/src/msgmerge.c
gettext-tools/src/read-catalog-abstract.c
gettext-tools/src/read-catalog-abstract.h
gettext-tools/src/read-catalog.c
gettext-tools/src/read-catalog.h
gettext-tools/src/sentence.c [new file with mode: 0644]
gettext-tools/src/sentence.h [new file with mode: 0644]
gettext-tools/src/xgettext.c
gettext-tools/tests/ChangeLog
gettext-tools/tests/Makefile.am
gettext-tools/tests/sentence.c [new file with mode: 0644]
gettext-tools/tests/xgettext-14 [new file with mode: 0755]