(file) Return to linux-msg.sed CVS log (file) (dir) Up to [RizwankCVS] / testProject / intl

  1 rizwank 1.1 # po2msg.sed - Convert Uniforum style .po file to Linux style .msg file
  2             # Copyright (C) 1995 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 rizwank 1.1 #
 23             1 {
 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 rizwank 1.1   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 rizwank 1.1 # 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 then 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 rizwank 1.1 # 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             }
100             d

Rizwan Kassim
Powered by
ViewCVS 0.9.2