aboutsummaryrefslogtreecommitdiff
path: root/po/update.pl.in
diff options
context:
space:
mode:
Diffstat (limited to 'po/update.pl.in')
-rw-r--r--po/update.pl.in230
1 files changed, 230 insertions, 0 deletions
diff --git a/po/update.pl.in b/po/update.pl.in
new file mode 100644
index 000000000..7b7af52ef
--- /dev/null
+++ b/po/update.pl.in
@@ -0,0 +1,230 @@
1#!@PERL@ -w
2
3# GNOME po update utility.
4# (C) 2000 The Free Software Foundation
5#
6# Author(s): Kenneth Christiansen
7# Patches: Björn Voigt <bjoern@cs.tu-berlin.de>
8
9
10$VERSION = "1.2.5 beta 2";
11$LANG = $ARGV[0];
12$PACKAGE = "GNUnet";
13
14if (! $LANG){
15 print "update.pl: missing file arguments\n";
16 print "Try `update.pl --help' for more information.\n";
17 exit;
18}
19
20if ($LANG=~/^-(.)*/){
21
22 if ("$LANG" eq "--version" || "$LANG" eq "-V"){
23 print "GNOME PO Updater $VERSION\n";
24 print "Written by Kenneth Christiansen <kenneth\@gnome.org>, 2000.\n\n";
25 print "Copyright (C) 2000 Free Software Foundation, Inc.\n";
26 print "This is free software; see the source for copying conditions. There is NO\n";
27 print "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n";
28 exit;
29 }
30
31
32 elsif ($LANG eq "--help" || "$LANG" eq "-H"){
33 print "Usage: ./update.pl [OPTIONS] ...LANGCODE\n";
34 print "Updates pot files and merge them with the translations.\n\n";
35 print " -V, --version shows the version\n";
36 print " -H, --help shows this help page\n";
37 print " -P, --pot only generates the potfile\n";
38 print " -M, --maintain search for missing files in POTFILES.in\n";
39 print "\nExamples of use:\n";
40 print "update.sh --pot just creates a new pot file from the source\n";
41 print "update.sh da created new pot file and updated the da.po file\n\n";
42 print "Report bugs to <kenneth\@gnome.org>.\n";
43 exit;
44 }
45
46 elsif($LANG eq "--pot" || "$LANG" eq "-P"){
47
48 print "Building the $PACKAGE.pot ...";
49
50 $b="xgettext --default-domain\=$PACKAGE --directory\=\.\."
51 ." --add-comments --keyword\=\_ --keyword\=N\_"
52 ." --files-from\=\.\/POTFILES\.in ";
53 $b1="test \! -f $PACKAGE\.po \|\| \( rm -f \.\/$PACKAGE\.pot "
54 ."&& mv $PACKAGE\.po \.\/$PACKAGE\.pot \)";
55 if(($ret=system($b . " && " . $b1))==0) {
56 print "...done\n";
57 }
58 else {
59 print "...failed\n";
60 }
61
62 exit $ret;
63 }
64
65 elsif ($LANG eq "--maintain" || "$LANG" eq "-M"){
66
67 $a="find ../ -path ../intl -prune -o -print | egrep '.*\\.(c|y|cc|c++|h|gob)\$' ";
68
69 open(BUF2, "POTFILES.in") || die "update.pl: there's not POTFILES.in!!!\n";
70 print "Searching for missing _(\" \") entries and for deleted files...\n";
71 open(BUF1, "$a|");
72
73
74 @buf2 = <BUF2>;
75 @buf1 = <BUF1>;
76
77 if (-s "POTFILES.ignore") {
78 open FILE, "POTFILES.ignore";
79 while (<FILE>) {
80 if ($_=~/^[^#]/o) {
81 push @bup, $_;
82 }
83 }
84 print "POTFILES.ignore found! Ignoring files...\n";
85 @buf2 = (@bup, @buf2);
86 }
87
88 foreach my $file (@buf1) {
89 $cmd="xgettext -o - --omit-header --keyword=_ " .
90 "--keyword=N_ " . $file . " |";
91 open XGET, $cmd;
92 if(<XGET>) {
93 $file = unpack("x3 A*",$file) . "\n";
94 push @buff1, $file;
95 }
96 close XGET;
97# open FILE, "<$file";
98# while (<FILE>) {
99# if ($_=~/_\(\"/o || $_=~/ngettext\(\"/o){
100# $file = unpack("x3 A*",$file) . "\n";
101# push @buff1, $file;
102# last;
103# }
104# }
105 }
106
107 @bufff1 = sort (@buff1);
108
109 @bufff2 = sort (@buf2);
110
111 my %in2;
112 foreach (@bufff2) {
113 chomp;
114 $in2{$_} = 1;
115 }
116
117 my %in1;
118 foreach (@bufff1) {
119 chomp;
120 $in1{$_} = 1;
121 }
122
123 foreach (@bufff1) {
124 chomp;
125 if (!exists($in2{$_})) {
126 push @result, $_ . "\n";
127 }
128 }
129
130 foreach (@bufff2) {
131 chomp;
132 if (! -f "../" . $_) {
133 push @deletedfiles, $_ . "\n";
134 }
135 }
136
137 foreach (@bufff2) {
138 if (!exists($in1{$_})) {
139 push @noi18nfiles, $_ . "\n";
140 }
141 }
142
143 if(@result){
144 open OUT, ">POTFILES.in.missing";
145 print OUT @result;
146 print "\nHere are the missing files:\n\n", @result, "\n";
147 print "File POTFILES.in.missing is being placed in directory...\n";
148 print "Please add the files that should be ignored in POTFILES.ignore\n";
149 }
150 else{
151 unlink("POTFILES.in.missing");
152 }
153
154 if(@deletedfiles){
155 open OUT, ">POTFILES.in.deleted";
156 print OUT @deletedfiles;
157 print "\nHere are the deleted files:\n\n", @deletedfiles, "\n";
158 print "File POTFILES.in.deleted is being placed in directory...\n";
159 print "Please delete the files from POTFILES.in or POTFILES.ignore\n";
160 }
161 else{
162 unlink("POTFILES.in.deleted");
163 }
164
165 if(@noi18nfiles){
166 open OUT, ">POTFILES.in.noi18n";
167 print OUT @noi18nfiles;
168 print "\nHere are the files which currently have no i18n strings:\n\n",
169 @noi18nfiles, "\n";
170 print "File POTFILES.in.noi18n is being placed in directory...\n";
171 print "Please delete the files from POTFILES.in or POTFILES.ignore\n";
172 print "or ignore the files.\n";
173 }
174 else{
175 unlink("POTFILES.in.noi18n");
176 }
177
178 if( ! @result && ! @deletedfiles ) {
179 print "\nWell, it's all perfect! Congratulation!\n";
180 }
181 }
182
183
184 else{
185 print "update.pl: invalid option -- $LANG\n";
186 print "Try `update.pl --help' for more information.\n";
187 }
188 exit;
189 }
190
191elsif(-s "$LANG.po"){
192
193 print "Building the $PACKAGE.pot ...";
194
195 $c="xgettext --default-domain\=$PACKAGE --directory\=\.\."
196 ." --add-comments --keyword\=\_ --keyword\=N\_"
197 ." --files-from\=\.\/POTFILES\.in ";
198 $c1="test \! -f $PACKAGE\.po \|\| \( rm -f \.\/$PACKAGE\.pot "
199 ."&& mv $PACKAGE\.po \.\/$PACKAGE\.pot \)";
200
201 if(($ret=system($c . " && " . $c1))==0) {
202 print "...done\n";
203 }
204 else {
205 print "...failed\n";
206 }
207
208 if($ret==0) {
209 print "\nNow merging $LANG.po with $PACKAGE.pot, and creating an updated $LANG.po ...\n";
210
211
212 $d="if msgmerge $LANG.po $PACKAGE.pot -o $LANG.new.po; then " .
213 " mv -f $LANG.new.po $LANG.po; " .
214 " msgfmt --statistics -c -v -o /dev/null $LANG.po; " .
215 "else " .
216 " echo \"msgmerge failed!\"; " .
217 " rm -f $LANG.new.po; ".
218 "fi";
219
220 $ret=system($d);
221
222 exit $ret;
223 }
224}
225
226else{
227 print "update.pl: sorry $LANG.po does not exist!\n";
228 print "Try `update.pl --help' for more information.\n";
229 exit;
230}