X-Git-Url: https://git.deb.at/?p=deb%2Fpackages.git;a=blobdiff_plain;f=bin%2Fparse-debtags-voc;h=be251781a89616dafd66b880f84473a15675ca88;hp=b6391564402db3bde8a04d621cfe8273ccff9f7c;hb=cc6c820a1e503808b7ac1e2bff132de23f87606b;hpb=08aa87adaf6c59131d01f8a4a078dc4e78475788 diff --git a/bin/parse-debtags-voc b/bin/parse-debtags-voc index b639156..be25178 100755 --- a/bin/parse-debtags-voc +++ b/bin/parse-debtags-voc @@ -22,6 +22,7 @@ use lib './lib'; $| = 1; +use POSIX; use DB_File; use File::Path; use Data::Dumper; @@ -30,9 +31,10 @@ use URI::Escape; use Deb::Versions; use Packages::Template; -use Packages::Config qw( $TOPDIR ); -use Packages::CGI; +use Packages::Config qw( $TOPDIR @LANGUAGES ); +use Packages::I18N::Locale; &Packages::Config::init( './' ); +&Packages::I18N::Locale::load( "$TOPDIR/po" ); my $debtagsdir = "$TOPDIR/files/debtags"; my $wwwdir = "$TOPDIR/www/about"; my $voc_file = "$debtagsdir/vocabulary"; @@ -40,10 +42,20 @@ my (%voc, %voc_db); $/ = ""; -delete $ENV{'LANGUAGE'}; -delete $ENV{'LANG'}; -delete $ENV{'LC_ALL'}; -delete $ENV{'LC_MESSAGES'}; +sub process_desc { + my ($desc) = @_; + + if ($desc) { + $desc = encode_entities($desc); + + $desc =~ s,((ftp|http|https)://[\S~-]+?/?)((\>\;)?[)]?[']?[:.\,]?(\s|$)),$1$3,go; # syntax highlighting -> ']; + $desc =~ s/\A //o; + $desc =~ s/\n /\n/sgo; + $desc =~ s/\n.\n/\n

\n/go; + $desc =~ s/(((\n|\A) [^\n]*)+)/\n

$1\n<\/pre>/sgo;
+    }
+    return $desc;
+}
 
 print "Parsing Vocabulary...\n";
 tie %voc_db, "DB_File", "$debtagsdir/vocabulary.db.new",
@@ -72,18 +84,22 @@ while () {
 	warn "Duplicated key found: $voc_key\n";
 	next;
     }
-    my ($sdesc,$ldesc) = split /\n/, encode_entities($data{description}), 2;
-
-    if ($ldesc) {
-	$ldesc =~ s,((ftp|http|https)://[\S~-]+?/?)((\>\;)?[)]?[']?[:.\,]?(\s|$)),$1$3,go; # syntax highlighting -> '];
-	$ldesc =~ s/\A //o;
-	$ldesc =~ s/\n /\n/sgo;
-	$ldesc =~ s/\n.\n/\n

\n/go; - $ldesc =~ s/(((\n|\A) [^\n]*)+)/\n

$1\n<\/pre>/sgo;
-    }
-    $data{html_description} = [ $sdesc, $ldesc||"" ];
+    my ($sdesc,$ldesc) = split /\n/, $data{description}, 2;
 
+    $data{html_description} = [ encode_entities($sdesc), process_desc($ldesc)||"" ];
     $voc_db{$voc_key} = $sdesc || "";
+
+    foreach my $lang (@LANGUAGES) {
+	next if $lang eq 'en';
+
+	my $cat = Packages::I18N::Locale->get_handle($lang)
+	    or die "get_handle failed for $lang";
+
+	my $sdesc_trans = $cat->maketext($sdesc);
+	$voc_db{"$voc_key-$lang"} = $sdesc_trans
+	    if $sdesc_trans and $sdesc_trans ne $sdesc;
+    }
+
     $voc{$voc_key} = \%data;
 }
 
@@ -102,7 +118,7 @@ my @facets = sort( grep { exists $voc{$_}{facet} } keys %voc );
 my @tags = sort( grep { exists $voc{$_}{tag} } keys %voc );
 my %tags_by_facet;
 foreach (@tags) {
-    my ($facet, $tag) = split /::/, $_, 2;
+    my ($facet, $tag) = split m/::/, $_, 2;
     warn "No facet data available for $facet\n"
 	unless exists $voc{$facet};
     $tags_by_facet{$facet} ||= [];