diff options
author | joerg <joerg@pkgsrc.org> | 2009-03-20 16:13:02 +0000 |
---|---|---|
committer | joerg <joerg@pkgsrc.org> | 2009-03-20 16:13:02 +0000 |
commit | 5f72a77f4ad612097645f263b41438b105c52536 (patch) | |
tree | 95eca6c8a3b7faa4e3ae0cd6e71d69dcc4ac4041 /mk | |
parent | 543cd10f9f12274db7f2f2b714ad7fd9c4edaf73 (diff) | |
download | pkgsrc-5f72a77f4ad612097645f263b41438b105c52536.tar.gz |
Refactor msgfmt.sh script to conditionally strip the msgid_plural for
old NetBSD versions and to strip msgctx if requested by the package.
This allows to replace the use of msgfmtstrip in various packages by
setting MSGFMT_STRIP_MSGCTX.
Diffstat (limited to 'mk')
-rw-r--r-- | mk/tools/gettext.mk | 31 | ||||
-rw-r--r-- | mk/tools/msgfmt-msgctxt.awk | 19 | ||||
-rw-r--r-- | mk/tools/msgfmt-msgid_plural.awk | 262 | ||||
-rwxr-xr-x | mk/tools/msgfmt.sh | 271 |
4 files changed, 315 insertions, 268 deletions
diff --git a/mk/tools/gettext.mk b/mk/tools/gettext.mk index 357b5536e22..bdab8da7e96 100644 --- a/mk/tools/gettext.mk +++ b/mk/tools/gettext.mk @@ -1,4 +1,4 @@ -# $NetBSD: gettext.mk,v 1.8 2007/06/15 17:11:33 joerg Exp $ +# $NetBSD: gettext.mk,v 1.9 2009/03/20 16:13:02 joerg Exp $ # # Copyright (c) 2006 The NetBSD Foundation, Inc. # All rights reserved. @@ -59,6 +59,9 @@ MAKEFLAGS+= TOOLS_IGNORE.msgfmt= . if defined(TOOLS_PLATFORM.msgfmt) && !empty(TOOLS_PLATFORM.msgfmt) _TOOLS_USE_PKGSRC.msgfmt?= no # +# MSGFMT_STRIP_MSGID_PLURAL: Yes for msgfmt < 0.10.36 +# MSGFMT_STRIP_MSGCTX: To be set by packages +# # Determine if the platform-supplied msgfmt is new enough to support # the msgid_plural statement. We need at least 0.10.36 for GNU msgfmt. # @@ -68,14 +71,23 @@ _TOOLS_USE_PKGSRC.msgfmt?= no . if !defined(_TOOLS_USE_MSGFMT_SH) _TOOLS_VERSION.msgfmt!= ${TOOLS_PLATFORM.msgfmt} --version | \ ${AWK} '{ print $$4; exit }' -_TOOLS_USE_MSGFMT_SH!= \ +. if !defined(MSGFMT_STRIP_MSGID_PLURAL) +MSGFMT_STRIP_MSGID_PLURAL!= \ if ${PKG_ADMIN} pmatch "gettext>0.10.35" \ gettext-${_TOOLS_VERSION.msgfmt:Q}; then \ ${ECHO} no; \ else \ ${ECHO} yes; \ fi +. endif . endif +MSGFMT_STRIP_MSGID_PLURAL?= no +MSGFMT_STRIP_MSGCTX?= no +.if ${MSGFMT_STRIP_MSGID_PLURAL} == "yes" || ${MSGFMT_STRIP_MSGCTX} == "yes" +_TOOLS_USE_MSGFMT_SH= yes +.else +_TOOLS_USE_MSGFMT_SH= no +.endif MAKEVARS+= _TOOLS_USE_MSGFMT_SH . else _TOOLS_USE_PKGSRC.msgfmt= yes @@ -91,18 +103,21 @@ CHECK_BUILTIN.gettext:= no _TOOLS_USE_PKGSRC.msgfmt= yes . endif -. if !empty(_TOOLS_USE_PKGSRC.msgfmt:M[yY][eE][sS]) -TOOLS_CREATE+= msgfmt -TOOLS_DEPENDS.msgfmt?= ${_TOOLS_DEP.gettext-tools}:../../devel/gettext-tools -TOOLS_FIND_PREFIX+= TOOLS_PREFIX.msgfmt=${TOOLS_DEPENDS.msgfmt:C/:.*//} -TOOLS_PATH.msgfmt= ${TOOLS_PREFIX.msgfmt}/bin/msgfmt -. elif defined(_TOOLS_USE_MSGFMT_SH) && \ +. if defined(_TOOLS_USE_MSGFMT_SH) && \ !empty(_TOOLS_USE_MSGFMT_SH:M[yY][eE][sS]) USE_TOOLS+= awk sh TOOLS_PATH.msgfmt= ${PKGSRCDIR}/mk/tools/msgfmt.sh TOOLS_SCRIPT.msgfmt= AWK=${TOOLS_AWK:Q} CAT=${TOOLS_CAT:Q} \ MSGFMT=${TOOLS_PLATFORM.msgfmt:Q} \ + PKGSRCDIR=${PKGSRCDIR:Q} \ + MSGFMT_STRIP_MSGID_PLURAL=${MSGFMT_STRIP_MSGID_PLURAL} \ + MSGFMT_STRIP_MSGCTX=${MSGFMT_STRIP_MSGCTX} \ ${TOOLS_SH} ${TOOLS_PATH.msgfmt} "$$@" +. elif !empty(_TOOLS_USE_PKGSRC.msgfmt:M[yY][eE][sS]) +TOOLS_CREATE+= msgfmt +TOOLS_DEPENDS.msgfmt?= ${_TOOLS_DEP.gettext-tools}:../../devel/gettext-tools +TOOLS_FIND_PREFIX+= TOOLS_PREFIX.msgfmt=${TOOLS_DEPENDS.msgfmt:C/:.*//} +TOOLS_PATH.msgfmt= ${TOOLS_PREFIX.msgfmt}/bin/msgfmt . endif . endif .endif diff --git a/mk/tools/msgfmt-msgctxt.awk b/mk/tools/msgfmt-msgctxt.awk new file mode 100644 index 00000000000..271e6642972 --- /dev/null +++ b/mk/tools/msgfmt-msgctxt.awk @@ -0,0 +1,19 @@ +# $NetBSD: msgfmt-msgctxt.awk,v 1.1 2009/03/20 16:13:02 joerg Exp $ +# +# Simple awk script to strip out .po entries with "msgctxt" or "#~|", so the +# resultant file can be handled by the msgfmt 0.14.x. +{ +if (/^$/) { entry_end(); } +else if ($1 == "msgctxt" || $2 == "msgctxt") { skip = 1; } +else if ($1 == "#~|") { skip = 1; } +else { entry = entry $0 "\n" } +} + +END { entry_end(); } + +function entry_end() { + if (!skip) + print entry; + entry = ""; + skip = 0; +} diff --git a/mk/tools/msgfmt-msgid_plural.awk b/mk/tools/msgfmt-msgid_plural.awk new file mode 100644 index 00000000000..866d9568f5a --- /dev/null +++ b/mk/tools/msgfmt-msgid_plural.awk @@ -0,0 +1,262 @@ +# $NetBSD: msgfmt-msgid_plural.awk,v 1.1 2009/03/20 16:13:02 joerg Exp $ +# +# Strip msgid_plural which is not understood by msgfmt before 0.10.36. +# + +# +# strip_bad_ctrl_sequences(string) +# If we see \c, where c is anything but a legal character as +# defined by msgfmt-0.10.35, then replace the backslash with a +# '?'. Yes, this is a hack, but it works around a bug in the +# way that older msgfmt mis-identifies some "control" sequences. +# +function strip_bad_ctrl_sequences(string, left, right) { + left = "" + right = string + while (match(right, /\\/) > 0) { + if (substr(right, RSTART + 1, 1) ~ /[bfnrtxX0-7"\\]/) { + left = left substr(right, 1, RSTART + 1) + right = substr(right, RSTART + 2) + } else { + left = left substr(right, 1, RSTART - 1) "?" + right = substr(right, RSTART + 1) + } + } + return left right +} + +BEGIN { + EMPTY = "^$" + SPACE = "[ ]*" + KEYWORD_SEP = "([ ]+|[ ]*\"|$)" + OBSOLETE = "#~ " + OBSOLETE_RE = "^(#~[ ]+)?[ ]*" + OBSOLETE_RE_MATCH = "^#~[ ]+" + MSG_CONTINUATION_RE = OBSOLETE_RE "\"" + + result = getline + if (result < 1) exit result + + s = 0 + p = 0 + obsolete = "" + + while (result == 1) { + + # Buffer any "msgid" statements into the singular array. + # Strip all trailing empty strings that have no effect on + # the output. + # + MSGID_RE = OBSOLETE_RE "msgid" + if ($0 ~ MSGID_RE KEYWORD_SEP) { + obsolete = "" + if ($0 ~ OBSOLETE_RE_MATCH) obsolete = OBSOLETE + sub(MSGID_RE SPACE, ""); + s = 0 + if ($0 ~ EMPTY) $0 = "\"\"" + $0 = strip_bad_ctrl_sequences($0) + singular[s++] = $0 + while (result = getline) { + if ($0 ~ OBSOLETE_RE "$") continue + if ($0 !~ MSG_CONTINUATION_RE) break + sub(OBSOLETE_RE , "") + $0 = strip_bad_ctrl_sequences($0) + singular[s++] = $0 + } + if (result < 0) break + while ((s > 1) && (singular[s-1] ~ /^""$/)) s-- + continue + } + + # Buffer any "msgid_plural" statements into the plural + # array. Strip all trailing empty strings that have no + # effect on the output. + # + MSGID_PLURAL_RE = OBSOLETE_RE "msgid_plural" + if ($0 ~ MSGID_PLURAL_RE KEYWORD_SEP) { + obsolete = "" + if ($0 ~ OBSOLETE_RE_MATCH) obsolete = OBSOLETE + sub(MSGID_PLURAL_RE SPACE, ""); + p = 0 + if ($0 ~ EMPTY) $0 = "\"\"" + $0 = strip_bad_ctrl_sequences($0) + plural[p++] = $0 + while (result = getline) { + if ($0 ~ OBSOLETE_RE "$") continue + if ($0 !~ MSG_CONTINUATION_RE) break + sub(OBSOLETE_RE, "") + $0 = strip_bad_ctrl_sequences($0) + plural[p++] = $0 + } + if (result < 0) break + while ((p > 1) && (plural[p-1] ~ /^""$/)) p-- + continue + } + + # If we see "msgstr", then we are outputting the + # translation of a singular form of a message, so dump + # the contents of the singular array and output the + # "msgstr" translation. Strip all trailing empty strings + # that have no effect on the output, and handle "\n" + # pickiness between msgid and msgstr. + # + MSGSTR_RE = OBSOLETE_RE "msgstr" + if ($0 ~ MSGSTR_RE KEYWORD_SEP) { + if (s > 0) { + print obsolete "msgid " singular[0] + for (i = 1; i < s; i++) + print obsolete singular[i] + } + if ($0 ~ OBSOLETE_RE_MATCH) obsolete = OBSOLETE + sub(MSGSTR_RE SPACE, "") + t = 0 + if ($0 ~ EMPTY) $0 = "\"\"" + $0 = strip_bad_ctrl_sequences($0) + translation[t++] = $0 + while (result = getline) { + if ($0 !~ MSG_CONTINUATION_RE) break + sub(OBSOLETE_RE, "") + $0 = strip_bad_ctrl_sequences($0) + translation[t++] = $0 + } + if (result < 0) break + while ((t > 1) && (translation[t-1] ~ /^""$/)) t-- + if ((singular[s-1] ~ /\\n"$/) && + (translation[t-1] !~ /\\n"$/)) { + if (translation[t-1] !~ /""/) + sub("\"$", "\\n\"", translation[t-1]) + } + if (t > 0) { + print obsolete "msgstr " translation[0] + for (i = 1; i < t; i++) + print obsolete translation[i] + } + continue + } + + # If we see "msgstr[0]", then we are outputting the + # translation of a singular form of a message, so dump + # the contents of the singular array and output the + # "msgstr[0]" translation. Strip all trailing empty + # strings that have no effect on the output, and handle + # "\n" pickiness between msgid and msgstr. + # + MSGSTR0_RE = OBSOLETE_RE "msgstr[[]0[]]" + if ($0 ~ MSGSTR0_RE KEYWORD_SEP) { + if (s > 0) { + print obsolete "msgid " singular[0] + for (i = 1; i < s; i++) + print obsolete singular[i] + } + if ($0 ~ OBSOLETE_RE_MATCH) obsolete = OBSOLETE + sub(MSGSTR0_RE SPACE, ""); + t = 0 + if ($0 ~ EMPTY) $0 = "\"\"" + $0 = strip_bad_ctrl_sequences($0) + translation[t++] = $0 + while (result = getline) { + if ($0 !~ MSG_CONTINUATION_RE) break + sub(OBSOLETE_RE, "") + $0 = strip_bad_ctrl_sequences($0) + translation[t++] = $0 + } + if (result < 0) break + while ((t > 1) && (translation[t-1] ~ /^""$/)) t-- + if ((singular[s-1] ~ /\\n"$/) && + (translation[t-1] !~ /\\n"$/)) { + if (translation[t-1] !~ /""/) + sub("\"$", "\\n\"", translation[t-1]) + } + if (t > 0) { + print obsolete "msgstr " translation[0] + for (i = 1; i < t; i++) + print obsolete translation[i] + } + continue + } + + # If we see "msgstr[1]", then we are outputting the + # translation of a plural form of a message, so dump + # the contents of the plural array and output the + # "msgstr[1]" translation. Strip all trailing empty + # strings that have no effect on the output, and handle + # "\n" pickiness between msgid and msgstr. + # + MSGSTR1_RE = OBSOLETE_RE "msgstr[[]1[]]" + if ($0 ~ MSGSTR1_RE KEYWORD_SEP) { + # + # Check if the singular and plural arrays are equal. + # If they are, then we do not need to output an + # additional plural translation at all since the + # "singular" form is already correct. + # + equal = 0 + if (s == p) { + equal = 1; + for (i = 0; i < s; i++) { + if (singular[i] != plural[i]) { + equal = 0; break + } + } + } + if (equal == 1) { + while (result = getline) { + if ($0 !~ MSG_CONTINUATION_RE) break + } + if (result < 0) break + s = 0; p = 0 + continue + } + + if (p > 0) { + print obsolete "msgid " plural[0] + for (i = 1; i < p; i++) + print obsolete plural[i] + } + if ($0 ~ OBSOLETE_RE_MATCH) obsolete = OBSOLETE + sub(MSGSTR1_RE SPACE, ""); + t = 0 + if ($0 ~ EMPTY) $0 = "\"\"" + $0 = strip_bad_ctrl_sequences($0) + translation[t++] = $0 + while (result = getline) { + if ($0 !~ MSG_CONTINUATION_RE) break + sub(OBSOLETE_RE, "") + $0 = strip_bad_ctrl_sequences($0) + translation[t++] = $0 + } + if (result < 0) break + while ((t > 1) && (translation[t-1] ~ /^""$/)) t-- + if ((plural[p-1] ~ /\\n"$/) && + (translation[t-1] !~ /\\n"$/)) { + if (translation[t-1] !~ /""/) + sub("\"$", "\\n\"", translation[t-1]) + } + if (t > 0) { + print obsolete "msgstr " translation[0] + for (i = 1; i < t; i++) + print obsolete translation[i] + } + continue + } + + # We drop all other "msgstr[N]" translations since the + # old format only supported a single translation per + # plural form. + # + MSGSTRN_RE = OBSOLETE_RE "msgstr[[][0-9]+[]]" + if ($0 ~ MSGSTRN_RE KEYWORD_SEP) { + while (result = getline) { + if ($0 !~ MSG_CONTINUATION_RE) break + print $0 + } + if (result < 0) break + continue + } + + # Pass everything else verbatim. + print $0 + result = getline + if (result < 0) break + } +} diff --git a/mk/tools/msgfmt.sh b/mk/tools/msgfmt.sh index 585736993b7..cf122d54b8c 100755 --- a/mk/tools/msgfmt.sh +++ b/mk/tools/msgfmt.sh @@ -1,6 +1,6 @@ #!/bin/sh # -# $NetBSD: msgfmt.sh,v 1.29 2007/09/25 10:32:17 hira Exp $ +# $NetBSD: msgfmt.sh,v 1.30 2009/03/20 16:13:02 joerg Exp $ # # Copyright (c) 2006 The NetBSD Foundation, Inc. # All rights reserved. @@ -158,262 +158,13 @@ if test "$pofile" != "-" -a ! -e "$pofile"; then pofile="$popofile" fi -${CAT} $pofile | ${AWK} ' -# -# strip_bad_ctrl_sequences(string) -# If we see \c, where c is anything but a legal character as -# defined by msgfmt-0.10.35, then replace the backslash with a -# '?'. Yes, this is a hack, but it works around a bug in the -# way that older msgfmt mis-identifies some "control" sequences. -# -function strip_bad_ctrl_sequences(string, left, right) { - left = "" - right = string - while (match(right, /\\/) > 0) { - if (substr(right, RSTART + 1, 1) ~ /[bfnrtxX0-7"\\]/) { - left = left substr(right, 1, RSTART + 1) - right = substr(right, RSTART + 2) - } else { - left = left substr(right, 1, RSTART - 1) "?" - right = substr(right, RSTART + 1) - } - } - return left right -} - -BEGIN { - EMPTY = "^$" - SPACE = "[ ]*" - KEYWORD_SEP = "([ ]+|[ ]*\"|$)" - OBSOLETE = "#~ " - OBSOLETE_RE = "^(#~[ ]+)?[ ]*" - OBSOLETE_RE_MATCH = "^#~[ ]+" - MSG_CONTINUATION_RE = OBSOLETE_RE "\"" - - result = getline - if (result < 1) exit result - - s = 0 - p = 0 - obsolete = "" - - while (result == 1) { - - # Buffer any "msgid" statements into the singular array. - # Strip all trailing empty strings that have no effect on - # the output. - # - MSGID_RE = OBSOLETE_RE "msgid" - if ($0 ~ MSGID_RE KEYWORD_SEP) { - obsolete = "" - if ($0 ~ OBSOLETE_RE_MATCH) obsolete = OBSOLETE - sub(MSGID_RE SPACE, ""); - s = 0 - if ($0 ~ EMPTY) $0 = "\"\"" - $0 = strip_bad_ctrl_sequences($0) - singular[s++] = $0 - while (result = getline) { - if ($0 ~ OBSOLETE_RE "$") continue - if ($0 !~ MSG_CONTINUATION_RE) break - sub(OBSOLETE_RE , "") - $0 = strip_bad_ctrl_sequences($0) - singular[s++] = $0 - } - if (result < 0) break - while ((s > 1) && (singular[s-1] ~ /^""$/)) s-- - continue - } - - # Buffer any "msgid_plural" statements into the plural - # array. Strip all trailing empty strings that have no - # effect on the output. - # - MSGID_PLURAL_RE = OBSOLETE_RE "msgid_plural" - if ($0 ~ MSGID_PLURAL_RE KEYWORD_SEP) { - obsolete = "" - if ($0 ~ OBSOLETE_RE_MATCH) obsolete = OBSOLETE - sub(MSGID_PLURAL_RE SPACE, ""); - p = 0 - if ($0 ~ EMPTY) $0 = "\"\"" - $0 = strip_bad_ctrl_sequences($0) - plural[p++] = $0 - while (result = getline) { - if ($0 ~ OBSOLETE_RE "$") continue - if ($0 !~ MSG_CONTINUATION_RE) break - sub(OBSOLETE_RE, "") - $0 = strip_bad_ctrl_sequences($0) - plural[p++] = $0 - } - if (result < 0) break - while ((p > 1) && (plural[p-1] ~ /^""$/)) p-- - continue - } - - # If we see "msgstr", then we are outputting the - # translation of a singular form of a message, so dump - # the contents of the singular array and output the - # "msgstr" translation. Strip all trailing empty strings - # that have no effect on the output, and handle "\n" - # pickiness between msgid and msgstr. - # - MSGSTR_RE = OBSOLETE_RE "msgstr" - if ($0 ~ MSGSTR_RE KEYWORD_SEP) { - if (s > 0) { - print obsolete "msgid " singular[0] - for (i = 1; i < s; i++) - print obsolete singular[i] - } - if ($0 ~ OBSOLETE_RE_MATCH) obsolete = OBSOLETE - sub(MSGSTR_RE SPACE, "") - t = 0 - if ($0 ~ EMPTY) $0 = "\"\"" - $0 = strip_bad_ctrl_sequences($0) - translation[t++] = $0 - while (result = getline) { - if ($0 !~ MSG_CONTINUATION_RE) break - sub(OBSOLETE_RE, "") - $0 = strip_bad_ctrl_sequences($0) - translation[t++] = $0 - } - if (result < 0) break - while ((t > 1) && (translation[t-1] ~ /^""$/)) t-- - if ((singular[s-1] ~ /\\n"$/) && - (translation[t-1] !~ /\\n"$/)) { - if (translation[t-1] !~ /""/) - sub("\"$", "\\n\"", translation[t-1]) - } - if (t > 0) { - print obsolete "msgstr " translation[0] - for (i = 1; i < t; i++) - print obsolete translation[i] - } - continue - } - - # If we see "msgstr[0]", then we are outputting the - # translation of a singular form of a message, so dump - # the contents of the singular array and output the - # "msgstr[0]" translation. Strip all trailing empty - # strings that have no effect on the output, and handle - # "\n" pickiness between msgid and msgstr. - # - MSGSTR0_RE = OBSOLETE_RE "msgstr[[]0[]]" - if ($0 ~ MSGSTR0_RE KEYWORD_SEP) { - if (s > 0) { - print obsolete "msgid " singular[0] - for (i = 1; i < s; i++) - print obsolete singular[i] - } - if ($0 ~ OBSOLETE_RE_MATCH) obsolete = OBSOLETE - sub(MSGSTR0_RE SPACE, ""); - t = 0 - if ($0 ~ EMPTY) $0 = "\"\"" - $0 = strip_bad_ctrl_sequences($0) - translation[t++] = $0 - while (result = getline) { - if ($0 !~ MSG_CONTINUATION_RE) break - sub(OBSOLETE_RE, "") - $0 = strip_bad_ctrl_sequences($0) - translation[t++] = $0 - } - if (result < 0) break - while ((t > 1) && (translation[t-1] ~ /^""$/)) t-- - if ((singular[s-1] ~ /\\n"$/) && - (translation[t-1] !~ /\\n"$/)) { - if (translation[t-1] !~ /""/) - sub("\"$", "\\n\"", translation[t-1]) - } - if (t > 0) { - print obsolete "msgstr " translation[0] - for (i = 1; i < t; i++) - print obsolete translation[i] - } - continue - } - - # If we see "msgstr[1]", then we are outputting the - # translation of a plural form of a message, so dump - # the contents of the plural array and output the - # "msgstr[1]" translation. Strip all trailing empty - # strings that have no effect on the output, and handle - # "\n" pickiness between msgid and msgstr. - # - MSGSTR1_RE = OBSOLETE_RE "msgstr[[]1[]]" - if ($0 ~ MSGSTR1_RE KEYWORD_SEP) { - # - # Check if the singular and plural arrays are equal. - # If they are, then we do not need to output an - # additional plural translation at all since the - # "singular" form is already correct. - # - equal = 0 - if (s == p) { - equal = 1; - for (i = 0; i < s; i++) { - if (singular[i] != plural[i]) { - equal = 0; break - } - } - } - if (equal == 1) { - while (result = getline) { - if ($0 !~ MSG_CONTINUATION_RE) break - } - if (result < 0) break - s = 0; p = 0 - continue - } - - if (p > 0) { - print obsolete "msgid " plural[0] - for (i = 1; i < p; i++) - print obsolete plural[i] - } - if ($0 ~ OBSOLETE_RE_MATCH) obsolete = OBSOLETE - sub(MSGSTR1_RE SPACE, ""); - t = 0 - if ($0 ~ EMPTY) $0 = "\"\"" - $0 = strip_bad_ctrl_sequences($0) - translation[t++] = $0 - while (result = getline) { - if ($0 !~ MSG_CONTINUATION_RE) break - sub(OBSOLETE_RE, "") - $0 = strip_bad_ctrl_sequences($0) - translation[t++] = $0 - } - if (result < 0) break - while ((t > 1) && (translation[t-1] ~ /^""$/)) t-- - if ((plural[p-1] ~ /\\n"$/) && - (translation[t-1] !~ /\\n"$/)) { - if (translation[t-1] !~ /""/) - sub("\"$", "\\n\"", translation[t-1]) - } - if (t > 0) { - print obsolete "msgstr " translation[0] - for (i = 1; i < t; i++) - print obsolete translation[i] - } - continue - } - - # We drop all other "msgstr[N]" translations since the - # old format only supported a single translation per - # plural form. - # - MSGSTRN_RE = OBSOLETE_RE "msgstr[[][0-9]+[]]" - if ($0 ~ MSGSTRN_RE KEYWORD_SEP) { - while (result = getline) { - if ($0 !~ MSG_CONTINUATION_RE) break - print $0 - } - if (result < 0) break - continue - } - - # Pass everything else verbatim. - print $0 - result = getline - if (result < 0) break - } -} -' | $debug | $cmd +${CAT} $pofile | \ +if test "${MSGFMT_STRIP_MSGCTX}" = "yes"; then + ${AWK} -f ${PKGSRCDIR}/mk/tools/msgfmt-msgctx.awk +else + ${CAT} +fi | if test "$MSGFMT_STRIP_MSGID_PLURAL" = "yes"; then + ${AWK} -f ${PKGSRCDIR}/mk/tools/msgfmt-msgid_plural.awk +else + ${CAT} +fi | $debug | $cmd |