bug in regexp if gecos empty
[projets/gtk-fuser.git] / list-strings
1 #!/usr/bin/perl -w
2 # $Id$
3
4 # list-strings, an util to extract translated strings from a file
5 # part of gtk-fuser, a perl-gtk2 frontend to fuser (from psmisc)
6 # Copyright (C) 2005 Guillaume Castagnino
7 #
8 # This program is free software; you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation; either version 2 of the License, or
11 # (at your option) any later version.
12 #
13 # This program is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 # GNU General Public License for more details.
17 #
18 # You should have received a copy of the GNU General Public License
19 # along with this program; if not, write to the Free Software
20 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
21 #
22 # Guillaume Castagnino <casta@xwing.info>
23
24 use strict;
25 use utf8;
26 use encoding 'utf8';
27 use Data::Dumper;
28
29 my $file = $ARGV[0];
30 my @currentStrings;
31
32 # Scan source file for translated strings : _("")
33 open FILE, $file or die "Error opening $file\n";
34 print "====================================\nlanguage template\n====================================\n";
35 print "        lang_code => {\n";
36 while (my $ligne = <FILE>)
37 {
38     my @match = ($ligne =~ m/_\(([^\)]+)\)/g);
39     for my $val (@match)
40     {
41         $val =~ s/^"|'//;
42         $val =~ s/"|'$//;
43         push @currentStrings, $val;
44         print "            \"$val\" => \"\";\n";
45     }
46 }
47 print "        }\n";
48 close FILE;
49
50 my %strings;
51
52 # Extract strings traduction declaration
53 open FILE, $file or die "Error opening $file\n";
54 my $content = "";
55 my $start = 0;
56 while (my $ligne = <FILE>)
57 {
58     chomp $ligne;
59     $start = 0 if $ligne =~ m/STRINGS_END/;
60     $content .= $ligne if $start == 1;
61     $start = 1 if $ligne =~ m/STRINGS_BEGIN/;
62 }
63 close FILE;
64
65 %strings = eval $content;
66
67 # Regenerate updated traduction section
68 print "====================================\nUpdated \%strings version :\n====================================\n";
69 print "    my %strings = (\n";
70 for my $lang (keys %strings)
71 {
72     print "        $lang => {\n";
73     my $langHash = $strings{$lang};
74     for my $key (@currentStrings)
75     {
76         print "            \"$key\" => \"$langHash->{$key}\",\n";
77     }
78     print "        },\n";
79 }
80 print "    );\n";
81