Raw File
#!/usr/bin/perl

use strict;
use JSON;

my $tr = {
    portal  => 'lemonldap-ng-portal/site/htdocs/static/languages',
    manager => 'lemonldap-ng-manager/site/htdocs/static/languages',
    mail    => 'lemonldap-ng-portal/site/templates/common/mail',
};
my @order = (qw(portal mail manager));

foreach my $target (@order) {
    opendir my $dir, $tr->{$target};
    my @langs =
      map { s/\.json$//; $_ }
      grep { /\.json$/ and $_ !~ /^(?:fr|en)\.json$/ } readdir($dir);
    close $dir;
    my ( $file, $ref, $res );

    # Get reference file
    {
        local $/ = undef;
        open $file, '<', "$tr->{$target}/en.json" or die $!;
        $ref = JSON::from_json(<$file>);
    }
    my @keys = keys %$ref;
    foreach my $lang (@langs) {
        my $content;
        {
            local $/ = undef;
            open $file, '<', "$tr->{$target}/$lang.json" or die $!;
            $content = JSON::from_json(<$file>);
        }
        my $good;
        foreach (@keys) {
            $good++ if $content->{$_} ne $ref->{$_};
        }
        $res->{$lang} = int( $good * 100 / @keys );
    }
    print "# $target\n";
    foreach my $lang ( sort { $res->{$b} <=> $res->{$a} } keys %$res ) {
        printf "  %-5s: %3d%\n", $lang, $res->{$lang};
    }
}
back to top