summaryrefslogtreecommitdiffstats
path: root/gettext-tools/doc/xgettext.texi
diff options
context:
space:
mode:
authorDaiki Ueno <ueno@gnu.org>2015-01-29 17:22:14 +0900
committerDaiki Ueno <ueno@gnu.org>2015-03-03 18:55:59 +0900
commitd9fc3d2a3f43d4295db24883223dbe71ff8dd5d4 (patch)
tree57cd8eec96b44d272f35147676f08fe4a24de860 /gettext-tools/doc/xgettext.texi
parent9e117619d848515c4ddbae18d05c0a66cf86a451 (diff)
downloadexternal_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.texi54
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