bd12e4c33823172ba6e683da21c6897fb9cd4be9
Peter Palfrader Move website to wml

Peter Palfrader authored 18 years ago

1) #!/usr/bin/wml
2) 
3) <:
4) 
5) sub getMetadata($) {
6) 	my ($file) = @_;
7) 
Peter Palfrader Make translation status mor...

Peter Palfrader authored 18 years ago

8) 	die ("File $file is not a regular file") unless (-f $file);
9) 
Peter Palfrader Move website to wml

Peter Palfrader authored 18 years ago

10) 	open(F, "$file") or die ("Cannot open $file: $!\n");
11) 	my $found_metadata = 0;
12) 	while (<F>) {
13) 		chomp;
14) 		if ($_ eq '## translation metadata') {
15) 			$found_metadata = 1;
16) 			last;
17) 		};
18) 	};
19) 	die ("Did not find translation metadata in $file") unless $found_metadata;
20) 	my %data;
21) 	while (<F>) {
22) 		chomp;
23) 		if (/^#\s*(\S*):\s*(.*?)\s*$/) {
24) 			$data{$1} = $2;
25) 		} else {
26) 			last;
27) 		};
28) 	};
Peter Palfrader Make translation status mor...

Peter Palfrader authored 18 years ago

29) 	return \%data;
Peter Palfrader Move website to wml

Peter Palfrader authored 18 years ago

30) };
31) 
Peter Palfrader Add translation-status page

Peter Palfrader authored 18 years ago

32) sub translation_get_masterrevision_file($) {
33) 	my ($page) = @_;
Peter Palfrader Make translation status mor...

Peter Palfrader authored 18 years ago

34) 	my $master = getMetadata("en/$page");
Peter Palfrader Move website to wml

Peter Palfrader authored 18 years ago

35) 
Peter Palfrader Make translation status mor...

Peter Palfrader authored 18 years ago

36) 	die ("Cannot find 'Revision' header in master's translation metadata of en/$page") unless exists $master->{'Revision'};
Peter Palfrader Move website to wml

Peter Palfrader authored 18 years ago

37) 
Peter Palfrader Make translation status mor...

Peter Palfrader authored 18 years ago

38) 	my ($rev) = $master->{'Revision'} =~ m/([0-9.]+)/;
Peter Palfrader Revert mistaken commit

Peter Palfrader authored 18 years ago

39) 	if ($rev eq '') { $rev = '(Revision not a valid number)'; };
Peter Palfrader Move website to wml

Peter Palfrader authored 18 years ago

40) 
41) 	return $rev;
42) };
Peter Palfrader Add translation-status page

Peter Palfrader authored 18 years ago

43) sub translation_get_masterrevision() {
44) 	translation_get_masterrevision_file($WML_SRC_FILENAME);
45) };
Peter Palfrader Move website to wml

Peter Palfrader authored 18 years ago

46) 
Peter Palfrader Add translation-status page

Peter Palfrader authored 18 years ago

47) sub translation_get_basedonrevision_langfile($$) {
48) 	my ($lang, $page) = @_;
Peter Palfrader Make translation status mor...

Peter Palfrader authored 18 years ago

49) 	my $translation = getMetadata("$lang/$page");
Peter Palfrader Move website to wml

Peter Palfrader authored 18 years ago

50) 
Peter Palfrader Make translation status mor...

Peter Palfrader authored 18 years ago

51) 	die ("Cannot find 'Based-On-Revision' header in translations's translation metadata of $lang/$page") unless exists $translation->{'Based-On-Revision'};
Peter Palfrader Move website to wml

Peter Palfrader authored 18 years ago

52) 
Peter Palfrader Make translation status mor...

Peter Palfrader authored 18 years ago

53) 	my ($rev) = $translation->{'Based-On-Revision'};
Peter Palfrader Move website to wml

Peter Palfrader authored 18 years ago

54) 	if ($rev eq '') { $rev = '(unknown)'; };
55) 
56) 	return $rev
57) };
Peter Palfrader Add translation-status page

Peter Palfrader authored 18 years ago

58) sub translation_get_basedonrevision() {
Peter Palfrader Make translation status mor...

Peter Palfrader authored 18 years ago

59) 	translation_get_basedonrevision_langfile("$(LANG)", $WML_SRC_FILENAME);
Peter Palfrader Add translation-status page

Peter Palfrader authored 18 years ago

60) };
Peter Palfrader Move website to wml

Peter Palfrader authored 18 years ago

61) 
62) 
63) sub translation_current() {
64) 	return (translation_get_masterrevision() eq translation_get_basedonrevision());
65) };
66) 
Peter Palfrader Do not mark missing transla...

Peter Palfrader authored 18 years ago

67) sub file_is_obsolete($$) {
68) 	my ($lang, $page) = @_;
Peter Palfrader Make translation status mor...

Peter Palfrader authored 18 years ago

69) 	my $translation = getMetadata("$lang/$page");
70) 	return (exists $translation->{'Status'} && ($translation->{'Status'} eq 'obsolete'))
Peter Palfrader Do not mark missing transla...

Peter Palfrader authored 18 years ago

71) };
72) 
Peter Palfrader More languages in the top r...

Peter Palfrader authored 18 years ago

73) sub list_translations() {
74)   my @links = ();
75)   my $page = $WML_SRC_FILENAME;
76)   my $numlangs = 0;
77)   $page =~ s/\.wml//;
78)   for my $dir (sort {$LANGUAGES{$a} cmp $LANGUAGES{$b}} @LANGUAGES) {
79)     if (-e "$dir/$WML_SRC_FILENAME") {
80)       if ($dir ne '$(LANG)') {
81)         push @links, sprintf('<a href="%s.html.%s">%s</a>', $page, $dir, $LANGUAGES{$dir});
82)       };
83)     };
84)   };
85)   return join(', ', @links);
86) };
87) 
88) sub has_translations() {
89)   return list_translations() ne '';
90) };
91)