xopen-msg.sed
上传用户:xxcykj
上传日期:2007-01-04
资源大小:727k
文件大小:3k
源码类别:

Email客户端

开发平台:

Unix_Linux

  1. # po2msg.sed - Convert Uniforum style .po file to X/Open 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. # We copy all comments into the .msg file.  Perhaps they can help.
  32. #
  33. /^#/ s/^#[  ]*/$ /p
  34. #
  35. # We copy the original message as a comment into the .msg file.
  36. #
  37. /^msgid/ {
  38. # Does not work now
  39. #  /"$/! {
  40. #    s/\$//
  41. #    s/$/ ... (more lines following)"/
  42. #  }
  43.   s/^msgid[  ]*"(.*)"$/$ Original Message: 1/
  44.   p
  45. }
  46. #
  47. # The .msg file contains, other then the .po file, only the translations
  48. # but each given a unique ID.  Starting from 1 and incrementing by 1 for
  49. # each message we assign them to the messages.
  50. # It is important that the .po file used to generate the cat-id-tbl.c file
  51. # (with po-to-tbl) is the same as the one used here.  (At least the order
  52. # of declarations must not be changed.)
  53. #
  54. /^msgstr/ {
  55.   s/msgstr[  ]*"(.*)"/1/
  56.   x
  57. # The following nice solution is by
  58. # Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de>
  59.   td
  60. # Increment a decimal number in pattern space.
  61. # First hide trailing `9' digits.
  62.   :d
  63.   s/9(_*)$/_1/
  64.   td
  65. # Assure at least one digit is available.
  66.   s/^(_*)$/01/
  67. # Increment the last digit.
  68.   s/8(_*)$/91/
  69.   s/7(_*)$/81/
  70.   s/6(_*)$/71/
  71.   s/5(_*)$/61/
  72.   s/4(_*)$/51/
  73.   s/3(_*)$/41/
  74.   s/2(_*)$/31/
  75.   s/1(_*)$/21/
  76.   s/0(_*)$/11/
  77. # Convert the hidden `9' digits to `0's.
  78.   s/_/0/g
  79.   x
  80. # Bring the line in the format `<number> <message>'
  81.   G
  82.   s/^[^n]*$/& /
  83.   s/(.*)n([0-9]*)/2 1/
  84. # Clear flag from last substitution.
  85.   tb
  86. # Append the next line.
  87.   :b
  88.   N
  89. # Look whether second part is a continuation line.
  90.   s/(.*n)"(.*)"/12/
  91. # Yes, then branch.
  92.   ta
  93.   P
  94.   D
  95. # Note that `D' includes a jump to the start!!
  96. # We found a continuation line.  But before printing insert ''.
  97.   :a
  98.   s/(.*)(n.*)/1\2/
  99.   P
  100. # We cannot use the sed command `D' here
  101.   s/.*n(.*)/1/
  102.   tb
  103. }
  104. d