[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: debconf templates



On Tue, Sep 02, 2003 at 04:34:50PM +0200, Bartosz Feński aka fEnIo wrote:
> > O ile wiem, to nie ma centralnego repozytorium. Można sobie wgetnąć
> > http://www.debian.org/intl/l10n/po-debconf/pot
> No to praktycznie uniemożliwia grupową pracę nad tymi szablonami :/
> To znaczy, żeby naprzykład wrzucić to do repo PDDP to musiałbym to
> nieźle oskryptować... hmm... pomyślę nad tym.

W załączniku posyłam skrypt, który może się przydać. Gotowe szablony
możemy wrzucać do CVSu PDDP, a potem po jakiejś sensownej korekcie
zgłaszać błędy w poszczególnych pakietach.

Skrypt wymaga jeszcze pracy, żeby można nim było ściągać szablony itp.

Chyba ./szablon help dobrze wyjaśni jego użycie.

> > Do sensownego przetłumaczenia szablonu debconfa i tak trzeba ściągnąć paczkę
> > źródłową i sprawdzić w jakich momentach dany szablon się pokazuje.
> No nie koniecznie. Kontekst bardziej się przydaje przy tłumaczeniu
> normalnych komunikatów programów. Tutaj kontekst jest raczej oczywisty.
> Upgrade/instalacja pakietu.

Mimo to w PDDP proponuję oficjalnie ogłosić, że sprawdzamy kontekst
ściągając te wszystkie szablony itp. Sam wiesz jak jest nawet mając
kontekst ;).

-- 
Bartosz Zapalowski
bartek@klepisko.eu.org
#! /usr/bin/perl -w

use strict;

my $WEBSITE = "http://www.debian.org/intl/l10n/po-debconf/pl";;
my @command = ("wget", "-q", "-O", "status.html", $WEBSITE);

sub szablon_update()
{
  my $a;
  my $section = 0;
  if (($a = system (@command)) != 0) {
    print "szablon: Nie można było pobrać stanu.".$a."\n";
    exit 1;
  }

# przeparsowanie statusu
  open SZ, "status.html" or die;
  open STATUS, ">status2" or die;
  while (<SZ>) {
    if ($_ =~ m/^<tr bgcolor="[^"]*"><td>([A-Za-z0-9_+-]+)<\/td><td>[ ]*([0-9]+%) \(([0-9]+)t;([0-9]+)f;([0-9]+)u\)<\/td><td><a href="([^"]+)">/) {
      my $pkg = $1;
      my $percent = $2;
      my $mt = $3;
      my $mf = $4;
      my $mu = $5;
      my $url = $6;

      print STATUS $pkg." ".$percent." ".$mt." ".$mf." ".$mu." ".$url."\n";

      $section = 1;
    } elsif ($section) {
      if ($_ =~ m/^<!-- BEGIN SECTION -->/) {
        while (<SZ>) {
          if ($_ =~ m/^<h3>Section: ([a-z-]+)<\/h3>/) {
	    my $sectionname = "section_".$1;
            open SECTION, ">", $sectionname."2";
            while (<SZ>) {
              while ($_ =~ m/<a href="([^"]+)">([^<]+)<\/a>/g) {
                print SECTION $2." ".$1."\n";
	      }
	      if ($_ =~ m/<!-- END SECTION -->/) {
                last;
	      }
	    }
	    close SECTION;
	    rename $sectionname."2", $sectionname;
	    last;
	  }
	}
      }
    }
  }
  close STATUS;
  close SZ;
  rename "status2", "status";

  unlink "status.html";
}

sub szablon_list ()
{
  if (not defined $ARGV[1]) {
    print "szablon: Może byś mi jednak podał sekcję.\n";
    exit 1;
  }

  open SE, "section_".$ARGV[1] or die;
  while (<SE>) {
    if ($_ =~ m/^([^ ]+)/) {
      print $1."\n";
    }
  }
  close SE;
}

sub szablon_help ()
{
  print <<EOF
szablon <polecenie>

<polecenie>:
  help		- pomoc (ten ekran)
  update	- ściąga listę i tworzy pliki stanu
  list sekcja	- pokazuje listę nieprzetłumaczonych szablonów z danej sekcji
  status	- stan tłumaczenia rozpoczętych szablonów
EOF
;
}

sub szablon_status ()
{
  open ST, "status" or die;
  printf ("%30s %4s %3s %3s %3s\n", "Pakiet", "%", "T", "F", "U");
  while (<ST>) {
    if ($_ =~ m/^([^ ]+) ([^%]+\%) ([^ ]+) ([^ ]+) ([^ ]+)/) {
      my $pkg = $1;
      my $percent = $2;
      my $mt = $3;
      my $mf = $4;
      my $mu = $5;
      printf ("%30s %4s %3s %3s %3s\n", $pkg, $percent, $mt, $mf, $mu);
    }
  }
  close ST;
}

my %commands = (
	'help'		=> \&szablon_help,
	'update'	=> \&szablon_update,
	'list'		=> \&szablon_list,
	'status'	=> \&szablon_status
);

if (defined $ARGV[0]) {
  if (defined $commands{$ARGV[0]}) {
    &{$commands{$ARGV[0]}};
  } else {
    print "szablon: Nie znam takiego polecenia. A może ty je znasz?\n";
    exit 1;
  }
} else {
  print "szablon: Brak argumentów. Zapodaj szablon help.\n";
  exit 1;
}

Attachment: pgpO84f0fC7BQ.pgp
Description: PGP signature


Reply to: