Changelog:
Version 0.20.1 - May 2019
* Important bug fix:
- Fixed a wrong shared library versioning of libintl.so.
Version 0.20 - May 2019
* Support for reproducible builds:
- msgfmt now eliminates the POT-Creation-Date header field from .mo files.
* Improvements for translators:
- update-po target in Makefile.in.in now uses msgmerge --previous.
* Improvements for maintainers:
- msgmerge now has an option --for-msgfmt, that produces a PO file meant
for use by msgfmt only. This option saves processing time, in particular
by omitting fuzzy matching that is not useful in this situation.
- The .pot file in a 'po' directory is now erased by "make maintainer-clean".
- It is now possible to override xgettext options from the po/Makefile.in.in
through options in XGETTEXT_OPTIONS (declared in po/Makevars).
- The --intl option of the gettextize program (deprecated since 2010) is
no longer available. Instead of including the intl sources in your package,
we suggest making the libintl library an optional prerequisite of your
package. This will simplify the build system of your package.
- Accordingly, the Autoconf macro AM_GNU_GETTEXT_INTL_SUBDIR is gone as well.
* Programming languages support:
- C, C++:
xgettext now supports strings in u8"..." syntax, as specified in C11
and C++11.
- C, C++:
xgettext now supports 'p'/'P' exponent markers in number tokens, as
specified in C99 and C++17.
- C++:
xgettext now supports underscores in number tokens.
- C++:
xgettext now supports single-quotes in number tokens, as specified in
C++14.
- Shell:
o The programs 'gettext', 'ngettext' now support a --context argument.
o gettext.sh contains new function eval_pgettext and eval_npgettext
for producing translations of messages with context.
- Java:
o xgettext now supports UTF-8 encoded .properties files (a new feature
of Java 9).
o The build system and tools now support Java 9, 10, and 11. On the
other hand, support for old versions of Java (Java 5 and older,
GCJ 4.2.x and older) has been dropped.
- Perl:
o Native support for context functions (pgettext, dpgettext, dcpgettext,
npgettext, dnpgettext, dcnpgettext).
o better detection of question mark and slash as operators (as opposed
to regular expression delimiters).
- Scheme:
xgettext now parses the syntax for specialized byte vectors (#u8(...),
#vu8(...), etc.) correctly.
- Pascal:
xgettext can now extract strings from .rsj files, produced by the
Free Pascal compiler version 3.0.0 or newer.
- Vala:
xgettext now parses escape sequences in strings more accurately.
- JavaScript:
xgettext now parses template literals correctly.
* Runtime behaviour:
- The interpretation of the language preferences on macOS has been fixed.
- Per-thread locales are now also supported on Solaris 11.4.
- The replacements for the printf()/fprintf()/... functions that are
provided through <libintl.h> on native Windows and NetBSD are now POSIX
compliant. There is no conflict any more between these replacements
and other possible replacements provided by gnulib or mingw.
* Libtextstyle:
- This package installs a new library 'libtextstyle', together with a new
header file <textstyle.h>. It is a library for styling text output sent
to a console or terminal emulator.
Packagers: please see the suggested packaging hints in the file PACKAGING.
Unsorted entries in PLIST files have generated a pkglint warning for at
least 12 years. Somewhat more recently, pkglint has learned to sort
PLIST files automatically. Since pkglint 5.4.23, the sorting is only
done in obvious, simple cases. These have been applied by running:
pkglint -Cnone,PLIST -Wnone,plist-sort -r -F
* xgettext now understands the block comment syntax of Guile 2.0.
* libgettextpo library:
- The initial msgstr of a new message is now "", not NULL.
- Bug fixes in the functions po_message_is_range, po_file_check_all,
po_message_check_all.
* Installation options:
The configure options --with-xz and --with-bzip2 can be used to specify
alternate compression methods for the archive used by the 'autopoint'
program. These options, together with --with-git, allow to trade
dependencies against installed package size. --with-xz has the highest
compression rate, followed by --with-git, followed by --with-bzip2.
* Autoconf macros:
- The autoconf macros installed by 'gettextize' now work with the
forthcoming Automake 1.14 and require Autoconf version 2.60 or
newer.
* Portability:
- Building on MacOS X 10.7, Cygwin 1.7.10, and newer 64-bit mingw is
now supported.
* msggrep: A '$' anchor in a regular expression now also matches the end of
the string, even if it does not end in a newline.
* Dependencies:
The libraries and programs are now linked with libunistring if this library
is already installed.
* Installation options:
The configure option --with-cvs is deprecated. The 'autopoint' program will
now use the 'git' program by default to compress its archive. If the
configure option --without-git is specified, 'autopoint' will not rely on
'git', but will instead rely on a locally installed a 3 MB large archive.
Changes 0.18:
* Runtime behaviour:
- On MacOS X and Windows systems, <libintl.h> now extends setlocale() and
newlocale() so that their determination of the default locale considers
the choice the user has made in the system control panels.
- On MacOS X systems, the gettext()/dgettext()/... functions now respect the
locale of the current thread, if a thread-specific locale has been set.
* PO file format:
There is a new field 'Language' in the header entry. It denotes the language
code (plus optional country code) for the PO file. This field can be used
by automated tools, such as spell checkers. It is expected to be more
reliable than looking at the file name or at the 'Language-Team' field in
the header entry.
msgmerge, msgcat, msgen have a new option --lang that allows to specify
this field. Additionally, msgmerge fills in this new field by looking at
the 'Language-Team' field (if the --lang option is not given).
* xgettext and PO file format:
For messages with plural forms, programmers can inform the translators
about the range of possible values of the numeric argument, like this:
/* xgettext: range: 0..15 */
This information 'range: 0..15' is stored in the PO file as a flag attached
to the message. Translators can produce better translations when they know
that the numeric argument is small.
* Colorized PO files:
msgattrib, msgcomm, msgconv, msgen, msgfilter, msggrep, msginit, msgmerge,
msgunfmt, msguniq, xgettext now have options --color and --style, like msgcat
has since version 0.17.
* msgmerge is up to 10 times faster when the PO and POT files are large.
This speedup was contributed by Ralf Wildenhues.
* msgcmp has a new option -N/--no-fuzzy-matching, like msgmerge has since
version 0.12.
* msgfilter now sets environment variables during the invocation of the
filter, indicating the msgid and location of the messge being processed.
* xgettext now can extract plural forms from Qt 4 programs. The recommended
xgettext command-line options for this case are:
--qt --keyword=tr:1,1t --keyword=tr:1,2c,2t --keyword=tr:1,1,2c,3t
* xgettext --language=GCC-source now recognizes also the format strings
used in the Fortran front-end of the GCC compiler, and marks them as
'gfc-internal-format'.
* autopoint can now be used to update several PO directories all together.
including support for relocable programs, Qt support,
separation of the PO processing functions into a separate
library and more.
Reorganise the gettext infrastructure by splitting of the
tools into devel/gettext-tools, which will be used by the tools
framework. The remaining devel/gettext package contains
gettextize and autopoint aka the infrastructure to embbed gettext
into a package.
Due to the ABI and API changes, a recursive revision bump will
follow.
Take blaim by receiving the maintainer hat.
With input from jlam@, reed@ and wiz@.
There are too many changes to list in a sensible way.
The most visible change for me is that libintl requires libiconv now.
Also untangled the 3 sub-pkgs -- a common patch dir makes it too complex.
This pkg used to expose buildlink2 problems - the pkg libintl was
pulled in in cases where USE_GNU_GETTEXT was not set. There were
some improvements to libtool filtering, and x11/gtk builds now, so
I hope this is settled.
The automatic truncation in gensolpkg doesn't work for packages which
have the same package name for the first 5-6 chars.
e.g. amanda-server and amanda-client would be named amanda and amanda.
Now, we add a SVR4_PKGNAME and use amacl for amanda-client and amase for
amanda-server.
All svr4 packages also have a vendor tag, so we have to reserve some chars
for this tag, which is normaly 3 or 4 chars. Thats why we can only use 6
or 5 chars for SVR4_PKGNAME. I used 5 for all the packages, to give the
vendor tag enough room.
All p5-* packages and a few other packages have now a SVR4_PKGNAME.