diff options
author | Daiki Ueno <ueno@gnu.org> | 2015-01-29 17:22:14 +0900 |
---|---|---|
committer | Daiki Ueno <ueno@gnu.org> | 2015-03-03 18:55:59 +0900 |
commit | d9fc3d2a3f43d4295db24883223dbe71ff8dd5d4 (patch) | |
tree | 57cd8eec96b44d272f35147676f08fe4a24de860 /gettext-tools/doc/xgettext.texi | |
parent | 9e117619d848515c4ddbae18d05c0a66cf86a451 (diff) | |
download | external_gettext-d9fc3d2a3f43d4295db24883223dbe71ff8dd5d4.zip external_gettext-d9fc3d2a3f43d4295db24883223dbe71ff8dd5d4.tar.gz external_gettext-d9fc3d2a3f43d4295db24883223dbe71ff8dd5d4.tar.bz2 |
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.
Diffstat (limited to 'gettext-tools/doc/xgettext.texi')
-rw-r--r-- | gettext-tools/doc/xgettext.texi | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/gettext-tools/doc/xgettext.texi b/gettext-tools/doc/xgettext.texi index 451e25f..f01c9d2 100644 --- a/gettext-tools/doc/xgettext.texi +++ b/gettext-tools/doc/xgettext.texi @@ -144,6 +144,60 @@ gettext ( The second comment line will not be extracted, because there is one blank line between the comment line and the keyword. +@item --check[=@var{CHECK}] +@opindex --check@r{, @code{xgettext} option} +@cindex supported syntax checks, @code{xgettext} +Perform a syntax check on msgid and msgid_plural. The supported checks +are: + +@table @samp +@item ellipsis-unicode +Prefer Unicode ellipsis character over ASCII @code{...} + +@item space-ellipsis +Prohibit whitespace before an ellipsis character + +@item quote-unicode +Prefer Unicode quotation marks over ASCII @code{"'`} + +@end table + +The option has an effect on all input files. To enable or disable +checks for a certain string, you can mark it with an @code{xgettext:} +special comment in the source file. For example, if you specify the +@code{--check=space-ellipsis} option, but want to suppress the check on +a particular string, add the following comment: + +@example +/* xgettext: no-space-ellipsis-check */ +gettext ("We really want a space before ellipsis here ..."); +@end example + +The @code{xgettext:} comment can be followed by flags separated with a +comma. The possible flags are of the form @samp{[no-]@var{name}-check}, +where @var{name} is the name of a valid syntax check. If a flag is +prefixed by @code{no-}, the meaning is negated. + +Some tests apply the checks to each sentence within the msgid, rather +than the whole string. xgettext detects the end of sentence by +performing a pattern match, which usually looks for a period followed by +a certain number of spaces. The number is specified with the +@code{--sentence-end} option. + +@item --sentence-end[=@var{TYPE}] +@opindex --sentence-end@r{, @code{xgettext} option} +@cindex sentence end markers, @code{xgettext} +The supported values are: + +@table @samp +@item single-space +Expect at least one whitespace after a period + +@item double-space +Expect at least two whitespaces after a period + +@end table + @end table @subsection Language specific options |