msgmerge --previous is a very useful feature that makes adjusting of
translation much easier when small changes in the source code are done.
msgmerge supports it for 10 years, but it is not used by most projects,
as Makefile.in.in never added support for it.
Use msgmerge --previous as default on all systems with gettext >= 0.16.
Daiki Ueno [Tue, 31 May 2016 07:05:24 +0000 (16:05 +0900)]
tests: Turn sentence test into a shell script
For consistency with other tests. Also it fixes a test failure when
built with --disable-shared, since LOG_COMPILER set to $(SHELL) doesn't
recognize binary executable.
* gettext-tools/tests/Makefile.am (TESTS): Rename 'sentence' to
'sentence-1'.
(check_PROGRAMS): Rename 'sentence' to 'sentence-1-prg'.
(sentence_1_prg_SOURCES): Rename from 'sentence_SOURCES'.
(sentence_1_prg_CPPFLAGS): Rename from 'sentence_CPPFLAGS'.
(sentence_1_prg_LDADD): Rename from 'sentence_LDADD'.
* gettext-tools/tests/sentence-1: New file.
* gettext-tools/tests/sentence-1-prg.c: Rename from sentence.c, move the
test data to sentence-1.
* gettext-tools/tests/.gitignore: Ignore sentence-1-prg.
Daniel Burr [Sat, 28 May 2016 00:30:00 +0000 (09:30 +0900)]
build: Make libxml2 check tighter
* gnulib-local/m4/libxml.m4 (gl_LIBXML): Try to check
xmlXPathSetContextNode, which is available in libxml2 2.9.1 or later.
Problem reported by Dominyk in:
http://savannah.gnu.org/bugs/?46844
Daiki Ueno [Thu, 26 May 2016 04:38:57 +0000 (13:38 +0900)]
m4: Rely less on internal symbols
* gettext-runtime/m4/gettext.m4 (AM_GNU_GETTEXT): Skip checks for the
internal symbols _nl_msg_cat_cntr, _nl_domain_bindings, and
_nl_expand_alias, if __GNU_GETTEXT_SUPPORTED_REVISION is defined.
Problem reported and fix suggested by Masanori Ogino in:
https://lists.gnu.org/archive/html/bug-gettext/2016-04/msg00000.html
The rationale behind this is: (1) those symbol checks are for detecting
certain broken implementations, namely NetBSD and Solaris 7, and
(2) __GNU_GETTEXT_SUPPORTED_REVISION is not defined in those
implementations, while it is defined on compatible implementations, such
as musl-libc which doesn't have those internal symbols.
Daiki Ueno [Tue, 24 May 2016 03:18:07 +0000 (12:18 +0900)]
intl: Pacify pre-C99 compilers
* gettext-runtime/intl/plural-exp.h (HAVE_STRUCT_INITIALIZER): New
macro, based on the check previously in plural-exp.c. Also add check
for __SUNPRO_C for Solaris Studio C compiler.
(GERMANIC_PLURAL): Define as 'struct expression' not 'const struct
expression' if struct/union initializers are not supported by the
compiler.
* gettext-runtime/intl/plural-exp.c: Use HAVE_STRUCT_INITIALIZER.
Reported by Dagobert Michelsen and investigated by pan7 in:
https://savannah.gnu.org/support/?108743
Daiki Ueno [Mon, 23 May 2016 03:04:23 +0000 (12:04 +0900)]
tests: Add more tests for JavaScript format string
* gettext-tools/tests/format-javascript-1: Add test for multiple uses of
same argument.
* gettext-tools/tests/format-javascript-2: Use proper flag to activate
javascript format checker.
Daiki Ueno [Thu, 19 May 2016 02:02:14 +0000 (11:02 +0900)]
Update gnulib
* autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC): Explicitly pull 'gettext',
as the module is now marked as obsolete.
* gnulib-local/Makefile.am (EXTRA_DIST): Remove m4/hard-locale.m4.diff.
* gnulib-local/m4/hard-locale.m4.diff: Remove, as it is no longer
needed.
* gettext-tools/gnulib-lib/.gitignore: Ignore files brought by gnulib-tool.
* gettext-tools/gnulib-tests/.gitignore: Likewise.
* gettext-tools/libgettextpo/.gitignore: Likewise.
Daiki Ueno [Mon, 16 May 2016 08:08:09 +0000 (17:08 +0900)]
msgfmt, xgettext: Respect XDG_DATA_DIRS
Suggested in https://savannah.gnu.org/bugs/?47123
* autogen.sh (GNULIB_MODULES_TOOLS_FOR_SRC): Add 'xmemdup0'.
* gettext-tools/gnulib-lib/.gitignore: Ignore files brought by gnulib-tool.
* gettext-tools/gnulib-tests/.gitignore: Likewise.
* gettext-tools/src/search-path.c: New file.
* gettext-tools/src/search-path.h: New file.
* gettext-tools/src/Makefile.am (noinst_HEADERS): Add search-path.h.
(libgettextsrc_la_SOURCES): Add search-path.c.
* gettext-tools/src/msgfmt.c: Include "search-path.h".
(main): Use get_search_path to locate ITS directories.
* gettext-tools/src/xgettext.c: Include "search-path.h".
(main): Use get_search_path to locate ITS directories.
Daiki Ueno [Wed, 23 Mar 2016 06:17:21 +0000 (15:17 +0900)]
format-python-brace: Support chained expression
* gettext-tools/src/format-python-brace.c (parse_directive): Recognize
chained getattr/getitem expressions.
* gettext-tools/tests/format-python-brace-1: Add test for the case where
both getattr and getitem are used.
Reported by Paul Franklin in:
https://lists.gnu.org/archive/html/bug-gettext/2016-03/msg00017.html
Daiki Ueno [Wed, 23 Mar 2016 01:20:12 +0000 (10:20 +0900)]
doc: Fix ngettext usage example
* gettext-tools/doc/gettext.texi (Plural forms): Fix positional argument
syntax in the C example. Reported by Jonathan Leffler in:
http://lists.gnu.org/archive/html/bug-gettext/2016-03/msg00002.html
Daiki Ueno [Mon, 22 Feb 2016 07:43:16 +0000 (16:43 +0900)]
xgettext: Add new check bullet-unicode
* gettext-tools/src/xgettext.c (main): Generalize --check option
handling.
* gettext-tools/src/message.h (enum syntax_check_type): New enum value
sc_bullet_unicode.
(NSYNTAXCHECKS): Increment.
* gettext-tools/src/message.c (syntax_check_name): Add name for
sc_bullet_unicode.
* gettext-tools/src/msgl-check.c (struct bullet_ty, struct
bullet_stack_ty): New struct.
(bullet_stack): New variable.
(syntax_check_bullet_unicode): New function.
(sc_funcs): Register syntax_check_bullet_unicode as a check function for
sc_bullet_unicode.
* gettext-tools/tests/xgettext-14: Add tests for --check=bullet-unicode
Daiki Ueno [Wed, 10 Feb 2016 06:50:39 +0000 (15:50 +0900)]
doc: Mention the behavior stripping *.in
* gettext-tools/doc/gettext.texi (Preparing ITS Rules): Add footnote
explaining the matching behavior if the input file name has the .in
suffix. Suggested by Jan Synacek.
Daiki Ueno [Mon, 8 Feb 2016 03:30:03 +0000 (12:30 +0900)]
javascript: Support '%m$' in format strings
Gjs has had support for numbered arguments in format strings since 1.40.
Recognize it as well in format-javascript, so msgfmt -c doesn't fail
when numbered arguments are in msgstr. Reported by Sean Burke in:
https://lists.gnu.org/archive/html/bug-gettext/2015-10/msg00002.html
* gettext-tools/src/format-javascript.c (struct numbered_arg): New
struct.
(struct spec): Rename format_args_count to numbered_arg_count. Add
NUMBERED field in place of FORMAT_ARGS. All callers changed.
(numbered_arg_compare): New function.
(format_parse): Handle numbered arguments. Based on format-awk.c.
(format_check): Add check for numbered arguments.
* gettext-tools/tests/format-javascript-1: Add tests for numbered
arguments.
* gettext-tools/tests/lang-javascript: Use numbered argument in format
strings. Add check for Gjs version >= 1.40.
KO Myung-Hun [Tue, 12 Jan 2016 02:35:50 +0000 (11:35 +0900)]
gettext-tools: Use a short name for DLLs on OS/2
OS/2 does not support a DLL name longer than 8 characters.
* gettext-tools/configure.ac (OS2): Define on OS/2.
* gettext-tools/gnulib-lib/Makefile.am (libgettextlib_la_LDFLAGS):
Set a DLL name to gtlib on OS/2.
* gettext-tools/libgettextpo/Makefile.am (libgettextpo_la_LDFLAGS):
Set a DLL name to gtpo on OS/2.
* gettext-tools/src/Makefile.am (libgettextsrc_la_LDFLAGS): Set a DLL
name to gtsrc on OS/2.
Bruno Haible [Wed, 13 Jan 2016 08:31:48 +0000 (09:31 +0100)]
Change msgfmt to produce little-endian .mo files by default.
* gettext-tools/src/msgfmt.c (main): Initialize 'byteswap' so as to
produce little-endian .mo files by default.
* gettext-tools/doc/gettext.texi: Update documentation.
* gettext-tools/doc/msgfmt.texi (--endianness): Likewise.
Daiki Ueno [Wed, 13 Jan 2016 09:42:22 +0000 (18:42 +0900)]
maint: Revert copyright year changes in test data
Some test programs started failing after mass update of copyright notice
for year 2016 (commit 7fa0c277), because of embedded test data with
fixed copyright dates. Revert the commit for those files.
Reported by Bruno Haible.
* .x-update-copyright: Exclude test programs embedding copyright date.
* gettext-tools/tests/msgcomm-22: Revert the last change.
* gettext-tools/tests/msgfilter-sr-latin-1: Likewise.
* gettext-tools/tests/msggrep-1: Likewise.
* gettext-tools/tests/msggrep-2: Likewise.
* gettext-tools/tests/msggrep-3: Likewise.
* gettext-tools/tests/msggrep-4: Likewise.
* gettext-tools/tests/msggrep-5: Likewise.
* gettext-tools/tests/msggrep-9: Likewise.
* gettext-tools/tests/msggrep-11: Likewise.
* gettext-tools/tests/msgmerge-14: Likewise.
Daiki Ueno [Sat, 2 Jan 2016 09:35:51 +0000 (18:35 +0900)]
maint: Use maintainer-makefile from gnulib
* autogen.sh: Pull GNUmakefile, maint.mk, and dependency scripts in
build-aux.
* cfg.mk (update-copyright-env): Adjust for gettext.
* .x-update-copyright: New file.
* .gitignore: Ignore files brought in by gnulib-tool.
Daiki Ueno [Mon, 28 Dec 2015 07:22:41 +0000 (16:22 +0900)]
maint: Update release-steps to current practice
* Admin/release-steps: Split document into two sections ('Making a
snapshot release' and 'Making an official release'), reorder some steps,
and remove mention of manual generation of PO/POT files.
Daiki Ueno [Sun, 27 Dec 2015 20:06:00 +0000 (05:06 +0900)]
Update translations
* gettext-runtime/po/fr.po: Update from Stéphane Aulery <lkppo@free.fr>.
* gettext-runtime/po/nb.po: Update from Johnny A. Solbu <johnny@solbu.net>.
* gettext-runtime/po/pt_BR.po: Update from Rafael Ferreira <rffontenelle@gmail.com>.
* gettext-runtime/po/sr.po: Update from Мирослав Николић <miroslavnikolic@rocketmail.com>.
* gettext-runtime/po/zh_TW.po: Update from Wei-Lun Chao <bluebat@member.fsf.org>.
* gettext-tools/examples/po/fr.po: Update from Stéphane Aulery <lkppo@free.fr>.
* gettext-tools/examples/po/nb.po: Update from Johnny A. Solbu <johnny@solbu.net>.
* gettext-tools/examples/po/pt_BR.po: Update from Rafael Ferreira <rffontenelle@gmail.com>.
* gettext-tools/examples/po/sr.po: Update from Мирослав Николић <miroslavnikolic@rocketmail.com>.
* gettext-tools/examples/po/zh_TW.po: Update from Wei-Lun Chao <bluebat@member.fsf.org>.
* gettext-tools/po/bg.po: Update from Roumen Petrov <transl@roumenpetrov.info>.
* gettext-tools/po/es.po: Update from Antonio Ceballos <aceballos@gmail.com>.
* gettext-tools/po/fr.po: Update from Stéphane Aulery <lkppo@free.fr>.
* gettext-tools/po/ja.po: Update from Masahito Yamaga <ma@yama-ga.com>.
* gettext-tools/po/nl.po: Update from Benno Schulenberg <benno@vertaalt.nl>.
* gettext-tools/po/pt_BR.po: Update from Rafael Fontenelle <rffontenelle@gmail.com>.
* gettext-tools/po/sk.po: Update from Marcel Telka <marcel@telka.sk>.
* gettext-tools/po/sl.po: Update from Primoz PETERLIN <primozz.peterlin@gmail.com>.
* gettext-tools/po/sr.po: Update from Мирослав Николић <miroslavnikolic@rocketmail.com>.
* gettext-tools/po/uk.po: Update from Yuri Chornoivan <yurchor@ukr.net>.
* gettext-tools/po/vi.po: Update from Trần Ngọc Quân <vnwildman@gmail.com>.
Daiki Ueno [Wed, 23 Dec 2015 07:10:15 +0000 (16:10 +0900)]
term-ostream-tests: Add test data for FreeBSD 10.1
* gnulib-local/modules/term-ostream-tests: Add
test-term-ostream-xterm-freebsd101.out.
* gnulib-local/tests/test-term-ostream-xterm: Use new test data.
* gnulib-local/tests/test-term-ostream-xterm-freebsd101.out: New file.
Daiki Ueno [Thu, 10 Dec 2015 07:47:36 +0000 (16:47 +0900)]
its: Mark some attributes as escape="no"
* gettext-tools/its/glade2.its: Mark "comments" attribute as
escape="no".
* gettext-tools/its/gsettings.its: Mark "context" attribute as
escape="no".
* gettext-tools/its/gtkbuilder.its: Mark "comments" attribute as
escape="no".
Daiki Ueno [Thu, 10 Dec 2015 07:34:52 +0000 (16:34 +0900)]
xgettext: Respect ITS escape rule for attributes
* gettext-tools/src/its.c (its_rule_list_extract_text): Check for
"escape" value for an attribute node.
* gettext-tools/tests/xgettext-its-1: Add tests for gt:escapeRule.
KO Myung-Hun [Sun, 8 Nov 2015 05:58:00 +0000 (14:58 +0900)]
intl: Fix name resolution failures on kLIBC
kLIBC already has _nl_default_dirname and _nl_msg_cat_cntr in its own
gettext implmenetation.
* gettext-runtime/intl/dcigettext.c: Do not declare _nl_default_dirname
on kLIBC.
* gettext-runtime/intl/gettextP.h: Define _nl_msg_cat_cntr to
libintl_nl_msg_cat_cntr on kLIBC.
KO Myung-Hun [Sun, 8 Nov 2015 05:57:59 +0000 (14:57 +0900)]
build: Do not include os2compat.[ch]
kLIBC does not need os2compat.[ch]
* gettext-runtime/configure.ac (AH_BOTTOM): Do not include
intl/os2compat.h on kLIBC.
* gettext-runtime/intl/osdep.c: Do not include os2compat.c on kLIBC.
* gettext-tools/configure.ac (AH_BOTTOM): Do not include
intl/os2compat.h on kLIBC.
Daiki Ueno [Wed, 9 Dec 2015 08:35:34 +0000 (17:35 +0900)]
build: Remove expat dependency
* DEPENDENCIES: Suggest libxml2 instead of expat.
* gnulib-local/lib/markup.c: New file.
* gnulib-local/lib/markup.h: New file.
* gnulib-local/modules/markup: New file.
* autogen.sh (GNULIB_MODULES_LIBGETTEXTPO): Add markup module.
* gettext-tools/configure.ac: Remove checks for expat.
* gettext-tools/gnulib-lib/.gitignore: Ignore modules pulled by
gnulib-tool due to the markup module usage.
* gettext-tools/gnulib-tests/.gitignore: Likewise.
* gettext-tools/libgettextpo/.gitignore: Likewise.
* gettext-tools/libgettextpo/Makefile.am (libgettextpo_la_AUXSOURCES):
Remove ../src/libexpat-compat.c.
(libgettextpo_la_LDFLAGS): Remove @LTLIBEXPAT@.
* gettext-tools/src/Makefile.am (noinst_HEADERS): Remove
libexpat-compat.h.
(libgettextsrc_la_SOURCES): Remove libexpat-compat.c.
(libgettextsrc_la_LDFLAGS): Remove @LTLIBEXPAT@.
* gettext-tools/src/format-kde-kuit.c: Use functions from markup.h, when
the file is being compiled as part of libgettextpo. Otherwise use
libxml2.
* gettext-tools/src/libexpat-compat.c: Remove.
* gettext-tools/src/libexpat-compat.h: Remove.
Daiki Ueno [Tue, 8 Dec 2015 10:18:10 +0000 (19:18 +0900)]
build: Fix texi2html failure with perl 5.22
* gettext-runtime/libasprintf/texi2html (update_sec_num): Don't use
"defined" against an array ref.
* gettext-tools/doc/texi2html (update_sec_num): Likewise.
Daiki Ueno [Mon, 5 Oct 2015 08:18:41 +0000 (17:18 +0900)]
msgfmt: Support XML file merging
* gettext-tools/src/Makefile.am (noinst_HEADERS): Add write-xml.h.
(msgfmt_SOURCES): Add write-xml.c.
* gettext-tools/src/its.c (its_merge_context_merge_node): New function.
(its_merge_context_merge): New function.
(its_merge_context_alloc): New function.
(its_merge_context_write): New function.
(its_merge_context_free): New function.
* gettext-tools/src/its.h (its_merge_context_ty): New type.
* gettext-tools/src/msgfmt.c: Include "its.h", "locating-rule.h", and
"write-xml.h".
(SIZEOF): New macro.
(xml_mode, xml_locale_name, xml_template_name, xml_base_directory,
xml_language, xml_its_rules): New variable.
(long_options): Add --language and --xml.
(main): Handle new options.
(usage): Document new options.
(msgfmt_xml_bulk): New function.
* gettext-tools/src/write-xml.c: New file.
* gettext-tools/src/write-xml.h: New file.
* gettext-tools/doc/gettext.texi: Mention XML file merging use-case.
* gettext-tools/doc/msgfmt.texi: Mention --xml option.
* gettext-tools/tests/msgfmt-xml-1: New file.
* gettext-tools/tests/msgfmt-xml-2: New file.
* gettext-tools/tests/Makefile.am (TESTS): Add new tests.
Daiki Ueno [Fri, 2 Oct 2015 03:44:04 +0000 (12:44 +0900)]
xgettext: Rewrite Glade scanner in ITS
* gettext-tools/its/glade.loc: New file.
* gettext-tools/its/glade1.its: New file.
* gettext-tools/its/glade2.its: New file.
* gettext-tools/its/gtkbuilder.its: New file.
* gettext-tools/its/Makefile.am (dist_its_DATA): Add new files.
* gettext-tools/src/Makefile.am (xgettext_SOURCES): Remove x-glade.c.
* gettext-tools/src/x-glade.c: Remove.
* gettext-tools/src/x-glade.h (EXTENSIONS_GLADE): Set language field to
NULL.
(SCANNERS_GLADE): Set func field to NULL.
* gettext-tools/po/POTFILES.in: Remove x-glade.c
Daiki Ueno [Fri, 2 Oct 2015 03:38:14 +0000 (12:38 +0900)]
xgettext: Rewrite GSettings scanner in ITS
* gettext-tools/its/gsettings.its: New file.
* gettext-tools/its/gsettings.loc: New file.
* gettext-tools/its/Makefile.am (dist_its_DATA): Add new files.
* gettext-tools/src/Makefile.am (xgettext_SOURCES): Remove x-gsettings.c.
* gettext-tools/src/x-gsettings.c: Remove.
* gettext-tools/src/x-gsettings.h (EXTENSIONS_GSETTINGS): Set language
field to NULL.
(SCANNER_GSETTINGS): Set func field to NULL.
Daiki Ueno [Fri, 2 Oct 2015 02:38:29 +0000 (11:38 +0900)]
xgettext: Rewrite AppData scanner in ITS
* gettext-tools/its/appdata.loc: New file.
* gettext-tools/its/appdata.its: New file.
* gettext-tools/its/Makefile.am (dist_its_DATA): Add new files.
* gettext-tools/src/Makefile.am (xgettext_SOURCES): Remove x-appdata.c.
* gettext-tools/src/x-appdata.c: Remove.
* gettext-tools/src/x-appdata.h (EXTENSIONS_APPDATA): Set language
field to NULL.
(SCANNERS_APPDATA): Set func field to NULL.