The GNU gettext package contains
* tools for internationalization, enabling a programmer to make their package
"speak" to the users in their specific language,
* tools for localization, enabling a translator to initialize, check, and
review the message translations that they provide for a package,
* runtime libraries; in particular, a libintl library that implements the
C function gettext() portably, in a glibc-compatible way.
It is now available in version 0.26.
==== New in 0.26 ====
# Programming languages support:
* JavaScript:
- xgettext now parses regular expressions with character classes
correctly.
* C, C++, Python, JavaScript, EmacsLisp, librep, Go, Ruby, awk, D, Tcl,
Perl, PHP:
- xgettext's heuristic recognition of format strings has been improved:
strings like "100% complete" (with a space flag in a format directive)
are no longer flagged as format strings by default, unless they occur
in a context that requires a format string. You can override this
heuristic by using a comment of the form /* xgettext: c-format */.
* Shell:
- The documentation now mentions two other approaches for
internationalizing messages with parameters in shell scripts.
- xgettext now recognizes format strings in the 'printf' command syntax.
They are marked as 'sh-printf-format' in POT and PO files.
- Two new programs 'printf_gettext' and 'printf_ngettext' are provided,
that do formatted output with a localized format string in a more
efficient way (without spawning a subshell).
- xgettext now recognizes the \c, \u, and \U escape sequences in dollar-
single-quoted strings $'...'.
# Improvements for maintainers:
* xgettext:
- When extracting a message with plural that is some format string,
xgettext now verifies that the msgid and msgid_plural are compatible
as format strings. For most format string types, this still allows
omitting from msgid a placeholder that is used in msgid_plural. But
when a placeholder is used in both msgid and msgid_plural, its type
must be the same in both.
- xgettext now suggests a refactoring when a translatable string
contains an URL or email address.
# Improvements for translators:
* msggrep:
- msggrep accepts two new options -W/--workflow-flags and -S/--sticky-flags
that allow to select only messages that have a specified flag.
# Bug fixes:
- The AM_GNU_GETTEXT macro now rejects the dysfunctional gettext() function
in libc of Solaris 11.[0-3], Solaris OpenIndiana, and Solaris OmniOS.
- The AM_GNU_GETTEXT macro now recognizes, on MSVC, the GNU libintl built
as a shared library.
==== New in 0.25.1 ====
# Bug fixes:
- autopoint no longer fails if configure.ac contains no
AM_GNU_GETTEXT_VERSION or AM_GNU_GETTEXT_REQUIRE_VERSION invocation.
- nls.m4 is installed again under $PREFIX/share/aclocal/.
# Portability:
- Building on native Windows with MSVC and --enable-shared is now supported.
==== Download ====
Here are the compressed sources:
https://ftp.gnu.org/gnu/gettext/gettext-0.26.tar.gz (30MB)
https://ftp.gnu.org/gnu/gettext/gettext-0.26.tar.lz (9.1MB)
https://ftp.gnu.org/gnu/gettext/gettext-0.26.tar.xz (9.7MB)
Here are the GPG detached signatures:
https://ftp.gnu.org/gnu/gettext/gettext-0.26.tar.gz.sig
https://ftp.gnu.org/gnu/gettext/gettext-0.26.tar.lz.sig
https://ftp.gnu.org/gnu/gettext/gettext-0.26.tar.xz.sig
Use a mirror for higher download bandwidth:
https://www.gnu.org/order/ftp.html
Here are the SHA1 and SHA256 checksums:
File: gettext-0.26.tar.gz
SHA1 sum: 303f56fa7f0acba9400b6e92afe2f9cdcf0ce8e7
SHA256 sum: 39acf4b0371e9b110b60005562aace5b3631fed9b1bb9ecccfc7f56e58bb1d7f
File: gettext-0.26.tar.lz
SHA1 sum: a1c1f35cfdca5703a15dd584786b2f566299324c
SHA256 sum: a0151088dad8942374dc038e461b228352581defd7055e79297f156268b8d508
File: gettext-0.26.tar.xz
SHA1 sum: 06caeffe13e4e9f92912e8c4d99d340790f463ae
SHA256 sum: d1fb86e260cfe7da6031f94d2e44c0da55903dbae0a2fa0fae78c91ae1b56f00
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.26.tar.gz.sig
The signature should match the fingerprint of the following key:
pub ed25519 2025-01-28 [SC]
E0FF BD97 5397 F77A 32AB 76EC B630 1D9E 1BBE AC08
uid Bruno Haible (Free Software Development) <[email protected]>
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 B6301D9E1BBEAC08
As a last resort to find the key, you can try the official GNU
keyring:
wget -q https://ftp.gnu.org/gnu/gnu-keyring.gpg
gpg --keyring gnu-keyring.gpg --verify gettext-0.26.tar.gz.sig