#! /usr/bin/perl -w # Copyright (C) 2017 The Qt Company Ltd. # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 use strict; my @groups = ( "qtbase", "qtdeclarative", "qtmultimedia", "qtquickcontrols2", "qtlocation", "qtconnectivity", "qtwebsockets", "qtserialport", "qtwebengine", # "qtdocgallery", "qtpim", "qtsystems", "assistant", "designer", "linguist", "qt_help" ); my %scores = (); my %langs = (); my $files = join("\n", <*_??.ts>); my $res = `xmlpatterns -param files=\"$files\" check-ts.xq`; for my $i (split(/ /, $res)) { $i =~ /^([^.]+)\.ts:(.*)$/; my ($fn, $pc) = ($1, $2); for my $g (@groups) { if ($fn =~ /^${g}_((.._)?..)$/) { my $lang = $1; $scores{$g}{$lang} = $pc; $langs{$lang} = 1; last; } } } my $code = ""; print "L10n "; for my $g (@groups) { print " ".$g." "; } print "\n"; for my $lang (sort(keys(%langs))) { printf "%-5s ", $lang; my $qt = 1; my $rest = 1; my $line = ""; for my $g (@groups) { my $pc = $scores{$g}{$lang}; $pc = "0" if !defined($pc); if (int($pc) < 98 or !$qt) { if ($g eq "qt") { $qt = 0; } else { $rest = 0; } } else { $line .= " ".$g."_".$lang.".ts"; } printf " %-".(length($g)+1)."s", $pc; } if ($qt) { $code .= " \\\n ".$line; if (!$rest) { print " (partial)"; } } else { print " (excluded)"; } print "\n"; } my $fn = "translations.pro"; my $nfn = $fn."new"; open IN, $fn or die; open OUT, ">".$nfn or die; while (1) { $_ = ; last if (/^TRANSLATIONS /); print OUT $_; } while ($_ =~ /\\\n$/) { $_ = ; } print OUT "TRANSLATIONS =".$code."\n"; while () { print OUT $_; } close OUT; close IN; rename $nfn, $fn;