Adapt tst-catgets to changes in tst-gettext

This commit is contained in:
Andreas Schwab 2012-07-04 15:57:51 +02:00
parent 70d35b6769
commit 704bc4594d
4 changed files with 79 additions and 105 deletions

View File

@ -1,5 +1,10 @@
2012-07-04 Andreas Schwab <schwab@linux-m68k.org>
* catgets/Makefile ($(objpfx)de.msg): Use xopen-msg.awk instead of
xopen-msg.sed.
* catgets/xopen-msg.awk: New file.
* catgets/xopen-msg.sed: Removed.
* intl/Makefile ($(objpfx)msgs.h): Use po2test.awk instead of
po2text.sed.
* intl/po2test.awk: New file.

View File

@ -70,8 +70,8 @@ $(objpfx)de/libc.cat: $(objpfx)de.msg $(objpfx)gencat
$(objpfx)tst-catgets.out: $(objpfx)de/libc.cat
# Generate a non-simple input file.
$(objpfx)de.msg: $(..)po/de.po
LC_ALL=C sed -f xopen-msg.sed $< > $@
$(objpfx)de.msg: xopen-msg.awk $(..)po/de.po
LC_ALL=C $(AWK) -f $^ $< > $@
$(objpfx)test-gencat.out: test-gencat.sh $(objpfx)test-gencat \
$(objpfx)sample.SJIS.cat

72
catgets/xopen-msg.awk Normal file
View File

@ -0,0 +1,72 @@
# xopen-msg.awk - Convert Uniforum style .po file to X/Open style .msg file
# Copyright (C) 2012 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
#
# The first directive in the .msg should be the definition of the
# message set number. We use always set number 1.
#
BEGIN {
print "$set 1 # Automatically created by xopen-msg.awk"
num = 0
}
#
# The .msg file contains, other then the .po file, only the translations
# but each given a unique ID. Starting from 1 and incrementing by 1 for
# each message we assign them to the messages.
# It is important that the .po file used to generate the ../intl/msg.h file
# (with po2test.awk) is the same as the one used here. (At least the order
# of declarations must not be changed.)
#
function output_message() {
# Ignore messages containing <PRI.*> which would have to be replaced
# by the correct format depending on the word size
if (msg && msg !~ /<PRI.*>/) {
if (msgtype == "msgid") {
# We copy the original message as a comment into the .msg file.
gsub(/\n/, "\n$ ", msg)
printf "$ Original Message: %s\n", msg
} else {
gsub(/\n/, "\\\n", msg)
printf "%d %s\n", ++num, msg
}
}
msg = 0
}
$1 ~ "msg(id|str)" {
# Output collected message
output_message()
# Collect next message
msgtype = $1
sub(/^msg(id|str)[ \t]*"/, "", $0)
sub(/"$/, "", $0)
msg = $0
next
}
/^".*"/ {
# Append to current message
sub(/^"/, "", $0)
sub(/"$/, "", $0)
msg = msg "\n" $0
next
}
END {
# Output last collected message
output_message()
}

View File

@ -1,103 +0,0 @@
# po2msg.sed - Convert Uniforum style .po file to X/Open style .msg file
# Copyright (C) 1995 Free Software Foundation, Inc.
# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
#
# The first directive in the .msg should be the definition of the
# message set number. We use always set number 1.
#
1 {
i\
$set 1 # Automatically created by po2msg.sed
h
s/.*/0/
x
}
#
# We copy all comments into the .msg file. Perhaps they can help.
#
/^#/ s/^#[ ]*/$ /p
#
# We copy the original message as a comment into the .msg file.
#
/^msgid/ {
# Does not work now
# /"$/! {
# s/\\$//
# s/$/ ... (more lines following)"/
# }
s/^msgid[ ]*"\(.*\)"$/$ Original Message: \1/
p
}
#
# The .msg file contains, other then the .po file, only the translations
# but each given a unique ID. Starting from 1 and incrementing by 1 for
# each message we assign them to the messages.
# It is important that the .po file used to generate the cat-id-tbl.c file
# (with po-to-tbl) is the same as the one used here. (At least the order
# of declarations must not be changed.)
#
/^msgstr/ {
s/msgstr[ ]*"\(.*\)"/\1/
x
# The following nice solution is by
# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de>
td
# Increment a decimal number in pattern space.
# First hide trailing `9' digits.
:d
s/9\(_*\)$/_\1/
td
# Assure at least one digit is available.
s/^\(_*\)$/0\1/
# Increment the last digit.
s/8\(_*\)$/9\1/
s/7\(_*\)$/8\1/
s/6\(_*\)$/7\1/
s/5\(_*\)$/6\1/
s/4\(_*\)$/5\1/
s/3\(_*\)$/4\1/
s/2\(_*\)$/3\1/
s/1\(_*\)$/2\1/
s/0\(_*\)$/1\1/
# Convert the hidden `9' digits to `0's.
s/_/0/g
x
# Bring the line in the format `<number> <message>'
G
s/^[^\n]*$/& /
s/\(.*\)\n\([0-9]*\)/\2 \1/
# Clear flag from last substitution.
tb
# Append the next line.
:b
N
# Look whether second part is a continuation line.
s/\(.*\n\)"\(.*\)"/\1\2/
# Yes, then branch.
ta
P
D
# Note that `D' includes a jump to the start!!
# We found a continuation line. But before printing insert '\'.
:a
s/\(.*\)\(\n.*\)/\1\\\2/
P
# We cannot use the sed command `D' here
s/.*\n\(.*\)/\1/
tb
}
d