source: git/lib/launchpad-merge-po

main
Last change on this file was f573ec0, checked in by Olly Betts <olly@…>, 9 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
RevLine 
[bb51ecd]1#!/usr/bin/perl -w
2use strict;
3
4open O, '<', $ARGV[0] or die $!;
[f2826cd]5if ($ARGV[1] eq '-') {
6 *N = *STDIN;
7} else {
8 open N, '<', $ARGV[1] or die $!;
9}
[bb51ecd]10
11my $fuzzy = 0;
12my $diff = 0;
13my ($o, $n);
14while (1) {
15 $o //= <O>;
16 $n //= <N>;
[e4ff92f4]17 defined $o and $o =~ s/[ \t]+$//;
18 defined $n and $n =~ s/[ \t]+$//;
[bb51ecd]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
[e4ff92f4]33 if ($o eq "\n" || $n eq "\n") {
[bb51ecd]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
[4bbe80d]44 if (substr($o, 0, 3) eq '#~ ' && substr($n, 0, 3) ne '#~ ') {
[bb51ecd]45 print ' ' if $diff;
[4bbe80d]46 print "#~ $n";
[bb51ecd]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
[f573ec0]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
[e4ff92f4]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
[bb51ecd]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.