File: check_lang_files.php

package info (click to toggle)
phpldapadmin 0.9.5-3sarge3
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 3,052 kB
  • ctags: 2,526
  • sloc: php: 21,258; sh: 262; makefile: 132; xml: 42
file content (79 lines) | stat: -rw-r--r-- 2,420 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/check_lang_files.php,v 1.9 2004/05/23 21:53:08 i18phpldapadmin Exp $
?>
<?php
// phpldapadmin/check_lang_files.php, $Revision: 1.9 $

echo "<html><head><title>phpldapadmin - check of translation</title></head><body>";

include realpath( './lang/en.php' );
$english_lang = $lang;
unset( $lang );
$lang_dir = realpath( './lang/recoded' );
$dir = opendir( $lang_dir );

// First, detect any unused strings from the english language:
echo "<h1>Checking English language file for unused strings</h1>\n";
echo "<ol>\n";
$unused_keys = false;

// special case keys that do not occur hard-coded but are dynamically generated
$ignore_keys['equals'] = 1;
$ignore_keys['starts with'] = 1;
$ignore_keys['ends with'] = 1;
$ignore_keys['sounds like'] = 1;
$ignore_keys['contains'] = 1;
foreach( $english_lang as $key => $string ) {
    if( isset( $ignore_keys[$key] ) )
        continue;
    $grep_cmd = "grep -r \"lang\[['\\\"]$key\" *.php templates/";
    $used = `$grep_cmd`;
    if( ! $used ) {
        $unused_keys = true;
        echo "<li>Unused English key: <tt>$key</tt> <br />&nbsp;&nbsp;&nbsp;&nbsp;(<small><tt>" . htmlspecialchars( $grep_cmd ) . "</tt></small>)</li>\n";
        flush();
    }
}
if( false === $unused_keys )
    echo "No unused English strings.";
echo "</ol>\n";

echo "<h1>Incomplete or Erroneous Language Files</h1>\n\n";
echo "<h1><A HREF='?'>check all languages</A></h1>\n";
flush();
while( ( $file = readdir( $dir ) ) !== false ) {
    // skip the devel languages, english, and auto
    if( $file == "zz.php" || $file == "zzz.php" || $file == "auto.php" || $file == "en.php" )
        continue;
    // Sanity check. Is this really a PHP file?
	if( ! preg_match( "/\.php$/", $file ) )
		continue;
	echo "<h2><A HREF='?CHECKLANG=$file'>$file</A></h2>\n";
	echo "<ol>\n";
	unset( $lang );
	$lang = array();
	include realpath( $lang_dir.'/'.$file );
	$has_errors = false;
        if ($CHECKLANG=="" || $file===$CHECKLANG ){
	foreach( $english_lang as $key => $string ) 
		if( ! isset( $lang[ $key ] ) ) {
			$has_errors = true;
			echo "<li>missing entry: <tt>$key</tt></li>\n";
		}
	foreach( $lang as $key => $string )
		if( ! isset( $english_lang[ $key ] ) ){
			$has_errors = true;
			echo "<li>extra entry: <tt>$key</tt></li>\n";
		}
	if( ! $has_errors )
		echo "(No errors)\n";
        }
	echo "</ol>\n";
        
}



echo "</body></html>";

?>