mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-20 11:48:30 -06:00
It is split into - /libgnucash (for the non-gui bits) - /gnucash (for the gui) - /common (misc source files used by both) - /bindings (currently only holds python bindings) This is the first step in restructuring the code. It will need much more fine tuning later on.
84 lines
2.7 KiB
Perl
84 lines
2.7 KiB
Perl
#!@-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 <dave@krondo.com>
|
|
|
|
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 (<IN>) {
|
|
push @skipped_files, $_ unless $_ =~ /^\#/;
|
|
}
|
|
close IN;
|
|
open(IN, "< @-SRCDIR-@/po/POTFILES.ignore");
|
|
while (<IN>) {
|
|
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 common libgnucash gnucash lib -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";
|