## translation metadata # Revision: $Revision: 15712 $ # Note to translators: # translating this page is probably not a good idea, and it never was intended to be translated. # it contains lots of programming logic, which you would have to duplicate, and it's probably # useful only to other translators which most likely will know a bit of english. # # Thanks for your hard work, improve the other pages instead. :) -- weasel #include "head.wmi" TITLE="Tor: Translation status" CHARSET="UTF-8" #use "functions.wmi"

Tor: Translation status


<: sub do_status(\%$$) { my $dir = $_[1]; my $may_miss_dir = $_[2]; my %files; my @warnings; for my $lang (@LANGUAGES) { opendir(DIR, "$dir/$lang") or $may_miss_dir or die ("Cannot opendir $dir/$lang: $!\n"); my @files = grep { $_ ne '.' && $_ ne '..' && $_ !~ /tor-manual/i && $_ !~ /translation-status/i && $_ =~ m/^[^.]/ && -f "$dir/$lang/$_"} readdir(DIR); closedir DIR; for my $file (@files) { $files{$lang}->{$file}->{'all'} = getMetadata("$dir/$lang/$file"); if ($lang eq 'en') { $files{$lang}->{$file}->{'rev'} = translation_get_masterrevision_file($dir, $file); } else { $files{$lang}->{$file}->{'based'} = translation_get_basedonrevision_langfile($dir, $lang, $file); }; }; }; my %priorities; for my $file (keys %{$files{'en'}}) { my $p = $files{'en'}->{$file}->{'all'}->{'Translation-Priority'}; if (defined $p) { $priorities{$p} = 1; }; }; my @priorities = sort {$a cmp $b} keys %priorities; push @priorities, 'none'; my $HTMLBASE = (defined $ENV{'HTMLBASE'} ? $ENV{'HTMLBASE'} : 'https://www.torproject.org/') . ($dir eq '.' ? '' : $dir.'/'); for my $priority (@priorities) { for my $file (sort {$a cmp $b} keys %{$files{'en'}}) { my $file_priority = $files{'en'}->{$file}->{'all'}->{'Translation-Priority'}; next if (defined $file_priority && $priority ne $file_priority); next if (!defined $file_priority && $priority ne 'none'); my $path = ($dir eq '.' ? '' : $dir.'/') . $file; my $obs = file_is_obsolete($dir, 'en', $file); my $validatorlink = ''; my $htmlfile = $file; if ($htmlfile =~ s/\.wml/.html/) { $validatorlink = sprintf '
validator', $HTMLBASE, $htmlfile; }; my $cell_path = sprintf '%s', $path; my $cell_en = sprintf 'Revision %s%s
HEAD %s', ($obs ? ' bgcolor="#D3D3D3"' : ''), $files{'en'}->{$file}->{'rev'}, ($obs ? ' (obsolete)' :''), ($dir eq '.' ? '' : $dir.'/'), $file, $validatorlink; ${$_[0]}{$priority}->{$path}->{'data'} = $cell_path . $cell_en; ${$_[0]}{$priority}->{$path}->{'urgency'} = 0; for my $lang (@LANGUAGES) { next if $lang eq 'en'; my $color; my $status; #my $path = ($dir eq '.' ? '' : $dir.'/') . $file; if ($validatorlink) { $validatorlink = sprintf '
validator', $HTMLBASE, $htmlfile, $lang; }; if (exists $files{$lang}->{$file}) { my $all_info = ''; for my $key (sort {$a cmp $b} keys %{$files{$lang}->{$file}->{'all'}}) { next if $key eq 'Translation-Priority'; $all_info .= sprintf "%s: %s
", $key, $files{$lang}->{$file}->{'all'}->{$key}; }; my $difflink; if ($files{$lang}->{$file}->{'based'} eq $files{'en'}->{$file}->{'rev'}) { $color='#90EE90'; $status='current'; $difflink=''; } else { $status='not current'; if ($files{$lang}->{$file}->{'based'} ne 'unknown') { $difflink=sprintf '
changes in original', ($dir eq '.' ? '' : $dir.'/'), $file, $files{$lang}->{$file}->{'based'}, $files{'en'}->{$file}->{'rev'}; $color='yellow'; } else { $difflink=''; $color='#FFA500'; }; ${$_[0]}{$priority}->{$path}->{'urgency'} += 1; }; ${$_[0]}{$priority}->{$path}->{'data'} .= sprintf '%s
HEAD
%s %s %s', $color, $status, ($dir eq '.' ? '' : $dir.'/'), $lang, $file, $all_info, $difflink, $validatorlink; } else { #my $path = ($dir eq '.' ? '' : $dir.'/') . $file; $color=(($obs or $priority eq 'none') ? '#90EE90' : 'red'); $status='missing'; ${$_[0]}{$priority}->{$path}->{'data'} .= sprintf '%s', $color, $status; ${$_[0]}{$priority}->{$path}->{'urgency'} += ($obs or $priority eq 'none') ? 0 : 2; }; delete $files{$lang}->{$file}; }; ${$_[0]}{$priority}->{$path}->{'data'} .= $cell_en . $cell_path; }; }; for my $lang (@LANGUAGES) { next if $lang eq 'en'; if (keys %{$files{$lang}} > 0) { # print "

"; print "

"; printf "

Additional files in %s (%s)

\n", $lang, $LANGUAGES{$lang}; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; for my $file (sort {$a cmp $b} keys %{$files{$lang}}) { print ""; printf ""; delete $files{$lang}->{$file}; print "\n"; }; print "
FileBased on Revision
%s", $file; for my $key (sort {$a cmp $b} keys %{$files{$lang}->{$file}->{'all'}}) { printf "%s: %s
", $key, $files{$lang}->{$file}->{'all'}->{$key}; }; printf "
\n\n"; }; }; }; sub sort_and_print(\%) { my %rows = %{$_[0]}; for my $priority (sort {$a cmp $b} keys %rows) { print "

Translation priority: $priority

\n"; print "\n"; print "\n"; print "\n"; printf("\n", $_, $LANGUAGES{$_}) for ('en', grep({ $_ ne 'en' } @LANGUAGES), 'en'); print "\n"; print "\n"; for my $row (sort {$rows{$priority}->{$b}->{'urgency'} <=> $rows{$priority}->{$a}->{'urgency'}} keys %{$rows{$priority}}) { print ""; print $rows{$priority}->{$row}->{'data'}; delete ${$_[0]}{$priority}->{$row}; print "\n\n"; }; print "
File%s (%s)File

\n\n\n"; }; }; # accumulate the table rows, then sort and print them my %table_rows; do_status(%table_rows, '.', 0); do_status(%table_rows, 'docs', 1); do_status(%table_rows, 'torbrowser', 1); do_status(%table_rows, 'tordnsel', 1); do_status(%table_rows, 'projects', 1); #do_status(%table_data, 'eff', 1); #do_status(%table_data, 'gui', 1); sort_and_print(%table_rows); :>
#include