-
Notifications
You must be signed in to change notification settings - Fork 14
/
NEWS
1546 lines (1148 loc) · 57 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Version 0.23 - October 2024
* Programming languages support:
- XML:
o The escaping of characters such as & < > has been changed:
- No escaping is done any more by xgettext, when creating a POT file.
- Instead, extra escaping can be requested for the msgfmt pass, when
merging into an XML file.
- The default value of 'escape' in the <gt:escapeRule> was "yes";
now it is "no".
This means that existing translations of older POT files may no longer
fully apply. As a maintainer of a package that has translatable XML files,
you need to regenerate the POT file and pass it on to your translators.
o XML schemas for .its and .loc files are now provided.
o The value of the xml:lang attribute, inserted by msgfmt, now conforms
to W3C standards.
o 'msgfmt --xml' accept an option --replace-text, that causes the output
to be a mono-lingual XML file instead of a multi-lingual XML file.
o xgettext and 'msgfmt --xml' now supports DocBook XML files.
- Python:
o xgettext now assumes source code for Python 3 rather than Python 2.
This affects the interpretation of escape sequences in string literals.
o xgettext now recognizes the f-string syntax.
- Scheme:
o xgettext now supports the option '-L Guile' as an alternative to
'-L Scheme'. They are nearly equivalent. They differ in the
interpretation of escape sequences in string literals: While
'xgettext -L Scheme' assumes the R6RS and R7RS syntax of string literals,
'xgettext -L Guile' assumes the syntax of string literals understood by
Guile 2.x and 3.0 (without command-line option '--r6rs' or '--r7rs', and
before a '#!r6rs' directive is seen).
o xgettext now recognizes comments of the form '#; <expression>'.
- Java: Improved recognition of format strings when the String.formatted
method is used.
- JavaScript:
o xgettext now parses template literals inside JSX correctly.
o xgettext has a new option --tag that customizes the behaviour of tagged
template literals.
- C#:
o The build system and tools now also support 'dotnet' (.NET) as C#
implementation. In order to declare a preference for 'dotnet' over
'mono', you can use the configure option '--enable-csharp=dotnet'.
o Strings with embedded expressions (a.k.a. interpolated strings) are now
recognized.
- awk: String concatenation by juxtaposition is now recognized.
- Smalltalk: The string concatenation operator ',' is now recognized.
- Vala: Improved recognition of format strings when the string.printf method
is used.
- Glade: xgettext has improved support for GtkBuilder 4.
- Tcl: With the forthcoming Tcl 9.0, characters outside the Unicode BMP
in Tcl message catalogs (.msg files) will work regardless of the locale's
encoding.
- Perl:
o xgettext now reports warnings instead of fatal errors.
o Strings with embedded expressions (a.k.a. interpolated strings) are now
recognized.
- PHP:
o Strings with embedded expressions are now recognized.
o Heredoc and Nowdoc strings are now scanned correctly.
o The format string directives %E, %F, %g, %G, %h, %H are now regarded as
valid.
- Desktop: xgettext now produces POT files with correct line numbers.
* Runtime behaviour:
- In the C.UTF-8 locale, like in the C locale, the *gettext() functions
now return the msgid untranslated. This is relevant for GNU systems,
Linux with musl libc, FreeBSD, NetBSD, OpenBSD, Cygwin, and Android.
* Documentation:
- The section "Preparing Strings" now gives more advice how to deal with
string concatenation and strings with embedded expressions.
* xgettext:
- Most of the diagnostics emitted by xgettext are now labelled as
"warning" or "error".
* msgmerge:
- The msgmerge option '--sorted-output' is now deprecated.
* libgettextpo library:
- This library is now multithread-safe.
Version 0.22.5 - February 2024
* The replacements for the printf()/fprintf()/... functions that are
provided through <libintl.h> on native Windows and NetBSD now enable
GCC's format string analysis (-Wformat).
* Bug fixes:
- xgettext's processing of Vala files with printf method invocations has
been corrected (regression in 0.22).
- Build fixes on macOS.
Version 0.22.4 - November 2023
* Bug fixes:
- AM_GNU_GETTEXT now recognizes a statically built libintl on macOS and AIX.
- Build fixes on AIX.
Version 0.22.3 - October 2023
* Portability:
- The libintl library now works on macOS 14. (Older versions of libintl
crash on macOS 14, due to an incompatible change in macOS.)
Version 0.22.2 - September 2023
* Bug fixes:
- The libintl shared library now exports again some symbols that were
accidentally missing.
<https://savannah.gnu.org/bugs/index.php?64323>
This bug was introduced in version 0.22.
Version 0.22.1 - September 2023
* Bug fixes:
- xgettext's processing of large Perl files may have led to errors
<https://savannah.gnu.org/bugs/index.php?64552>
- "xgettext --join-existing" could encounter errors.
<https://savannah.gnu.org/bugs/index.php?64490>
These bugs were introduced in version 0.22.
* Portability:
- Building on Android is now supported.
Version 0.22 - June 2023
* PO file format:
- When a #: line contains references to file names that contain spaces,
these file names are surrounded by Unicode characters U+2068 and U+2069.
This makes it possible to parse such references correctly.
* Improvements for maintainers:
- The AM_GNU_GETTEXT macro now defines two variables localedir_c and
localedir_c_make, that can be used in C code or in Makefiles,
respectively, for representing the value of the --localedir configure
option.
* Programming languages support:
- C, C++:
o xgettext now supports gettext-like functions that take wide strings
(of type 'const wchar_t *', 'const char16_t *', or 'const char32_t *')
as arguments.
o xgettext now recognizes numbers with digit separators, as defined by
ISO C 23, as tokens.
o xgettext and msgfmt now recognize the format string directive %b
(for binary integer output, as defined by ISO C 23) in format strings.
o xgettext and msgfmt now recognize the argument size specifiers
w8, w16, w32, w64, wf8, wf16, wf32, wf64 (as defined by ISO C 23)
in format strings.
o xgettext and msgfmt now recognize C++ format strings, as defined by
ISO C++ 20. They are marked as 'c++-format' in POT and PO files.
A new example has been added, 'hello-c++20', that illustrates how
to use these format strings with gettext.
- Java:
o The build system and tools now also support Java versions newer than
Java 11. This is known to work up to Java 20, at least. On the other
hand, support for old versions of Java (Java 1.5 and GCJ) has been
dropped.
- Tcl: xgettext now supports the \x, \u, and \U escapes as defined in
Tcl 8.6.
* Portability:
- On systems with musl libc, the *gettext() functions in libc now work
with MO files generated from PO files with an encoding other than UTF-8.
To this effect, the msgfmt program now converts the messages to UTF-8
encoding before storing them in a MO file. You can prevent this by
using the msgfmt --no-convert option.
- On systems with musl libc, the *gettext() functions in libc now work
with MO files generated from PO files with ISO C 99 <inttypes.h> format
string directive macros. To this effect, the msgfmt program pre-expands
strings with such macros. You can prevent this by using the msgfmt
--no-redundancy option.
* xgettext:
- The xgettext option '--sorted-output' is now deprecated.
- xgettext input files of type PO that are not all ASCII and not UTF-8
encoded are now handled correctly.
* The base Unicode standard is now updated to 15.0.0.
* Emacs PO mode:
Fix an incompatibility with Emacs version 29 or newer.
Version 0.21.1 - October 2022
* Runtime behaviour:
- On AIX, locale names with a script or with an uppercase language are now
supported.
For example, sr_Cyrl_RS.UTF-8 is treated like sr_RS.UTF-8@cyrillic, and
EN_US.UTF-8 is treated like en_US.UTF-8.
* The base Unicode standard is now updated to 14.0.0.
* Portability:
- Building on macOS 11/arm64 is now supported.
- Building on Linux/powerpc64le with glibc ≥ 2.35 is now supported.
Version 0.21 - July 2020
* Programming languages support:
- Shell:
o xgettext now recognizes and ignores 'env' invocations and environment
variable assignments in front of commands.
- Java:
o xgettext now recognizes format strings in the Formatter syntax. They
are marked as 'java-printf-format' in POT and PO files.
o xgettext now recognizes text blocks as string literals.
- JavaScript:
xgettext parses JSX expressions more reliably.
- Ruby:
o xgettext now supports Ruby.
o 'msgfmt -c' now verifies the syntax of translations of Ruby format
strings.
* Runtime behaviour:
- On native Windows platforms, the directory that contains the message
catalogs may now contain arbitrary Unicode characters. To make use of
this feature, use the new function 'wbindtextdomain' instead of
'bindtextdomain'. It allows to pass a directory name in wchar_t[] encoding.
Note: 'wbindtextdomain' exists only on native Windows platforms.
* Improvements for translators:
- When msgfmt writes a MO file, it now does so in such a way that processes
that are currently using an older copy of the MO file will not crash.
* Libtextstyle:
- Added support for emitting hyperlinks.
- New API for doing formatted output.
- The example programs support the NO_COLOR environment variable.
Version 0.20.2 - April 2020
* Improvements for maintainers:
- A dependency bug in po/Makefile.in.in has been fixed.
* Programming languages support:
- Shell:
o The programs 'gettext', 'ngettext', when invoked with option -e, now
expand '\\' and octal escape sequences, instead of swallowing them.
(Bug present since the beginning.)
o xgettext now recognizes 'gettext' program invocations with the '-e'
option, such as
gettext -e 'some\nstring\n'
- Python:
xgettext now assumes a Python source file is in UTF-8 encoding by default,
as stated in PEP 3120.
- Desktop Entry:
The value of the 'Icon' property is no longer extracted into the POT file
by xgettext. The documentation explains how to localize icons.
* Runtime behaviour:
- The interpretation of the language preferences on macOS has been improved,
especially in the case where a system locale does not exist for the
combination of the selected primary language and the selected territory.
- Fixed a multithread-safety bug on Cygwin and native Windows.
* Libtextstyle:
- Fixed a number of bugs (by upgrading libcroco to version 0.6.13).
Version 0.20.1 - May 2019
* Important bug fix:
- Fixed a wrong shared library versioning of libintl.so.
Version 0.20 - May 2019
* Support for reproducible builds:
- msgfmt now eliminates the POT-Creation-Date header field from .mo files.
* Improvements for translators:
- update-po target in Makefile.in.in now uses msgmerge --previous.
* Improvements for maintainers:
- msgmerge now has an option --for-msgfmt, that produces a PO file meant
for use by msgfmt only. This option saves processing time, in particular
by omitting fuzzy matching that is not useful in this situation.
- The .pot file in a 'po' directory is now erased by "make maintainer-clean".
- It is now possible to override xgettext options from the po/Makefile.in.in
through options in XGETTEXT_OPTIONS (declared in po/Makevars).
- The --intl option of the gettextize program (deprecated since 2010) is
no longer available. Instead of including the intl sources in your package,
we suggest making the libintl library an optional prerequisite of your
package. This will simplify the build system of your package.
- Accordingly, the Autoconf macro AM_GNU_GETTEXT_INTL_SUBDIR is gone as well.
* Programming languages support:
- C, C++:
xgettext now supports strings in u8"..." syntax, as specified in C11
and C++11.
- C, C++:
xgettext now supports 'p'/'P' exponent markers in number tokens, as
specified in C99 and C++17.
- C++:
xgettext now supports underscores in number tokens.
- C++:
xgettext now supports single-quotes in number tokens, as specified in
C++14.
- Shell:
o The programs 'gettext', 'ngettext' now support a --context argument.
o gettext.sh contains new function eval_pgettext and eval_npgettext
for producing translations of messages with context.
- Java:
o xgettext now supports UTF-8 encoded .properties files (a new feature
of Java 9).
o The build system and tools now support Java 9, 10, and 11. On the
other hand, support for old versions of Java (Java 5 and older,
GCJ 4.2.x and older) has been dropped.
- Perl:
o Native support for context functions (pgettext, dpgettext, dcpgettext,
npgettext, dnpgettext, dcnpgettext).
o better detection of question mark and slash as operators (as opposed
to regular expression delimiters).
- Scheme:
xgettext now parses the syntax for specialized byte vectors (#u8(...),
#vu8(...), etc.) correctly.
- Pascal:
xgettext can now extract strings from .rsj files, produced by the
Free Pascal compiler version 3.0.0 or newer.
- Vala:
xgettext now parses escape sequences in strings more accurately.
- JavaScript:
xgettext now parses template literals correctly.
* Runtime behaviour:
- The interpretation of the language preferences on macOS has been fixed.
- Per-thread locales are now also supported on Solaris 11.4.
- The replacements for the printf()/fprintf()/... functions that are
provided through <libintl.h> on native Windows and NetBSD are now POSIX
compliant. There is no conflict any more between these replacements
and other possible replacements provided by gnulib or mingw.
* Libtextstyle:
- This package installs a new library 'libtextstyle', together with a new
header file <textstyle.h>. It is a library for styling text output sent
to a console or terminal emulator.
Packagers: please see the suggested packaging hints in the file PACKAGING.
Version 0.19.8 - June 2016
* Support for reproducible builds:
- msgfmt now produces little-endian .mo files by default.
* Programming languages support:
- XML:
xgettext and msgfmt now look for .its files in directories
supplied through the GETTEXTDATADIRS or XDG_DATA_DIRS environment
variable.
- JavaScript:
xgettext and msgfmt now recognize numbered arguments in format
strings.
* Portability:
- Improve OS/2 kLIBC support.
- Fix libintl compilation issue with pre-C99 compilers. It was a
regression since 0.19.5.
- The AM_GNU_GETTEXT Autoconf macro can now detect musl-libc's
gettext as a compatible implementation.
Version 0.19.7 - December 2015
* Programming languages support:
- XML:
xgettext can now load custom string extraction rules supplied by
consumer projects. The rules are written in XML, utilizing the
Internationalization Tag Set (ITS) standard. All the existing
XML-based language scanners (Glade, GSettings, and AppData) are
rewritten using ITS. In addition, msgfmt now has --xml option to
merge translations back to the original XML document.
* Portability:
- Improve OS/2 kLIBC support (still not complete)
- Remove dependency on expat
Version 0.19.6 - September 2015
* Programming languages support:
- AppData:
xgettext now supports AppData file format, used by software center
applications (e.g., GNOME Software) to describe installable
applications.
* A new macro AM_GNU_GETTEXT_REQUIRE_VERSION can be used to indicate
autopoint to pull the latest available infrastructure, instead of
the exact version specified with AM_GNU_GETTEXT_VERSION. When
AM_GNU_GETTEXT_REQUIRE_VERSION is used, AM_GNU_GETTEXT_VERSION is
ignored.
* po/Makefile.in.in can now insert the file $(DOMAIN).pot-header to
$(DOMAIN).pot, instead of the standard header comments.
* Bug fixes:
- Fix mishandling of gettext version numbers for minor releases, in
po-mode.el and gettextize.
- Fix build with --enable-relocatable.
Version 0.19.5 - July 2015
* xgettext now has a feature to perform syntax checks on msgid, which
could enforce common styles of translatable strings, such as to
prefer Unicode characters to the corresponding ASCII characters.
They can be enabled with --check option or special "xgettext: "
comment in the source code. By default, no syntax checks are
enabled.
* msgfilter and msgexec now have an option --newline, which appends a
newline character to filter input and trims it from the filter
output. This would allow filter programs to be more POSIX friendly.
* The base Unicode standard is now updated to 8.0.0. This
particularly improves "\N{...}" notation handling of xgettext for
Perl and Python.
* msginit is now capable of generating "Plural-Forms:" from Unicode
CLDR. This feature is still experimental, but you can try it by
setting the GETTEXTCLDRDIR environment variable pointing to the
directory where the CLDR archive is extracted. The actual
conversion is done by a helper program 'cldr-plural', which can be
used as a generic converter and evaluator of CLDR plural forms.
* Programming languages support:
- C++ with KDE: xgettext and msgfmt can now recognize KUIT (KDE User
Interface Text) markup. See the documentation section "KUIT
Format Strings" for more info.
- C++ with KDE: xgettext now recognizes all default KDE keywords.
This removes the need for a long list of --keyword and --flag
options to perform a reasonable extraction.
* Bug fixes:
- xgettext C++11 raw string recognition is now stricter and don't
accept unbalanced delimiters.
- Suppress baseless warnings which msgfmt emits when processing a
.desktop file.
- xgettext line wrapping behaviour is now consistent between comment
lines and non-comment lines.
- Fix msgfilter-7 test failure on some platforms.
- Fix VPATH build.
Version 0.19.4 - December 2014
* The --keyword option of xgettext now accepts same argument number
for both singular and plural forms.
* Programming languages support:
- C#: xgettext now properly handles Unicode characters encoded with
surrogate pairs.
- C/C++: xgettext now recognizes ISO/IEC 9899:2011 string literals
prefixed by R, u8, u8R, u, uR, U, UR, L, or LR.
- Shell: xgettext now properly recognizes Bash ANSI-C quoting ($'...').
* Bug fixes:
- Fix integer overflow when reading certain MO files with msgunfmt.
- Avoid invalid memory access in various cases. In particular, when
the same argument number is specified for singular/plural
arguments, and when checking Lisp and Scheme format strings.
* Portability:
- Building on Mac OS X 10.10 and AIX 7.1 is now supported.
Version 0.19.3 - October 2014
* Bug fixes:
- Fix xgettext mishandling of octal character escapes in C.
- Fix autopoint infinite recursion with certain configure.ac.
* The po/Makevars file has a new field MSGINIT_OPTIONS, that can be
used to adjust msginit's operation. This is particularly useful for
controlling line wrapping behavior together with MSGMERGE_OPTIONS
and XGETTEXT_OPTIONS.
* Portability:
- Building on Solaris 10 and 11 with Solaris Studio compiler is now
fixed.
Version 0.19.2 - July 2014
* Bug fixes:
- Fix xgettext crash in parsing empty string literals in C and Vala.
- ChangeLog file is added back to the gettext infrastructure. It was
mistakenly removed in 0.19.
- Autoconf macro trace in autopoint now works again with Autoconf 2.68
or earlier. It was a regression in 0.19.
Version 0.19.1 - June 2014
* Programming languages support:
- Desktop Entry:
msgfmt now always reads the po/LINGUAS file, regardless of whether
the LINGUAS environment variable is set. The variable can now be
used to restrict the languages list read from the po/LINGUAS file.
- Vala:
Bug fix in xgettext handling of "//" in string literals. This was
a regression after the C-99 Unicode escape support.
* The po/Makevars.template file now contains the newly added variables.
* msgfmt now treats errors in the PO file header as non-fatal. Since
0.19 msgfmt started to abort on the fatal errors, but some
translation systems are still not ready to supply valid headers.
* Future backward-incompatibilities:
- In future Gettext versions, msgfmt will treat header errors as
fatal and terminate the command execution.
Version 0.19 - June 2014
* Programming languages support:
- Desktop Entry:
xgettext and msgfmt now support .desktop files, used by desktop
applications, as input and output.
- GSettings:
xgettext now supports GSettings schema file format used by GNOME
applications.
- JavaScript:
xgettext now recognizes E4X (ECMA-357) constructs.
- PHP:
Single and double quotes around heredoc markers are now recognized.
- Python:
The acceptable format specifiers in the braced-syntax format
strings are now limited to the Standard Format Specifiers, to
reasonably avoid false-positives.
- Scheme:
The gettext shorthand form _"abc", used by GIMP script-fu, is now
recognized by xgettext.
- C and Vala:
xgettext now recognizes C99-style Unicode character escapes.
* The --add-location option of msgattrib, msgcat, msgcomm, msgconv,
msgen, msgfilter, msggrep, msgmerge, msguniq, and xgettext commands
now takes an optional argument 'never', 'full', or 'file', to
control the format of "#: ..." comments.
* msgfmt now has --source option to keep generated .java file when
running in Java mode.
* msgattrib now has --empty option that sets msgstr to empty when
clearing fuzzy flag.
* msgexec and msgfilter pass the plural information to subprocess
through the environment variable MSG{EXEC,FILTER}_MSGID_PLURAL and
MSG{EXEC,FILTER}_PLURAL_FORM.
* New built-in filters 'quot' and 'boldquot' have been added to
msgfilter. These filters convert Latin quotation marks ('...',
"...") into Unicode quotation marks (for example, U+2018) if
possible, similar to the sed commands used in po/Rules-quot and
po/Rules-boldquot.
* The po/Makevars file has a couple of new options PO_DEPENDS_ON_POT
and DIST_DEPENDS_ON_UPDATE_PO, that can be used to adjust the
behavior of updating PO files on demand.
* xgettext now strips prefixed string before the comment tag. This is
useful to support C-style comment like this:
/*
* TRANSLATORS: first line
* second line
*/
In this example, the extracted comment does not contain "* " at the
beginning of each line.
* libgettextpo library:
- Memory leak fixes in the PO file parser.
* Documentation:
- A complete example showing the use of GNU gettext in a GNOME 3
application has been added.
Version 0.18.3 - July 2013
* Runtime behaviour:
On Mac OS X systems, the setlocale() function now properly
invalidates loaded message catalogs when a locale has been set.
* Programming languages support:
- C++:
The gnu::autosprintf class now provides an assignment operator.
- Glade:
xgettext now supports GtkBuilder file format used by Glade 3.
xgettext now also extracts contexts (msgctxt) from Glade 2 and
GtkBuilder files.
- JavaScript:
xgettext now partially supports JavaScript. Since the current
JavaScript specification (ECMA-262) does not define the standard
set of formatting methods nor translation functions, the
implementation supports only a limited set of formatting methods
and translation functions commonly used in Gjs and other popular
JavaScript implemenations and libraries.
- Lua:
xgettext now supports Lua, using Ľubomír Remák's lua-gettext.
- Python:
xgettext and msgfmt's format string checking now recognize Python
format string in braced syntax (PEP 3101). xgettext now also
supports explicit string concatenation with '+' and handles
platform dependent line terminators (LF/CR/CRLF) transparently.
- Tcl:
Bug fix in xgettext Unicode escape handling.
- Vala:
xgettext now supports Vala.
* msgattrib now has --previous option to keep previous msgid when
making messages fuzzy, similar to msgmerge --previous.
* msgfmt now checks PO file headers more strictly with less
false-positives.
* 'gettextize' now checks macro directories specified with
AC_CONFIG_MACRO_DIRS in configure.ac.
* Portability:
- msginit now does not require GNU sed.
- The Makefile rule for generating en@quot and en@boldquot now uses
@SED@ variable instead of hard-coded 'sed' command to allow users
to supply GNU sed.
* Future backward-incompatibilities:
- In future Gettext versions, the files installed by 'gettextize'
will require Automake 1.10 or later. This will improve the
compatibility of user projects with newer Automake versions.
Version 0.18.2 - December 2012
* xgettext now understands the block comment syntax of Guile 2.0.
* libgettextpo library:
- The initial msgstr of a new message is now "", not NULL.
- Bug fixes in the functions po_message_is_range, po_file_check_all,
po_message_check_all.
* Installation options:
The configure options --with-xz and --with-bzip2 can be used to specify
alternate compression methods for the archive used by the 'autopoint'
program. These options, together with --with-git, allow to trade
dependencies against installed package size. --with-xz has the highest
compression rate, followed by --with-git, followed by --with-bzip2.
* Autoconf macros:
- The autoconf macros installed by 'gettextize' now work with the
forthcoming Automake 1.14 and require Autoconf version 2.60 or
newer.
* Portability:
- Building on MacOS X 10.7, Cygwin 1.7.10, and newer 64-bit mingw is
now supported.
Version 0.18.1 - June 2010
* msggrep: A '$' anchor in a regular expression now also matches the end of
the string, even if it does not end in a newline.
* Dependencies:
The libraries and programs are now linked with libunistring if this library
is already installed.
* Installation options:
The configure option --with-cvs is deprecated. The 'autopoint' program will
now use the 'git' program by default to compress its archive. If the
configure option --without-git is specified, 'autopoint' will not rely on
'git', but will instead rely on a locally installed a 3 MB large archive.
Version 0.18 - May 2010
* Runtime behaviour:
- On MacOS X and Windows systems, <libintl.h> now extends setlocale() and
newlocale() so that their determination of the default locale considers
the choice the user has made in the system control panels.
- On MacOS X systems, the gettext()/dgettext()/... functions now respect the
locale of the current thread, if a thread-specific locale has been set.
* PO file format:
There is a new field 'Language' in the header entry. It denotes the language
code (plus optional country code) for the PO file. This field can be used
by automated tools, such as spell checkers. It is expected to be more
reliable than looking at the file name or at the 'Language-Team' field in
the header entry.
msgmerge, msgcat, msgen have a new option --lang that allows to specify
this field. Additionally, msgmerge fills in this new field by looking at
the 'Language-Team' field (if the --lang option is not given).
* xgettext and PO file format:
For messages with plural forms, programmers can inform the translators
about the range of possible values of the numeric argument, like this:
/* xgettext: range: 0..15 */
This information 'range: 0..15' is stored in the PO file as a flag attached
to the message. Translators can produce better translations when they know
that the numeric argument is small.
* Colorized PO files:
msgattrib, msgcomm, msgconv, msgen, msgfilter, msggrep, msginit, msgmerge,
msgunfmt, msguniq, xgettext now have options --color and --style, like msgcat
has since version 0.17.
* msgmerge is up to 10 times faster when the PO and POT files are large.
This speedup was contributed by Ralf Wildenhues.
* msgcmp has a new option -N/--no-fuzzy-matching, like msgmerge has since
version 0.12.
* msgfilter now sets environment variables during the invocation of the
filter, indicating the msgid and location of the messge being processed.
* xgettext now can extract plural forms from Qt 4 programs. The recommended
xgettext command-line options for this case are:
--qt --keyword=tr:1,1t --keyword=tr:1,2c,2t --keyword=tr:1,1,2c,3t
* xgettext --language=GCC-source now recognizes also the format strings
used in the Fortran front-end of the GCC compiler, and marks them as
'gfc-internal-format'.
* autopoint can now be used to update several PO directories all together.
* PO mode changes:
- PO files with plural entries are now correctly handled.
- Editing a message with previous msgid (in comments) removes these
comments. Contributed by Noritada Kobayashi.
* The po/Makevars file has a new field MSGMERGE_OPTIONS, that can be used
to adjust msgmerge's operation.
* The use of the macro AM_GNU_GETTEXT without 'external' argument and the
--intl option of the gettextize program are deprecated and will be removed
in the next release. Instead of including the intl sources in your package,
we suggest making the libintl library an (optional) prerequisite of your
package.
* Updated the meaning of 'gcc-internal-format' to match GCC 4.3.
* Installation options:
The configure options --without-cvs and --with-git can be used to specify
whether 'autopoint' will use the 'cvs' program, or the 'git' program, or
none at all. These options allow to trade dependencies against installed
package size: If --without-cvs is specified and --with-git is not specified,
'autopoint' will not rely on 'cvs' or 'git', but will instead rely on a
locally installed a 3 MB large archive.
* Portability:
- The msgfilter program now also works on native Woe32 platforms.
- Compiled C# message catalogs now also work with 'mono' versions from 2009
or newer.
Version 0.17 - November 2007
* License:
The gettext related programs and tools are now licensed under the GPL
version 3, instead of the GPL version 2. The libintl library continues
to be licensed under LGPL.
* PO file format:
The Project-Id-Version field in the header entry may now already be filled
in the POT file. In this case, the translators don't need to fill it in.
xgettext has new options --package-name and --package-version that allow
to specify the package name and version from a Makefile.
* Colorized PO files:
The msgcat program has new options --color and --style that produce a
colorized PO file output, where keywords, strings, comments, or format
directives can be highlighted. See the documentation section
"Highlighting parts of PO files" for more info.
* gettextize now has a --po-dir option that allows several PO directories to
be updated all together.
* Programming languages support:
- Contexts (msgctxt) are now also supported for Java and C#.
- C# with Qt: The support for Qt format strings has been updated for Qt 4.
- C++ with KDE:
xgettext has a new option --kde that triggers the recognition and marking
of KDE 4 format strings.
* Autoconf macros:
- A new macro AM_XGETTEXT_OPTION can be used as an alternative to modifying
po/Makevars.
* libgettextpo library:
- New functions are available for querying the list of supported format
types.
- The functions po_message_comments and po_message_extracted_comments
return a multiline string where each line no longer starts with a redundant
space. The leading space in every comment line is now stripped while
reading the PO file.
- Conversely, when you pass a multiline string to the function
po_message_set_comments or po_message_set_extracted_comments, you normally
don't pass a space at the beginning of each line, because such spaces are
no longer trimmed during output.
* Documentation:
- The "Users" chapter has been completely rewritten.
- New section "Highlighting parts of PO files".
- A complete example showing the use of GNU gettext in Java with the Qt/Jambi
GUI toolkit has been added.
Version 0.16.1 - November 2006
* Bug fix in the gettext.m4 autoconf macros.
Version 0.16 - October 2006
* Interoperability with automake-1.10.
* msgmerge has a new option --previous that has the effect of saving the
previous msgid of message when making them fuzzy. These previous msgids are
stored in the resulting PO file, using a pseudo-comment syntax like this:
#, fuzzy
#| msgid "too many arguments"
msgid "too few arguments"
msgstr "trop d'arguments"
The translator then only needs to compare the previous and the current
msgid ("too many arguments" and "too few arguments"), and infer which
parts of the translation she needs to change.
msgattrib has a new option --clear-previous that removes these #| lines.
* msgmerge is faster now on CPUs with multiple execution units, if compiled
with GCC 4.2 or newer.
* msgcmp now ignores fuzzy and untranslated messages in the PO file.
Previously it considered fuzzy and untranslated messages the same way as
translated messages, which was hardly useful. The previous behaviour can
be obtained through the options --use-fuzzy --use-untranslated.
* gettextize, when invoked without --intl option, now installs only the .m4
files that are needed: gettext.m4, iconv.m4, lib-ld.m4, lib-link.m4,
lib-prefix.m4, nls.m4, po.m4, progtest.m4.
* gettextize no longer creates symbolic links by default; it makes file copies
instead. The option --copy is removed. You can get back the flawed
symlinking behaviour by specifying the --symlink option.
* Autoconf macros:
- The gettext autoconf macros now require autoconf 2.52 or newer and
GNU m4 1.4.5 or newer.
- A new autoconf macro AM_GNU_GETTEXT_INTL_SUBDIR is added. It allows to
specify the presence of an intl/ subdirectory outside the AM_GNU_GETTEXT
invocation.
- A new autoconf macro AM_GNU_GETTEXT_NEED is added. It allows to specify
the requirements relating to the GNU gettext implementation outside the
AM_GNU_GETTEXT invocation.
* The libgettextpo library no longer exports symbols that could clash with
symbols of the application that uses it.
* Vastly improved French translations. Thanks to Christophe Combelles.
Version 0.15 - July 2006
* GUI program support:
- PO files can now contain messages constrained to a certain context.
Most often such a context is a menu, dialog or panel identification.
The syntax in the PO file is
msgctxt "context"
msgid "original"
msgstr "translation"
- The xgettext program can be told through the --keyword flag which
function/macro argument has the role of a context. It also supports
the GNOME glib convention to specify the context and original string
in the same string literal: "context|original".
- The (non-public) include file gettext.h defines macros pgettext, dpgettext
etc. that take a context argument.
For more information, see the node "Contexts" in the manual.
* msgfmt's format string checking is now stricter in the presence of plural
forms. For example, in German, with nplurals=2 and plural=(n != 1),
the translation
#, c-format
msgid "%d fatal error"
msgid_plural "%d fatal errors"
msgstr[0] "ein fataler Fehler"
msgstr[1] "fatale Fehler"
was earlier considered valid and now gives an error when "msgfmt --check"
is used:
"number of format specifications in 'msgid' and 'msgstr[1]' does not match"
* msggrep has a new option -v/--invert-match that acts like grep's -v option.
* msggrep has a new option -X/--extracted-comment that allows to search for a
pattern in the extracted comments.
* xgettext's --keyword option now allows to specify an extracted comment on the
command line, rather than in program's source code.
* msgmerge is much faster now, when using a large compendium.
* A new program recode-sr-latin is provided, that converts Serbian text from
the Cyrillic script to the Latin script.
The command "msgfilter recode-sr-latin" can be used to convert a Serbian
Cyrillic PO file (sr.po) to a Serbian Latin PO file (sr@latin.po).
* Programming languages support:
- C++ with Boost:
xgettext has a new option --boost that triggers the recognition and marking
of boost::format strings.
- Python:
xgettext now recognizes the source encoding from a "coding:" comment
among the first two lines. The default encoding is now ASCII, no longer
ISO-8859-1.
* libgettextpo library:
- The error handler type passed to po_file_read(), po_file_write(),
po_message_check_format() has changed.
This is an incompatible change: Programs using the library *must* update
their code.
Binary compatibility is guaranteed, however.
* The 'mkinstalldirs' shell script is no longer needed and no longer installed
by gettextize.
* Portability:
- Building on mingw is now supported.
- Building shared libraries (--enable-shared) on Cygwin and mingw is now
supported.
* Interoperability with expat version 2.0.0.
* Documentation:
A complete example showing the use of GNU gettext with the wxWidgets GUI
toolkit has been added.
* The gettext autoconf macros now assume 'aclocal' from automake 1.8 or newer.
Version 0.14.6 - June 2006
* Updated the meaning of 'gcc-internal-format' to match GCC 4.1.
Version 0.14.5 - May 2005
* Updated the meaning of 'gcc-internal-format' to match GCC 4.0.
Version 0.14.4 - April 2005
* The gettext autoconf macros will now work with the forthcoming g++ 4.0.
* Fix improved detection of the locale on MacOS X.
Version 0.14.3 - March 2005
* Usability improvements in gettextize and autopoint.
* Programming languages support:
- Scheme:
Use the GNU guile definition of format strings.
Version 0.14.2 - February 2005
* Improved detection of the locale on MacOS X.
* The gettext autoconf macros now require autoconf 2.50 or newer.
* Programming languages support:
- Scheme:
xgettext now also supports Scheme. Best used with guile 1.7 or newer.
* msggrep is much faster now.
* libgettextpo library:
- New functions for constructing PO files in memory and writing them to
files.
- The error handling is now customizable.
* Documentation:
- New tutorial document, written by Gora Mohanty.
- New FAQ document.
- New documentation sections: Scheme, Release Management.
* Bug fixes for Turkish and Estonian locales.
* Security fixes.
Version 0.14 - January 2004
* Programming languages support:
- C#:
xgettext now also supports C#.