moving to core/
[debian/openrocket] / core / scripts / verifyTranslationKeys.pl
diff --git a/core/scripts/verifyTranslationKeys.pl b/core/scripts/verifyTranslationKeys.pl
new file mode 100755 (executable)
index 0000000..f084f06
--- /dev/null
@@ -0,0 +1,67 @@
+#!/usr/bin/perl
+
+#
+# Verify that keys used in Java files are present in the translation file.
+# 
+# Usage:
+#    verifyTranslationKeys.pl <property file> <Java files...>
+#
+# For example:
+#    find src/ -name "*.java" -exec ./scripts/verifyTranslationKeys.pl l10n/messages.properties {} +
+#
+
+
+
+# Read the translation file
+my %keys;
+print "Reading translation keys...\n";
+while ($str = <>) {
+    if ($ARGV!~/\.properties/) {
+       last;
+    }
+
+    if ($str=~/^\s*($|[#!])/) {
+       next;
+    }
+
+    if ($str=~/^([a-zA-Z0-9._-]+)\s*=/) {
+       $keys{$1} = 1;
+    } else {
+       print "ERROR:  Invalid line in $ARGV: $str";
+    }
+}
+
+
+# Read Java files
+my $oldFile = $ARGV;
+my $class="";
+print "Reading Java files...\n";
+while ($str = <>) {
+
+    # Check for new file
+    if ($ARGV != $oldFile) {
+       $class = "";
+    }
+    
+    # Check for irregular translator definition (exclude /l10n/ and /startup/)
+    if ($str =~ / Translator / &&
+       $str !~ /private static final Translator trans = Application.getTranslator\(\);/ &&
+       $ARGV !~ /\/(l10n|startup)\//) {
+       print "ERROR:  Unusual translator usage in file $ARGV: $str";
+    }
+
+    # Check for new class definition
+    if ($str =~ /^[\sa-z]*class ([a-zA-Z0-9]+) /) {
+       $class = $1;
+    }
+
+    # Check for translator usage
+    if ($str =~ /trans\.get\(\"([^\"]+)\"\)/) {
+       $key = $1;
+       if (!(exists $keys{$key}) && 
+           !(exists $keys{$class . "." . $key})) {
+           print "ERROR:  Missing translation for '$key' in file $ARGV\n";
+       }
+    }
+
+}