source: subversion/applications/editors/potlatch/localise.pl @ 14979

Last change on this file since 14979 was 14904, checked in by richard, 10 years ago

Potlatch 0.11b

  • Property svn:executable set to *
File size: 2.0 KB
Line 
1#!/usr/bin/perl -w
2
3        # Generate localised.yaml file for Potlatch
4
5        use LWP::Simple;
6        use LWP::UserAgent;
7        use HTTP::Request;
8        $ua=LWP::UserAgent->new;
9        $ua->agent("localise.pl");
10       
11        # ----- Get index page 
12
13        $index=get("http://wiki.openstreetmap.org/index.php/Category:Potlatch_translation");
14        die "Couldn't fetch category index" unless defined $index;
15       
16        # ----- Get each page
17       
18        %translations=();
19        while ($index=~/\/wiki\/([^:]+):Potlatch\/Translation/gs) {
20                $lang=lc $1; next if $lang eq 'template';
21                $req=HTTP::Request->new(GET=>"http://wiki.openstreetmap.org/index.php/$lang:Potlatch/Translation");
22                $res=$ua->request($req);
23                if ($res->is_success) { $wiki=$res->content; }
24                                                 else { die "Bugger! ".$res->status_line."\n"; }
25                print "Reading $lang\n";
26                $lang=~s/[\-_](.+)/\-\U$1\E/;   # dialect in uppercase
27                while ($wiki=~/^<td>\s*([^<]+)<\/td><td>\s*([^<]+)<\/td><td>\s*(.+)$/gm) {
28                        $id=$1; $en=$2; $tr=$3;
29                        $id=~s/\s+$//g;
30                        $en=~s/\s+$//g;
31                        $tr=~s/&nbsp;/ /g; $tr=~s/^\s+//;
32                        if ($tr=~/^".+[^"]$/) { $tr.='"'; }
33                        if ($tr=~/[:']/ and $tr!~/"/) { $tr="\"$tr\""; }
34                        $substitute=1;
35                        next if ($id eq '');
36                        next if ($tr eq '...');
37                        while ($tr=~/\%([^%]+)\%/g) { $tr=~s/\%([^%]+)\%/\$$substitute/;
38                                                                                  $substitute++; }
39                        unless (exists $translations{$id}) { $translations{$id}=''; }
40                        $translations{$id}.="    \"$lang\": $tr\n";
41                }
42        }
43
44        # ----- Output translation file
45       
46        print "Writing output file\n";
47        open (OUTFILE,">../../../sites/rails_port/config/potlatch/localised.yaml") or die "Can't open output file: $!\n";
48        print OUTFILE chr(0xEF).chr(0xBB).chr(0xBF);    # utf8 BOM
49        foreach $id (sort keys %translations) {
50                print OUTFILE "$id:\n";
51                print OUTFILE $translations{$id};
52        }
53        close OUTFILE;
54       
55        # Potlatch 'intText' routine needs to:
56        # - replace '\n' with a real line-break
57        # - replace $1 etc. with parameters passed
58
59        # Change /lib/potlatch.rb to read this in as a YAML file
60        # (the parameters at the end will still be passed back via AMF as is,
61        #  so nothing else needs to be changed other than the SWF)
Note: See TracBrowser for help on using the repository browser.