blob: 568ccdcde68adad481ddc10ba4aaaa136d4f48e6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
#!/usr/bin/env perl
use strict;
use warnings;
# Given a translation of the Empty Homes version of the FixMyStreet .po file,
# fix it all up to go direct from FixMyStreet -> EH translation.
use POSIX;
use FindBin;
use lib "$FindBin::Bin/../../perllib";
use PoChange;
chdir("$FindBin::Bin/../../locale");
# First read in translation and match up.
open(INPO, 'cy_GB.UTF-8/LC_MESSAGES/EmptyHomes.po') or die $!;
my $state = 'start';
my $msgid = '';
my $fuzzy = 0;
my $msgstr;
my %lookup;
while (<INPO>) {
if (m/^#, fuzzy/) {
$fuzzy = 1;
} elsif (m/^#/) {
# comment or blank line
} elsif (m/^\s+$/) {
# blank line separates translations
$msgid =~ s/"\n"//g;
$lookup{$msgid} = [ $msgstr, $fuzzy ];
$state = 'msgid';
$msgid = "";
$fuzzy = 0;
} elsif ($state eq 'msgid' && (m/^msgstr "/ || m/^msgstr\[0\] "/)) {
$msgstr = $_;
$state = 'msgstr';
} elsif ($state eq 'msgstr') {
$msgstr .= $_;
} elsif ($state eq 'msgid') {
$msgid .= $_;
}
}
$lookup{$msgid} = [ $msgstr, $fuzzy ];
close INPO;
mkdir("en_GB.UTF-8");
mkdir("en_GB.UTF-8/LC_MESSAGES");
mkdir("cy_GB.UTF-8");
mkdir("cy_GB.UTF-8/LC_MESSAGES");
open(MAINPO, 'FixMyStreet.po') or die;
open(OUTPO, ">cy_GB.UTF-8/LC_MESSAGES/FixMyStreet-EmptyHomes.po") or die;
print OUTPO "# AUTOMATICALLY GENERATED by make_welsh_po, do not edit\n\n";
my $buffer = "";
my $start = 0;
while(<MAINPO>) {
if (!$start) {
s/#, fuzzy/#/;
}
if (m/"Last-Translator: FULL NAME/) {
$_ = '"Last-Translator: mysociety/bin/emptyhomes/make_welsh_po\\n"'."\n";
}
if (m/"PO-Revision-Date: YEAR-MO-DA/) {
my $time = POSIX::strftime("%Y-%m-%d %H:%M%z", localtime(time()));
$_ = '"PO-Revision-Date: '.$time.'\\n"'."\n";
}
if (m/"Language-Team: LANGUAGE/) {
$_ = '"Language-Team: mySociety\\n"'."\n";
}
if (m/"Plural-Forms: nplurals=/) {
$_ = '"Plural-Forms: nplurals=2; plural=n != 1;\\n"'."\n";
}
if (m/^#/) {
# comment or blank line
print OUTPO $_;
} elsif (m/^\s+$/) {
# blank line
$start = 1;
$buffer = "";
print OUTPO $_;
} elsif ($start && (m/^msgstr "/ || m/^msgstr\[0\] "/)) {
# start of translated text - translate English into Empty Homes language
my $new_buffer = PoChange::fixmystreet_to_reportemptyhomes($buffer);
$new_buffer =~ s/"\n"//g;
if ($lookup{$new_buffer} && $lookup{$new_buffer}[1]) {
print OUTPO "#, fuzzy\n";
}
print OUTPO $buffer;
if ($lookup{$new_buffer}) {
print OUTPO $lookup{$new_buffer}[0];
} else {
if (m/^msgstr\[0\] ""/) {
$new_buffer =~ s/^msgid "/msgstr[0] "/m;
$new_buffer =~ s/^msgid_plural "/msgstr[1] "/m;
$_ = <MAINPO>; # skip untranslated plural
} else {
$new_buffer =~ s/^msgid "/msgstr "/;
}
print OUTPO $new_buffer;
}
$buffer = "";
} elsif (!$start) {
print OUTPO $_;
} else {
$buffer .= $_;
}
}
|