home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / id-utils-3.2-src.tgz / tar.out / fsf / id-utils / intl / linux-msg.sed < prev    next >
Text File  |  1996-09-28  |  3KB  |  101 lines

  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. #
  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.   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 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. # 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
  101.