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