<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">#!/usr/bin/perl

use strict;
use Locale::Language;
use Locale::Country;

my @lang;

print "{| border='1' \n |Language||Count||Translated||Translation finished||Translation unfinished||Untranslated||Percentage \n |- \n";

for my $i (&lt;i18n/qgis_*.ts&gt;) {
        my ($langcode) = $i =~ /i18n\/qgis_(.*).ts/;

        my $name;
        if($langcode =~ /(.*)_(.*)/) {
                my $lang = code2language(lc $1);
                my $country = code2country(lc $2);
                $name = "$lang ($country)";
        } else {
                $name = code2language(lc $langcode);
        }


        open F, "lrelease $i|";

        my($translations,$finished,$unfinished,$untranslated);

        while(&lt;F&gt;) {
                if(/Generated (\d+) translation\(s\) \((\d+) finished and (\d+) unfinished\)/) {
                        $translations=$1;
                        $finished=$2;
                        $unfinished=$3;
                } elsif(/Ignored (\d+) untranslated source text\(s\)/) {
                        $untranslated=$1;
                }
        }

        close F;

        my $n = $translations+$untranslated;

        push @lang, { name=&gt;$name, n=&gt;$n, translations=&gt;$translations, finished=&gt;$finished, unfinished=&gt;$unfinished, untranslated=&gt;$untranslated, percentage=&gt;($n-$untranslated)/$n*100 };
}


for my $l (sort { $b-&gt;{percentage} &lt;=&gt; $a-&gt;{percentage} } @lang) {
        print "|", $l-&gt;{name}, "||", join("||", $l-&gt;{n}, $l-&gt;{translations}, $l-&gt;{finished}, $l-&gt;{unfinished}, $l-&gt;{untranslated}, sprintf("%.1f", $l-&gt;{percentage}) ), "\n", "|-\n";
}
print "|}","\n";
</pre></body></html>