You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
2.3 KiB
104 lines
2.3 KiB
#!/usr/bin/perl
|
|
|
|
sub usage {
|
|
print STDERR "Usage: findunusedtranslations values/strings.xml\n";
|
|
print STDERR "\n";
|
|
print STDERR "Will read values/strings.xml and rewrite\n";
|
|
print STDERR "values-xx/strings.xml and values-xx-rYY/strings.xml\n";
|
|
print STDERR "files to remove strings that no longer appear in the\n";
|
|
print STDERR "base strings file.\n";
|
|
|
|
exit 1;
|
|
}
|
|
|
|
if ($#ARGV != 0) {
|
|
usage();
|
|
}
|
|
|
|
unless ($ARGV[0] =~ /^(.*)\/values([^\/]*)\/(.*\.xml)/) {
|
|
print STDERR "Bad format for $ARGV[0]\n";
|
|
usage();
|
|
}
|
|
|
|
unless (-f $ARGV[0]) {
|
|
print STDERR "$0: $ARGV[0]: No such file\n";
|
|
}
|
|
|
|
$prefix = $1;
|
|
$values = $2;
|
|
$suffix = $3;
|
|
|
|
if ($values =~ /^(-mcc[^-]*)*(-mnc[^-]*)*(.*)$/) {
|
|
$pattern1 = "$prefix/values$1$2-??$3/$suffix";
|
|
$pattern2 = "$prefix/values$1$2-??-r??$3/$suffix";
|
|
} else {
|
|
$pattern1 = "$prefix/values-??$values/$suffix";
|
|
$pattern2 = "$prefix/values-??-r??$values/$suffix";
|
|
}
|
|
|
|
@matches = (glob($pattern1), glob($pattern2));
|
|
|
|
open(IN, "<$ARGV[0]");
|
|
while (<IN>) {
|
|
if (/<string [^>]*name="([^"]*)"/) {
|
|
$string{$1} = 1;
|
|
}
|
|
if (/<string-array [^>]*name="([^"]*)"/) {
|
|
$stringarray{$1} = 1;
|
|
}
|
|
if (/<plurals [^>]*name="([^"]*)"/) {
|
|
$plurals{$1} = 1;
|
|
}
|
|
}
|
|
close(IN);
|
|
|
|
for $match (@matches) {
|
|
print "Rewriting $match\n";
|
|
$suppress = 0;
|
|
$text = "";
|
|
$changes = 0;
|
|
|
|
open(IN, "<$match");
|
|
while (<IN>) {
|
|
if (/<string [^>]*name="([^"]*)"/) {
|
|
if ($string{$1} == 0) {
|
|
$suppress = 1;
|
|
$changes = 1;
|
|
}
|
|
}
|
|
if (/<string-array [^>]*name="([^"]*)"/) {
|
|
if ($stringarray{$1} == 0) {
|
|
$suppress = 1;
|
|
$changes = 1;
|
|
}
|
|
}
|
|
if (/<plurals [^>]*name="([^"]*)"/) {
|
|
if ($plurals{$1} == 0) {
|
|
$suppress = 1;
|
|
$changes = 1;
|
|
}
|
|
}
|
|
|
|
$text .= $_ unless ($suppress);
|
|
|
|
if (/<\/string/) {
|
|
$suppress = 0;
|
|
}
|
|
if (/<\/string-array/) {
|
|
$suppress = 0;
|
|
}
|
|
if (/<\/plurals/) {
|
|
$suppress = 0;
|
|
}
|
|
}
|
|
close(IN);
|
|
|
|
if ($changes) {
|
|
open(OUT, ">$match");
|
|
print OUT $text;
|
|
close(OUT);
|
|
} else {
|
|
print "(no changes)\n";
|
|
}
|
|
}
|