new script to detect missing language keys
git-svn-id: http://piwigo.org/svn/trunk@5286 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
parent
68a4d1dd9b
commit
658d979d7e
1 changed files with 137 additions and 0 deletions
137
tools/missing_keys.pl
Normal file
137
tools/missing_keys.pl
Normal file
|
|
@ -0,0 +1,137 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use File::Find;
|
||||
|
||||
our %used_keys = ();
|
||||
our %registered_keys = ();
|
||||
|
||||
my $piwigo_dir = '/home/pierrick/public_html/piwigo/dev/trunk';
|
||||
my $type = $ARGV[0]; # common, admin, install, upgrade
|
||||
|
||||
find(\&used_keys, $piwigo_dir);
|
||||
load_registered_keys($type);
|
||||
|
||||
foreach my $key (sort keys %used_keys) {
|
||||
# print "{".$key."}", ' is used', "\n";
|
||||
|
||||
if (not defined $registered_keys{$key}) {
|
||||
print "{".$key."}", ' is missing', "\n";
|
||||
# print '$lang[\''.$key.'\'] = \''.$key.'\';', "\n";
|
||||
}
|
||||
}
|
||||
|
||||
# foreach my $key (sort keys %registered_keys) {
|
||||
# if (not defined $used_keys{$key}) {
|
||||
# print "{".$key."}", ' is not used anywhere', "\n";
|
||||
# }
|
||||
# }
|
||||
|
||||
sub used_keys {
|
||||
if ($File::Find::name !~ m/(tpl|php)$/) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ($File::Find::name =~ m{/(plugins|language)/}) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ('upgrade' eq $type) {
|
||||
if ($File::Find::name !~ m{upgrade\.(tpl|php)$}) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if ('install' eq $type) {
|
||||
if ($File::Find::name =~ m{upgrade\.(tpl|php)$}) {
|
||||
return 0;
|
||||
}
|
||||
if ($File::Find::name !~ m{/install(\.tpl|\.php|/)}) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if ('admin' eq $type) {
|
||||
if ($File::Find::name =~ m{upgrade\.(tpl|php)$}) {
|
||||
return 0;
|
||||
}
|
||||
if ($File::Find::name =~ m{/install(\.tpl|\.php|/)}) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
my $is_admin = 0;
|
||||
|
||||
if ($File::Find::name =~ m{themes/default/template/mail}) {
|
||||
$is_admin = 1;
|
||||
}
|
||||
if ($File::Find::name =~ m{/admin/}) {
|
||||
$is_admin = 1;
|
||||
}
|
||||
|
||||
if (not $is_admin) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if ('common' eq $type) {
|
||||
if ($File::Find::name =~ m{upgrade\.(tpl|php)$}) {
|
||||
return 0;
|
||||
}
|
||||
if ($File::Find::name =~ m{/install(\.tpl|\.php|/)}) {
|
||||
return 0;
|
||||
}
|
||||
if ($File::Find::name =~ m{/admin/} or $File::Find::name =~ m{themes/default/template/mail}) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (-f) {
|
||||
open(my $fhi, '<', $File::Find::name);
|
||||
while (<$fhi>) {
|
||||
if ($File::Find::name =~ m/tpl$/) {
|
||||
while (m/\{(['"])(.+?)\1\|\@translate/g) {
|
||||
$used_keys{$2}++;
|
||||
}
|
||||
}
|
||||
|
||||
if ($File::Find::name =~ m/php$/) {
|
||||
while (m/l10n \s* \( \s* (['"]) (.+?) \1 \s* \)/xg) {
|
||||
$used_keys{$2}++;
|
||||
}
|
||||
|
||||
while (m/l10n_args \s* \( \s* (['"]) (.+?) \1 \s* ,/xg) {
|
||||
$used_keys{$2}++;
|
||||
}
|
||||
|
||||
while (m/l10n_dec \s* \( \s* (['"]) (.+?) \1 \s* ,\s* (['"]) (.+?) \3 \s* ,/xg) {
|
||||
$used_keys{$2}++;
|
||||
$used_keys{$4}++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub load_registered_keys {
|
||||
my ($type) = @_;
|
||||
|
||||
my %files_for_type = (
|
||||
common => [qw/common/],
|
||||
admin => [qw/common admin/],
|
||||
install => [qw/common admin install/],
|
||||
upgrade => [qw/common admin install upgrade/],
|
||||
);
|
||||
|
||||
foreach my $file_code (@{$files_for_type{$type}}) {
|
||||
my $filepath = $piwigo_dir.'/language/en_UK/'.$file_code.'.lang.php';
|
||||
|
||||
open(my $fhi, '<', $filepath);
|
||||
while (<$fhi>) {
|
||||
if (m/\$lang\[ \s* (['"]) (.+?) \1 \s* \]/x) {
|
||||
$registered_keys{$2}++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue