Skip to content

Commit

Permalink
New script to update translator-credits.
Browse files Browse the repository at this point in the history
See POD for usage instructions.
  • Loading branch information
jralls committed Dec 9, 2024
1 parent 5483f21 commit 0ae6a20
Showing 1 changed file with 71 additions and 0 deletions.
71 changes: 71 additions & 0 deletions util/extract-translators.pl
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
use strict;
use warnings;
use utf8;

my $start = 0;
my $credits = 0;
my $extract_re = qr{^# ([-[:alpha:]\d_., ]+)(?: [(<].*[)>])*, ([-\d, ]+)};
my $credits_re = qr(^msgid "translator-credits"$);
my %translators = ();
my $infile = shift;
my $outfile = $infile . ".new";
open(my $INFILE, "<", $infile);
open(my $OUTFILE, ">", $outfile);

while (<$INFILE>) {
if ($_ =~ $extract_re && $start < 1) {
$start++;
}
if ($start == 1 && $_ !~ $extract_re) {
$start++;
}

if ($start == 1) {
my $input = $_;
utf8::decode($input);
$input =~ $extract_re;
unless ($1) {
print $OUTFILE $_;
next;
}
my $name = $1;
utf8::encode($name);
if (exists ($translators{$name})) {
push @{$translators{$name}}, split(", ", $2);
} else {
my @years = split(", ", $2);
$translators{$name} = \@years;
}
}
if ($_ =~ $credits_re && %translators) {
my $translators_str;
$credits++;
print $OUTFILE $_;
print $OUTFILE "msgstr \"\"\n";
foreach my $translator (sort(keys(%translators))) {
my $dates = join(", ", sort(@{$translators{$translator}}));
$translators_str .= "$translator: $dates; ";
}
if (defined $translators_str) {
print $OUTFILE "\"$_;\"\n" for map substr($_, 0, 72), $translators_str =~ m[(.{1,72})(?:; |$)]g;
print $OUTFILE "\"\n\n";
}
}
$credits++ if ($credits && substr($_, 0, 1) eq "#");
next if ($credits == 1);
print $OUTFILE $_
}
close($INFILE);
close($OUTFILE);
rename $outfile, $infile;
=begin
perl extract-translators.pl filename
Finds comments at the beginning of the po file of the form
Name email-address? number
Where email-address is optional and number is one or more four-digit years separated by commas or hyphens. The name and years are extracted and replace the msgstr for msgid "translator-credits".
Run this command in a shell for loop:
for i in po/*.po; do perl extract-translators.pl $i; done
Then review the changes and commit them.
=end

0 comments on commit 0ae6a20

Please sign in to comment.