xref: /netbsd/external/gpl2/gettext/dist/NEWS (revision 63eb84d1)
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