bd16a67d7853f921589e18367b963897a07f1240
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 Update translation status

Peter Palfrader authored 18 years ago

32) sub translation_get_masterrevision_file($$) {
33) 	my ($dir, $page) = @_;
34) 	my $master = getMetadata("$dir/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() {
Peter Palfrader Update translation status

Peter Palfrader authored 18 years ago

44) 	translation_get_masterrevision_file('.', $WML_SRC_FILENAME);
Peter Palfrader Add translation-status page

Peter Palfrader authored 18 years ago

45) };
Peter Palfrader Move website to wml

Peter Palfrader authored 18 years ago

46) 
Peter Palfrader Update translation status

Peter Palfrader authored 18 years ago

47) sub translation_get_basedonrevision_langfile($$$) {
48) 	my ($dir, $lang, $page) = @_;
49) 	my $translation = getMetadata("$dir/$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 Update translation status

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 Update translation status

Peter Palfrader authored 18 years ago

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

Peter Palfrader authored 18 years ago

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)