#!@PERL@ -w # -*- perl -*- # # This perl script is used to make po/POTFILES.in, the list # of files to be searched for translatable strings. # # It will exclude any files listed in po/POTFILES.skip, po/POTFILES.ignore # or that match the regexp patterns listed in @ignorepatterns. # # Author: Dave Peticolas use strict; use File::Basename; # Note: These are perl regexp patterns, *not* normal shell wildcards! my @ignorepatterns = ('gw-', 'test', 'experimental', 'python-bindings', 'swig-.*\.c'); my (@skipped_files, @ignored_files); open(IN, "< @SRCDIR@/po/POTFILES.skip"); while () { push @skipped_files, $_ unless $_ =~ /^\#/; } close IN; open(IN, "< @SRCDIR@/po/POTFILES.ignore"); while () { push @ignored_files, $_ unless $_ =~ /^\#/; } close IN; # Sort filenames in POTFILES.in in a consistent way # This reduces the amount of clutter in our version manangement system # The files will be sorted # * per directory # * case-insensitive # * ignoring punctuation (-,_,.) # # This sort function has been extracted into a separate file (util/elegant-sort.pl) # in order to use the same algorithm in both cmake and autools based builds my @possible_files = `cd @SRCDIR@ && \\ find bindings borrowed common libgnucash gnucash -name '*.c' \\ -o -name '*.cpp' -o -name '*.glade' \\ -o -name '*.desktop.in' -o -name '*.keys.in' \\ -o -name '*.gschema.xml.in.in' -o -name '*.scm' \\ | util/elegant-sort.pl`; ## For perl files add the following: # -o -name '*.pl' print "# This is a list of files which contain translatable strings.\n"; print "# This file was generated by ../make-gnucash-potfiles.\n"; my %ignores; foreach my $file (@possible_files) { chomp($file); my ($name, $path) = fileparse($file); $path =~ s/^\.\///; foreach my $pat (@ignorepatterns, @skipped_files, @ignored_files) { chomp($pat); next unless $pat; if ($file =~ m/$pat/ || $name =~ m/$pat/ || $path =~ m/$pat/) { $ignores{$path . $name} = 1; } } next if $ignores{$path . $name}; # Ignore unreadable files, e.g. dangling symlinks next unless (-r "@SRCDIR@/" . $path . $name); # Force parse type for gsettings files my $type = ""; if ($file =~ m/.gschema.xml.in.in/ ){ $type = "[type: gettext/gsettings]"; } print $type . $path . $name . "\n"; } # These are manually added, because they're not picked up by the generation script print "gnucash/gnome/gnucash.appdata.xml.in\n"; print "gnucash/gnome/gnucash.desktop.in.in\n"; print "libgnucash/engine/qofbookslots.h\n"; print "doc/tip_of_the_day.list.in\n";