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";
 | 
						|
	}
 | 
						|
    }
 | 
						|
 | 
						|
}
 |