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.23.


==== New in 0.23 ====

# Internationalized data formats:
  * XML:
    o The escaping of characters such as & < > has been changed:
      - No escaping is done any more by xgettext, when creating a POT file.
      - Instead, extra escaping can be requested for the msgfmt pass, when
        merging into an XML file.
      - The default value of 'escape' in the <gt:escapeRule> was "yes";
        now it is "no".
      This means that existing translations of older POT files may no longer
      fully apply. As a maintainer of a package that has translatable XML files,
      you need to regenerate the POT file and pass it on to your translators.
    o XML schemas for .its and .loc files are now provided.
    o The value of the xml:lang attribute, inserted by msgfmt, now conforms
      to W3C standards.
    o 'msgfmt --xml' accept an option --replace-text, that causes the output
      to be a mono-lingual XML file instead of a multi-lingual XML file.
    o xgettext and 'msgfmt --xml' now support DocBook XML files.
  * Desktop: xgettext now produces POT files with correct line numbers.

# Programming languages support:
  * Python:
    o xgettext now assumes source code for Python 3 rather than Python 2.
      This affects the interpretation of escape sequences in string literals.
    o xgettext now recognizes the f-string syntax.
  * Scheme:
    o xgettext now supports the option '-L Guile' as an alternative to
      '-L Scheme'.  They are nearly equivalent.  They differ in the
      interpretation of escape sequences in string literals: While
      'xgettext -L Scheme' assumes the R6RS and R7RS syntax of string literals,
      'xgettext -L Guile' assumes the syntax of string literals understood by
      Guile 2.x and 3.0 (without command-line option '--r6rs' or '--r7rs', and
      before a '#!r6rs' directive is seen).
    o xgettext now recognizes comments of the form '#; <expression>'.
  * Java: xgettext now has an improved recognition of format strings when the
    String.formatted method is used.
  * JavaScript:
    o xgettext now parses template literals inside JSX correctly.
    o xgettext has a new option --tag that customizes the behaviour of tagged
      template literals.
  * C#:
    o The build system and tools now also support 'dotnet' (.NET) as C#
      implementation.  In order to declare a preference for 'dotnet' over
      'mono', you can use the configure option '--enable-csharp=dotnet'.
    o xgettext now recognizes strings with embedded expressions (a.k.a.
      interpolated strings).
  * awk: xgettext now recognizes string concatenation by juxtaposition.
  * Smalltalk: xgettext now recognizes the string concatenation operator ','.
  * Vala: xgettext now has an improved recognition of format strings when the
    string.printf method is used.
  * Glade: xgettext has improved support for GtkBuilder 4.
  * Tcl: With the recently released Tcl 9.0, characters outside the Unicode BMP
    in Tcl message catalogs (.msg files) will work regardless of the locale's
    encoding.
  * Perl:
    o xgettext now reports warnings instead of fatal errors.
    o xgettext now recognizes strings with embedded expressions (a.k.a.
      interpolated strings).
  * PHP:
    o xgettext now recognizes strings with embedded expressions.
    o xgettext now scans Heredoc and Nowdoc strings correctly.
    o xgettext now regards the format string directives %E, %F, %g, %G, %h, %H
      as valid.

# Runtime behaviour:
  * In the C.UTF-8 locale, like in the C locale, the *gettext() functions
    now return the msgid untranslated. This is relevant for GNU systems,
    Linux with musl libc, FreeBSD, NetBSD, OpenBSD, Cygwin, and Android.

# Documentation:
  * The section "Preparing Strings" now gives more advice how to deal with
    string concatenation and strings with embedded expressions.

# xgettext:
  * Most of the diagnostics emitted by xgettext are now labelled as
    "warning" or "error".

# msgmerge:
  * The option '--sorted-output' is now deprecated.

# libgettextpo library:
  * This library is now multithread-safe.
  * The function 'po_message_set_format' now supports resetting a format string
    mark.


==== Download ====

Here are the compressed sources:
  https://ftp.gnu.org/gnu/gettext/gettext-0.23.tar.gz   (28MB)
  https://ftp.gnu.org/gnu/gettext/gettext-0.23.tar.lz   (8.7MB)
  https://ftp.gnu.org/gnu/gettext/gettext-0.23.tar.xz   (11MB)

Here are the GPG detached signatures:
  https://ftp.gnu.org/gnu/gettext/gettext-0.23.tar.gz.sig
  https://ftp.gnu.org/gnu/gettext/gettext-0.23.tar.lz.sig
  https://ftp.gnu.org/gnu/gettext/gettext-0.23.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.23.tar.gz
  SHA1 sum:   c31ae593a7c51f805645914ca206991e072760d9
  SHA256 sum: 945dd7002a02dd7108ad0510602e13416b41d327898cf8522201bc6af10907a6

  File: gettext-0.23.tar.lz
  SHA1 sum:   76a00a8abaf89efc516d9d6fcad4896e06428219
  SHA256 sum: 9878994930a8e09f1e3186203b3ff2accb2c4e67ddc6098b2c1e4a74364d3c5a

  File: gettext-0.23.tar.xz
  SHA1 sum:   150efc2f9922cd4bb7fbb9d5c72ed3b2d1b60e3e
  SHA256 sum: bf31a9b6bdf3e364669c7bd9858f97e4a0c408a8d22940c5d4ab638b65460f85

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.23.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) <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 F5BE8B267C6A406D

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.23.tar.gz.sig




Reply via email to