==================
Languages are not equally supported in all packages. The following
-matrix shows the current state of internationalization, as of July
-2000. The matrix shows, in regard of each package, for which languages
-PO files have been submitted to translation coordination, with a
+matrix shows the current state of internationalization, as of May 2001.
+The matrix shows, in regard of each package, for which languages PO
+files have been submitted to translation coordination, with a
translation percentage of at least 50%.
- Ready PO files bg cs da de el en eo es et fi fr gl hr id it
- .----------------------------------------------.
- a2ps | [] [] |
- bash | [] [] [] |
- bison | [] [] [] [] |
- clisp | [] [] [] [] |
- cpio | [] [] [] |
- diffutils | [] [] [] [] [] |
- enscript | [] [] |
- error | [] |
- fileutils | [] [] [] [] [] [] [] [] |
- findutils | [] [] [] [] [] [] |
- flex | [] [] |
- gcal | |
- gcc | |
- gettext | [] [] [] [] [] [] [] [] [] |
- gnupg | [] [] [] [] |
- grep | [] [] [] [] [] [] [] [] [] [] |
- hello | [] [] [] [] [] [] [] |
- id-utils | [] |
- indent | [] [] [] [] [] |
- libc | [] [] [] [] [] [] [] [] |
- lilypond | |
- lynx | [] [] [] |
- m4 | [] [] [] [] [] [] |
- make | [] [] [] [] |
- music | [] |
- parted | [] [] |
- ptx | [] [] [] [] [] [] [] |
- python | |
- recode | [] [] [] [] [] [] [] |
- sed | [] [] [] [] [] [] [] |
- sh-utils | [] [] [] [] [] [] [] [] [] |
- sharutils | [] [] [] [] [] [] |
- tar | [] [] [] [] [] [] [] |
- texinfo | [] [] [] [] |
- textutils | [] [] [] [] [] [] [] |
- util-linux | |
- wdiff | [] [] [] [] [] |
- wget | [] [] [] [] [] [] [] [] |
- `----------------------------------------------'
- bg cs da de el en eo es et fi fr gl hr id it
- 1 14 15 28 11 1 4 19 12 1 30 16 0 3 12
+ Ready PO files bg cs da de el en eo es et fi fr gl he hr id it
+ +-------------------------------------------------+
+ a2ps | [] [] |
+ bash | [] [] [] [] |
+ bfd | |
+ binutils | |
+ bison | [] [] [] [] |
+ clisp | [] [] [] [] |
+ cpio | [] [] [] [] |
+ diffutils | [] [] [] [] [] [] [] |
+ enscript | [] [] |
+ error | [] [] |
+ fileutils | [] [] [] [] [] [] [] |
+ findutils | [] [] [] [] [] [] [] [] |
+ flex | [] [] [] |
+ gas | |
+ gawk | [] |
+ gcal | |
+ gcc | [] |
+ gettext | [] [] [] [] [] [] [] [] [] |
+ gnupg | [] [] [] [] [] |
+ gprof | |
+ grep | [] [] [] [] [] [] |
+ hello | [] [] [] [] [] [] [] [] [] [] |
+ id-utils | [] [] |
+ indent | [] [] [] [] [] |
+ ld | |
+ libc | [] [] [] [] [] [] [] [] |
+ lilypond | |
+ lynx | [] [] [] |
+ m4 | [] [] [] [] [] [] [] |
+ make | [] [] [] [] |
+ opcodes | |
+ parted | [] [] |
+ ptx | [] [] [] [] [] [] [] |
+ python | |
+ recode | [] [] [] [] [] [] [] [] [] |
+ sed | [] [] [] [] [] [] [] [] [] [] |
+ sh-utils | [] [] [] [] [] [] [] [] [] |
+ sharutils | [] [] [] [] [] [] [] |
+ soundtracker | |
+ sp | |
+ tar | [] [] [] [] [] [] [] [] |
+ texinfo | [] [] [] [] [] |
+ textutils | [] [] [] [] [] [] [] |
+ util-linux | [] [] |
+ wdiff | [] [] [] [] [] [] [] |
+ wget | [] [] [] [] [] [] [] [] |
+ +-------------------------------------------------+
+ bg cs da de el en eo es et fi fr gl he hr id it
+ 0 14 24 28 11 1 8 22 13 1 29 18 2 0 8 10
- ja ko lv nl no pl pt pt_BR ru sk sl sv zh
- .-------------------------------------------.
- a2ps | [] [] [] | 5
- bash | | 3
- bison | [] [] [] | 7
- clisp | [] | 5
- cpio | [] [] [] [] [] | 8
- diffutils | [] [] [] | 8
- enscript | [] [] | 4
- error | | 1
- fileutils | [] [] [] [] [] [] [] [] [] | 17
- findutils | [] [] [] [] [] [] | 12
- flex | [] [] [] | 5
- gcal | | 0
- gcc | [] | 1
- gettext | [] [] [] [] [] [] [] [] [] | 18
- gnupg | [] [] [] | 7
- grep | [] [] [] [] [] [] [] | 17
- hello | [] [] [] [] [] [] [] [] | 15
- id-utils | [] [] [] | 4
- indent | [] [] [] [] [] | 10
- libc | [] [] [] [] [] [] [] [] | 16
- lilypond | [] [] | 2
- lynx | [] [] [] [] | 7
- m4 | [] [] [] [] [] | 11
- make | [] [] [] [] [] | 9
- music | [] | 2
- parted | [] [] [] [] | 6
- ptx | [] [] [] [] [] [] | 13
- python | | 0
- recode | [] [] [] | 10
- sed | [] [] [] [] [] [] [] | 14
- sh-utils | [] [] [] [] [] [] [] [] [] [] | 19
- sharutils | [] [] [] [] | 10
- tar | [] [] [] [] [] [] [] [] | 15
- texinfo | [] [] | 6
- textutils | [] [] [] [] [] [] [] [] | 15
- util-linux | [] | 1
- wdiff | [] [] [] [] [] | 10
- wget | [] [] [] [] [] [] [] [] [] | 17
- `-------------------------------------------'
- 28 teams ja ko lv nl no pl pt pt_BR ru sk sl sv zh
- 38 domains 20 8 0 25 6 18 1 16 27 9 10 20 3 330
+ ja ko lv nl no pl pt pt_BR ru sk sl sv tr uk zh
+ +-------------------------------------------------+
+ a2ps | [] [] [] | 5
+ bash | | 4
+ bfd | | 0
+ binutils | | 0
+ bison | [] [] [] | 7
+ clisp | [] | 5
+ cpio | [] [] [] [] [] | 9
+ diffutils | [] [] [] | 10
+ enscript | [] [] [] | 5
+ error | [] | 3
+ fileutils | [] [] [] [] [] [] [] [] [] [] | 17
+ findutils | [] [] [] [] [] [] [] | 15
+ flex | [] [] [] | 6
+ gas | | 0
+ gawk | | 1
+ gcal | | 0
+ gcc | [] | 2
+ gettext | [] [] [] [] [] [] [] [] [] | 18
+ gnupg | [] [] [] [] | 9
+ gprof | | 0
+ grep | [] [] [] | 9
+ hello | [] [] [] [] [] [] [] [] [] [] [] | 21
+ id-utils | [] [] [] | 5
+ indent | [] [] [] [] [] [] [] | 12
+ ld | | 0
+ libc | [] [] [] [] [] [] [] [] | 16
+ lilypond | [] | 1
+ lynx | [] [] [] [] [] | 8
+ m4 | [] [] [] [] [] | 12
+ make | [] [] [] [] [] [] [] | 11
+ opcodes | | 0
+ parted | [] [] [] | 5
+ ptx | [] [] [] [] [] [] [] | 14
+ python | | 0
+ recode | [] [] [] [] | 13
+ sed | [] [] [] [] [] [] [] | 17
+ sh-utils | [] [] [] [] [] [] [] [] [] [] [] | 20
+ sharutils | [] [] [] [] | 11
+ soundtracker | | 0
+ sp | | 0
+ tar | [] [] [] [] [] [] [] [] [] | 17
+ texinfo | [] [] | 7
+ textutils | [] [] [] [] [] [] [] [] | 15
+ util-linux | [] | 3
+ wdiff | [] [] [] [] [] | 12
+ wget | [] [] [] [] [] [] | 14
+ +-------------------------------------------------+
+ 31 teams ja ko lv nl no pl pt pt_BR ru sk sl sv tr uk zh
+ 46 domains 17 9 1 23 6 18 1 13 26 9 10 20 14 1 2 359
Some counters in the preceding matrix are higher than the number of
visible blocks let us expect. This is because a few extra PO files are
lag between the mere existence a PO file and its wide availability in a
distribution.
- If July 2000 seems to be old, you may fetch a more recent copy of
+ If May 2001 seems to be old, you may fetch a more recent copy of
this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date
matrix with full percentage details can be found at
`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
#include <stdio.h>
+#include "str-list.h"
#include "po-lex.h"
#include "po-gram.h"
#include "error.h"
po_gram_error_at_line (&(value2).pos, _("inconsistent use of #~"));
-#line 102 "po-gram-gen.y"
+#line 103 "po-gram-gen.y"
typedef union
{
struct { char *string; lex_pos_ty pos; int obsolete; } string;
+ struct { string_list_ty stringlist; lex_pos_ty pos; int obsolete; } stringlist;
struct { long number; lex_pos_ty pos; int obsolete; } number;
struct { lex_pos_ty pos; int obsolete; } pos;
struct { struct msgstr_def rhs; lex_pos_ty pos; int obsolete; } rhs;
#if YYDEBUG != 0
static const short yyrline[] = { 0,
- 120, 121, 122, 123, 124, 128, 135, 149, 164, 172,
- 180, 189, 200, 204, 219, 241, 245, 263
+ 123, 124, 125, 126, 127, 131, 138, 156, 174, 182,
+ 190, 199, 210, 214, 229, 251, 258, 269
};
#endif
switch (yyn) {
case 6:
-#line 129 "po-gram-gen.y"
+#line 132 "po-gram-gen.y"
{
po_callback_domain (yyvsp[0].string.string);
;
break;}
case 7:
-#line 136 "po-gram-gen.y"
+#line 139 "po-gram-gen.y"
{
- check_obsolete (yyvsp[-3].pos, yyvsp[-2].string);
+ char *string2 = string_list_concat_destroy (&yyvsp[-2].stringlist.stringlist);
+ char *string4 = string_list_concat_destroy (&yyvsp[0].stringlist.stringlist);
+
+ check_obsolete (yyvsp[-3].pos, yyvsp[-2].stringlist);
check_obsolete (yyvsp[-3].pos, yyvsp[-1].pos);
- check_obsolete (yyvsp[-3].pos, yyvsp[0].string);
+ check_obsolete (yyvsp[-3].pos, yyvsp[0].stringlist);
if (!yyvsp[-3].pos.obsolete || pass_obsolete_entries)
- po_callback_message (yyvsp[-2].string.string, &yyvsp[-3].pos.pos, NULL,
- yyvsp[0].string.string, strlen (yyvsp[0].string.string) + 1, &yyvsp[-1].pos.pos);
+ po_callback_message (string2, &yyvsp[-3].pos.pos, NULL,
+ string4, strlen (string4) + 1, &yyvsp[-1].pos.pos,
+ yyvsp[-3].pos.obsolete);
else
{
- free (yyvsp[-2].string.string);
- free (yyvsp[0].string.string);
+ free (string2);
+ free (string4);
}
;
break;}
case 8:
-#line 150 "po-gram-gen.y"
+#line 157 "po-gram-gen.y"
{
- check_obsolete (yyvsp[-3].pos, yyvsp[-2].string);
+ char *string2 = string_list_concat_destroy (&yyvsp[-2].stringlist.stringlist);
+
+ check_obsolete (yyvsp[-3].pos, yyvsp[-2].stringlist);
check_obsolete (yyvsp[-3].pos, yyvsp[-1].string);
check_obsolete (yyvsp[-3].pos, yyvsp[0].rhs);
if (!yyvsp[-3].pos.obsolete || pass_obsolete_entries)
- po_callback_message (yyvsp[-2].string.string, &yyvsp[-3].pos.pos, yyvsp[-1].string.string,
- yyvsp[0].rhs.rhs.msgstr, yyvsp[0].rhs.rhs.msgstr_len, &yyvsp[0].rhs.pos);
+ po_callback_message (string2, &yyvsp[-3].pos.pos, yyvsp[-1].string.string,
+ yyvsp[0].rhs.rhs.msgstr, yyvsp[0].rhs.rhs.msgstr_len, &yyvsp[0].rhs.pos,
+ yyvsp[-3].pos.obsolete);
else
{
- free (yyvsp[-2].string.string);
+ free (string2);
free (yyvsp[-1].string.string);
free (yyvsp[0].rhs.rhs.msgstr);
}
;
break;}
case 9:
-#line 165 "po-gram-gen.y"
+#line 175 "po-gram-gen.y"
{
- check_obsolete (yyvsp[-2].pos, yyvsp[-1].string);
+ check_obsolete (yyvsp[-2].pos, yyvsp[-1].stringlist);
check_obsolete (yyvsp[-2].pos, yyvsp[0].string);
po_gram_error_at_line (&yyvsp[-2].pos.pos, _("missing `msgstr[]' section"));
- free (yyvsp[-1].string.string);
+ string_list_destroy (&yyvsp[-1].stringlist.stringlist);
free (yyvsp[0].string.string);
;
break;}
case 10:
-#line 173 "po-gram-gen.y"
+#line 183 "po-gram-gen.y"
{
- check_obsolete (yyvsp[-2].pos, yyvsp[-1].string);
+ check_obsolete (yyvsp[-2].pos, yyvsp[-1].stringlist);
check_obsolete (yyvsp[-2].pos, yyvsp[0].rhs);
po_gram_error_at_line (&yyvsp[-2].pos.pos, _("missing `msgid_plural' section"));
- free (yyvsp[-1].string.string);
+ string_list_destroy (&yyvsp[-1].stringlist.stringlist);
free (yyvsp[0].rhs.rhs.msgstr);
;
break;}
case 11:
-#line 181 "po-gram-gen.y"
+#line 191 "po-gram-gen.y"
{
- check_obsolete (yyvsp[-1].pos, yyvsp[0].string);
+ check_obsolete (yyvsp[-1].pos, yyvsp[0].stringlist);
po_gram_error_at_line (&yyvsp[-1].pos.pos, _("missing `msgstr' section"));
- free (yyvsp[0].string.string);
+ string_list_destroy (&yyvsp[0].stringlist.stringlist);
;
break;}
case 12:
-#line 190 "po-gram-gen.y"
+#line 200 "po-gram-gen.y"
{
- check_obsolete (yyvsp[-1].pos, yyvsp[0].string);
+ check_obsolete (yyvsp[-1].pos, yyvsp[0].stringlist);
plural_counter = 0;
- yyval.string.string = yyvsp[0].string.string;
+ yyval.string.string = string_list_concat_destroy (&yyvsp[0].stringlist.stringlist);
yyval.string.pos = yyvsp[-1].pos.pos;
yyval.string.obsolete = yyvsp[-1].pos.obsolete;
;
break;}
case 13:
-#line 201 "po-gram-gen.y"
+#line 211 "po-gram-gen.y"
{
yyval.rhs = yyvsp[0].rhs;
;
break;}
case 14:
-#line 205 "po-gram-gen.y"
+#line 215 "po-gram-gen.y"
{
check_obsolete (yyvsp[-1].rhs, yyvsp[0].rhs);
yyval.rhs.rhs.msgstr = (char *) xmalloc (yyvsp[-1].rhs.rhs.msgstr_len + yyvsp[0].rhs.rhs.msgstr_len);
;
break;}
case 15:
-#line 220 "po-gram-gen.y"
+#line 230 "po-gram-gen.y"
{
check_obsolete (yyvsp[-4].pos, yyvsp[-3].pos);
check_obsolete (yyvsp[-4].pos, yyvsp[-2].number);
check_obsolete (yyvsp[-4].pos, yyvsp[-1].pos);
- check_obsolete (yyvsp[-4].pos, yyvsp[0].string);
+ check_obsolete (yyvsp[-4].pos, yyvsp[0].stringlist);
if (yyvsp[-2].number.number != plural_counter)
{
if (plural_counter == 0)
po_gram_error_at_line (&yyvsp[-4].pos.pos, _("plural form has wrong index"));
}
plural_counter++;
- yyval.rhs.rhs.msgstr = yyvsp[0].string.string;
- yyval.rhs.rhs.msgstr_len = strlen (yyvsp[0].string.string) + 1;
+ yyval.rhs.rhs.msgstr = string_list_concat_destroy (&yyvsp[0].stringlist.stringlist);
+ yyval.rhs.rhs.msgstr_len = strlen (yyval.rhs.rhs.msgstr) + 1;
yyval.rhs.pos = yyvsp[-4].pos.pos;
yyval.rhs.obsolete = yyvsp[-4].pos.obsolete;
;
break;}
case 16:
-#line 242 "po-gram-gen.y"
+#line 252 "po-gram-gen.y"
{
- yyval.string = yyvsp[0].string;
+ string_list_init (&yyval.stringlist.stringlist);
+ string_list_append (&yyval.stringlist.stringlist, yyvsp[0].string.string);
+ yyval.stringlist.pos = yyvsp[0].string.pos;
+ yyval.stringlist.obsolete = yyvsp[0].string.obsolete;
;
break;}
case 17:
-#line 246 "po-gram-gen.y"
+#line 259 "po-gram-gen.y"
{
- size_t len1;
- size_t len2;
-
- check_obsolete (yyvsp[-1].string, yyvsp[0].string);
- len1 = strlen (yyvsp[-1].string.string);
- len2 = strlen (yyvsp[0].string.string);
- yyval.string.string = (char *) xmalloc (len1 + len2 + 1);
- stpcpy (stpcpy (yyval.string.string, yyvsp[-1].string.string), yyvsp[0].string.string);
- free (yyvsp[-1].string.string);
- free (yyvsp[0].string.string);
- yyval.string.pos = yyvsp[-1].string.pos;
- yyval.string.obsolete = yyvsp[-1].string.obsolete;
+ check_obsolete (yyvsp[-1].stringlist, yyvsp[0].string);
+ yyval.stringlist.stringlist = yyvsp[-1].stringlist.stringlist;
+ string_list_append (&yyval.stringlist.stringlist, yyvsp[0].string.string);
+ yyval.stringlist.pos = yyvsp[-1].stringlist.pos;
+ yyval.stringlist.obsolete = yyvsp[-1].stringlist.obsolete;
;
break;}
case 18:
-#line 264 "po-gram-gen.y"
+#line 270 "po-gram-gen.y"
{
po_callback_comment (yyvsp[0].string.string);
;
}
return 1;
}
-#line 268 "po-gram-gen.y"
+#line 274 "po-gram-gen.y"