1 Version 0.19.7 - December 2015
3 * Programming languages support:
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.
13 - Improve OS/2 kLIBC support (still not complete)
14 - Remove dependency on expat
16 Version 0.19.6 - September 2015
18 * Programming languages support:
20 xgettext now supports AppData file format, used by software center
21 applications (e.g., GNOME Software) to describe installable
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
30 * po/Makefile.in.in can now insert the file $(DOMAIN).pot-header to
31 $(DOMAIN).pot, instead of the standard header comments.
34 - Fix mishandling of gettext version numbers for minor releases, in
35 po-mode.el and gettextize.
36 - Fix build with --enable-relocatable.
38 Version 0.19.5 - July 2015
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
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.
51 * The base Unicode standard is now updated to 8.0.0. This
52 particularly improves "\N{...}" notation handling of xgettext for
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.
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.
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
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.
80 Version 0.19.4 - December 2014
82 * The --keyword option of xgettext now accepts same argument number
83 for both singular and plural forms.
85 * Programming languages support:
86 - C#: xgettext now properly handles Unicode characters encoded with
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 ($'...').
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.
99 - Building on Mac OS X 10.10 and AIX 7.1 is now supported.
101 Version 0.19.3 - October 2014
104 - Fix xgettext mishandling of octal character escapes in C.
105 - Fix autopoint infinite recursion with certain configure.ac.
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.
113 - Building on Solaris 10 and 11 with Solaris Studio compiler is now
116 Version 0.19.2 - July 2014
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.
125 Version 0.19.1 - June 2014
127 * Programming languages support:
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.
135 Bug fix in xgettext handling of "//" in string literals. This was
136 a regression after the C-99 Unicode escape support.
138 * The po/Makevars.template file now contains the newly added variables.
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.
144 * Future backward-incompatibilities:
145 - In future Gettext versions, msgfmt will treat header errors as
146 fatal and terminate the command execution.
148 Version 0.19 - June 2014
150 * Programming languages support:
153 xgettext and msgfmt now support .desktop files, used by desktop
154 applications, as input and output.
157 xgettext now supports GSettings schema file format used by GNOME
161 xgettext now recognizes E4X (ECMA-357) constructs.
164 Single and double quotes around heredoc markers are now recognized.
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.
172 The gettext shorthand form _"abc", used by GIMP script-fu, is now
173 recognized by xgettext.
176 xgettext now recognizes C99-style Unicode character escapes.
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.
183 * msgfmt now has --source option to keep generated .java file when
184 running in Java mode.
186 * msgattrib now has --empty option that sets msgstr to empty when
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.
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
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.
203 * xgettext now strips prefixed string before the comment tag. This is
204 useful to support C-style comment like this:
207 * TRANSLATORS: first line
211 In this example, the extracted comment does not contain "* " at the
212 beginning of each line.
214 * libgettextpo library:
215 - Memory leak fixes in the PO file parser.
218 - A complete example showing the use of GNU gettext in a GNOME 3
219 application has been added.
222 Version 0.18.3 - July 2013
225 On Mac OS X systems, the setlocale() function now properly
226 invalidates loaded message catalogs when a locale has been set.
228 * Programming languages support:
231 The gnu::autosprintf class now provides an assignment operator.
234 xgettext now supports GtkBuider file format used by Glade 3.
235 xgettext now also extracts contexts (msgctxt) from Glade 2 and
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.
247 xgettext now supports Lua, using Ľubomír Remák's lua-gettext.
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.
256 Bug fix in xgettext Unicode escape handling.
259 xgettext now supports Vala.
261 * msgattrib now has --previous option to keep previous msgid when
262 making messages fuzzy, similar to msgmerge --previous.
264 * msgfmt now checks PO file headers more strictly with less
267 * 'gettextize' now checks macro directories specified with
268 AC_CONFIG_MACRO_DIRS in configure.ac.
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
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.
281 Version 0.18.2 - December 2012
283 * xgettext now understands the block comment syntax of Guile 2.0.
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.
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.
298 - The autoconf macros installed by 'gettextize' now work with the
299 forthcoming Automake 1.14 and require Autoconf version 2.60 or
303 - Building on MacOS X 10.7, Cygwin 1.7.10, and newer 64-bit mingw is
306 Version 0.18.1 - June 2010
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.
312 The libraries and programs are now linked with libunistring if this library
313 is already installed.
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.
321 Version 0.18 - May 2010
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.
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
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).
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.
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.
353 * msgmerge is up to 10 times faster when the PO and POT files are large.
354 This speedup was contributed by Ralf Wildenhues.
356 * msgcmp has a new option -N/--no-fuzzy-matching, like msgmerge has since
359 * msgfilter now sets environment variables during the invocation of the
360 filter, indicating the msgid and location of the messge being processed.
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
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'.
370 * autopoint can now be used to update several PO directories all together.
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.
377 * The po/Makevars file has a new field MSGMERGE_OPTIONS, that can be used
378 to adjust msgmerge's operation.
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
386 * Updated the meaning of 'gcc-internal-format' to match GCC 4.3.
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.
397 - The msgfilter program now also works on native Woe32 platforms.
398 - Compiled C# message catalogs now also work with 'mono' versions from 2009
401 Version 0.17 - November 2007
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.
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.
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.
420 * gettextize now has a --po-dir option that allows several PO directories to
421 be updated all together.
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.
427 xgettext has a new option --kde that triggers the recognition and marking
428 of KDE 4 format strings.
431 - A new macro AM_XGETTEXT_OPTION can be used as an alternative to modifying
434 * libgettextpo library:
435 - New functions are available for querying the list of supported format
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
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.
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.
452 Version 0.16.1 - November 2006
454 * Bug fix in the gettext.m4 autoconf macros.
456 Version 0.16 - October 2006
458 * Interoperability with automake-1.10.
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:
465 #| msgid "too many arguments"
466 msgid "too few arguments"
467 msgstr "trop d'arguments"
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.
473 msgattrib has a new option --clear-previous that removes these #| lines.
475 * msgmerge is faster now on CPUs with multiple execution units, if compiled
476 with GCC 4.2 or newer.
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.
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.
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.
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
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.
501 * The libgettextpo library no longer exports symbols that could clash with
502 symbols of the application that uses it.
504 * Vastly improved French translations. Thanks to Christophe Combelles.
506 Version 0.15 - July 2006
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
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.
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),
528 msgid "%d fatal error"
529 msgid_plural "%d fatal errors"
530 msgstr[0] "ein fataler Fehler"
531 msgstr[1] "fatale Fehler"
533 was earlier considered valid and now gives an error when "msgfmt --check"
535 "number of format specifications in 'msgid' and 'msgstr[1]' does not match"
537 * msggrep has a new option -v/--invert-match that acts like grep's -v option.
539 * msggrep has a new option -X/--extracted-comment that allows to search for a
540 pattern in the extracted comments.
542 * xgettext's --keyword option now allows to specify an extracted comment on the
543 command line, rather than in program's source code.
545 * msgmerge is much faster now, when using a large compendium.
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).
552 * Programming languages support:
555 xgettext has a new option --boost that triggers the recognition and marking
556 of boost::format strings.
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
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
568 Binary compatibility is guaranteed, however.
570 * The 'mkinstalldirs' shell script is no longer needed and no longer installed
574 - Building on mingw is now supported.
575 - Building shared libraries (--enable-shared) on Cygwin and mingw is now
578 * Interoperability with expat version 2.0.0.
581 A complete example showing the use of GNU gettext with the wxWidgets GUI
582 toolkit has been added.
584 * The gettext autoconf macros now assume 'aclocal' from automake 1.8 or newer.
586 Version 0.14.6 - June 2006
588 * Updated the meaning of 'gcc-internal-format' to match GCC 4.1.
590 Version 0.14.5 - May 2005
592 * Updated the meaning of 'gcc-internal-format' to match GCC 4.0.
594 Version 0.14.4 - April 2005
596 * The gettext autoconf macros will now work with the forthcoming g++ 4.0.
597 * Fix improved detection of the locale on MacOS X.
599 Version 0.14.3 - March 2005
601 * Usability improvements in gettextize and autopoint.
603 * Programming languages support:
605 Use the GNU guile definition of format strings.
607 Version 0.14.2 - February 2005
609 * Improved detection of the locale on MacOS X.
611 * The gettext autoconf macros now require autoconf 2.50 or newer.
613 * Programming languages support:
616 xgettext now also supports Scheme. Best used with guile 1.7 or newer.
618 * msggrep is much faster now.
620 * libgettextpo library:
621 - New functions for constructing PO files in memory and writing them to
623 - The error handling is now customizable.
627 - New tutorial document, written by Gora Mohanty.
629 - New documentation sections: Scheme, Release Management.
631 * Bug fixes for Turkish and Estonian locales.
635 Version 0.14 - January 2004
637 * Programming languages support:
641 xgettext now also supports C#.
643 New library: GNU.Gettext.dll contains the runtime for using GNU gettext
644 message catalogs in C#.
646 msgfmt can create (and msgunfmt can dump) message catalogs for C#.
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.
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.
659 - New documentation section: Preparing Library Sources.
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.
668 Version 0.13.1 - December 2003
670 * Bug fixes in the testsuite and in the examples.
672 Version 0.13 - November 2003
674 * Programming languages support:
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.
684 envsubst - substitutes environment variables in shell format strings.
688 xgettext now also supports Perl.
692 "xgettext --language=PHP" now supports the plural handling functions
693 ngettext, dngettext, dcngettext (introduced in PHP 4.2.0).
697 "xgettext --language=ObjectiveC" now supports the @"..." string syntax,
698 the NSLocalizedString function and the ObjectiveC specific format strings.
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".
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'.
715 xgettext has a new option --qt that triggers the recognition and marking
716 of Qt format strings.
718 msgfmt has a new option --qt that generates binary message catalogs in
721 * Data formats support:
724 xgettext now also supports Glade version 2.
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
732 * libgettextpo library:
734 - New functions for testing the obsolete/fuzzy/*-format flags of a message.
735 - New convenience functions for extracting and analyzing the header entry.
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
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.
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:
755 C++ (text mode, Qt, KDE, GNOME)
756 ObjectiveC (text mode, GNUstep, GNOME)
761 Smalltalk (text mode)
762 Java (text mode, AWT, Swing)
770 Version 0.12.1 - May 2003
774 Version 0.12 - May 2003
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.
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
786 xgettext, accordingly, has a new option --msgid-bugs-address.
788 * Programming languages support:
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
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".
805 xgettext now also supports Smalltalk.
809 xgettext now also supports PHP.
813 "xgettext --language=Python" now supports the plural handling functions
814 ngettext, dngettext, ungettext (introduced in Python 2.3).
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++.
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.
825 * New documentation sections:
826 - Prioritizing messages: How to determine which messages to translate first.
827 - Names: Marking Proper Names for Translation.
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.
833 * Tools for translators:
835 - msgmerge has a new option -N/--no-fuzzy-matching that inhibits the fuzzy
836 search for untranslated messages.
838 - msgattrib has new options --only-file and --ignore-file that cause the
839 specified attribute manipulation to apply to selected messages only.
841 * Compatibility with automake-1.7.
843 * In documentation section po/LINGUAS:
844 - Document the optional "languages" en@quot and en@boldquot.
846 * New configuration option --enable-relocatable. See the INSTALL file for
849 Version 0.11.5 - August 2002
851 * Bug fixes in the gettext.m4 autoconf macros.
853 Version 0.11.4 - July 2002
855 * The tools now know about the ISO C 99 <inttypes.h> format string directive
856 macros PRId64, PRIxMAX etc.
858 Version 0.11.3 - July 2002
861 autopoint - copies standard gettext infrastructure
863 * The documentation makes it clear that 'gettextize' is a wizard and
866 * gettextize has a new option --dry-run.
868 * Improved portability to Solaris, OSF/1 and Linux/libc5.
870 * Improved interoperability with GCC 3.1.
872 * New documentation sections:
877 Version 0.11.2 - April 2002
879 * Bug fixes in the gettext.m4 autoconf macros.
881 * New documentation section:
882 - Preparing Translatable Strings
884 Version 0.11.1 - March 2002
886 * xgettext now also supports Python, Tcl, Awk and Glade.
888 * msgfmt can create (and msgunfmt can dump) Tcl message catalogs.
890 * msggrep has a new option -C that allows to search for strings in translator
893 * Bug fixes in the gettext.m4 autoconf macros.
895 Version 0.11 - January 2002
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.
908 * msgfmt can create (and msgunfmt can dump) Java ResourceBundles.
910 * xgettext now also supports Lisp, Emacs Lisp, librep, Java, ObjectPascal,
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.
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.
926 * msgcomm now writes its results to standard output by default. The options
927 -d/--default-domain and -p/--output-dir have been removed.
929 * Manual pages for all the programs have been added.
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.
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.
941 * gettextize has a new option --intl which determines whether a copy of the
942 intl directory is included in the package.
944 * The Makefile variable @INTLLIBS@ is deprecated. It is replaced with
945 @LIBINTL@ (in projects without libtool) or @LTLIBINTL@ (in projects with
948 * New packaging hints for binary package distributors. See file PACKAGING.
950 * New documentation sections:
956 - Other Programming Languages
958 Version 0.10.40 - September 2001
960 * The libintl library is now covered by the GNU LGPL. The tools are still
961 covered by the GNU GPL.
963 Version 0.10.39 - July 2001
965 * This is a bug-fix release.
967 * Now uses libtool-1.4. Linking with the libintl shared library is easier.
969 * The autoconf macros now work with both autoconf-2.13 and autoconf-2.50.
971 Version 0.10.38 - May 2001
973 * This is a bug-fix release.
975 * Manual pages for the GNU libintl library functions have been added.
977 Version 0.10.37 - April 2001
979 This is a bug-fix release.
981 Version 0.10.36 - March 2001, by Ulrich Drepper and Bruno Haible
983 * General plural handling. New functions ngettext, dngettext, dcngettext.
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.
989 * The tools now correctly process PO files in CJK encodings.
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.
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.
999 * Support for the old Linux specific .msg catalog format has been dropped.
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.
1009 ** PO mode does not use recursive edit anymore, many edits may be worked on
1010 simultaneously in a single PO file.
1012 ** PO mode may handle many translation files at once while correlating related
1013 entries, for helping multilingual or cultured translators.
1015 ** On recent Emacses, PO mode automatically use proper fonts when available.
1017 ** PO mode supports marking of C++ sources.
1019 ** highlights original message while editing the translation
1021 ** PO mode has commands to mail messages to teams or to the translation
1022 coordinator, with automatic inclusion of the current PO file.
1024 Version 0.10.35 - April 1998, by Ulrich Drepper
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.
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
1035 * Tcl module with gettext interface
1037 * Korean translation by Bang Jun Young
1039 * xgettext writes to stdout when default domain name is set to -
1041 * codeset name normalization
1043 * msgmerge program now has all features tupdate has (and more).
1044 tupdate itself will be removed soon
1046 * po/Makefile.in.in now uses msgmerge instead of tupdate
1048 * escape notation in .po files are only used when explicitly selected
1050 * changed interface of msgunfmt to conform to GNU coding standard
1052 * msgmerge now knows how to handle obsolete entries. If a formerly obsolete
1053 entry is used again msgmerge will find it
1055 * better implementation of comment extraction in xgettext.
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.
1063 * msgmerge program now always produces output. Fuzzy or non-existing
1064 translations are no reason for holding back the result.
1066 * reasonable header entry format implemented
1068 * Norwegian translation by Karl Anders �gard
1070 * Configure command line option '--with-gnu-gettext' is renamed to
1071 '--with-included-gettext'
1073 * gettextize now can determine whether the aclocal.m4 of the project
1076 * use automake for Makefile.in generation
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
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.
1085 * wrapping of lines in PO file output finally enabled.
1086 A new special comment no-wrap prevents wrapping.
1088 * add --statistics option to msgfmt to get information about number of
1089 translated, untranslated, and fuzzy messages
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.
1096 * shared library support based On Gord Matzigkeit's libtool package
1098 * msgcomm program by Peter Miller to extract messages shared by input
1101 * many more translations.
1103 Version 0.10 - December 1995, by Ulrich Drepper
1105 * implement --shell-script option for gettext program
1107 * implement object-oriented, lazy message handling :-)
1108 Consult the manual for more/any information
1110 * implement locale name aliasing, similar to the one used
1111 in the X Window System
1113 * support for GNU gettext sources in central place to support
1114 use in development environments of other projects
1116 * implement CEN syntax for environment variable values
1118 * msgcmp program to find matches in two .po files
1120 * programs now have exit status != 0 if errors occurred
1122 * libintl.a is now selfcontained and can be used without context in
1123 other projects (even on systems missing alloca)
1125 * gettextize now automatically runs config.status
1127 * swedish message catalog
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.
1134 * new programs msgmerge and msgunfmt by Peter Miller. The code of the other
1135 programs is now also much cleaner.
1137 Version 0.9 - August 1995, by Ulrich Drepper
1139 * again many improvements on the manual
1141 * norwegian message catalog
1143 * compilation now works with --disable-nls
1147 Version 0.8 - July 1995, by Ulrich Drepper
1149 * much improved manual (although still far from being complete)
1151 * improved PO mode; it now can prepare C sources for use with gettext
1152 by marking translatable strings
1154 * better support for sparse System V systems
1156 * check goal (kind of)
1158 * more input tests and warnings
1160 * better support for integration in other packages
1164 Version 0.7 - June 1995, by Ulrich Drepper
1166 * New GNU package providing functionality to internationalize and
1167 localize other programs.
1169 * Implementation of the Uniforum(*) proposal for internationalization
1170 on top of X/Open(*) style catgets functions.
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.
1176 * Implementation of the three tools for message catalog handling
1177 described in the Uniforum.
1179 * Emacs po-mode for handling portable message object files which are
1180 the basis of the work of the package.
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.