File:  [LON-CAPA] / loncom / localize / localize / synch.pl
Revision 1.7: download - view: text, annotated - select for diffs
Fri Nov 28 02:12:05 2003 UTC (20 years, 5 months ago) by www
Branches: MAIN
CVS tags: version_2_7_X, version_2_7_1, version_2_7_0, version_2_6_X, version_2_6_99_1, version_2_6_99_0, version_2_6_3, version_2_6_2, version_2_6_1, version_2_6_0, version_2_5_X, version_2_5_99_1, version_2_5_99_0, version_2_5_2, version_2_5_1, version_2_5_0, version_2_4_X, version_2_4_99_0, version_2_4_2, version_2_4_1, version_2_4_0, version_2_3_X, version_2_3_99_0, version_2_3_2, version_2_3_1, version_2_3_0, version_2_2_X, version_2_2_99_1, version_2_2_99_0, version_2_2_2, version_2_2_1, version_2_2_0, version_2_1_X, version_2_1_99_3, version_2_1_99_2, version_2_1_99_1, version_2_1_99_0, version_2_1_3, version_2_1_2, version_2_1_1, version_2_1_0, version_2_0_X, version_2_0_99_1, version_2_0_2, version_2_0_1, version_2_0_0, version_1_99_3, version_1_99_2, version_1_99_1_tmcc, version_1_99_1, version_1_99_0_tmcc, version_1_99_0, version_1_3_X, version_1_3_3, version_1_3_2, version_1_3_1, version_1_3_0, version_1_2_X, version_1_2_99_1, version_1_2_99_0, version_1_2_1, version_1_2_0, version_1_1_X, version_1_1_99_5, version_1_1_99_4, version_1_1_99_3, version_1_1_99_2, version_1_1_99_1, version_1_1_99_0, version_1_1_3, version_1_1_2, version_1_1_1, version_1_1_0, version_1_0_99_3, version_1_0_99_2, version_1_0_99_1, HEAD
New optional "numbered" mode, take care of "'" in phrases.

#$numbered=1;

sub readlexicon {
    my $fn=shift;
    open(IN,$fn);
    my %lexicon=();
    my $contents=join('',<IN>);
    close(IN);
    $contents=~s/package Apache\:[^\;]+//;
    $contents=~s/use base[^\;]+//;
    eval($contents.'; %lexicon=%Lexicon;');
    delete $lexicon{'_AUTO'};
    delete $lexicon{'char_encoding'};
    delete $lexicon{'language_code'};
    return %lexicon;
}

sub readnew {
    open(IN,'newphrases.txt');
    my %lexicon='';
    while (my $line=<IN>) {
	chomp($line);
	$lexicon{$line}=$line;
    }
    close(IN);
    return %lexicon;
}

# ==== Main Program

my %master=&readnew();

foreach (<*.pm>) {
    print "Reading: ".$_."\n";
    %master=(%master,&readlexicon($_));
}

# Remove obsolete from synch

open(IN,'removephrases.txt');
while (my $line=<IN>) {
    chomp($line);
    delete $master{$line};
}
close(IN);


foreach my $fn (<*.pm>) {
    print "Synching: ".$fn."\n";
    my %lang=&readlexicon($fn);
    system ("cp $fn $fn.original");
    open(IN,$fn.'.original');
    open(OUT,'>'.$fn);
    my $found=0;
    while (<IN>) {
	if ($_=~/\#\s*SYNCMARKER/) { $found=1; last; } 
	print OUT $_;
    }
    if ($found) {
	$i=0;
	print OUT "\n\#SYNC ".localtime()."\n";
	foreach my $key (sort keys %master) {
	    unless ($key) { next; }
	    unless ($lang{$key}) {
		my $comment='';
		my $copytrans=$key;
		foreach (reverse sort keys %lang) {
		    $copytrans=~s/$_/$lang{$_}/gsi;
		}
		if (lc($copytrans) ne lc($key)) {
		    $comment='# '.$copytrans;
                }
		if ($numbered) {
		    $i++;
		    $num=' ('.$i.')';
		} else {
		    $num='';
		}
		if ($key=~/\'/) {
		    $del='"';
		} else {
		    $del="'";
		}
		print OUT (<<ENDNEW);
   $del$key$del
=> $del$key$num$del,
$comment
ENDNEW
	    }
	}

	print OUT "\n\#SYNCMARKER\n";
	foreach (<IN>) {
	    print OUT $_;
	}
    }
    close (IN);
    close (OUT);
}

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>