summaryrefslogtreecommitdiffstats
path: root/bin/findtr
diff options
context:
space:
mode:
Diffstat (limited to 'bin/findtr')
-rwxr-xr-xbin/findtr189
1 files changed, 0 insertions, 189 deletions
diff --git a/bin/findtr b/bin/findtr
deleted file mode 100755
index 7df332522..000000000
--- a/bin/findtr
+++ /dev/null
@@ -1,189 +0,0 @@
-#!/usr/bin/perl -w
-# vi:wrap:
-
-# See Qt I18N documentation for usage information.
-
-use POSIX qw(strftime);
-
-$projectid='PROJECT VERSION';
-$datetime = strftime "%Y-%m-%d %X %Z", localtime;
-$charset='iso-8859-1';
-$translator='FULLNAME <EMAIL@ADDRESS>';
-$revision_date='YYYY-MM-DD';
-
-$real_mark = "tr";
-$noop_mark = "QT_TR_NOOP";
-$scoped_mark = "qApp->translate";
-$noop_scoped_mark = "QT_TRANSLATE_NOOP";
-
-$header=
-'# This is a Qt message file in .po format. Each msgid starts with
-# a scope. This scope should *NOT* be translated - eg. translating
-# from French to English, "Foo::Bar" would be translated to "Pub",
-# not "Foo::Pub".
-msgid ""
-msgstr ""
-"Project-Id-Version: '.$projectid.'\n"
-"POT-Creation-Date: '.$datetime.'\n"
-"PO-Revision-Date: '.$revision_date.'\n"
-"Last-Translator: '.$translator.'\n"
-"Content-Type: text/plain; charset='.$charset.'\n"
-
-';
-
-
-
-
-$scope = "";
-
-if ( $#ARGV < 0 ) {
- print STDERR "Usage: findtr sourcefile ... >project.po\n";
- exit 1;
-}
-
-
-sub outmsg {
- my ($file, $line, $scope, $msgid) = @_;
- # unesc
- $msgid =~ s/$esc:$esc:$esc/::/gs;
- $msgid =~ s|$esc/$esc/$esc|//|gs;
-
- # Remove blank lines
- $msgid =~ s/\n\n+/\n/gs;
- $msgid = "\"\"\n$msgid" if $msgid =~ /\n/s;
- print "#: $file:$line\n";
- $msgid =~ s/^"//; #"emacs bug
- print "msgid \"${scope}::$msgid\n";
- #print "msgstr \"$msgid\n";
- print "msgstr \"\"\n";
- print "\n";
-}
-
-sub justlines {
- my $l = @_;
- $l =~ tr|\n||dc;
- return $l;
-}
-
-print $header;
-
-
-foreach $file ( @ARGV ) {
- next unless open( I, "< $file" );
-
- $source = join( "", <I> );
-
- # Find esc. Avoid bad case 1/// -> 1/1/1/1 -> ///1
- $esc = 1;
- while ( $source =~ m!(?:$esc/$esc/$esc)|(?:$esc///)
- |(?:$esc:$esc:$esc)|(?:$esc:\:\:)! ) {
- $esc++;
- }
-
- # Hide quoted :: in practically all strings
- $source =~ s/\"([^"\n]*)::([^"\n]*)\"/\"$1$esc:$esc:$esc$2\"/g;
-
- # Hide quoted // in practically all strings
- $source =~ s|\"([^"\n]*)//([^"\n]*)\"|\"$1$esc/$esc/$esc$2\"|g;
-
-
- # strip comments -- does not handle "/*" in strings
- while( $source =~ s|/\*(.*?)\*/|justlines($1)|ges ) { }
- while( $source =~ s|//(.*?)\n|\n|g ) { }
-
- while( $source =~ /
- (?:
- # Some doublequotes are "escaped" to help vim syntax highlight
-
- # $1 = scope; $2 = parameters etc.
- (?:
- # Scoped function name ($1 is scope).
- (\w+)::(?:\w+)
- \s*
- # Parameters etc up to open-curly - no semicolons
- \(([^();]*)\)
- \s*
- (?:\{|:)
- )
- |
- # $3 - one-argument msgid
- (?:\b
- # One of the marks
- (?:$real_mark|$noop_mark)
- \s*
- # The parameter
- \(\s*((?:"(?:[^"]|[^\\]\\")*"\s*)+)\)
- )
- |
- # $4,$5 - two-argument msgid
- (?:\b
- # One of the scoped marks
- (?:$scoped_mark|$noop_scoped_mark)
- \s*
- # The parameters
- \(
- # The scope parameter
- \s*"([^\"]*)"
- \s*,\s*
- # The msgid parameter
- \s*((?:\"(?:[^"]|[^\\]\\")*"\s*)+) #"emacs
- \)
- )
- |
- # $6,$7 - scoped one-argument msgid
- (?:\b
- # The scope
- (\w+)::
- # One of the marks
- (?:$real_mark)
- \s*
- # The parameter
- \(\s*((?:"(?:[^"]|[^\\]\\")*"\s*)+)\)
- )
- )/gsx )
- {
- @lines = split /^/m, "$`";
- $line = @lines;
- if ( defined( $1 ) ) {
- if ( $scope ne $1 ) {
- $sc=$1;
- $etc=$2;
- # remove strings
- $etc =~ s/"(?:[^"]|[^\\]\\")"//g;
- # count ( and )
- @open = split /\(/m, $etc;
- @close = split /\)/m, $etc;
- if ( $#open == $#close ) {
- $scope = $sc;
- }
- }
- next;
- }
-
- if ( defined( $3 ) ) {
- $this_scope = $scope;
- $msgid = $3;
- } elsif ( defined( $4 ) ) {
- $this_scope = $4;
- $msgid = $5;
- } elsif ( defined( $6 ) ) {
- $this_scope = $6;
- $msgid = $7;
- } else {
- next;
- }
-
- $msgid =~ s/^\s*//;
- $msgid =~ s/\s*$//;
-
- # Might still be non-unique eg. tr("A" "B") vs. tr("A" "B").
-
- $location{"${this_scope}::${msgid}"} = "$file:$line";
- }
-}
-
-for $scoped_msgid ( sort keys %location ) {
- ($scope,$msgid) = $scoped_msgid =~ m/([^:]*)::(.*)/s;
- ($file,$line) = $location{$scoped_msgid} =~ m/([^:]*):(.*)/s;
- outmsg($file,$line,$scope,$msgid);
-}