68 lines
1.4 KiB
Perl
Executable File
68 lines
1.4 KiB
Perl
Executable File
#!/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";
|
|
}
|
|
}
|
|
|
|
}
|