1Version 0.16.1 - November 2006 2 3* Bug fix in the gettext.m4 autoconf macros. 4 5Version 0.16 - October 2006 6 7* Interoperability with automake-1.10. 8 9* msgmerge has a new option --previous that has the effect of saving the 10 previous msgid of message when making them fuzzy. These previous msgids are 11 stored in the resulting PO file, using a pseudo-comment syntax like this: 12 13 #, fuzzy 14 #| msgid "too many arguments" 15 msgid "too few arguments" 16 msgstr "trop d'arguments" 17 18 The translator then only needs to compare the previous and the current 19 msgid ("too many arguments" and "too few arguments"), and infer which 20 parts of the translation she needs to change. 21 22 msgattrib has a new option --clear-previous that removes these #| lines. 23 24* msgmerge is faster now on CPUs with multiple execution units, if compiled 25 with GCC 4.2 or newer. 26 27* msgcmp now ignores fuzzy and untranslated messages in the PO file. 28 Previously it considered fuzzy and untranslated messages the same way as 29 translated messages, which was hardly useful. The previous behaviour can 30 be obtained through the options --use-fuzzy --use-untranslated. 31 32* gettextize, when invoked without --intl option, now installs only the .m4 33 files that are needed: gettext.m4, iconv.m4, lib-ld.m4, lib-link.m4, 34 lib-prefix.m4, nls.m4, po.m4, progtest.m4. 35 36* gettextize no longer creates symbolic links by default; it makes file copies 37 instead. The option --copy is removed. You can get back the flawed 38 symlinking behaviour by specifying the --symlink option. 39 40* Autoconf macros: 41 - The gettext autoconf macros now require autoconf 2.52 or newer. 42 - A new autoconf macro AM_GNU_GETTEXT_INTL_SUBDIR is added. It allows to 43 specify the presence of an intl/ subdirectory outside the AM_GNU_GETTEXT 44 invocation. 45 - A new autoconf macro AM_GNU_GETTEXT_NEED is added. It allows to specify 46 the requirements relating to the GNU gettext implementation outside the 47 AM_GNU_GETTEXT invocation. 48 49* The libgettextpo library no longer exports symbols that could clash with 50 symbols of the application that uses it. 51 52* Vastly improved French translations. Thanks to Christophe Combelles. 53 54Version 0.15 - July 2006 55 56* GUI program support: 57 - PO files can now contain messages constrained to a certain context. 58 Most often such a context is a menu, dialog or panel identification. 59 The syntax in the PO file is 60 msgctxt "context" 61 msgid "original" 62 msgstr "translation" 63 - The xgettext program can be told through the --keyword flag which 64 function/macro argument has the role of a context. It also supports 65 the GNOME glib convention to specify the context and original string 66 in the same string literal: "context|original". 67 - The (non-public) include file gettext.h defines macros pgettext, dpgettext 68 etc. that take a context argument. 69 For more information, see the node "Contexts" in the manual. 70 71* msgfmt's format string checking is now stricter in the presence of plural 72 forms. For example, in German, with nplurals=2 and plural=(n != 1), 73 the translation 74 75 #, c-format 76 msgid "%d fatal error" 77 msgid_plural "%d fatal errors" 78 msgstr[0] "ein fataler Fehler" 79 msgstr[1] "fatale Fehler" 80 81 was earlier considered valid and now gives an error when "msgfmt --check" 82 is used: 83 "number of format specifications in 'msgid' and 'msgstr[1]' does not match" 84 85* msggrep has a new option -v/--invert-match that acts like grep's -v option. 86 87* msggrep has a new option -X/--extracted-comment that allows to search for a 88 pattern in the extracted comments. 89 90* xgettext's --keyword option now allows to specify an extracted comment on the 91 command line, rather than in program's source code. 92 93* msgmerge is much faster now, when using a large compendium. 94 95* A new program recode-sr-latin is provided, that converts Serbian text from 96 the Cyrillic script to the Latin script. 97 The command "msgfilter recode-sr-latin" can be used to convert a Serbian 98 Cyrillic PO file (sr.po) to a Serbian Latin PO file (sr@latin.po). 99 100* Programming languages support: 101 102 - C++ with Boost: 103 xgettext has a new option --boost that triggers the recognition and marking 104 of boost::format strings. 105 106 - Python: 107 xgettext now recognizes the source encoding from a "coding:" comment 108 among the first two lines. The default encoding is now ASCII, no longer 109 ISO-8859-1. 110 111* libgettextpo library: 112 - The error handler type passed to po_file_read(), po_file_write(), 113 po_message_check_format() has changed. 114 This is an incompatible change: Programs using the library *must* update 115 their code. 116 Binary compatibility is guaranteed, however. 117 118* The 'mkinstalldirs' shell script is no longer needed and no longer installed 119 by gettextize. 120 121* Portability: 122 - Building on mingw is now supported. 123 - Building shared libraries (--enable-shared) on Cygwin and mingw is now 124 supported. 125 126* Interoperability with expat version 2.0.0. 127 128* Documentation: 129 A complete example showing the use of GNU gettext with the wxWidgets GUI 130 toolkit has been added. 131 132* The gettext autoconf macros now assume 'aclocal' from automake 1.8 or newer. 133 134Version 0.14.6 - June 2006 135 136* Updated the meaning of 'gcc-internal-format' to match GCC 4.1. 137 138Version 0.14.5 - May 2005 139 140* Updated the meaning of 'gcc-internal-format' to match GCC 4.0. 141 142Version 0.14.4 - April 2005 143 144* The gettext autoconf macros will now work with the forthcoming g++ 4.0. 145* Fix improved detection of the locale on MacOS X. 146 147Version 0.14.3 - March 2005 148 149* Usability improvements in gettextize and autopoint. 150 151* Programming languages support: 152 - Scheme: 153 Use the GNU guile definition of format strings. 154 155Version 0.14.2 - February 2005 156 157* Improved detection of the locale on MacOS X. 158 159* The gettext autoconf macros now require autoconf 2.50 or newer. 160 161* Programming languages support: 162 163 - Scheme: 164 xgettext now also supports Scheme. Best used with guile 1.7 or newer. 165 166* msggrep is much faster now. 167 168* libgettextpo library: 169 - New functions for constructing PO files in memory and writing them to 170 files. 171 - The error handling is now customizable. 172 173* Documentation: 174 175 - New tutorial document, written by Gora Mohanty. 176 - New FAQ document. 177 - New documentation sections: Scheme, Release Management. 178 179* Bug fixes for Turkish and Estonian locales. 180 181* Security fixes. 182 183Version 0.14 - January 2004 184 185* Programming languages support: 186 187 - C#: 188 189 xgettext now also supports C#. 190 191 New library: GNU.Gettext.dll contains the runtime for using GNU gettext 192 message catalogs in C#. 193 194 msgfmt can create (and msgunfmt can dump) message catalogs for C#. 195 196* Special feature for Farsi (Persian): Translators can insert an 'I' flag 197 into numeric format directives in format strings. Its effect is that, on 198 glibc systems, the number is generated with the locale dependent set of 199 special digits instead of the usual ASCII digits. 200 201* Documentation: 202 203 - New documentation section: C#. 204 - Complete examples illustrating the use of gettext in C# (in text mode and 205 in Forms applications) have been added. 206 207 - New documentation section: Preparing Library Sources. 208 209* Special advice for Norwegian users: The language code for Norwegian 210 bokmål changed from 'no' to 'nb' recently (in 2003). During the transition 211 period, while some message catalogs for this language are installed under 212 'nb' and some older ones under 'no', it's recommended for Norwegian users to 213 set the LANGUAGE environment variable to 'nb:no' so that both newer and 214 older translations are used. 215 216Version 0.13.1 - December 2003 217 218* Bug fixes in the testsuite and in the examples. 219 220Version 0.13 - November 2003 221 222* Programming languages support: 223 224 - Shell: 225 226 xgettext now also supports shell scripts. It recognizes invocations of 227 the programs 'gettext', 'ngettext', the functions 'eval_gettext', 228 'eval_ngettext', as well as the deprecated GNU bash builtin syntax $"...". 229 New function library: 230 gettext.sh - shell functions for internationalized shell scripts. 231 New program: 232 envsubst - substitutes environment variables in shell format strings. 233 234 - Perl: 235 236 xgettext now also supports Perl. 237 238 - PHP: 239 240 "xgettext --language=PHP" now supports the plural handling functions 241 ngettext, dngettext, dcngettext (introduced in PHP 4.2.0). 242 243 - ObjectiveC: 244 245 "xgettext --language=ObjectiveC" now supports the @"..." string syntax, 246 the NSLocalizedString function and the ObjectiveC specific format strings. 247 248 All the tools that manipulate PO files can work with .strings files 249 as well, if given the --stringtable-input and/or --stringtable-output 250 option. To create a .strings file from a PO or POT file, use 251 "msgcat --stringtable-output". To create a PO or POT file from a 252 .strings file, use "xgettext". 253 254 - GCC-source: 255 256 xgettext's --language option now supports the value "GCC-source". This 257 is like --language=C, except that in this mode, xgettext recognizes the 258 special kind of format strings used in the GCC sources and marks them 259 as 'gcc-internal-format'. 260 261 - C++ with Qt: 262 263 xgettext has a new option --qt that triggers the recognition and marking 264 of Qt format strings. 265 266 msgfmt has a new option --qt that generates binary message catalogs in 267 Qt's .qm format. 268 269* Data formats support: 270 271 - Glade: 272 xgettext now also supports Glade version 2. 273 274* xgettext has a more reliable detection of format strings. It now 275 recognizes format strings depending on their position, for example as the 276 second argument of fprintf(), regardless whether the literal string contains 277 format directives. This behaviour can be customized through the --flag 278 option. 279 280* libgettextpo library: 281 282 - New functions for testing the obsolete/fuzzy/*-format flags of a message. 283 - New convenience functions for extracting and analyzing the header entry. 284 285* Portability: 286 287 - C format strings with positions, as they arise when a translator needs to 288 reorder a sentence, are now supported on all platforms. On those few 289 platforms (NetBSD and Woe32) for which the native printf()/fprintf()/... 290 functions don't support such format strings, replacements are provided 291 through <libintl.h>. 292 293 - A new configuration option --disable-libasprintf allows to build all of 294 gettext except libasprintf; this is necessary on platforms for which 295 libtool cannot create shared libraries with C++ code. 296 297* Documentation: 298 299 - Complete examples illustrating the use of gettext, including program 300 sources, Makefile and autoconf infrastructure, have been added. They 301 cover the following programming languages: 302 C (text mode, GNOME) 303 C++ (text mode, Qt, KDE, GNOME) 304 ObjectiveC (text mode, GNUstep, GNOME) 305 Shell (text mode) 306 Python (text mode) 307 Lisp (text mode) 308 librep (text mode) 309 Smalltalk (text mode) 310 Java (text mode, AWT, Swing) 311 awk (text mode) 312 Pascal (text mode) 313 YCP (libyui) 314 Tcl (text mode, Tk) 315 Perl (text mode) 316 PHP (text mode) 317 318Version 0.12.1 - May 2003 319 320* Bug fixes. 321 322Version 0.12 - May 2003 323 324* The gettext package is now separated into two subpackages: 325 - gettext-runtime: Runtime libraries and programs. 326 - gettext-tools: Tools and documentation for developers and translators. 327 The 'gettext-runtime' package is very small and should be installed on every 328 system that has users who desire to use internationalization. Whereas the 329 'gettext-tools' package is only for developers and translators. 330 331* The po/Makevars file has a new field MSGID_BUGS_ADDRESS, which program 332 maintainers should fill in, to help feedback from the translators to the 333 program maintainers. 334 xgettext, accordingly, has a new option --msgid-bugs-address. 335 336* Programming languages support: 337 338 - C++ 339 340 A new C++ class, called gnu::autosprintf, makes it possible to use 341 C format strings in C++. This is needed for proper internationalization 342 of C++ programs. 343 344 - Java 345 346 All the tools that manipulate PO files can work with .properties files 347 as well, if given the --properties-input and/or --properties-output 348 option. To create a .properties file from a PO or POT file, use 349 "msgcat --properties-output". 350 351 - Smalltalk 352 353 xgettext now also supports Smalltalk. 354 355 - PHP 356 357 xgettext now also supports PHP. 358 359 - Python 360 361 "xgettext --language=Python" now supports the plural handling functions 362 ngettext, dngettext, ungettext (introduced in Python 2.3). 363 364 - A new autoconf macro AM_PO_SUBDIRS is added. It is like AM_GNU_GETTEXT, 365 for packages written in other languages than C/C++. 366 367* A new library libgettextpo, with public header file "gettext-po.h", 368 provides functions for reading PO files into memory. It is useful for 369 applying PO files to areas not covered by the GNU gettext programs. 370 New documentation section: 371 - Writing your own programs that process PO files. 372 373* New documentation sections: 374 - Prioritizing messages: How to determine which messages to translate first. 375 - Names: Marking Proper Names for Translation. 376 377* xgettext now supports msgid strings in other encodings than ASCII. 378 xgettext has a new option --from-code that specifies the encoding of the 379 source files. The resulting POT files are UTF-8 encoded. 380 381* Tools for translators: 382 383 - msgmerge has a new option -N/--no-fuzzy-matching that inhibits the fuzzy 384 search for untranslated messages. 385 386 - msgattrib has new options --only-file and --ignore-file that cause the 387 specified attribute manipulation to apply to selected messages only. 388 389* Compatibility with automake-1.7. 390 391* In documentation section po/LINGUAS: 392 - Document the optional "languages" en@quot and en@boldquot. 393 394* New configuration option --enable-relocatable. See the INSTALL file for 395 details. 396 397Version 0.11.5 - August 2002 398 399* Bug fixes in the gettext.m4 autoconf macros. 400 401Version 0.11.4 - July 2002 402 403* The tools now know about the ISO C 99 <inttypes.h> format string directive 404 macros PRId64, PRIxMAX etc. 405 406Version 0.11.3 - July 2002 407 408* New program: 409 autopoint - copies standard gettext infrastructure 410 411* The documentation makes it clear that 'gettextize' is a wizard and 412 migration tool. 413 414* gettextize has a new option --dry-run. 415 416* Improved portability to Solaris, OSF/1 and Linux/libc5. 417 418* Improved interoperability with GCC 3.1. 419 420* New documentation sections: 421 - CVS Issues 422 - mkinstalldirs 423 - config.h.in 424 425Version 0.11.2 - April 2002 426 427* Bug fixes in the gettext.m4 autoconf macros. 428 429* New documentation section: 430 - Preparing Translatable Strings 431 432Version 0.11.1 - March 2002 433 434* xgettext now also supports Python, Tcl, Awk and Glade. 435 436* msgfmt can create (and msgunfmt can dump) Tcl message catalogs. 437 438* msggrep has a new option -C that allows to search for strings in translator 439 comments. 440 441* Bug fixes in the gettext.m4 autoconf macros. 442 443Version 0.11 - January 2002 444 445* New programs: 446 msgattrib - attribute matching and manipulation on message catalog, 447 msgcat - combines several message catalogs, 448 msgconv - character set conversion for message catalog, 449 msgen - create English message catalog, 450 msgexec - process translations of message catalog, 451 msgfilter - edit translations of message catalog, 452 msggrep - pattern matching on message catalog, 453 msginit - initialize a message catalog, 454 msguniq - unify duplicate translations in message catalog. 455 456* msgfmt can create (and msgunfmt can dump) Java ResourceBundles. 457 458* xgettext now also supports Lisp, Emacs Lisp, librep, Java, ObjectPascal, 459 YCP. 460 461* The tools now know about format strings in languages other than C. 462 They recognize new message flags named lisp-format, elisp-format, 463 librep-format, smalltalk-format, java-format, python-format, ycp-format. 464 When such a flag is present, the msgfmt program verifies the consistency 465 of the translated and the untranslated format string. 466 467* The msgfmt command line options have changed. Option -c now also checks 468 the header entry, a check which was previously activated through -v. 469 Option -C corresponds to the compatibility checks previously activated 470 through -v -v. Option -v now only increases verbosity and doesn't 471 influence whether msgfmt succeeds or fails. A new option 472 --check-accelerators is useful for GUI menu item translations. 473 474* msgcomm now writes its results to standard output by default. The options 475 -d/--default-domain and -p/--output-dir have been removed. 476 477* Manual pages for all the programs have been added. 478 479* PO mode changes: 480 - New key bindings for 'po-previous-fuzzy-entry', 481 'po-previous-obsolete-entry', 'po-previous-translated-entry', 482 'po-previous-untranslated', 'po-undo', 'po-other-window', and 483 'po-select-auxiliary'. 484 - Support for merging two message catalogs, based on msgcat and ediff. 485 486* A fuzzy attribute of the header entry of a message catalog is now ignored 487 by the tools, i.e. it is used even if marked fuzzy. 488 489* gettextize has a new option --intl which determines whether a copy of the 490 intl directory is included in the package. 491 492* The Makefile variable @INTLLIBS@ is deprecated. It is replaced with 493 @LIBINTL@ (in projects without libtool) or @LTLIBINTL@ (in projects with 494 libtool). 495 496* New packaging hints for binary package distributors. See file PACKAGING. 497 498* New documentation sections: 499 - Manipulating 500 - po/LINGUAS 501 - po/Makevars 502 - lib/gettext.h 503 - autoconf macros 504 - Other Programming Languages 505 506Version 0.10.40 - September 2001 507 508* The libintl library is now covered by the GNU LGPL. The tools are still 509 covered by the GNU GPL. 510 511Version 0.10.39 - July 2001 512 513* This is a bug-fix release. 514 515* Now uses libtool-1.4. Linking with the libintl shared library is easier. 516 517* The autoconf macros now work with both autoconf-2.13 and autoconf-2.50. 518 519Version 0.10.38 - May 2001 520 521* This is a bug-fix release. 522 523* Manual pages for the GNU libintl library functions have been added. 524 525Version 0.10.37 - April 2001 526 527This is a bug-fix release. 528 529Version 0.10.36 - March 2001, by Ulrich Drepper and Bruno Haible 530 531* General plural handling. New functions ngettext, dngettext, dcngettext. 532 533* Locales which differ only in the character encoding, for example ja_JP and 534 ja_JP.UTF-8, can now share the same message catalogs. gettext converts 535 the messages to the appropriate character encoding on the fly. 536 537* The tools now correctly process PO files in CJK encodings. 538 539* Support for non-GNU gettext has been dropped. Previously, on Solaris, the 540 system's gettext was used (unless --with-included-gettext was specified), 541 which led to problems with PO files that were not 100% translated. 542 543* Support for the catgets wrapper has been dropped. This means that gettext 544 now always supports the LANGUAGE environment variable, message inheritance, 545 automatic charset conversion etc. 546 547* Support for the old Linux specific .msg catalog format has been dropped. 548 549* When the included GNU libintl is installed (i.e. on GNU platforms, when 550 the configure option --with-included-gettext is given, or on non-GNU 551 platforms, when the configure option --disable-nls is not given), it is 552 also installed as a shared library, unless the configure option 553 --disable-shared is given. 554 555* PO mode changes: 556 557** PO mode does not use recursive edit anymore, many edits may be worked on 558 simultaneously in a single PO file. 559 560** PO mode may handle many translation files at once while correlating related 561 entries, for helping multilingual or cultured translators. 562 563** On recent Emacses, PO mode automatically use proper fonts when available. 564 565** PO mode supports marking of C++ sources. 566 567** highlights original message while editing the translation 568 569** PO mode has commands to mail messages to teams or to the translation 570 coordinator, with automatic inclusion of the current PO file. 571 572Version 0.10.35 - April 1998, by Ulrich Drepper 573 574* by default the emulation of gettext using the catgets() functions of 575 the C library is not selected anymore. GNU gettext has so many nice 576 extensions that this became unreasonable. Using --with-catgets the 577 emulation still can be requested. 578 579* extend xgettext program to handle other file formats other than C/C++. 580 For now it also handles PO file. Using this feature one can concatenate 581 arbitrary PO files. 582 583* Tcl module with gettext interface 584 585* Korean translation by Bang Jun Young 586 587* xgettext writes to stdout when default domain name is set to - 588 589* codeset name normalization 590 591* msgmerge program now has all features tupdate has (and more). 592 tupdate itself will be removed soon 593 594* po/Makefile.in.in now uses msgmerge instead of tupdate 595 596* escape notation in .po files are only used when explicitly selected 597 598* changed interface of msgunfmt to conform to GNU coding standard 599 600* msgmerge now knows how to handle obsolete entries. If a formerly obsolete 601 entry is used again msgmerge will find it 602 603* better implementation of comment extraction in xgettext. 604 605* better C format string implementation. The xgettext will classify 606 strings as being a format string, or not, in the .po file. The 607 programmer can override the decision explicitly for each string 608 by specifying `xgettext:c-format' and `xgettext:no-c-format' 609 respectively in a C comment preceding the string. 610 611* msgmerge program now always produces output. Fuzzy or non-existing 612 translations are no reason for holding back the result. 613 614* reasonable header entry format implemented 615 616* Norwegian translation by Karl Anders �gard 617 618* Configure command line option `--with-gnu-gettext' is renamed to 619 `--with-included-gettext' 620 621* gettextize now can determine whether the aclocal.m4 of the project 622 is sufficent 623 624* use automake for Makefile.in generation 625 626* by default now only c-format is emitted in xgettext. If using the new 627 --debug option one can enable printing possible-c-format to see who 628 decided about the string: xgettext or the programmer 629 630* the installed libintl.h file no longer depends on HAVE_LOCALE_H being 631 defined. After running configure we know whether this file exists. 632 633* wrapping of lines in PO file output finally enabled. 634 A new special comment no-wrap prevents wrapping. 635 636* add --statistics option to msgfmt to get information about number of 637 translated, untranslated, and fuzzy messages 638 639* change behaviour of --verbose option to msgfmt. This no longer 640 causes the check on the messages to be performed. The check for leading 641 and trailing \n is always performed and the check of the format specifiers 642 is performed when --check is given. 643 644* shared library support based On Gord Matzigkeit's libtool package 645 646* msgcomm program by Peter Miller to extract messages shared by input 647 files 648 649* many more translations. 650 651Version 0.10 - December 1995, by Ulrich Drepper 652 653* implement --shell-script option for gettext program 654 655* implement object-oriented, lazy message handling :-) 656 Consult the manual for more/any information 657 658* implement locale name aliasing, similar to the one used 659 in the X Window System 660 661* support for GNU gettext sources in central place to support 662 use in development environments of other projects 663 664* implement CEN syntax for environment variable values 665 666* msgcmp program to find matches in two .po files 667 668* programs now have exit status != 0 if errors occured 669 670* libintl.a is now selfcontained and can be used without context in 671 other projects (even on systems missing alloca) 672 673* gettextize now automatically runs config.status 674 675* swedish message catalog 676 677* new options for xgettext: -D/--directory to change in specified directory 678 before processing the input files and -f/--files-from to specify file from 679 which the names of the input files are read. 680 The later option in necessary for large projects such as GNU C Library. 681 682* new programs msgmerge and msgunfmt by Peter Miller. The code of the other 683 programs is now also much cleaner. 684 685Version 0.9 - August 1995, by Ulrich Drepper 686 687* again many improvements on the manual 688 689* norwegian message catalog 690 691* compilation now works with --disable-nls 692 693* better checks 694 695Version 0.8 - July 1995, by Ulrich Drepper 696 697* much improved manual (although still far from being complete) 698 699* improved PO mode; it now can prepare C sources for use with gettext 700 by marking translatable strings 701 702* better support for sparse System V systems 703 704* check goal (kind of) 705 706* more input tests and warnings 707 708* better support for integration in other packages 709 710* many bugs fixed 711 712Version 0.7 - June 1995, by Ulrich Drepper 713 714* New GNU package providing functionality to internationalize and 715localize other programs. 716 717* Implementation of the Uniforum(*) proposal for internationalization 718on top of X/Open(*) style catgets functions. 719 720* Complete implementation of the Uniforum functions for system 721lacking either of them or those who which to have a different 722implementation with many advantages. 723 724* Implementation of the three tools for message catalog handling 725described in the Uniforum. 726 727* Emacs po-mode for handling portable message object files which are 728the basis of the work of the package. 729 730 731(*) Some history: The POSIX working groups have so far been unable to 732agree on one set of message catalog handling functions for the C Library. 733For now there are competing proposals, one by the Uniforum group, led by 734Sun, and the other by X/Open. Although the latter is surely implemented 735on more systems, it is not perceived as the clear leader. 736