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) <br...@clisp.org> 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