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