1# po2msg.sed - Convert Uniforum style .po file to Linux style .msg file 2# Copyright 1995, 2002 Free Software Foundation, Inc. 3# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. 4# 5# This program is free software; you can redistribute it and/or modify 6# it under the terms of the GNU General Public License as published by 7# the Free Software Foundation; either version 2, or (at your option) 8# any later version. 9# 10# This program is distributed in the hope that it will be useful, 11# but WITHOUT ANY WARRANTY; without even the implied warranty of 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13# GNU General Public License for more details. 14# 15# You should have received a copy of the GNU General Public License 16# along with this program; if not, write to the Free Software 17# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. 18# 19# 20# The first directive in the .msg should be the definition of the 21# message set number. We use always set number 1. 22# 231 { 24 i\ 25$set 1 # Automatically created by po2msg.sed 26 h 27 s/.*/0/ 28 x 29} 30# 31# Mitch's old catalog format does not allow comments. 32# 33# We copy the original message as a comment into the .msg file. 34# 35/^msgid/ { 36 s/msgid[ ]*"// 37# 38# This does not work now with the new format. 39# /"$/! { 40# s/\\$// 41# s/$/ ... (more lines following)"/ 42# } 43 x 44# The following nice solution is by 45# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de> 46 td 47# Increment a decimal number in pattern space. 48# First hide trailing `9' digits. 49 :d 50 s/9\(_*\)$/_\1/ 51 td 52# Assure at least one digit is available. 53 s/^\(_*\)$/0\1/ 54# Increment the last digit. 55 s/8\(_*\)$/9\1/ 56 s/7\(_*\)$/8\1/ 57 s/6\(_*\)$/7\1/ 58 s/5\(_*\)$/6\1/ 59 s/4\(_*\)$/5\1/ 60 s/3\(_*\)$/4\1/ 61 s/2\(_*\)$/3\1/ 62 s/1\(_*\)$/2\1/ 63 s/0\(_*\)$/1\1/ 64# Convert the hidden `9' digits to `0's. 65 s/_/0/g 66 x 67 G 68 s/\(.*\)"\n\([0-9]*\)/$ #\2 Original Message:(\1)/p 69} 70# 71# The .msg file contains, other than the .po file, only the translations 72# but each given a unique ID. Starting from 1 and incrementing by 1 for 73# each message we assign them to the messages. 74# It is important that the .po file used to generate the cat-id-tbl.c file 75# (with po-to-tbl) is the same as the one used here. (At least the order 76# of declarations must not be changed.) 77# 78/^msgstr/ { 79 s/msgstr[ ]*"\(.*\)"/# \1/ 80# Clear substitution flag. 81 tb 82# Append the next line. 83 :b 84 N 85# Look whether second part is continuation line. 86 s/\(.*\n\)"\(.*\)"/\1\2/ 87# Yes, then branch. 88 ta 89 P 90 D 91# Note that D includes a jump to the start!! 92# We found a continuation line. But before printing insert '\'. 93 :a 94 s/\(.*\)\(\n.*\)/\1\\\2/ 95 P 96# We cannot use D here. 97 s/.*\n\(.*\)/\1/ 98 tb 99} 100d 101