1Version 0.21 - July 2020 2 3* Programming languages support: 4 - Shell: 5 o xgettext now recognizes and ignores 'env' invocations and environment 6 variable assignments in front of commands. 7 - Java: 8 o xgettext now recognizes format strings in the Formatter syntax. They 9 are marked as 'java-printf-format' in POT and PO files. 10 o xgettext now recognizes text blocks as string literals. 11 - JavaScript: 12 xgettext parses JSX expressions more reliably. 13 - Ruby: 14 o xgettext now supports Ruby. 15 o 'msgfmt -c' now verifies the syntax of translations of Ruby format 16 strings. 17 18* Runtime behaviour: 19 - On native Windows platforms, the directory that contains the message 20 catalogs may now contain arbitrary Unicode characters. To make use of 21 this feature, use the new function 'wbindtextdomain' instead of 22 'bindtextdomain'. It allows to pass a directory name in wchar_t[] encoding. 23 Note: 'wbindtextdomain' exists only on native Windows platforms. 24 25* Improvements for translators: 26 - When msgfmt writes a MO file, it now does so in such a way that processes 27 that are currently using an older copy of the MO file will not crash. 28 29* Libtextstyle: 30 - Added support for emitting hyperlinks. 31 - New API for doing formatted output. 32 - The example programs support the NO_COLOR environment variable. 33 34Version 0.20.2 - April 2020 35 36* Improvements for maintainers: 37 - A dependency bug in po/Makefile.in.in has been fixed. 38 39* Programming languages support: 40 - Shell: 41 o The programs 'gettext', 'ngettext', when invoked with option -e, now 42 expand '\\' and octal escape sequences, instead of swallowing them. 43 (Bug present since the beginning.) 44 o xgettext now recognizes 'gettext' program invocations with the '-e' 45 option, such as 46 gettext -e 'some\nstring\n' 47 - Python: 48 xgettext now assumes a Python source file is in UTF-8 encoding by default, 49 as stated in PEP 3120. 50 - Desktop Entry: 51 The value of the 'Icon' property is no longer extracted into the POT file 52 by xgettext. The documentation explains how to localize icons. 53 54* Runtime behaviour: 55 - The interpretation of the language preferences on macOS has been improved, 56 especially in the case where a system locale does not exist for the 57 combination of the selected primary language and the selected territory. 58 - Fixed a multithread-safety bug on Cygwin and native Windows. 59 60* Libtextstyle: 61 - Fixed a number of bugs (by upgrading libcroco to version 0.6.13). 62 63Version 0.20.1 - May 2019 64 65* Important bug fix: 66 - Fixed a wrong shared library versioning of libintl.so. 67 68Version 0.20 - May 2019 69 70* Support for reproducible builds: 71 - msgfmt now eliminates the POT-Creation-Date header field from .mo files. 72 73* Improvements for translators: 74 - update-po target in Makefile.in.in now uses msgmerge --previous. 75 76* Improvements for maintainers: 77 - msgmerge now has an option --for-msgfmt, that produces a PO file meant 78 for use by msgfmt only. This option saves processing time, in particular 79 by omitting fuzzy matching that is not useful in this situation. 80 - The .pot file in a 'po' directory is now erased by "make maintainer-clean". 81 - It is now possible to override xgettext options from the po/Makefile.in.in 82 through options in XGETTEXT_OPTIONS (declared in po/Makevars). 83 - The --intl option of the gettextize program (deprecated since 2010) is 84 no longer available. Instead of including the intl sources in your package, 85 we suggest making the libintl library an optional prerequisite of your 86 package. This will simplify the build system of your package. 87 - Accordingly, the Autoconf macro AM_GNU_GETTEXT_INTL_SUBDIR is gone as well. 88 89* Programming languages support: 90 - C, C++: 91 xgettext now supports strings in u8"..." syntax, as specified in C11 92 and C++11. 93 - C, C++: 94 xgettext now supports 'p'/'P' exponent markers in number tokens, as 95 specified in C99 and C++17. 96 - C++: 97 xgettext now supports underscores in number tokens. 98 - C++: 99 xgettext now supports single-quotes in number tokens, as specified in 100 C++14. 101 - Shell: 102 o The programs 'gettext', 'ngettext' now support a --context argument. 103 o gettext.sh contains new function eval_pgettext and eval_npgettext 104 for producing translations of messages with context. 105 - Java: 106 o xgettext now supports UTF-8 encoded .properties files (a new feature 107 of Java 9). 108 o The build system and tools now support Java 9, 10, and 11. On the 109 other hand, support for old versions of Java (Java 5 and older, 110 GCJ 4.2.x and older) has been dropped. 111 - Perl: 112 o Native support for context functions (pgettext, dpgettext, dcpgettext, 113 npgettext, dnpgettext, dcnpgettext). 114 o better detection of question mark and slash as operators (as opposed 115 to regular expression delimiters). 116 - Scheme: 117 xgettext now parses the syntax for specialized byte vectors (#u8(...), 118 #vu8(...), etc.) correctly. 119 - Pascal: 120 xgettext can now extract strings from .rsj files, produced by the 121 Free Pascal compiler version 3.0.0 or newer. 122 - Vala: 123 xgettext now parses escape sequences in strings more accurately. 124 - JavaScript: 125 xgettext now parses template literals correctly. 126 127* Runtime behaviour: 128 - The interpretation of the language preferences on macOS has been fixed. 129 - Per-thread locales are now also supported on Solaris 11.4. 130 - The replacements for the printf()/fprintf()/... functions that are 131 provided through <libintl.h> on native Windows and NetBSD are now POSIX 132 compliant. There is no conflict any more between these replacements 133 and other possible replacements provided by gnulib or mingw. 134 135* Libtextstyle: 136 - This package installs a new library 'libtextstyle', together with a new 137 header file <textstyle.h>. It is a library for styling text output sent 138 to a console or terminal emulator. 139 Packagers: please see the suggested packaging hints in the file PACKAGING. 140 141Version 0.19.8 - June 2016 142 143* Support for reproducible builds: 144 - msgfmt now produces little-endian .mo files by default. 145 146* Programming languages support: 147 - XML: 148 xgettext and msgfmt now look for .its files in directories 149 supplied through the GETTEXTDATADIRS or XDG_DATA_DIRS environment 150 variable. 151 - JavaScript: 152 xgettext and msgfmt now recognize numbered arguments in format 153 strings. 154 155* Portability: 156 - Improve OS/2 kLIBC support. 157 - Fix libintl compilation issue with pre-C99 compilers. It was a 158 regression since 0.19.5. 159 - The AM_GNU_GETTEXT Autoconf macro can now detect musl-libc's 160 gettext as a compatible implementation. 161 162Version 0.19.7 - December 2015 163 164* Programming languages support: 165 - XML: 166 xgettext can now load custom string extraction rules supplied by 167 consumer projects. The rules are written in XML, utilizing the 168 Internationalization Tag Set (ITS) standard. All the existing 169 XML-based language scanners (Glade, GSettings, and AppData) are 170 rewritten using ITS. In addition, msgfmt now has --xml option to 171 merge translations back to the original XML document. 172 173* Portability: 174 - Improve OS/2 kLIBC support (still not complete) 175 - Remove dependency on expat 176 177Version 0.19.6 - September 2015 178 179* Programming languages support: 180 - AppData: 181 xgettext now supports AppData file format, used by software center 182 applications (e.g., GNOME Software) to describe installable 183 applications. 184 185* A new macro AM_GNU_GETTEXT_REQUIRE_VERSION can be used to indicate 186 autopoint to pull the latest available infrastructure, instead of 187 the exact version specified with AM_GNU_GETTEXT_VERSION. When 188 AM_GNU_GETTEXT_REQUIRE_VERSION is used, AM_GNU_GETTEXT_VERSION is 189 ignored. 190 191* po/Makefile.in.in can now insert the file $(DOMAIN).pot-header to 192 $(DOMAIN).pot, instead of the standard header comments. 193 194* Bug fixes: 195 - Fix mishandling of gettext version numbers for minor releases, in 196 po-mode.el and gettextize. 197 - Fix build with --enable-relocatable. 198 199Version 0.19.5 - July 2015 200 201* xgettext now has a feature to perform syntax checks on msgid, which 202 could enforce common styles of translatable strings, such as to 203 prefer Unicode characters to the corresponding ASCII characters. 204 They can be enabled with --check option or special "xgettext: " 205 comment in the source code. By default, no syntax checks are 206 enabled. 207 208* msgfilter and msgexec now have an option --newline, which appends a 209 newline character to filter input and trims it from the filter 210 output. This would allow filter programs to be more POSIX friendly. 211 212* The base Unicode standard is now updated to 8.0.0. This 213 particularly improves "\N{...}" notation handling of xgettext for 214 Perl and Python. 215 216* msginit is now capable of generating "Plural-Forms:" from Unicode 217 CLDR. This feature is still experimental, but you can try it by 218 setting the GETTEXTCLDRDIR environment variable pointing to the 219 directory where the CLDR archive is extracted. The actual 220 conversion is done by a helper program 'cldr-plural', which can be 221 used as a generic converter and evaluator of CLDR plural forms. 222 223* Programming languages support: 224 - C++ with KDE: xgettext and msgfmt can now recognize KUIT (KDE User 225 Interface Text) markup. See the documentation section "KUIT 226 Format Strings" for more info. 227 - C++ with KDE: xgettext now recognizes all default KDE keywords. 228 This removes the need for a long list of --keyword and --flag 229 options to perform a reasonable extraction. 230 231* Bug fixes: 232 - xgettext C++11 raw string recognition is now stricter and don't 233 accept unbalanced delimiters. 234 - Suppress baseless warnings which msgfmt emits when processing a 235 .desktop file. 236 - xgettext line wrapping behaviour is now consistent between comment 237 lines and non-comment lines. 238 - Fix msgfilter-7 test failure on some platforms. 239 - Fix VPATH build. 240 241Version 0.19.4 - December 2014 242 243* The --keyword option of xgettext now accepts same argument number 244 for both singular and plural forms. 245 246* Programming languages support: 247 - C#: xgettext now properly handles Unicode characters encoded with 248 surrogate pairs. 249 - C/C++: xgettext now recognizes ISO/IEC 9899:2011 string literals 250 prefixed by R, u8, u8R, u, uR, U, UR, L, or LR. 251 - Shell: xgettext now properly recognizes Bash ANSI-C quoting ($'...'). 252 253* Bug fixes: 254 - Fix integer overflow when reading certain MO files with msgunfmt. 255 - Avoid invalid memory access in various cases. In particular, when 256 the same argument number is specified for singular/plural 257 arguments, and when checking Lisp and Scheme format strings. 258 259* Portability: 260 - Building on Mac OS X 10.10 and AIX 7.1 is now supported. 261 262Version 0.19.3 - October 2014 263 264* Bug fixes: 265 - Fix xgettext mishandling of octal character escapes in C. 266 - Fix autopoint infinite recursion with certain configure.ac. 267 268* The po/Makevars file has a new field MSGINIT_OPTIONS, that can be 269 used to adjust msginit's operation. This is particularly useful for 270 controlling line wrapping behavior together with MSGMERGE_OPTIONS 271 and XGETTEXT_OPTIONS. 272 273* Portability: 274 - Building on Solaris 10 and 11 with Solaris Studio compiler is now 275 fixed. 276 277Version 0.19.2 - July 2014 278 279* Bug fixes: 280 - Fix xgettext crash in parsing empty string literals in C and Vala. 281 - ChangeLog file is added back to the gettext infrastructure. It was 282 mistakenly removed in 0.19. 283 - Autoconf macro trace in autopoint now works again with Autoconf 2.68 284 or earlier. It was a regression in 0.19. 285 286Version 0.19.1 - June 2014 287 288* Programming languages support: 289 290 - Desktop Entry: 291 msgfmt now always reads the po/LINGUAS file, regardless of whether 292 the LINGUAS environment variable is set. The variable can now be 293 used to restrict the languages list read from the po/LINGUAS file. 294 295 - Vala: 296 Bug fix in xgettext handling of "//" in string literals. This was 297 a regression after the C-99 Unicode escape support. 298 299* The po/Makevars.template file now contains the newly added variables. 300 301* msgfmt now treats errors in the PO file header as non-fatal. Since 302 0.19 msgfmt started to abort on the fatal errors, but some 303 translation systems are still not ready to supply valid headers. 304 305* Future backward-incompatibilities: 306 - In future Gettext versions, msgfmt will treat header errors as 307 fatal and terminate the command execution. 308 309Version 0.19 - June 2014 310 311* Programming languages support: 312 313 - Desktop Entry: 314 xgettext and msgfmt now support .desktop files, used by desktop 315 applications, as input and output. 316 317 - GSettings: 318 xgettext now supports GSettings schema file format used by GNOME 319 applications. 320 321 - JavaScript: 322 xgettext now recognizes E4X (ECMA-357) constructs. 323 324 - PHP: 325 Single and double quotes around heredoc markers are now recognized. 326 327 - Python: 328 The acceptable format specifiers in the braced-syntax format 329 strings are now limited to the Standard Format Specifiers, to 330 reasonably avoid false-positives. 331 332 - Scheme: 333 The gettext shorthand form _"abc", used by GIMP script-fu, is now 334 recognized by xgettext. 335 336 - C and Vala: 337 xgettext now recognizes C99-style Unicode character escapes. 338 339* The --add-location option of msgattrib, msgcat, msgcomm, msgconv, 340 msgen, msgfilter, msggrep, msgmerge, msguniq, and xgettext commands 341 now takes an optional argument 'never', 'full', or 'file', to 342 control the format of "#: ..." comments. 343 344* msgfmt now has --source option to keep generated .java file when 345 running in Java mode. 346 347* msgattrib now has --empty option that sets msgstr to empty when 348 clearing fuzzy flag. 349 350* msgexec and msgfilter pass the plural information to subprocess 351 through the environment variable MSG{EXEC,FILTER}_MSGID_PLURAL and 352 MSG{EXEC,FILTER}_PLURAL_FORM. 353 354* New built-in filters 'quot' and 'boldquot' have been added to 355 msgfilter. These filters convert Latin quotation marks ('...', 356 "...") into Unicode quotation marks (for example, U+2018) if 357 possible, similar to the sed commands used in po/Rules-quot and 358 po/Rules-boldquot. 359 360* The po/Makevars file has a couple of new options PO_DEPENDS_ON_POT 361 and DIST_DEPENDS_ON_UPDATE_PO, that can be used to adjust the 362 behavior of updating PO files on demand. 363 364* xgettext now strips prefixed string before the comment tag. This is 365 useful to support C-style comment like this: 366 367 /* 368 * TRANSLATORS: first line 369 * second line 370 */ 371 372 In this example, the extracted comment does not contain "* " at the 373 beginning of each line. 374 375* libgettextpo library: 376 - Memory leak fixes in the PO file parser. 377 378* Documentation: 379 - A complete example showing the use of GNU gettext in a GNOME 3 380 application has been added. 381 382 383Version 0.18.3 - July 2013 384 385* Runtime behaviour: 386 On Mac OS X systems, the setlocale() function now properly 387 invalidates loaded message catalogs when a locale has been set. 388 389* Programming languages support: 390 391 - C++: 392 The gnu::autosprintf class now provides an assignment operator. 393 394 - Glade: 395 xgettext now supports GtkBuider file format used by Glade 3. 396 xgettext now also extracts contexts (msgctxt) from Glade 2 and 397 GtkBuider files. 398 399 - JavaScript: 400 xgettext now partially supports JavaScript. Since the current 401 JavaScript specification (ECMA-262) does not define the standard 402 set of formatting methods nor translation functions, the 403 implementation supports only a limited set of formatting methods 404 and translation functions commonly used in Gjs and other popular 405 JavaScript implemenations and libraries. 406 407 - Lua: 408 xgettext now supports Lua, using Ľubomír Remák's lua-gettext. 409 410 - Python: 411 xgettext and msgfmt's format string checking now recognize Python 412 format string in braced syntax (PEP 3101). xgettext now also 413 supports explicit string concatenation with '+' and handles 414 platform dependent line terminators (LF/CR/CRLF) transparently. 415 416 - Tcl: 417 Bug fix in xgettext Unicode escape handling. 418 419 - Vala: 420 xgettext now supports Vala. 421 422* msgattrib now has --previous option to keep previous msgid when 423 making messages fuzzy, similar to msgmerge --previous. 424 425* msgfmt now checks PO file headers more strictly with less 426 false-positives. 427 428* 'gettextize' now checks macro directories specified with 429 AC_CONFIG_MACRO_DIRS in configure.ac. 430 431* Portability: 432 - msginit now does not require GNU sed. 433 - The Makefile rule for generating en@quot and en@boldquot now uses 434 @SED@ variable instead of hard-coded 'sed' command to allow users 435 to supply GNU sed. 436 437* Future backward-incompatibilities: 438 - In future Gettext versions, the files installed by 'gettextize' 439 will require Automake 1.10 or later. This will improve the 440 compatibility of user projects with newer Automake versions. 441 442Version 0.18.2 - December 2012 443 444* xgettext now understands the block comment syntax of Guile 2.0. 445 446* libgettextpo library: 447 - The initial msgstr of a new message is now "", not NULL. 448 - Bug fixes in the functions po_message_is_range, po_file_check_all, 449 po_message_check_all. 450 451* Installation options: 452 The configure options --with-xz and --with-bzip2 can be used to specify 453 alternate compression methods for the archive used by the 'autopoint' 454 program. These options, together with --with-git, allow to trade 455 dependencies against installed package size. --with-xz has the highest 456 compression rate, followed by --with-git, followed by --with-bzip2. 457 458* Autoconf macros: 459 - The autoconf macros installed by 'gettextize' now work with the 460 forthcoming Automake 1.14 and require Autoconf version 2.60 or 461 newer. 462 463* Portability: 464 - Building on MacOS X 10.7, Cygwin 1.7.10, and newer 64-bit mingw is 465 now supported. 466 467Version 0.18.1 - June 2010 468 469* msggrep: A '$' anchor in a regular expression now also matches the end of 470 the string, even if it does not end in a newline. 471 472* Dependencies: 473 The libraries and programs are now linked with libunistring if this library 474 is already installed. 475 476* Installation options: 477 The configure option --with-cvs is deprecated. The 'autopoint' program will 478 now use the 'git' program by default to compress its archive. If the 479 configure option --without-git is specified, 'autopoint' will not rely on 480 'git', but will instead rely on a locally installed a 3 MB large archive. 481 482Version 0.18 - May 2010 483 484* Runtime behaviour: 485 - On MacOS X and Windows systems, <libintl.h> now extends setlocale() and 486 newlocale() so that their determination of the default locale considers 487 the choice the user has made in the system control panels. 488 - On MacOS X systems, the gettext()/dgettext()/... functions now respect the 489 locale of the current thread, if a thread-specific locale has been set. 490 491* PO file format: 492 There is a new field 'Language' in the header entry. It denotes the language 493 code (plus optional country code) for the PO file. This field can be used 494 by automated tools, such as spell checkers. It is expected to be more 495 reliable than looking at the file name or at the 'Language-Team' field in 496 the header entry. 497 msgmerge, msgcat, msgen have a new option --lang that allows to specify 498 this field. Additionally, msgmerge fills in this new field by looking at 499 the 'Language-Team' field (if the --lang option is not given). 500 501* xgettext and PO file format: 502 For messages with plural forms, programmers can inform the translators 503 about the range of possible values of the numeric argument, like this: 504 /* xgettext: range: 0..15 */ 505 This information 'range: 0..15' is stored in the PO file as a flag attached 506 to the message. Translators can produce better translations when they know 507 that the numeric argument is small. 508 509* Colorized PO files: 510 msgattrib, msgcomm, msgconv, msgen, msgfilter, msggrep, msginit, msgmerge, 511 msgunfmt, msguniq, xgettext now have options --color and --style, like msgcat 512 has since version 0.17. 513 514* msgmerge is up to 10 times faster when the PO and POT files are large. 515 This speedup was contributed by Ralf Wildenhues. 516 517* msgcmp has a new option -N/--no-fuzzy-matching, like msgmerge has since 518 version 0.12. 519 520* msgfilter now sets environment variables during the invocation of the 521 filter, indicating the msgid and location of the messge being processed. 522 523* xgettext now can extract plural forms from Qt 4 programs. The recommended 524 xgettext command-line options for this case are: 525 --qt --keyword=tr:1,1t --keyword=tr:1,2c,2t --keyword=tr:1,1,2c,3t 526 527* xgettext --language=GCC-source now recognizes also the format strings 528 used in the Fortran front-end of the GCC compiler, and marks them as 529 'gfc-internal-format'. 530 531* autopoint can now be used to update several PO directories all together. 532 533* PO mode changes: 534 - PO files with plural entries are now correctly handled. 535 - Editing a message with previous msgid (in comments) removes these 536 comments. Contributed by Noritada Kobayashi. 537 538* The po/Makevars file has a new field MSGMERGE_OPTIONS, that can be used 539 to adjust msgmerge's operation. 540 541* The use of the macro AM_GNU_GETTEXT without 'external' argument and the 542 --intl option of the gettextize program are deprecated and will be removed 543 in the next release. Instead of including the intl sources in your package, 544 we suggest making the libintl library an (optional) prerequisite of your 545 package. 546 547* Updated the meaning of 'gcc-internal-format' to match GCC 4.3. 548 549* Installation options: 550 The configure options --without-cvs and --with-git can be used to specify 551 whether 'autopoint' will use the 'cvs' program, or the 'git' program, or 552 none at all. These options allow to trade dependencies against installed 553 package size: If --without-cvs is specified and --with-git is not specified, 554 'autopoint' will not rely on 'cvs' or 'git', but will instead rely on a 555 locally installed a 3 MB large archive. 556 557* Portability: 558 - The msgfilter program now also works on native Woe32 platforms. 559 - Compiled C# message catalogs now also work with 'mono' versions from 2009 560 or newer. 561 562Version 0.17 - November 2007 563 564* License: 565 The gettext related programs and tools are now licensed under the GPL 566 version 3, instead of the GPL version 2. The libintl library continues 567 to be licensed under LGPL. 568 569* PO file format: 570 The Project-Id-Version field in the header entry may now already be filled 571 in the POT file. In this case, the translators don't need to fill it in. 572 xgettext has new options --package-name and --package-version that allow 573 to specify the package name and version from a Makefile. 574 575* Colorized PO files: 576 The msgcat program has new options --color and --style that produce a 577 colorized PO file output, where keywords, strings, comments, or format 578 directives can be highlighted. See the documentation section 579 "Highlighting parts of PO files" for more info. 580 581* gettextize now has a --po-dir option that allows several PO directories to 582 be updated all together. 583 584* Programming languages support: 585 - Contexts (msgctxt) are now also supported for Java and C#. 586 - C# with Qt: The support for Qt format strings has been updated for Qt 4. 587 - C++ with KDE: 588 xgettext has a new option --kde that triggers the recognition and marking 589 of KDE 4 format strings. 590 591* Autoconf macros: 592 - A new macro AM_XGETTEXT_OPTION can be used as an alternative to modifying 593 po/Makevars. 594 595* libgettextpo library: 596 - New functions are available for querying the list of supported format 597 types. 598 - The functions po_message_comments and po_message_extracted_comments 599 return a multiline string where each line no longer starts with a redundant 600 space. The leading space in every comment line is now stripped while 601 reading the PO file. 602 - Conversely, when you pass a multiline string to the function 603 po_message_set_comments or po_message_set_extracted_comments, you normally 604 don't pass a space at the beginning of each line, because such spaces are 605 no longer trimmed during output. 606 607* Documentation: 608 - The "Users" chapter has been completely rewritten. 609 - New section "Highlighting parts of PO files". 610 - A complete example showing the use of GNU gettext in Java with the Qt/Jambi 611 GUI toolkit has been added. 612 613Version 0.16.1 - November 2006 614 615* Bug fix in the gettext.m4 autoconf macros. 616 617Version 0.16 - October 2006 618 619* Interoperability with automake-1.10. 620 621* msgmerge has a new option --previous that has the effect of saving the 622 previous msgid of message when making them fuzzy. These previous msgids are 623 stored in the resulting PO file, using a pseudo-comment syntax like this: 624 625 #, fuzzy 626 #| msgid "too many arguments" 627 msgid "too few arguments" 628 msgstr "trop d'arguments" 629 630 The translator then only needs to compare the previous and the current 631 msgid ("too many arguments" and "too few arguments"), and infer which 632 parts of the translation she needs to change. 633 634 msgattrib has a new option --clear-previous that removes these #| lines. 635 636* msgmerge is faster now on CPUs with multiple execution units, if compiled 637 with GCC 4.2 or newer. 638 639* msgcmp now ignores fuzzy and untranslated messages in the PO file. 640 Previously it considered fuzzy and untranslated messages the same way as 641 translated messages, which was hardly useful. The previous behaviour can 642 be obtained through the options --use-fuzzy --use-untranslated. 643 644* gettextize, when invoked without --intl option, now installs only the .m4 645 files that are needed: gettext.m4, iconv.m4, lib-ld.m4, lib-link.m4, 646 lib-prefix.m4, nls.m4, po.m4, progtest.m4. 647 648* gettextize no longer creates symbolic links by default; it makes file copies 649 instead. The option --copy is removed. You can get back the flawed 650 symlinking behaviour by specifying the --symlink option. 651 652* Autoconf macros: 653 - The gettext autoconf macros now require autoconf 2.52 or newer and 654 GNU m4 1.4.5 or newer. 655 - A new autoconf macro AM_GNU_GETTEXT_INTL_SUBDIR is added. It allows to 656 specify the presence of an intl/ subdirectory outside the AM_GNU_GETTEXT 657 invocation. 658 - A new autoconf macro AM_GNU_GETTEXT_NEED is added. It allows to specify 659 the requirements relating to the GNU gettext implementation outside the 660 AM_GNU_GETTEXT invocation. 661 662* The libgettextpo library no longer exports symbols that could clash with 663 symbols of the application that uses it. 664 665* Vastly improved French translations. Thanks to Christophe Combelles. 666 667Version 0.15 - July 2006 668 669* GUI program support: 670 - PO files can now contain messages constrained to a certain context. 671 Most often such a context is a menu, dialog or panel identification. 672 The syntax in the PO file is 673 msgctxt "context" 674 msgid "original" 675 msgstr "translation" 676 - The xgettext program can be told through the --keyword flag which 677 function/macro argument has the role of a context. It also supports 678 the GNOME glib convention to specify the context and original string 679 in the same string literal: "context|original". 680 - The (non-public) include file gettext.h defines macros pgettext, dpgettext 681 etc. that take a context argument. 682 For more information, see the node "Contexts" in the manual. 683 684* msgfmt's format string checking is now stricter in the presence of plural 685 forms. For example, in German, with nplurals=2 and plural=(n != 1), 686 the translation 687 688 #, c-format 689 msgid "%d fatal error" 690 msgid_plural "%d fatal errors" 691 msgstr[0] "ein fataler Fehler" 692 msgstr[1] "fatale Fehler" 693 694 was earlier considered valid and now gives an error when "msgfmt --check" 695 is used: 696 "number of format specifications in 'msgid' and 'msgstr[1]' does not match" 697 698* msggrep has a new option -v/--invert-match that acts like grep's -v option. 699 700* msggrep has a new option -X/--extracted-comment that allows to search for a 701 pattern in the extracted comments. 702 703* xgettext's --keyword option now allows to specify an extracted comment on the 704 command line, rather than in program's source code. 705 706* msgmerge is much faster now, when using a large compendium. 707 708* A new program recode-sr-latin is provided, that converts Serbian text from 709 the Cyrillic script to the Latin script. 710 The command "msgfilter recode-sr-latin" can be used to convert a Serbian 711 Cyrillic PO file (sr.po) to a Serbian Latin PO file (sr@latin.po). 712 713* Programming languages support: 714 715 - C++ with Boost: 716 xgettext has a new option --boost that triggers the recognition and marking 717 of boost::format strings. 718 719 - Python: 720 xgettext now recognizes the source encoding from a "coding:" comment 721 among the first two lines. The default encoding is now ASCII, no longer 722 ISO-8859-1. 723 724* libgettextpo library: 725 - The error handler type passed to po_file_read(), po_file_write(), 726 po_message_check_format() has changed. 727 This is an incompatible change: Programs using the library *must* update 728 their code. 729 Binary compatibility is guaranteed, however. 730 731* The 'mkinstalldirs' shell script is no longer needed and no longer installed 732 by gettextize. 733 734* Portability: 735 - Building on mingw is now supported. 736 - Building shared libraries (--enable-shared) on Cygwin and mingw is now 737 supported. 738 739* Interoperability with expat version 2.0.0. 740 741* Documentation: 742 A complete example showing the use of GNU gettext with the wxWidgets GUI 743 toolkit has been added. 744 745* The gettext autoconf macros now assume 'aclocal' from automake 1.8 or newer. 746 747Version 0.14.6 - June 2006 748 749* Updated the meaning of 'gcc-internal-format' to match GCC 4.1. 750 751Version 0.14.5 - May 2005 752 753* Updated the meaning of 'gcc-internal-format' to match GCC 4.0. 754 755Version 0.14.4 - April 2005 756 757* The gettext autoconf macros will now work with the forthcoming g++ 4.0. 758* Fix improved detection of the locale on MacOS X. 759 760Version 0.14.3 - March 2005 761 762* Usability improvements in gettextize and autopoint. 763 764* Programming languages support: 765 - Scheme: 766 Use the GNU guile definition of format strings. 767 768Version 0.14.2 - February 2005 769 770* Improved detection of the locale on MacOS X. 771 772* The gettext autoconf macros now require autoconf 2.50 or newer. 773 774* Programming languages support: 775 776 - Scheme: 777 xgettext now also supports Scheme. Best used with guile 1.7 or newer. 778 779* msggrep is much faster now. 780 781* libgettextpo library: 782 - New functions for constructing PO files in memory and writing them to 783 files. 784 - The error handling is now customizable. 785 786* Documentation: 787 788 - New tutorial document, written by Gora Mohanty. 789 - New FAQ document. 790 - New documentation sections: Scheme, Release Management. 791 792* Bug fixes for Turkish and Estonian locales. 793 794* Security fixes. 795 796Version 0.14 - January 2004 797 798* Programming languages support: 799 800 - C#: 801 802 xgettext now also supports C#. 803 804 New library: GNU.Gettext.dll contains the runtime for using GNU gettext 805 message catalogs in C#. 806 807 msgfmt can create (and msgunfmt can dump) message catalogs for C#. 808 809* Special feature for Farsi (Persian): Translators can insert an 'I' flag 810 into numeric format directives in format strings. Its effect is that, on 811 glibc systems, the number is generated with the locale dependent set of 812 special digits instead of the usual ASCII digits. 813 814* Documentation: 815 816 - New documentation section: C#. 817 - Complete examples illustrating the use of gettext in C# (in text mode and 818 in Forms applications) have been added. 819 820 - New documentation section: Preparing Library Sources. 821 822* Special advice for Norwegian users: The language code for Norwegian 823 bokmål changed from 'no' to 'nb' recently (in 2003). During the transition 824 period, while some message catalogs for this language are installed under 825 'nb' and some older ones under 'no', it's recommended for Norwegian users to 826 set the LANGUAGE environment variable to 'nb:no' so that both newer and 827 older translations are used. 828 829Version 0.13.1 - December 2003 830 831* Bug fixes in the testsuite and in the examples. 832 833Version 0.13 - November 2003 834 835* Programming languages support: 836 837 - Shell: 838 839 xgettext now also supports shell scripts. It recognizes invocations of 840 the programs 'gettext', 'ngettext', the functions 'eval_gettext', 841 'eval_ngettext', as well as the deprecated GNU bash builtin syntax $"...". 842 New function library: 843 gettext.sh - shell functions for internationalized shell scripts. 844 New program: 845 envsubst - substitutes environment variables in shell format strings. 846 847 - Perl: 848 849 xgettext now also supports Perl. 850 851 - PHP: 852 853 "xgettext --language=PHP" now supports the plural handling functions 854 ngettext, dngettext, dcngettext (introduced in PHP 4.2.0). 855 856 - ObjectiveC: 857 858 "xgettext --language=ObjectiveC" now supports the @"..." string syntax, 859 the NSLocalizedString function and the ObjectiveC specific format strings. 860 861 All the tools that manipulate PO files can work with .strings files 862 as well, if given the --stringtable-input and/or --stringtable-output 863 option. To create a .strings file from a PO or POT file, use 864 "msgcat --stringtable-output". To create a PO or POT file from a 865 .strings file, use "xgettext". 866 867 - GCC-source: 868 869 xgettext's --language option now supports the value "GCC-source". This 870 is like --language=C, except that in this mode, xgettext recognizes the 871 special kind of format strings used in the GCC sources and marks them 872 as 'gcc-internal-format'. 873 874 - C++ with Qt: 875 876 xgettext has a new option --qt that triggers the recognition and marking 877 of Qt format strings. 878 879 msgfmt has a new option --qt that generates binary message catalogs in 880 Qt's .qm format. 881 882* Data formats support: 883 884 - Glade: 885 xgettext now also supports Glade version 2. 886 887* xgettext has a more reliable detection of format strings. It now 888 recognizes format strings depending on their position, for example as the 889 second argument of fprintf(), regardless whether the literal string contains 890 format directives. This behaviour can be customized through the --flag 891 option. 892 893* libgettextpo library: 894 895 - New functions for testing the obsolete/fuzzy/*-format flags of a message. 896 - New convenience functions for extracting and analyzing the header entry. 897 898* Portability: 899 900 - C format strings with positions, as they arise when a translator needs to 901 reorder a sentence, are now supported on all platforms. On those few 902 platforms (NetBSD and Woe32) for which the native printf()/fprintf()/... 903 functions don't support such format strings, replacements are provided 904 through <libintl.h>. 905 906 - A new configuration option --disable-libasprintf allows to build all of 907 gettext except libasprintf; this is necessary on platforms for which 908 libtool cannot create shared libraries with C++ code. 909 910* Documentation: 911 912 - Complete examples illustrating the use of gettext, including program 913 sources, Makefile and autoconf infrastructure, have been added. They 914 cover the following programming languages: 915 C (text mode, GNOME) 916 C++ (text mode, Qt, KDE, GNOME) 917 ObjectiveC (text mode, GNUstep, GNOME) 918 Shell (text mode) 919 Python (text mode) 920 Lisp (text mode) 921 librep (text mode) 922 Smalltalk (text mode) 923 Java (text mode, AWT, Swing) 924 awk (text mode) 925 Pascal (text mode) 926 YCP (libyui) 927 Tcl (text mode, Tk) 928 Perl (text mode) 929 PHP (text mode) 930 931Version 0.12.1 - May 2003 932 933* Bug fixes. 934 935Version 0.12 - May 2003 936 937* The gettext package is now separated into two subpackages: 938 - gettext-runtime: Runtime libraries and programs. 939 - gettext-tools: Tools and documentation for developers and translators. 940 The 'gettext-runtime' package is very small and should be installed on every 941 system that has users who desire to use internationalization. Whereas the 942 'gettext-tools' package is only for developers and translators. 943 944* The po/Makevars file has a new field MSGID_BUGS_ADDRESS, which program 945 maintainers should fill in, to help feedback from the translators to the 946 program maintainers. 947 xgettext, accordingly, has a new option --msgid-bugs-address. 948 949* Programming languages support: 950 951 - C++ 952 953 A new C++ class, called gnu::autosprintf, makes it possible to use 954 C format strings in C++. This is needed for proper internationalization 955 of C++ programs. 956 957 - Java 958 959 All the tools that manipulate PO files can work with .properties files 960 as well, if given the --properties-input and/or --properties-output 961 option. To create a .properties file from a PO or POT file, use 962 "msgcat --properties-output". 963 964 - Smalltalk 965 966 xgettext now also supports Smalltalk. 967 968 - PHP 969 970 xgettext now also supports PHP. 971 972 - Python 973 974 "xgettext --language=Python" now supports the plural handling functions 975 ngettext, dngettext, ungettext (introduced in Python 2.3). 976 977 - A new autoconf macro AM_PO_SUBDIRS is added. It is like AM_GNU_GETTEXT, 978 for packages written in other languages than C/C++. 979 980* A new library libgettextpo, with public header file "gettext-po.h", 981 provides functions for reading PO files into memory. It is useful for 982 applying PO files to areas not covered by the GNU gettext programs. 983 New documentation section: 984 - Writing your own programs that process PO files. 985 986* New documentation sections: 987 - Prioritizing messages: How to determine which messages to translate first. 988 - Names: Marking Proper Names for Translation. 989 990* xgettext now supports msgid strings in other encodings than ASCII. 991 xgettext has a new option --from-code that specifies the encoding of the 992 source files. The resulting POT files are UTF-8 encoded. 993 994* Tools for translators: 995 996 - msgmerge has a new option -N/--no-fuzzy-matching that inhibits the fuzzy 997 search for untranslated messages. 998 999 - msgattrib has new options --only-file and --ignore-file that cause the 1000 specified attribute manipulation to apply to selected messages only. 1001 1002* Compatibility with automake-1.7. 1003 1004* In documentation section po/LINGUAS: 1005 - Document the optional "languages" en@quot and en@boldquot. 1006 1007* New configuration option --enable-relocatable. See the INSTALL file for 1008 details. 1009 1010Version 0.11.5 - August 2002 1011 1012* Bug fixes in the gettext.m4 autoconf macros. 1013 1014Version 0.11.4 - July 2002 1015 1016* The tools now know about the ISO C 99 <inttypes.h> format string directive 1017 macros PRId64, PRIxMAX etc. 1018 1019Version 0.11.3 - July 2002 1020 1021* New program: 1022 autopoint - copies standard gettext infrastructure 1023 1024* The documentation makes it clear that 'gettextize' is a wizard and 1025 migration tool. 1026 1027* gettextize has a new option --dry-run. 1028 1029* Improved portability to Solaris, OSF/1 and Linux/libc5. 1030 1031* Improved interoperability with GCC 3.1. 1032 1033* New documentation sections: 1034 - CVS Issues 1035 - mkinstalldirs 1036 - config.h.in 1037 1038Version 0.11.2 - April 2002 1039 1040* Bug fixes in the gettext.m4 autoconf macros. 1041 1042* New documentation section: 1043 - Preparing Translatable Strings 1044 1045Version 0.11.1 - March 2002 1046 1047* xgettext now also supports Python, Tcl, Awk and Glade. 1048 1049* msgfmt can create (and msgunfmt can dump) Tcl message catalogs. 1050 1051* msggrep has a new option -C that allows to search for strings in translator 1052 comments. 1053 1054* Bug fixes in the gettext.m4 autoconf macros. 1055 1056Version 0.11 - January 2002 1057 1058* New programs: 1059 msgattrib - attribute matching and manipulation on message catalog, 1060 msgcat - combines several message catalogs, 1061 msgconv - character set conversion for message catalog, 1062 msgen - create English message catalog, 1063 msgexec - process translations of message catalog, 1064 msgfilter - edit translations of message catalog, 1065 msggrep - pattern matching on message catalog, 1066 msginit - initialize a message catalog, 1067 msguniq - unify duplicate translations in message catalog. 1068 1069* msgfmt can create (and msgunfmt can dump) Java ResourceBundles. 1070 1071* xgettext now also supports Lisp, Emacs Lisp, librep, Java, ObjectPascal, 1072 YCP. 1073 1074* The tools now know about format strings in languages other than C. 1075 They recognize new message flags named lisp-format, elisp-format, 1076 librep-format, smalltalk-format, java-format, python-format, ycp-format. 1077 When such a flag is present, the msgfmt program verifies the consistency 1078 of the translated and the untranslated format string. 1079 1080* The msgfmt command line options have changed. Option -c now also checks 1081 the header entry, a check which was previously activated through -v. 1082 Option -C corresponds to the compatibility checks previously activated 1083 through -v -v. Option -v now only increases verbosity and doesn't 1084 influence whether msgfmt succeeds or fails. A new option 1085 --check-accelerators is useful for GUI menu item translations. 1086 1087* msgcomm now writes its results to standard output by default. The options 1088 -d/--default-domain and -p/--output-dir have been removed. 1089 1090* Manual pages for all the programs have been added. 1091 1092* PO mode changes: 1093 - New key bindings for 'po-previous-fuzzy-entry', 1094 'po-previous-obsolete-entry', 'po-previous-translated-entry', 1095 'po-previous-untranslated', 'po-undo', 'po-other-window', and 1096 'po-select-auxiliary'. 1097 - Support for merging two message catalogs, based on msgcat and ediff. 1098 1099* A fuzzy attribute of the header entry of a message catalog is now ignored 1100 by the tools, i.e. it is used even if marked fuzzy. 1101 1102* gettextize has a new option --intl which determines whether a copy of the 1103 intl directory is included in the package. 1104 1105* The Makefile variable @INTLLIBS@ is deprecated. It is replaced with 1106 @LIBINTL@ (in projects without libtool) or @LTLIBINTL@ (in projects with 1107 libtool). 1108 1109* New packaging hints for binary package distributors. See file PACKAGING. 1110 1111* New documentation sections: 1112 - Manipulating 1113 - po/LINGUAS 1114 - po/Makevars 1115 - lib/gettext.h 1116 - autoconf macros 1117 - Other Programming Languages 1118 1119Version 0.10.40 - September 2001 1120 1121* The libintl library is now covered by the GNU LGPL. The tools are still 1122 covered by the GNU GPL. 1123 1124Version 0.10.39 - July 2001 1125 1126* This is a bug-fix release. 1127 1128* Now uses libtool-1.4. Linking with the libintl shared library is easier. 1129 1130* The autoconf macros now work with both autoconf-2.13 and autoconf-2.50. 1131 1132Version 0.10.38 - May 2001 1133 1134* This is a bug-fix release. 1135 1136* Manual pages for the GNU libintl library functions have been added. 1137 1138Version 0.10.37 - April 2001 1139 1140This is a bug-fix release. 1141 1142Version 0.10.36 - March 2001, by Ulrich Drepper and Bruno Haible 1143 1144* General plural handling. New functions ngettext, dngettext, dcngettext. 1145 1146* Locales which differ only in the character encoding, for example ja_JP and 1147 ja_JP.UTF-8, can now share the same message catalogs. gettext converts 1148 the messages to the appropriate character encoding on the fly. 1149 1150* The tools now correctly process PO files in CJK encodings. 1151 1152* Support for non-GNU gettext has been dropped. Previously, on Solaris, the 1153 system's gettext was used (unless --with-included-gettext was specified), 1154 which led to problems with PO files that were not 100% translated. 1155 1156* Support for the catgets wrapper has been dropped. This means that gettext 1157 now always supports the LANGUAGE environment variable, message inheritance, 1158 automatic charset conversion etc. 1159 1160* Support for the old Linux specific .msg catalog format has been dropped. 1161 1162* When the included GNU libintl is installed (i.e. on GNU platforms, when 1163 the configure option --with-included-gettext is given, or on non-GNU 1164 platforms, when the configure option --disable-nls is not given), it is 1165 also installed as a shared library, unless the configure option 1166 --disable-shared is given. 1167 1168* PO mode changes: 1169 1170** PO mode does not use recursive edit anymore, many edits may be worked on 1171 simultaneously in a single PO file. 1172 1173** PO mode may handle many translation files at once while correlating related 1174 entries, for helping multilingual or cultured translators. 1175 1176** On recent Emacses, PO mode automatically use proper fonts when available. 1177 1178** PO mode supports marking of C++ sources. 1179 1180** highlights original message while editing the translation 1181 1182** PO mode has commands to mail messages to teams or to the translation 1183 coordinator, with automatic inclusion of the current PO file. 1184 1185Version 0.10.35 - April 1998, by Ulrich Drepper 1186 1187* by default the emulation of gettext using the catgets() functions of 1188 the C library is not selected anymore. GNU gettext has so many nice 1189 extensions that this became unreasonable. Using --with-catgets the 1190 emulation still can be requested. 1191 1192* extend xgettext program to handle other file formats other than C/C++. 1193 For now it also handles PO file. Using this feature one can concatenate 1194 arbitrary PO files. 1195 1196* Tcl module with gettext interface 1197 1198* Korean translation by Bang Jun Young 1199 1200* xgettext writes to stdout when default domain name is set to - 1201 1202* codeset name normalization 1203 1204* msgmerge program now has all features tupdate has (and more). 1205 tupdate itself will be removed soon 1206 1207* po/Makefile.in.in now uses msgmerge instead of tupdate 1208 1209* escape notation in .po files are only used when explicitly selected 1210 1211* changed interface of msgunfmt to conform to GNU coding standard 1212 1213* msgmerge now knows how to handle obsolete entries. If a formerly obsolete 1214 entry is used again msgmerge will find it 1215 1216* better implementation of comment extraction in xgettext. 1217 1218* better C format string implementation. The xgettext will classify 1219 strings as being a format string, or not, in the .po file. The 1220 programmer can override the decision explicitly for each string 1221 by specifying 'xgettext:c-format' and 'xgettext:no-c-format' 1222 respectively in a C comment preceding the string. 1223 1224* msgmerge program now always produces output. Fuzzy or non-existing 1225 translations are no reason for holding back the result. 1226 1227* reasonable header entry format implemented 1228 1229* Norwegian translation by Karl Anders �gard 1230 1231* Configure command line option '--with-gnu-gettext' is renamed to 1232 '--with-included-gettext' 1233 1234* gettextize now can determine whether the aclocal.m4 of the project 1235 is sufficient 1236 1237* use automake for Makefile.in generation 1238 1239* by default now only c-format is emitted in xgettext. If using the new 1240 --debug option one can enable printing possible-c-format to see who 1241 decided about the string: xgettext or the programmer 1242 1243* the installed libintl.h file no longer depends on HAVE_LOCALE_H being 1244 defined. After running configure we know whether this file exists. 1245 1246* wrapping of lines in PO file output finally enabled. 1247 A new special comment no-wrap prevents wrapping. 1248 1249* add --statistics option to msgfmt to get information about number of 1250 translated, untranslated, and fuzzy messages 1251 1252* change behaviour of --verbose option to msgfmt. This no longer 1253 causes the check on the messages to be performed. The check for leading 1254 and trailing \n is always performed and the check of the format specifiers 1255 is performed when --check is given. 1256 1257* shared library support based On Gord Matzigkeit's libtool package 1258 1259* msgcomm program by Peter Miller to extract messages shared by input 1260 files 1261 1262* many more translations. 1263 1264Version 0.10 - December 1995, by Ulrich Drepper 1265 1266* implement --shell-script option for gettext program 1267 1268* implement object-oriented, lazy message handling :-) 1269 Consult the manual for more/any information 1270 1271* implement locale name aliasing, similar to the one used 1272 in the X Window System 1273 1274* support for GNU gettext sources in central place to support 1275 use in development environments of other projects 1276 1277* implement CEN syntax for environment variable values 1278 1279* msgcmp program to find matches in two .po files 1280 1281* programs now have exit status != 0 if errors occurred 1282 1283* libintl.a is now selfcontained and can be used without context in 1284 other projects (even on systems missing alloca) 1285 1286* gettextize now automatically runs config.status 1287 1288* swedish message catalog 1289 1290* new options for xgettext: -D/--directory to change in specified directory 1291 before processing the input files and -f/--files-from to specify file from 1292 which the names of the input files are read. 1293 The later option in necessary for large projects such as GNU C Library. 1294 1295* new programs msgmerge and msgunfmt by Peter Miller. The code of the other 1296 programs is now also much cleaner. 1297 1298Version 0.9 - August 1995, by Ulrich Drepper 1299 1300* again many improvements on the manual 1301 1302* norwegian message catalog 1303 1304* compilation now works with --disable-nls 1305 1306* better checks 1307 1308Version 0.8 - July 1995, by Ulrich Drepper 1309 1310* much improved manual (although still far from being complete) 1311 1312* improved PO mode; it now can prepare C sources for use with gettext 1313 by marking translatable strings 1314 1315* better support for sparse System V systems 1316 1317* check goal (kind of) 1318 1319* more input tests and warnings 1320 1321* better support for integration in other packages 1322 1323* many bugs fixed 1324 1325Version 0.7 - June 1995, by Ulrich Drepper 1326 1327* New GNU package providing functionality to internationalize and 1328localize other programs. 1329 1330* Implementation of the Uniforum(*) proposal for internationalization 1331on top of X/Open(*) style catgets functions. 1332 1333* Complete implementation of the Uniforum functions for system 1334lacking either of them or those who which to have a different 1335implementation with many advantages. 1336 1337* Implementation of the three tools for message catalog handling 1338described in the Uniforum. 1339 1340* Emacs po-mode for handling portable message object files which are 1341the basis of the work of the package. 1342 1343 1344(*) Some history: The POSIX working groups have so far been unable to 1345agree on one set of message catalog handling functions for the C Library. 1346For now there are competing proposals, one by the Uniforum group, led by 1347Sun, and the other by X/Open. Although the latter is surely implemented 1348on more systems, it is not perceived as the clear leader. 1349