Here is a new release of GNU gettext.

GNU gettext allows programs to produce messages in the user's native
language. It consists of
  - runtime libraries for C, C++, Java, C#, Shell programs.
  - tools for programmers and translators.

New in version 0.22:

* PO file format:
  - When a #: line contains references to file names that contain spaces,
    these file names are surrounded by Unicode characters U+2068 and U+2069.
    This makes it possible to parse such references correctly.

* Improvements for maintainers:
  - The AM_GNU_GETTEXT macro now defines two variables localedir_c and
    localedir_c_make, that can be used in C code or in Makefiles,
    respectively, for representing the value of the --localedir configure

* Programming languages support:

  - C, C++:
    o xgettext now supports gettext-like functions that take wide strings
      (of type 'const wchar_t *', 'const char16_t *', or 'const char32_t *')
      as arguments.
    o xgettext now recognizes numbers with digit separators, as defined by
      ISO C 23, as tokens.
    o xgettext and msgfmt now recognize the format string directive %b
      (for binary integer output, as defined by ISO C 23) in format strings.
    o xgettext and msgfmt now recognize the argument size specifiers
      w8, w16, w32, w64, wf8, wf16, wf32, wf64 (as defined by ISO C 23)
      in format strings.
    o xgettext and msgfmt now recognize C++ format strings, as defined by
      ISO C++ 20.  They are marked as 'c++-format' in POT and PO files.
      A new example has been added, 'hello-c++20', that illustrates how
      to use these format strings with gettext.

  - Java:
    o The build system and tools now also support Java versions newer than
      Java 11. This is known to work up to Java 20, at least. On the other
      hand, support for old versions of Java (Java 1.5 and GCJ) has been

  - Tcl: xgettext now supports the \x, \u, and \U escapes as defined in
    Tcl 8.6.

* Portability:
  - On systems with musl libc, the *gettext() functions in libc now work
    with MO files generated from PO files with an encoding other than UTF-8.
    To this effect, the msgfmt program now converts the messages to UTF-8
    encoding before storing them in a MO file.  You can prevent this by
    using the msgfmt --no-convert option.
  - On systems with musl libc, the *gettext() functions in libc now work
    with MO files generated from PO files with ISO C 99 <inttypes.h> format
    string directive macros.  To this effect, the msgfmt program pre-expands
    strings with such macros.  You can prevent this by using the msgfmt
    --no-redundancy option.

* xgettext:
  - The xgettext option '--sorted-output' is now deprecated.
  - xgettext input files of type PO that are not all ASCII and not UTF-8
    encoded are now handled correctly.

* The base Unicode standard is now updated to 15.0.0.

* Emacs PO mode:
  Fix an incompatibility with Emacs version 29 or newer.


Here are the compressed sources:   (25MB)   (7.8MB)   (9.6MB)

Here are the GPG detached signatures:

Here are the SHA1 and SHA256 checksums:

  ee59ed8121be886a23d5975e22bc857f830d86c8  gettext-0.22.tar.gz
  SfCJvhG0kBcLvwntL1Hl9Rd/Vb5MxmUEpYYYIOD7Bqs=  gettext-0.22.tar.gz
  261aa54775577b9b709316b0e9fab804b603f46b  gettext-0.22.tar.lz
  JOJmmyOr8m+a/bvDBV7eszh5+zZFTegOjkqts9u+C5Y=  gettext-0.22.tar.lz
  d9666d3b9c47a84c814d32e76fa75f60ec23756f  gettext-0.22.tar.xz
  DmA5OkcGFWe0aHWySbfSeIsJLWRX1lYUW7Dn5qPibZM=  gettext-0.22.tar.xz

Verify the base64 SHA256 checksum with cksum -a sha256 --check
from coreutils-9.2 or OpenBSD's cksum since 2007.

Use a .sig file to verify that the corresponding file (without the
.sig suffix) is intact.  First, be sure to download both the .sig file
and the corresponding tarball.  Then, run a command like this:

  gpg --verify gettext-0.22.tar.gz.sig

The signature should match the fingerprint of the following key:

  pub   rsa4096 2019-02-12 [SC]
        9001 B85A F9E1 B83D F1BD  A942 F5BE 8B26 7C6A 406D
  uid   Bruno Haible (Open Source Development) <>

If that command fails because you don't have the required public key,
or that public key has expired, try the following commands to retrieve
or refresh it, and then rerun the 'gpg --verify' command.

  gpg --recv-keys F5BE8B267C6A406D

As a last resort to find the key, you can try the official GNU

  wget -q
  gpg --keyring gnu-keyring.gpg --verify gettext-0.22.tar.gz.sig


Documentation for gettext:

Documentation for libtextstyle:

Reply via email to