From: "Cygwin Gettext Maintainer" <[email protected]>

A well integrated set of tools and documentation that provides a
framework for producing multi-lingual messages in programs.
Includes conventions for writing programs to support message catalogs,
a directory and file naming organization for message catalogs,
programs for handling translatable and translated strings,
and a library for retrieving translated messages.

The following test packages have been uploaded to the Cygwin distribution:

- gettext                       0.26
- gettext-locale-alias          0.26
- gettext-doc                   0.26
- gettext-devel                 0.26
- emacs-gettext                 0.26
- libintl-devel                 0.26
- libintl8                      0.26
- libasprintf-devel             0.26
- libasprintf0                  0.26
- libgettextpo-devel            0.26
- libgettextpo0                 0.26
- libtextstyle-devel            0.26
- libtextstyle0                 0.26
- mingw64-x86_64-gettext        0.26

Dependencies on git and bzip2 have been dropped in this Cygwin build,
and libtextstyle is now mandatory so is no longer disabled and being
built as library and devel packages (as in Fedora Main).

Please test these packages as extensively as possible (especially if you
are a Cygwin package maintainer) as libintl8 is used in most common user
and developer utilities and libraries dealing with locales.

Package maintainers should install this test release and rerun checks of
as many libraries and packages depending on libintl8 if possible.

If no issues are reported in the next few weeks, and no newer release
becomes available, this release will be promoted to current stable.

For changes since the previous Cygwin release, see below,
/usr/share/doc/gettext/NEWS after installation, or at:

        https://git.savannah.gnu.org/gitweb/?p=gettext.git;f=NEWS;a=blob


2025-07-19      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.

2025-07-02      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.

2025-05-07      0.25

Programming languages support:

* Go:
  - xgettext now supports Go.
  - 'msgfmt -c' now verifies the syntax of translations of Go format
    strings.
  - New examples 'hello-go' and 'hello-go-http' have been added.
* TypeScript:
  - xgettext now supports TypeScript and TSX (= TypeScript with JSX
    extensions).
* D:
  - A new library libintl_d.a contains the runtime for using GNU gettext
    message catalogs in the D programming language.
  - xgettext now supports D.
  - 'msgfmt -c' now verifies the syntax of translations of D format
    strings.
  - A new example 'hello-d' has been added.
* Modula-2:
  - A new library libintl_m2.so contains the runtime for using GNU gettext
    message catalogs in the Modula-2 programming language.
  - xgettext now supports Modula-2.
  - 'msgfmt -c' now verifies the syntax of translations of Modula-2 format
    strings.
  - A new example 'hello-modula2' has been added.

Improvements for maintainers:
* xgettext has a new option '--generated' that customizes the way the
  'POT-Creation-Date' in the POT file is computed.

2025-05-03      0.24.1

* Bug fixes:
  - Fix bad interactions between autoreconf and autopoint.
  - xgettext: Creating the POT file of a package under Git version control
    is now faster. Also, the use of Git can be turned off by specifying
    the option '--no-git'.

2025-02-25      0.24

Programming languages support:

* JavaScript:
  - xgettext now parses recursive JSX expressions correctly.
* Rust:
  - xgettext now supports Rust.
  - 'msgfmt -c' now verifies the syntax of translations of Rust format
    strings.
  - A new example 'hello-rust' has been added.
* C:
  - A new example 'hello-c-http' has been added, showing the use of
    GNU gettext in a multithreaded web server.
* C++:
  - A new example 'hello-c++-gnome3' has been added.
* Ruby:
  - A new example 'hello-ruby' has been added.

Improvements for maintainers:
* When xgettext creates the POT file of a package under Git version control,
  the 'POT-Creation-Date' in the POT file usually no longer changes
  gratuitously each time the POT file is regenerated.

Caveat maintainers:
* Building the po/ directory now requires GNU make on specific platforms:
  macOS, Solaris, AIX.

2024-12-31      0.23.1

* Bug fixes:
  - Building with libxml2 >= 2.12.0 and gcc >= 14 now works.
  - XML: The value of the xml:lang attribute, inserted by msgfmt, is now
    more correct.

2024-12-01      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.

-- 
              *** CYGWIN-ANNOUNCE UNSUBSCRIBE INFO ***

The easiest way to unsubscribe is to visit 
<https://cygwin.com/mailman/options/cygwin-announce>, and click 'Unsubscribe'.

If you need more information on unsubscribing, start reading here: 
<https://sourceware.org/lists.html#unsubscribe>.

Reply via email to