source: git/lib/launchpad-merge-po @ 9e8ff8e

RELEASE/1.2debug-cidebug-ci-sanitisersstereowalls-data
Last change on this file since 9e8ff8e was f573ec0, checked in by Olly Betts <olly@…>, 7 years ago

Merge translators email address

If the name matches but launchpad has "Unknown" for the email address,
use the current version.

  • Property mode set to 100755
File size: 1.8 KB
Line 
1#!/usr/bin/perl -w
2use strict;
3
4open O, '<', $ARGV[0] or die $!;
5if ($ARGV[1] eq '-') {
6    *N = *STDIN;
7} else {
8    open N, '<', $ARGV[1] or die $!;
9}
10
11my $fuzzy = 0;
12my $diff = 0;
13my ($o, $n);
14while (1) {
15    $o //= <O>;
16    $n //= <N>;
17    defined $o and $o =~ s/[ \t]+$//;
18    defined $n and $n =~ s/[ \t]+$//;
19    if (!defined $n) {
20        last unless defined $o;
21        print '-' if $diff;
22        print $o;
23        $o = undef;
24        next;
25    }
26    if (!defined $o) {
27        print '+' if $diff;
28        print $n;
29        $n = undef;
30        next;
31    }
32
33    if ($o eq "\n" || $n eq "\n") {
34        $fuzzy = 0;
35    }
36
37    if ($o eq $n) {
38        print ' ' if $diff;
39        print $n;
40        $n = $o = undef;
41        next;
42    }
43
44    if (substr($o, 0, 3) eq '#~ ' && substr($n, 0, 3) ne '#~ ') {
45        print ' ' if $diff;
46        print "#~ $n";
47        $n = $o = undef;
48        next;
49    }
50
51    if ($o =~ /^("PO(?:-Revision|T-Creation)-Date: \d+-\d+-\d+ \d+:\d+):\d\d (.*\n)$/ &&
52        $n eq "$1:00 $2") {
53        print ' ' if $diff;
54        print $o;
55        $n = $o = undef;
56        next;
57    }
58
59    if ($o =~ /^"PO-Revision-Date:/ && $n =~ /^"PO-Revision-Date:/) {
60        print ' ' if $diff;
61        print $o;
62        $n = $o = undef;
63        next;
64    }
65
66    if ($o =~ /(^"Last-Translator: .*<).*?(>.*\n)/ && $n eq "$1Unknown$2") {
67        print ' ' if $diff;
68        print $o;
69        $n = $o = undef;
70        next;
71    }
72
73    if ($o eq "\n") {
74        print '+' if $diff;
75        print $n;
76        $n = undef;
77        next;
78    }
79
80    if ($n eq "\n") {
81        print '-$o' if $diff;
82        $o = undef;
83        next;
84    }
85
86    if ($o eq "#, fuzzy\n") {
87        print ' ' if $diff;
88        print $o;
89        $o = undef;
90        $fuzzy = 1;
91        next;
92    }
93
94    my $tmp = $o;
95    if ($tmp =~ s/, fuzzy// && $n eq $tmp) {
96        print ' ' if $diff;
97        print $o;
98        $n = $o = undef;
99        $fuzzy = 1;
100        next;
101    }
102
103    if ($fuzzy && $o =~ /^(?:#~ )?msgstr / && $n eq "msgstr \"\"\n") {
104        print ' ' if $diff;
105        print $o;
106        $n = $o = undef;
107        $fuzzy = 0;
108        next;
109    }
110
111    print "-$o" if $diff;
112    print '+' if $diff;
113    print $n;
114    $n = $o = undef;
115}
Note: See TracBrowser for help on using the repository browser.