forked from movabletype/movabletype
-
Notifications
You must be signed in to change notification settings - Fork 0
/
wrap.pl
97 lines (83 loc) · 1.98 KB
/
wrap.pl
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
#! /usr/bin/perl -w
# Movable Type (r) Open Source (C) 2005-2011 Six Apart, Ltd.
# This program is distributed under the terms of the
# GNU General Public License, version 2.
#
# $Id$
my $wc =0; # New: count the number of words left to translate!
BEGIN {
my $LANG = $ARGV[0];
shift @ARGV unless (-e $LANG);
print <<EOF;
# Movable Type (r) Open Source (C) 2005-2011 Six Apart, Ltd.
# This program is distributed under the terms of the
# GNU General Public License, version 2.
#
#
# \$Id:\$
package MT::L10N::$LANG;
use strict;
use utf8;
use MT::L10N;
use MT::L10N::en_us;
use vars qw( \@ISA \%Lexicon );
\@ISA = qw( MT::L10N::en_us );
## The following is the translation table.
\%Lexicon = (
EOF
}
my $tmpl;
my $plugin = q();
my %conv;
my %pgconv;
while (<>) {
if (/^\s*##\s*(.*)$/) {
$tmpl = $1;
if ( $tmpl =~ m!^plugins!
|| $tmpl =~ m!^addons! ) {
my ($pg) = $tmpl =~ m!^(?:plugins|addons)/(.+?)/.+!;
%pgconv = () unless $pg eq $plugin;
$plugin = $pg;
}
else {
$plugin = q();
}
my $l = $_;
last if eof();
$_ = <>;
next if ($_ =~ /^\s*$/);
print $l;
}
if (/^[#\s]+['|q{](.+)['|}] => ['|q{](.*)['|}],($|\s*\#)/) { # Now also reads empty/to be translated strings
my $base = $1;
my $trans = $2;
if ( !exists($conv{$base}) && !exists($pgconv{$base}) ) {
print $_;
$words = wordcount($base);
$wc += $words unless ($trans);
}
if ( $plugin ) {
$pgconv{$base} = 1;
}
else {
$conv{$base} = 1;
}
}
else{
print $_;
}
}
END {
print <<EOF
);
## New words: $wc
1;
EOF
}
sub wordcount {
my $l = shift;
$l =~ s/[`!"$%^&*()_+={[}\];:@~#,.<>?\\\/]/ /g; #`
$l =~ s/\ ([ei])\ ([ge])\ / $1.$2./g;
my @words = split(/\W*\s+\W*/, $l); # see the Camel book p.39
return ($#words + 1);
}